aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS61
-rw-r--r--configure.ac48
-rw-r--r--data/Makefile.am11
-rw-r--r--data/Template.html159
-rw-r--r--data/empathy.schemas.in66
-rw-r--r--data/icons/Makefile.am4
-rw-r--r--data/icons/hicolor_apps_16x16_im-meanwhile.pngbin0 -> 938 bytes
-rw-r--r--data/icons/hicolor_apps_22x22_im-meanwhile.pngbin0 -> 1538 bytes
-rw-r--r--data/icons/hicolor_apps_48x48_im-meanwhile.pngbin0 -> 3647 bytes
-rw-r--r--data/icons/hicolor_apps_scalable_im-meanwhile.svg174
-rw-r--r--data/sametime.profile11
-rw-r--r--docs/libempathy-gtk/Makefile.am1
-rw-r--r--docs/libempathy-gtk/libempathy-gtk-docs.sgml2
-rw-r--r--docs/libempathy-gtk/libempathy-gtk.types2
-rw-r--r--docs/libempathy/libempathy-docs.sgml1
-rw-r--r--docs/libempathy/libempathy.types1
-rw-r--r--libempathy-gtk/Makefile.am39
-rw-r--r--libempathy-gtk/empathy-account-chooser.c6
-rw-r--r--libempathy-gtk/empathy-account-chooser.h2
-rw-r--r--libempathy-gtk/empathy-account-widget-aim.ui6
-rw-r--r--libempathy-gtk/empathy-account-widget-generic.ui6
-rw-r--r--libempathy-gtk/empathy-account-widget-groupwise.ui6
-rw-r--r--libempathy-gtk/empathy-account-widget-icq.ui6
-rw-r--r--libempathy-gtk/empathy-account-widget-irc.h2
-rw-r--r--libempathy-gtk/empathy-account-widget-irc.ui12
-rw-r--r--libempathy-gtk/empathy-account-widget-jabber.ui12
-rw-r--r--libempathy-gtk/empathy-account-widget-msn.ui6
-rw-r--r--libempathy-gtk/empathy-account-widget-salut.ui6
-rw-r--r--libempathy-gtk/empathy-account-widget-sip.h2
-rw-r--r--libempathy-gtk/empathy-account-widget-sip.ui6
-rw-r--r--libempathy-gtk/empathy-account-widget-yahoo.ui6
-rw-r--r--libempathy-gtk/empathy-account-widget.c8
-rw-r--r--libempathy-gtk/empathy-avatar-chooser.c10
-rw-r--r--libempathy-gtk/empathy-avatar-chooser.h2
-rw-r--r--libempathy-gtk/empathy-avatar-image.h2
-rw-r--r--libempathy-gtk/empathy-cell-renderer-activatable.c2
-rw-r--r--libempathy-gtk/empathy-cell-renderer-activatable.h2
-rw-r--r--libempathy-gtk/empathy-cell-renderer-expander.c2
-rw-r--r--libempathy-gtk/empathy-cell-renderer-expander.h2
-rw-r--r--libempathy-gtk/empathy-cell-renderer-text.h2
-rw-r--r--libempathy-gtk/empathy-chat-text-view.c322
-rw-r--r--libempathy-gtk/empathy-chat-text-view.h2
-rw-r--r--libempathy-gtk/empathy-chat-view.c32
-rw-r--r--libempathy-gtk/empathy-chat-view.h2
-rw-r--r--libempathy-gtk/empathy-chat.c86
-rw-r--r--libempathy-gtk/empathy-chat.h4
-rw-r--r--libempathy-gtk/empathy-chat.ui6
-rw-r--r--libempathy-gtk/empathy-conf.h4
-rw-r--r--libempathy-gtk/empathy-contact-dialogs.c2
-rw-r--r--libempathy-gtk/empathy-contact-list-store.c10
-rw-r--r--libempathy-gtk/empathy-contact-list-store.h2
-rw-r--r--libempathy-gtk/empathy-contact-list-view.c12
-rw-r--r--libempathy-gtk/empathy-contact-list-view.h2
-rw-r--r--libempathy-gtk/empathy-contact-menu.c8
-rw-r--r--libempathy-gtk/empathy-contact-menu.h2
-rw-r--r--libempathy-gtk/empathy-contact-widget.c12
-rw-r--r--libempathy-gtk/empathy-contact-widget.ui24
-rw-r--r--libempathy-gtk/empathy-irc-network-dialog.h2
-rw-r--r--libempathy-gtk/empathy-location-manager.c25
-rw-r--r--libempathy-gtk/empathy-log-window.c4
-rw-r--r--libempathy-gtk/empathy-new-message-dialog.c2
-rw-r--r--libempathy-gtk/empathy-new-message-dialog.h2
-rw-r--r--libempathy-gtk/empathy-plist.c336
-rw-r--r--libempathy-gtk/empathy-plist.h34
-rw-r--r--libempathy-gtk/empathy-presence-chooser.c6
-rw-r--r--libempathy-gtk/empathy-smiley-manager.c85
-rw-r--r--libempathy-gtk/empathy-smiley-manager.h9
-rw-r--r--libempathy-gtk/empathy-sound.c385
-rw-r--r--libempathy-gtk/empathy-sound.h56
-rw-r--r--libempathy-gtk/empathy-spell.c4
-rw-r--r--libempathy-gtk/empathy-theme-adium.c1051
-rw-r--r--libempathy-gtk/empathy-theme-adium.h70
-rw-r--r--libempathy-gtk/empathy-theme-boxes.c8
-rw-r--r--libempathy-gtk/empathy-theme-irc.c2
-rw-r--r--libempathy-gtk/empathy-theme-manager.c109
-rw-r--r--libempathy-gtk/empathy-theme.c408
-rw-r--r--libempathy-gtk/empathy-ui-utils.c164
-rw-r--r--libempathy-gtk/empathy-ui-utils.h35
-rw-r--r--libempathy-gtk/empathy-video-widget.c3
-rw-r--r--libempathy/Makefile.am5
-rw-r--r--libempathy/empathy-call-handler.c43
-rw-r--r--libempathy/empathy-call-handler.h5
-rw-r--r--libempathy/empathy-chatroom-manager.c36
-rw-r--r--libempathy/empathy-chatroom.c4
-rw-r--r--libempathy/empathy-contact-manager.c6
-rw-r--r--libempathy/empathy-contact.c70
-rw-r--r--libempathy/empathy-contact.h8
-rw-r--r--libempathy/empathy-debug.c76
-rw-r--r--libempathy/empathy-debug.h6
-rw-r--r--libempathy/empathy-debugger.c270
-rw-r--r--libempathy/empathy-debugger.h88
-rw-r--r--libempathy/empathy-dispatcher.c13
-rw-r--r--libempathy/empathy-ft-handler.c19
-rw-r--r--libempathy/empathy-idle.c43
-rw-r--r--libempathy/empathy-status-presets.c49
-rw-r--r--libempathy/empathy-status-presets.h1
-rw-r--r--libempathy/empathy-time.c7
-rw-r--r--libempathy/empathy-tp-call.c37
-rw-r--r--libempathy/empathy-tp-call.h2
-rw-r--r--libempathy/empathy-tp-chat.c2
-rw-r--r--libempathy/empathy-tp-contact-list.c4
-rw-r--r--libempathy/empathy-tp-file.c191
-rw-r--r--libempathy/empathy-tp-file.h4
-rw-r--r--libempathy/empathy-tp-tube.c669
-rw-r--r--libempathy/empathy-tp-tube.h103
-rw-r--r--libempathy/empathy-tube-handler.c20
-rw-r--r--libempathy/empathy-utils.c6
-rw-r--r--po/POTFILES.in1
-rw-r--r--po/bn_IN.po2367
-rw-r--r--po/es.po742
-rw-r--r--po/he.po2417
-rw-r--r--po/nb.po1706
-rw-r--r--po/ta.po1284
-rw-r--r--python/pyempathy/pyempathy.defs62
-rw-r--r--python/pyempathy/pyempathy.override1
-rw-r--r--python/pyempathygtk/pyempathygtk.defs20
-rwxr-xr-xpython/update-binding.sh1
-rwxr-xr-xrelease.py16
-rw-r--r--src/Makefile.am25
-rw-r--r--src/empathy-about-dialog.c3
-rw-r--r--src/empathy-about-dialog.h2
-rw-r--r--src/empathy-accounts-dialog.c31
-rw-r--r--src/empathy-accounts-dialog.h2
-rw-r--r--src/empathy-accounts-dialog.ui99
-rw-r--r--src/empathy-call-window.c710
-rw-r--r--src/empathy-call-window.ui26
-rw-r--r--src/empathy-chat-window.c59
-rw-r--r--src/empathy-chat-window.h2
-rw-r--r--src/empathy-chat-window.ui8
-rw-r--r--src/empathy-debug-dialog.c12
-rw-r--r--src/empathy-event-manager.c188
-rw-r--r--src/empathy-event-manager.h1
-rw-r--r--src/empathy-ft-manager.ui2
-rw-r--r--src/empathy-main-window.c13
-rw-r--r--src/empathy-main-window.h2
-rw-r--r--src/empathy-map-view.c273
-rw-r--r--src/empathy-map-view.h2
-rw-r--r--src/empathy-map-view.ui27
-rw-r--r--src/empathy-new-chatroom-dialog.c6
-rw-r--r--src/empathy-preferences.c374
-rw-r--r--src/empathy-preferences.h2
-rw-r--r--src/empathy-preferences.ui147
-rw-r--r--src/empathy-sidebar.c2
-rw-r--r--src/empathy-status-icon.c15
-rw-r--r--src/empathy.c56
-rw-r--r--src/ephy-spinner.c4
-rw-r--r--src/ephy-spinner.h3
-rw-r--r--tools/check-whitespace.sh6
148 files changed, 10639 insertions, 5895 deletions
diff --git a/NEWS b/NEWS
index 2187b450c..444fa3d2c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,64 @@
+NEW in 2.27.3
+==============
+Bugs fixed:
+ - Fixed #522069, Improve message styles with themes/plugins (ala Adium)
+ - Fixed #548707, "New Account" title and "I already have an account" checkbox are contradictory (Guillaume Desmottes)
+ - Fixed #548716, First text field when adding account (e.g. "Login ID") isn't focused by default (Dimitris Zenios)
+ - Fixed #560787, Should support IPv4 file transfer
+ - Fixed #562981, make sametime support official (Guillaume Desmottes)
+ - Fixed #563675, Does not show any error messages when FT channel request fails
+ - Fixed #563896, "Conditional jump or move depends on uninitialised value" when sending a file
+ - Fixed #564259, Tooltips in the MUC user list
+ - Fixed #574478, Conversation not showing up in taskbar
+ - Fixed #574878, can't rename account while the account is connecting
+ - Fixed #574980, Audio/Video Chat windows don't show contact name
+ - Fixed #575415, Should switch from libglade to GtkBuilder
+ - Fixed #576405, Crash when a FT was cancelled
+ - Fixed #578497, failure to cancel file transfer
+ - Fixed #579725, Implement debug dialog using o.fd.Tp.Debug
+ - Fixed #579992, Import of XMPP accounts sets port (Jonny Lamb)
+ - Fixed #580921, Weird behaviour with MUC members in current master
+ - Fixed #582191, The call windows should have a "redial" button.
+ - Fixed #582736, Merge ft_rework branch
+ - Fixed #582773, Empathy puts cheesy strings in my subscription requests
+ - Fixed #582774, When no video is being sent, the video output and preview should show an icon instead of being black.
+ - Fixed #583548, Python exemple is broken
+ - Fixed #583785, Display a summary at the end of configure
+ - Fixed #584061, IRC server for FreeNode is out of date (Guillaume Desmottes)
+ - Fixed #584102, New tube API is now stable
+ - Fixed #584147, The Map View doesn't have a loading throbber
+ - Fixed #584206, Add the method empathy_contact_can_stream_tubes in the empathy-tp-contact-factory
+ - Fixed #584462, user list stays empty
+ - Fixed #584463, Contact menu is empty
+ - Fixed #584518, Critical error in publish_to_all_connections
+ - Fixed #584635, Sorting contacts by State doesn't place Available as top
+ - Fixed #584639, Remove "View"/"Show" prefixes from View menu items
+ - Fixed #584672, Add a right-click menu to conversation window tabs
+ - Fixed #584755, Empathy doesn't show buddy list in IRC
+ - Fixed #584807, EmpathyTpTube must die
+ - Fixed #584830, Invalid read in new_connection_cb
+ - Fixed #584924, GObjectify EmpathyProfileChooser
+ - Fixed #584989, Asserts if a new group appears with the same name as an old one.
+ - Fixed #585055, make distcheck is broken
+ - Fixed #585078, Doesn't use address from Hostip
+ - Fixed #585080, Lot of contacts are missing avatars
+ - Fixed #585092, Tab tooltips show "(null)" for contacts without presence
+ - Fixed #585201, Crashed when I disconnected
+ - Fixed #585231, Asserts in dispatcher_start_dispatching when I reconnect to IRC (Will Thompson)
+ - Fixed #585279, Crashed when accepting a FT failed
+ - Fixed #585640, Only English should be used for i18n
+ - Fixed #585669, GNOME Goal: Clean up GLib and GTK+ includes in empathy (Luis Menina)
+ - Fixed #585788, Capitalisation incorrect (Guillaume Desmottes)
+ - Fixed #571666, [2/3] Empathy should publish my geolocation
+ - Fixed #571667, [3/3] Empathy should display my location
+
+Translations:
+ - Updated es Translation (Jorge Gonzalez)
+ - Updated he Translation (Mark Krapivner)
+ - Updated hu Translation (Gabor Kelemen)
+ - Updated nb Translation (Kjartan Maraas)
+ - Updated pa Translation (A S Alam)
+
NEW in 2.27.2
==============
Bugs fixed:
diff --git a/configure.ac b/configure.ac
index 8a85a7525..df6ec7ec0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT(Empathy, 2.27.3, http://bugzilla.gnome.org/browse.cgi?product=empathy)
+AC_INIT(Empathy, 2.27.4, http://bugzilla.gnome.org/browse.cgi?product=empathy)
AC_PREREQ(2.59)
AC_COPYRIGHT([
Copyright (C) 2003-2007 Imendio AB
@@ -9,11 +9,11 @@ AC_COPYRIGHT([
# (Interfaces removed: CURRENT++, AGE=0, REVISION=0)
# (Interfaces added: CURRENT++, AGE++, REVISION=0)
# (No interfaces changed: REVISION++)
-LIBEMPATHY_CURRENT=25
+LIBEMPATHY_CURRENT=26
LIBEMPATHY_AGE=0
LIBEMPATHY_REVISION=0
-LIBEMPATHY_GTK_CURRENT=23
+LIBEMPATHY_GTK_CURRENT=24
LIBEMPATHY_GTK_AGE=0
LIBEMPATHY_GTK_REVISION=0
@@ -35,10 +35,11 @@ ENCHANT_REQUIRED=1.2.0
ISO_CODES_REQUIRED=0.35
LIBNOTIFY_REQUIRED=0.4.4
LIBCANBERRA_GTK_REQUIRED=0.4
-LIBCHAMPLAIN_REQUIRED=0.3.0
-LIBCHAMPLAIN_GTK_REQUIRED=0.3.0
+LIBCHAMPLAIN_REQUIRED=0.3.3
+LIBCHAMPLAIN_GTK_REQUIRED=0.3.3
CLUTTER_GTK_REQUIRED=0.8.2
GEOCLUE_REQUIRED=0.11
+WEBKIT_REQUIRED=1.1.7
# Use --enable-maintainer-mode to disabled deprecated symbols
GNOME_MAINTAINER_MODE_DEFINES
@@ -95,6 +96,8 @@ PKG_CHECK_MODULES(LIBEMPATHY,
telepathy-glib >= $TELEPATHY_GLIB_REQUIRED
libmissioncontrol >= $MISSION_CONTROL_REQUIRED
telepathy-farsight
+ farsight2-0.10
+ gstreamer-0.10
])
PKG_CHECK_MODULES(LIBEMPATHYGTK,
@@ -108,7 +111,6 @@ PKG_CHECK_MODULES(LIBEMPATHYGTK,
libcanberra-gtk >= $LIBCANBERRA_GTK_REQUIRED
telepathy-glib >= $TELEPATHY_GLIB_REQUIRED
libmissioncontrol >= $MISSION_CONTROL_REQUIRED
- telepathy-farsight
farsight2-0.10
gstreamer-0.10
gstreamer-interfaces-0.10
@@ -119,16 +121,14 @@ PKG_CHECK_MODULES(EMPATHY,
glib-2.0 >= $GLIB_REQUIRED
gobject-2.0
gio-2.0 >= $GLIB_REQUIRED
- gconf-2.0 >= $GCONF_REQUIRED
- x11
+ gdk-x11-2.0
gtk+-2.0 >= $GTK_REQUIRED
- libcanberra-gtk >= $LIBCANBERRA_GTK_REQUIRED
libebook-1.2
+ dbus-glib-1
telepathy-glib >= $TELEPATHY_GLIB_REQUIRED
libmissioncontrol >= $MISSION_CONTROL_REQUIRED
telepathy-farsight
gstreamer-0.10
- gstreamer-interfaces-0.10
])
PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= $LIBNOTIFY_REQUIRED)
@@ -156,6 +156,33 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package name])
AM_GLIB_GNU_GETTEXT
# -----------------------------------------------------------
+# Webkit
+# -----------------------------------------------------------
+AC_ARG_ENABLE(webkit,
+ AS_HELP_STRING([--enable-webkit=@<:@no/yes/auto@:>@],
+ [build with webkit support]), ,
+ enable_webkit=auto)
+
+if test "x$enable_webkit" != "xno"; then
+ PKG_CHECK_MODULES(WEBKIT,
+ [
+ webkit-1.0 >= $WEBKIT_REQUIRED
+ ], have_webkit="yes", have_webkit="no")
+
+ if test "x$have_webkit" = "xyes"; then
+ AC_DEFINE(HAVE_WEBKIT, 1, [Define if you have libwebkitgtk])
+ fi
+else
+ have_webkit=no
+fi
+
+if test "x$enable_webkit" = "xyes" -a "x$have_webkit" != "xyes"; then
+ AC_MSG_ERROR([Couldn't find webkit dependencies.])
+fi
+
+AM_CONDITIONAL(HAVE_WEBKIT, test "x$have_webkit" = "xyes")
+
+# -----------------------------------------------------------
# spellchecking checks: enchant and iso-codes
# -----------------------------------------------------------
AC_ARG_ENABLE(spell,
@@ -425,6 +452,7 @@ Configure summary:
Spell checking (enchant)....: ${have_enchant}
Display maps (libchamplain).: ${have_libchamplain}
Location awareness (Geoclue): ${have_geoclue}
+ Adium themes (Webkit).......: ${have_webkit}
Extras:
Documentation...............: ${enable_gtk_doc}
diff --git a/data/Makefile.am b/data/Makefile.am
index 48cc350cc..52108fbe7 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -17,7 +17,8 @@ profile_DATA = \
sipphone.profile \
groupwise.profile \
gadugadu.profile \
- qq.profile
+ qq.profile \
+ sametime.profile
desktopdir = $(datadir)/applications
desktop_in_files = empathy.desktop.in
@@ -40,12 +41,16 @@ else
install-data-local:
endif
+htmldir = $(datadir)/empathy
+html_DATA = Template.html
+
EXTRA_DIST = \
$(profile_DATA) \
$(desktop_in_files) \
- $(desktop_DATA) \
+ $(desktop_DATA) \
$(schemas_in_files) \
- $(schemas_DATA)
+ $(schemas_DATA) \
+ $(html_DATA)
DISTCLEANFILES = \
$(desktop_DATA) \
diff --git a/data/Template.html b/data/Template.html
new file mode 100644
index 000000000..708e85bdb
--- /dev/null
+++ b/data/Template.html
@@ -0,0 +1,159 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <base href="%@">
+ <script type="text/ecmascript" defer="defer">
+
+ //Appending new content to the message view
+ function appendMessage(html) {
+ shouldScroll = nearBottom();
+
+ //Remove any existing insertion point
+ insert = document.getElementById("insert");
+ if(insert) insert.parentNode.removeChild(insert);
+
+ //Append the new message to the bottom of our chat block
+ chat = document.getElementById("Chat");
+ range = document.createRange();
+ range.selectNode(chat);
+ documentFragment = range.createContextualFragment(html);
+ chat.appendChild(documentFragment);
+
+ alignChat(shouldScroll);
+ }
+ function appendMessageNoScroll(html) {
+ //Remove any existing insertion point
+ insert = document.getElementById("insert");
+ if(insert) insert.parentNode.removeChild(insert);
+
+ //Append the new message to the bottom of our chat block
+ chat = document.getElementById("Chat");
+ range = document.createRange();
+ range.selectNode(chat);
+ documentFragment = range.createContextualFragment(html);
+ chat.appendChild(documentFragment);
+ }
+ function appendNextMessage(html){
+ shouldScroll = nearBottom();
+
+ //Locate the insertion point
+ insert = document.getElementById("insert");
+
+ //make new node
+ range = document.createRange();
+ range.selectNode(insert.parentNode);
+ newNode = range.createContextualFragment(html);
+
+ //swap
+ insert.parentNode.replaceChild(newNode,insert);
+
+ alignChat(shouldScroll);
+ }
+ function appendNextMessageNoScroll(html){
+ //Locate the insertion point
+ insert = document.getElementById("insert");
+
+ //make new node
+ range = document.createRange();
+ range.selectNode(insert.parentNode);
+ newNode = range.createContextualFragment(html);
+
+ //swap
+ insert.parentNode.replaceChild(newNode,insert);
+ }
+
+ //Auto-scroll to bottom. Use nearBottom to determine if a scrollToBottom is desired.
+ function nearBottom() {
+ return ( document.body.scrollTop >= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) );
+ }
+ function scrollToBottom() {
+ document.body.scrollTop = document.body.offsetHeight;
+ }
+
+ //Dynamically exchange the active stylesheet
+ function setStylesheet( id, url ) {
+ code = "<style id=\"" + id + "\" type=\"text/css\" media=\"screen,print\">";
+ if( url.length ) code += "@import url( \"" + url + "\" );";
+ code += "</style>";
+ range = document.createRange();
+ head = document.getElementsByTagName( "head" ).item(0);
+ range.selectNode( head );
+ documentFragment = range.createContextualFragment( code );
+ head.removeChild( document.getElementById( id ) );
+ head.appendChild( documentFragment );
+ }
+
+ //Swap an image with its alt-tag text on click, or expand/unexpand an attached image
+ document.onclick = imageCheck;
+ function imageCheck() {
+ node = event.target;
+ if(node.tagName == 'IMG' && !client.zoomImage(node) && node.alt) {
+ a = document.createElement('a');
+ a.setAttribute('onclick', 'imageSwap(this)');
+ a.setAttribute('src', node.getAttribute('src'));
+ a.className = node.className;
+ text = document.createTextNode(node.alt);
+ a.appendChild(text);
+ node.parentNode.replaceChild(a, node);
+ }
+ }
+
+ function imageSwap(node) {
+ shouldScroll = nearBottom();
+
+ //Swap the image/text
+ img = document.createElement('img');
+ img.setAttribute('src', node.getAttribute('src'));
+ img.setAttribute('alt', node.firstChild.nodeValue);
+ img.className = node.className;
+ node.parentNode.replaceChild(img, node);
+
+ alignChat(shouldScroll);
+ }
+
+ //Align our chat to the bottom of the window. If true is passed, view will also be scrolled down
+ function alignChat(shouldScroll) {
+ var windowHeight = window.innerHeight;
+
+ if (windowHeight > 0) {
+ var contentElement = document.getElementById('Chat');
+ var contentHeight = contentElement.offsetHeight;
+ if (windowHeight - contentHeight > 0) {
+ contentElement.style.position = 'relative';
+ contentElement.style.top = (windowHeight - contentHeight) + 'px';
+ } else {
+ contentElement.style.position = 'static';
+ }
+ }
+
+ if (shouldScroll) scrollToBottom();
+ }
+
+ function windowDidResize(){
+ alignChat(true/*nearBottom()*/); //nearBottom buggy with inactive tabs
+ }
+
+ window.onresize = windowDidResize;
+ </script>
+
+ <!-- This style is shared by all variants. !-->
+ <style id="baseStyle" type="text/css" media="screen,print">
+ %@
+ *{ word-wrap:break-word; }
+ img.scaledToFitImage { height:auto; width:100%; }
+ </style>
+
+ <!-- Although we call this mainStyle for legacy reasons, it's actually the variant style !-->
+ <style id="mainStyle" type="text/css" media="screen,print">
+ @import url( "%@" );
+ </style>
+
+</head>
+<body onload="alignChat(true);" style="==bodyBackground==">
+%@
+<div id="Chat">
+</div>
+%@
+</body>
+</html>
diff --git a/data/empathy.schemas.in b/data/empathy.schemas.in
index 572eb8871..fb068e5bd 100644
--- a/data/empathy.schemas.in
+++ b/data/empathy.schemas.in
@@ -172,7 +172,7 @@
</long>
</locale>
</schema>
-
+
<schema>
<key>/schemas/apps/empathy/sounds/sounds_contact_logout</key>
<applyto>/apps/empathy/sounds/sounds_contact_logout</applyto>
@@ -201,7 +201,7 @@
</long>
</locale>
</schema>
-
+
<schema>
<key>/schemas/apps/empathy/sounds/sounds_service_logout</key>
<applyto>/apps/empathy/sounds/sounds_service_logout</applyto>
@@ -261,6 +261,36 @@
</schema>
<schema>
+ <key>/schemas/apps/empathy/notifications/notifications_contact_signin</key>
+ <applyto>/apps/empathy/notifications/notifications_contact_signin</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Popup notifications when a contact sign in</short>
+ <long>
+ Whether or not to show a popup notification when a contact goes
+ online.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/empathy/notifications/notifications_contact_signout</key>
+ <applyto>/apps/empathy/notifications/notifications_contact_signout</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Popup notifications when a contact sign out</short>
+ <long>
+ Whether or not to show a popup notification when a contact goes
+ offline.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
<key>/schemas/apps/empathy/ui/separate_chat_windows</key>
<applyto>/apps/empathy/ui/separate_chat_windows</applyto>
<owner>empathy</owner>
@@ -290,6 +320,20 @@
</schema>
<schema>
+ <key>/schemas/apps/empathy/conversation/show_contacts_in_rooms</key>
+ <applyto>/apps/empathy/conversation/show_contacts_in_rooms</applyto>
+ <owner>empathy</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Show contact list in rooms</short>
+ <long>
+ Whether or not to show the contact list in chat rooms.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
<key>/schemas/apps/empathy/conversation/theme</key>
<applyto>/apps/empathy/conversation/theme</applyto>
<owner>empathy</owner>
@@ -304,6 +348,20 @@
</schema>
<schema>
+ <key>/schemas/apps/empathy/conversation/adium_path</key>
+ <applyto>/apps/empathy/conversation/adium_path</applyto>
+ <owner>empathy</owner>
+ <type>string</type>
+ <default></default>
+ <locale name="C">
+ <short>Path of the adium theme to use</short>
+ <long>
+ Path of the adium theme to use if the theme used for chat is adium.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
<key>/schemas/apps/empathy/conversation/theme_chat_room</key>
<applyto>/apps/empathy/conversation/theme_chat_room</applyto>
<owner>empathy</owner>
@@ -358,7 +416,7 @@
Character to add after nickname when using nick completion (tab)
in group chat.
</long>
-
+
</locale>
</schema>
@@ -420,7 +478,7 @@
</long>
</locale>
</schema>
-
+
<schema>
<key>/schemas/apps/empathy/autoconnect</key>
<applyto>/apps/empathy/autoconnect</applyto>
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am
index 81aa8446a..cbd022d84 100644
--- a/data/icons/Makefile.am
+++ b/data/icons/Makefile.am
@@ -33,6 +33,7 @@ private_icons = \
hicolor_apps_16x16_im-local-xmpp.png \
hicolor_apps_16x16_im-gadugadu.png \
hicolor_apps_16x16_im-qq.png \
+ hicolor_apps_16x16_im-meanwhile.png \
hicolor_apps_16x16_empathy-starred.png \
hicolor_apps_16x16_empathy-unstarred.png \
hicolor_apps_22x22_im-ekiga.png \
@@ -45,6 +46,7 @@ private_icons = \
hicolor_apps_22x22_im-local-xmpp.png \
hicolor_apps_22x22_im-gadugadu.png \
hicolor_apps_22x22_im-qq.png \
+ hicolor_apps_22x22_im-meanwhile.png \
hicolor_apps_22x22_empathy-starred.png \
hicolor_apps_22x22_empathy-unstarred.png \
hicolor_apps_24x24_im-ekiga.png \
@@ -81,6 +83,7 @@ private_icons = \
hicolor_apps_48x48_im-local-xmpp.png \
hicolor_apps_48x48_im-gadugadu.png \
hicolor_apps_48x48_im-qq.png \
+ hicolor_apps_48x48_im-meanwhile.png \
hicolor_apps_48x48_empathy-starred.png \
hicolor_apps_48x48_empathy-unstarred.png \
hicolor_apps_scalable_im-ekiga.svg \
@@ -93,6 +96,7 @@ private_icons = \
hicolor_apps_scalable_im-local-xmpp.svg \
hicolor_apps_scalable_im-gadugadu.svg \
hicolor_apps_scalable_im-qq.svg \
+ hicolor_apps_scalable_im-meanwhile.svg \
hicolor_status_16x16_empathy-available.png \
hicolor_status_16x16_empathy-away.png \
hicolor_status_16x16_empathy-busy.png \
diff --git a/data/icons/hicolor_apps_16x16_im-meanwhile.png b/data/icons/hicolor_apps_16x16_im-meanwhile.png
new file mode 100644
index 000000000..99d172250
--- /dev/null
+++ b/data/icons/hicolor_apps_16x16_im-meanwhile.png
Binary files differ
diff --git a/data/icons/hicolor_apps_22x22_im-meanwhile.png b/data/icons/hicolor_apps_22x22_im-meanwhile.png
new file mode 100644
index 000000000..d6da49461
--- /dev/null
+++ b/data/icons/hicolor_apps_22x22_im-meanwhile.png
Binary files differ
diff --git a/data/icons/hicolor_apps_48x48_im-meanwhile.png b/data/icons/hicolor_apps_48x48_im-meanwhile.png
new file mode 100644
index 000000000..f747a5600
--- /dev/null
+++ b/data/icons/hicolor_apps_48x48_im-meanwhile.png
Binary files differ
diff --git a/data/icons/hicolor_apps_scalable_im-meanwhile.svg b/data/icons/hicolor_apps_scalable_im-meanwhile.svg
new file mode 100644
index 000000000..92244096a
--- /dev/null
+++ b/data/icons/hicolor_apps_scalable_im-meanwhile.svg
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/protocols/48"
+ sodipodi:docname="meanwhile.svg"
+ inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/protocols/48/meanwhile.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2195">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2197" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2199" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2230">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2232" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2234" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3150">
+ <stop
+ style="stop-color:#2e3436;stop-opacity:1;"
+ offset="0"
+ id="stop3152" />
+ <stop
+ style="stop-color:#2e3436;stop-opacity:0;"
+ offset="1"
+ id="stop3154" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3150"
+ id="radialGradient4330"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.842757,5.698892e-16,-4.565819e-9,-0.35721,19.80716,14.19321)"
+ cx="10.748654"
+ cy="10.457643"
+ fx="10.748654"
+ fy="10.457643"
+ r="6.6449099" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2230"
+ id="linearGradient2236"
+ x1="10.177145"
+ y1="-1.3535745"
+ x2="10.177145"
+ y2="8.1371298"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2195"
+ id="radialGradient2211"
+ cx="30.5625"
+ cy="23.172834"
+ fx="30.5625"
+ fy="23.172834"
+ r="23.5"
+ gradientTransform="matrix(1.330958,-1.200379e-32,1.144509e-32,1.269011,-10.11491,-9.053927)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16.976026"
+ inkscape:cx="38.972041"
+ inkscape:cy="25.781032"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ fill="#f57900"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1268"
+ inkscape:window-height="971"
+ inkscape:window-x="6"
+ inkscape:window-y="21" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.3;fill:url(#radialGradient4330);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3140"
+ sodipodi:cx="10.748654"
+ sodipodi:cy="10.457643"
+ sodipodi:rx="6.6449099"
+ sodipodi:ry="2.3675451"
+ d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z"
+ transform="matrix(3.583369,0,0,3.000545,-14.70523,9.779617)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#f57900;fill-opacity:1;stroke:#ce5c00;stroke-width:0.67679459;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4302"
+ sodipodi:cx="10.555883"
+ sodipodi:cy="4.0385542"
+ sodipodi:rx="5.074944"
+ sodipodi:ry="5.074944"
+ d="M 15.630827 4.0385542 A 5.074944 5.074944 0 1 1 5.4809394,4.0385542 A 5.074944 5.074944 0 1 1 15.630827 4.0385542 z"
+ transform="matrix(1.477556,0,0,1.477551,8.403577,4.033323)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.6;fill:url(#linearGradient2236);fill-opacity:1;stroke:#ffffff;stroke-width:0.78084576;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4273"
+ sodipodi:cx="10.555883"
+ sodipodi:cy="4.0385542"
+ sodipodi:rx="5.074944"
+ sodipodi:ry="5.074944"
+ d="M 15.630827 4.0385542 A 5.074944 5.074944 0 1 1 5.4809394,4.0385542 A 5.074944 5.074944 0 1 1 15.630827 4.0385542 z"
+ transform="matrix(1.280662,0,0,1.280662,10.48149,4.827989)" />
+ <path
+ style="fill:#f57900;fill-opacity:1;stroke:#ce5c00;stroke-width:1.00000119;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 34.49131,8.6205284 C 34.49131,13.938683 32.849731,20.518688 23.898198,20.518688 C 15.00451,20.518688 13.526711,13.679495 13.526711,8.6600767 L 5.4949228,9.8762415 C 5.4949228,23.237275 17.664236,26.553794 17.664236,26.553794 C 17.664236,26.553794 9.1712538,34.298165 9.1712538,44.405547 L 19.237281,44.498262 C 19.237281,44.498262 21.456328,35.564348 25.010569,35.564348 C 28.652494,35.564348 30.6887,44.471546 30.6887,44.471546 L 40.362294,44.503507 C 40.362294,33.010164 30.381957,26.578174 30.381957,26.578174 C 30.381957,26.578174 42.614757,23.170121 42.614757,9.5035195 L 34.49131,8.6205284 z "
+ id="rect2213"
+ sodipodi:nodetypes="czccccczccccc" />
+ <path
+ sodipodi:type="inkscape:offset"
+ inkscape:radius="-0.9525249"
+ inkscape:original="M 34.5 8.625 C 34.5 13.943155 32.857783 20.53125 23.90625 20.53125 C 15.012563 20.53125 13.53125 13.675668 13.53125 8.65625 L 5.5 9.875 C 5.5000002 23.236033 17.65625 26.5625 17.65625 26.5625 C 17.65625 26.562499 9.15625 34.298868 9.15625 44.40625 L 19.25 44.5 C 19.249999 44.500002 21.445759 35.5625 25 35.5625 C 28.641925 35.562502 30.6875 44.46875 30.6875 44.46875 L 40.375 44.5 C 40.375001 33.006658 30.375 26.59375 30.375 26.59375 C 30.375001 26.593749 42.625 23.166602 42.625 9.5 L 34.5 8.625 z "
+ xlink:href="#rect2213"
+ style="opacity:0.6;fill:url(#radialGradient2211);fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2220"
+ inkscape:href="#rect2213"
+ d="M 45.40625,11.75 C 45.26383,14.467634 44.656918,17.754917 42.6875,20.65625 C 40.459732,23.938183 36.552927,26.5 30.5,26.5 C 24.488156,26.5 20.637234,23.994802 18.4375,20.75 C 16.4845,17.869153 15.883719,14.581533 15.75,11.84375 L 7.5625,13.15625 C 7.8022289,20.855399 11.189172,25.378007 14.65625,28.03125 C 18.250337,30.781689 21.8125,31.5 21.8125,31.5 C 22.153479,31.568346 22.430121,31.817069 22.53422,32.148884 C 22.638319,32.4807 22.553332,32.842875 22.3125,33.09375 C 22.3125,33.09375 12.834342,43.464627 12.34375,55.4375 L 23.625,55.5625 C 23.775583,54.968024 24.284703,52.850143 25.46875,50.125 C 26.139238,48.581838 26.957479,47.047605 27.96875,45.8125 C 28.980021,44.577395 30.249533,43.59375 31.8125,43.59375 C 33.392834,43.59375 34.682884,44.544922 35.6875,45.78125 C 36.692116,47.017578 37.481015,48.583576 38.125,50.125 C 39.262583,52.847886 39.73782,54.93884 39.875,55.53125 L 50.59375,55.5625 C 49.991815,42.90975 37.8125,33.21875 37.8125,33.21875 C 37.516383,32.984647 37.386427,32.597781 37.481159,32.232384 C 37.575892,31.866987 37.877442,31.591993 38.25,31.53125 C 38.25,31.53125 42.11079,30.902899 45.96875,28.21875 C 49.692789,25.627775 53.310428,21.149688 53.5625,13.28125 L 45.40625,11.75 z " />
+ </g>
+</svg>
diff --git a/data/sametime.profile b/data/sametime.profile
new file mode 100644
index 000000000..aec798925
--- /dev/null
+++ b/data/sametime.profile
@@ -0,0 +1,11 @@
+[Profile]
+Manager=haze
+Protocol=sametime
+IconName = im-meanwhile
+DisplayName = Sametime
+ConfigurationUI = sametime
+Capabilities = chat-p2p, supports-alias, supports-roster
+VCardDefault = 1
+VCardField = X-Sametime
+SupportedPresences = away,hidden,do-not-disturb
+
diff --git a/docs/libempathy-gtk/Makefile.am b/docs/libempathy-gtk/Makefile.am
index 1a666bafb..14e7396f9 100644
--- a/docs/libempathy-gtk/Makefile.am
+++ b/docs/libempathy-gtk/Makefile.am
@@ -10,6 +10,7 @@ DOC_MAIN_SGML_FILE=libempathy-gtk-docs.sgml
# Extra options to supply to gtkdoc-scan
SCAN_OPTIONS=--deprecated-guards="G_DISABLE_DEPRECATED"
+SCANGOBJ_OPTIONS=--type-init-func="g_type_init();g_thread_init(NULL);"
# The directory containing the source code. Relative to $(srcdir)
DOC_SOURCE_DIR=$(top_srcdir)/libempathy-gtk
diff --git a/docs/libempathy-gtk/libempathy-gtk-docs.sgml b/docs/libempathy-gtk/libempathy-gtk-docs.sgml
index c7b630b14..edb31afb9 100644
--- a/docs/libempathy-gtk/libempathy-gtk-docs.sgml
+++ b/docs/libempathy-gtk/libempathy-gtk-docs.sgml
@@ -48,7 +48,9 @@
<xi:include href="xml/empathy-profile-chooser.xml"/>
<xi:include href="xml/empathy-smiley-manager.xml"/>
<xi:include href="xml/empathy-spell.xml"/>
+ <xi:include href="xml/empathy-sound.xml"/>
<xi:include href="xml/empathy-status-preset-dialog.xml"/>
+ <xi:include href="xml/empathy-theme-adium.xml"/>
<xi:include href="xml/empathy-theme-boxes.xml"/>
<xi:include href="xml/empathy-theme-irc.xml"/>
<xi:include href="xml/empathy-theme-manager.xml"/>
diff --git a/docs/libempathy-gtk/libempathy-gtk.types b/docs/libempathy-gtk/libempathy-gtk.types
index 9f3642193..ead69316b 100644
--- a/docs/libempathy-gtk/libempathy-gtk.types
+++ b/docs/libempathy-gtk/libempathy-gtk.types
@@ -1,4 +1,5 @@
empathy_account_chooser_get_type
+empathy_adium_data_get_type
empathy_audio_sink_get_type
empathy_audio_src_get_type
empathy_avatar_chooser_get_type
@@ -24,6 +25,7 @@ empathy_presence_chooser_get_type
empathy_profile_chooser_get_type
empathy_smiley_manager_get_type
empathy_status_preset_dialog_get_type
+empathy_theme_adium_get_type
empathy_theme_boxes_get_type
empathy_theme_irc_get_type
empathy_theme_manager_get_type
diff --git a/docs/libempathy/libempathy-docs.sgml b/docs/libempathy/libempathy-docs.sgml
index 5c6c3ca4e..41c7add8d 100644
--- a/docs/libempathy/libempathy-docs.sgml
+++ b/docs/libempathy/libempathy-docs.sgml
@@ -50,7 +50,6 @@
<xi:include href="xml/empathy-tp-contact-list.xml"/>
<xi:include href="xml/empathy-tp-file.xml"/>
<xi:include href="xml/empathy-tp-roomlist.xml"/>
- <xi:include href="xml/empathy-tp-tube.xml"/>
<xi:include href="xml/empathy-tube-handler.xml"/>
<xi:include href="xml/empathy-types.xml"/>
<xi:include href="xml/empathy-utils.xml"/>
diff --git a/docs/libempathy/libempathy.types b/docs/libempathy/libempathy.types
index 9da0bbe18..878e68033 100644
--- a/docs/libempathy/libempathy.types
+++ b/docs/libempathy/libempathy.types
@@ -31,6 +31,5 @@ empathy_tp_contact_factory_get_type
empathy_tp_contact_list_get_type
empathy_tp_file_get_type
empathy_tp_roomlist_get_type
-empathy_tp_tube_get_type
empathy_tube_handler_get_type
diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am
index 80c9a792d..10931012a 100644
--- a/libempathy-gtk/Makefile.am
+++ b/libempathy-gtk/Makefile.am
@@ -10,6 +10,7 @@ AM_CPPFLAGS = \
$(ENCHANT_CFLAGS) \
$(LIBCHAMPLAIN_CFLAGS) \
$(GEOCLUE_CFLAGS) \
+ $(WEBKIT_CFLAGS) \
$(WARN_CFLAGS) \
$(DISABLE_DEPRECATED)
@@ -53,6 +54,7 @@ libempathy_gtk_handwritten_source = \
empathy-presence-chooser.c \
empathy-profile-chooser.c \
empathy-smiley-manager.c \
+ empathy-sound.c \
empathy-spell.c \
empathy-status-preset-dialog.c \
empathy-theme-boxes.c \
@@ -73,6 +75,7 @@ libempathy_gtk_la_LIBADD = \
$(ENCHANT_LIBS) \
$(LIBCHAMPLAIN_LIBS) \
$(GEOCLUE_LIBS) \
+ $(WEBKIT_LIBS) \
$(top_builddir)/libempathy/libempathy.la
libempathy_gtk_la_LDFLAGS = \
@@ -111,6 +114,7 @@ libempathy_gtk_headers = \
empathy-presence-chooser.h \
empathy-profile-chooser.h \
empathy-smiley-manager.h \
+ empathy-sound.h \
empathy-spell.h \
empathy-status-preset-dialog.h \
empathy-theme-boxes.h \
@@ -118,14 +122,6 @@ libempathy_gtk_headers = \
empathy-theme-manager.h \
empathy-ui-utils.h
-if HAVE_GEOCLUE
-libempathy_gtk_handwritten_source += \
- empathy-location-manager.c
-
-libempathy_gtk_headers += \
- empathy-location-manager.h
-endif
-
check_c_sources = \
$(libempathy_gtk_handwritten_source) \
$(libempathy_gtk_headers)
@@ -218,6 +214,33 @@ pkgconfig_DATA = libempathy-gtk.pc
EXTRA_DIST = \
$(ui_DATA)
+if HAVE_GEOCLUE
+libempathy_gtk_handwritten_source += \
+ empathy-location-manager.c
+
+libempathy_gtk_headers += \
+ empathy-location-manager.h
+else
+EXTRA_DIST += \
+ empathy-location-manager.c \
+ empathy-location-manager.h
+endif
+
+if HAVE_WEBKIT
+libempathy_gtk_handwritten_source += \
+ empathy-plist.c \
+ empathy-theme-adium.c
+libempathy_gtk_headers += \
+ empathy-plist.h \
+ empathy-theme-adium.h
+else
+EXTRA_DIST += \
+ empathy-plist.c \
+ empathy-plist.h \
+ empathy-theme-adium.c \
+ empathy-theme-adium.h
+endif
+
CLEANFILES = \
$(BUILT_SOURCES) \
stamp-empathy-gtk-enum-types.h
diff --git a/libempathy-gtk/empathy-account-chooser.c b/libempathy-gtk/empathy-account-chooser.c
index 915b37b23..488486fdf 100644
--- a/libempathy-gtk/empathy-account-chooser.c
+++ b/libempathy-gtk/empathy-account-chooser.c
@@ -361,7 +361,7 @@ empathy_account_chooser_get_has_all_option (EmpathyAccountChooser *chooser)
g_return_val_if_fail (EMPATHY_IS_ACCOUNT_CHOOSER (chooser), FALSE);
priv = GET_PRIV (chooser);
-
+
return priv->has_all_option;
}
@@ -653,11 +653,11 @@ account_chooser_separator_func (GtkTreeModel *model,
gboolean is_separator;
priv = GET_PRIV (chooser);
-
+
if (!priv->has_all_option) {
return FALSE;
}
-
+
gtk_tree_model_get (model, iter, COL_ACCOUNT_TEXT, &text, -1);
is_separator = text == NULL;
g_free (text);
diff --git a/libempathy-gtk/empathy-account-chooser.h b/libempathy-gtk/empathy-account-chooser.h
index 004a3e87f..c2105406a 100644
--- a/libempathy-gtk/empathy-account-chooser.h
+++ b/libempathy-gtk/empathy-account-chooser.h
@@ -25,7 +25,7 @@
#ifndef __EMPATHY_ACCOUNT_CHOOSER_H__
#define __EMPATHY_ACCOUNT_CHOOSER_H__
-#include <gtk/gtkcombobox.h>
+#include <gtk/gtk.h>
#include <libmissioncontrol/mc-account.h>
diff --git a/libempathy-gtk/empathy-account-widget-aim.ui b/libempathy-gtk/empathy-account-widget-aim.ui
index 643b26d7d..7f7ac3a60 100644
--- a/libempathy-gtk/empathy-account-widget-aim.ui
+++ b/libempathy-gtk/empathy-account-widget-aim.ui
@@ -176,8 +176,10 @@
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget-generic.ui b/libempathy-gtk/empathy-account-widget-generic.ui
index 8659d47c1..649307e06 100644
--- a/libempathy-gtk/empathy-account-widget-generic.ui
+++ b/libempathy-gtk/empathy-account-widget-generic.ui
@@ -68,8 +68,10 @@
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget-groupwise.ui b/libempathy-gtk/empathy-account-widget-groupwise.ui
index 4f2630461..84157527d 100644
--- a/libempathy-gtk/empathy-account-widget-groupwise.ui
+++ b/libempathy-gtk/empathy-account-widget-groupwise.ui
@@ -180,8 +180,10 @@
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget-icq.ui b/libempathy-gtk/empathy-account-widget-icq.ui
index 7c6ab42b2..5eab0b75b 100644
--- a/libempathy-gtk/empathy-account-widget-icq.ui
+++ b/libempathy-gtk/empathy-account-widget-icq.ui
@@ -205,8 +205,10 @@
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget-irc.h b/libempathy-gtk/empathy-account-widget-irc.h
index 6ead048eb..a89081fc0 100644
--- a/libempathy-gtk/empathy-account-widget-irc.h
+++ b/libempathy-gtk/empathy-account-widget-irc.h
@@ -21,7 +21,7 @@
#ifndef __EMPATHY_ACCOUNT_WIDGET_IRC_H__
#define __EMPATHY_ACCOUNT_WIDGET_IRC_H__
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
#include <libmissioncontrol/mc-account.h>
G_BEGIN_DECLS
diff --git a/libempathy-gtk/empathy-account-widget-irc.ui b/libempathy-gtk/empathy-account-widget-irc.ui
index 76c67f711..abb1c9362 100644
--- a/libempathy-gtk/empathy-account-widget-irc.ui
+++ b/libempathy-gtk/empathy-account-widget-irc.ui
@@ -87,8 +87,10 @@
<child type="label">
<object class="GtkLabel" id="label_network1">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Network&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Network</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -210,8 +212,10 @@
<child type="label">
<object class="GtkLabel" id="label_servers">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Servers&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Servers</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget-jabber.ui b/libempathy-gtk/empathy-account-widget-jabber.ui
index 083479c2b..4b0aa15ad 100644
--- a/libempathy-gtk/empathy-account-widget-jabber.ui
+++ b/libempathy-gtk/empathy-account-widget-jabber.ui
@@ -318,8 +318,10 @@
<child type="label">
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Override server settings&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Override server settings</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -332,8 +334,10 @@
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget-msn.ui b/libempathy-gtk/empathy-account-widget-msn.ui
index c9084ff6e..1d7bde038 100644
--- a/libempathy-gtk/empathy-account-widget-msn.ui
+++ b/libempathy-gtk/empathy-account-widget-msn.ui
@@ -180,8 +180,10 @@
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget-salut.ui b/libempathy-gtk/empathy-account-widget-salut.ui
index 56626a9b5..ca633309d 100644
--- a/libempathy-gtk/empathy-account-widget-salut.ui
+++ b/libempathy-gtk/empathy-account-widget-salut.ui
@@ -202,8 +202,10 @@
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget-sip.h b/libempathy-gtk/empathy-account-widget-sip.h
index 7e8e5a216..9187c1e0c 100644
--- a/libempathy-gtk/empathy-account-widget-sip.h
+++ b/libempathy-gtk/empathy-account-widget-sip.h
@@ -21,7 +21,7 @@
#ifndef __EMPATHY_ACCOUNT_WIDGET_SIP_H__
#define __EMPATHY_ACCOUNT_WIDGET_SIP_H__
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
#include <libmissioncontrol/mc-account.h>
G_BEGIN_DECLS
diff --git a/libempathy-gtk/empathy-account-widget-sip.ui b/libempathy-gtk/empathy-account-widget-sip.ui
index 259c9bdab..406f22c94 100644
--- a/libempathy-gtk/empathy-account-widget-sip.ui
+++ b/libempathy-gtk/empathy-account-widget-sip.ui
@@ -198,8 +198,10 @@
<child type="label">
<object class="GtkLabel" id="label_expander">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget-yahoo.ui b/libempathy-gtk/empathy-account-widget-yahoo.ui
index ed91bc7f8..31e932674 100644
--- a/libempathy-gtk/empathy-account-widget-yahoo.ui
+++ b/libempathy-gtk/empathy-account-widget-yahoo.ui
@@ -280,8 +280,10 @@
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c
index 669869a4d..b0d7f8de5 100644
--- a/libempathy-gtk/empathy-account-widget.c
+++ b/libempathy-gtk/empathy-account-widget.c
@@ -238,11 +238,11 @@ account_widget_generic_format_param_name (const gchar *param_name)
gchar *p;
str = g_strdup (param_name);
-
+
if (str && g_ascii_isalpha (str[0])) {
str[0] = g_ascii_toupper (str[0]);
}
-
+
while ((p = strchr (str, '-')) != NULL) {
if (p[1] != '\0' && g_ascii_isalpha (p[1])) {
p[0] = ' ';
@@ -251,7 +251,7 @@ account_widget_generic_format_param_name (const gchar *param_name)
p++;
}
-
+
return str;
}
@@ -448,7 +448,7 @@ empathy_account_widget_add_forget_button (McAccount *account,
GtkWidget *button_forget;
GtkWidget *entry_password;
gchar *password = NULL;
-
+
button_forget = GTK_WIDGET (gtk_builder_get_object (gui, button));
entry_password = GTK_WIDGET (gtk_builder_get_object (gui, entry));
diff --git a/libempathy-gtk/empathy-avatar-chooser.c b/libempathy-gtk/empathy-avatar-chooser.c
index 0f4311e07..83475b565 100644
--- a/libempathy-gtk/empathy-avatar-chooser.c
+++ b/libempathy-gtk/empathy-avatar-chooser.c
@@ -555,7 +555,7 @@ avatar_chooser_maybe_convert_and_scale (EmpathyAvatarChooser *chooser,
/* Takes ownership of new_mime_type and converted_image_data */
avatar = empathy_avatar_new (converted_image_data,
- converted_image_size, new_mime_type, NULL);
+ converted_image_size, new_mime_type, NULL, NULL);
return avatar;
}
@@ -598,7 +598,7 @@ avatar_chooser_set_image_from_data (EmpathyAvatarChooser *chooser,
}
/* avatar takes ownership of data and mime_type */
- avatar = empathy_avatar_new (data, size, mime_type, NULL);
+ avatar = empathy_avatar_new (data, size, mime_type, NULL, NULL);
avatar_chooser_set_image (chooser, avatar, pixbuf, set_locally);
}
@@ -810,14 +810,14 @@ avatar_chooser_drag_data_received_cb (GtkWidget *widget,
if (input_stream != NULL) {
GFileInfo *info;
-
+
info = g_file_query_info (file,
G_FILE_ATTRIBUTE_STANDARD_SIZE,
0, NULL, NULL);
if (info != NULL) {
goffset size;
gssize bytes_read;
-
+
size = g_file_info_get_size (info);
data = g_malloc (size);
@@ -838,7 +838,7 @@ avatar_chooser_drag_data_received_cb (GtkWidget *widget,
g_object_unref (input_stream);
}
-
+
g_object_unref (file);
}
diff --git a/libempathy-gtk/empathy-avatar-chooser.h b/libempathy-gtk/empathy-avatar-chooser.h
index f4e40a8b0..1a5023047 100644
--- a/libempathy-gtk/empathy-avatar-chooser.h
+++ b/libempathy-gtk/empathy-avatar-chooser.h
@@ -24,7 +24,7 @@
#ifndef __EMPATHY_AVATAR_CHOOSER_H__
#define __EMPATHY_AVATAR_CHOOSER_H__
-#include <gtk/gtkbutton.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-contact.h>
diff --git a/libempathy-gtk/empathy-avatar-image.h b/libempathy-gtk/empathy-avatar-image.h
index ddb446a60..2271ecc72 100644
--- a/libempathy-gtk/empathy-avatar-image.h
+++ b/libempathy-gtk/empathy-avatar-image.h
@@ -24,7 +24,7 @@
#ifndef __EMPATHY_AVATAR_IMAGE_H__
#define __EMPATHY_AVATAR_IMAGE_H__
-#include <gtk/gtkeventbox.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-contact.h>
diff --git a/libempathy-gtk/empathy-cell-renderer-activatable.c b/libempathy-gtk/empathy-cell-renderer-activatable.c
index 2883c4ded..6c7982682 100644
--- a/libempathy-gtk/empathy-cell-renderer-activatable.c
+++ b/libempathy-gtk/empathy-cell-renderer-activatable.c
@@ -20,7 +20,7 @@
* Authors: Raphael Slinckx <raphael@slinckx.net>
*/
-#include <gtk/gtktreeview.h>
+#include <gtk/gtk.h>
#include "empathy-cell-renderer-activatable.h"
diff --git a/libempathy-gtk/empathy-cell-renderer-activatable.h b/libempathy-gtk/empathy-cell-renderer-activatable.h
index 5962c200f..d58a082da 100644
--- a/libempathy-gtk/empathy-cell-renderer-activatable.h
+++ b/libempathy-gtk/empathy-cell-renderer-activatable.h
@@ -23,7 +23,7 @@
#ifndef __EMPATHY_CELL_RENDERER_ACTIVATABLE_H__
#define __EMPATHY_CELL_RENDERER_ACTIVATABLE_H__
-#include <gtk/gtkcellrendererpixbuf.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/libempathy-gtk/empathy-cell-renderer-expander.c b/libempathy-gtk/empathy-cell-renderer-expander.c
index 09fe8bd4f..6fb7cfded 100644
--- a/libempathy-gtk/empathy-cell-renderer-expander.c
+++ b/libempathy-gtk/empathy-cell-renderer-expander.c
@@ -29,7 +29,7 @@
* start the new one).
*/
-#include <gtk/gtktreeview.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-utils.h>
#include "empathy-cell-renderer-expander.h"
diff --git a/libempathy-gtk/empathy-cell-renderer-expander.h b/libempathy-gtk/empathy-cell-renderer-expander.h
index fc569ded2..00e36f545 100644
--- a/libempathy-gtk/empathy-cell-renderer-expander.h
+++ b/libempathy-gtk/empathy-cell-renderer-expander.h
@@ -23,7 +23,7 @@
#ifndef __EMPATHY_CELL_RENDERER_EXPANDER_H__
#define __EMPATHY_CELL_RENDERER_EXPANDER_H__
-#include <gtk/gtkcellrenderer.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/libempathy-gtk/empathy-cell-renderer-text.h b/libempathy-gtk/empathy-cell-renderer-text.h
index 540c2ebb9..48ded9626 100644
--- a/libempathy-gtk/empathy-cell-renderer-text.h
+++ b/libempathy-gtk/empathy-cell-renderer-text.h
@@ -23,7 +23,7 @@
#ifndef __EMPATHY_CELL_RENDERER_TEXT_H__
#define __EMPATHY_CELL_RENDERER_TEXT_H__
-#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/libempathy-gtk/empathy-chat-text-view.c b/libempathy-gtk/empathy-chat-text-view.c
index 8874b7ace..c47b5474f 100644
--- a/libempathy-gtk/empathy-chat-text-view.c
+++ b/libempathy-gtk/empathy-chat-text-view.c
@@ -103,10 +103,10 @@ chat_text_view_url_event_cb (GtkTextTag *tag,
if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end)) {
return FALSE;
}
-
+
if (event->type == GDK_BUTTON_RELEASE && event->button.button == 1) {
start = end = *iter;
-
+
if (gtk_text_iter_backward_to_tag_toggle (&start, tag) &&
gtk_text_iter_forward_to_tag_toggle (&end, tag)) {
str = gtk_text_buffer_get_text (priv->buffer,
@@ -118,7 +118,7 @@ chat_text_view_url_event_cb (GtkTextTag *tag,
g_free (str);
}
}
-
+
return FALSE;
}
@@ -133,31 +133,31 @@ chat_text_view_event_cb (EmpathyChatTextView *view,
GtkTextIter iter;
GdkWindow *win;
gint x, y, buf_x, buf_y;
-
+
type = gtk_text_view_get_window_type (GTK_TEXT_VIEW (view),
event->window);
-
+
if (type != GTK_TEXT_WINDOW_TEXT) {
return FALSE;
}
-
+
/* Get where the pointer really is. */
win = gtk_text_view_get_window (GTK_TEXT_VIEW (view), type);
if (!win) {
return FALSE;
}
-
+
gdk_window_get_pointer (win, &x, &y, NULL);
-
+
/* Get the iter where the cursor is at */
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view), type,
x, y,
&buf_x, &buf_y);
-
+
gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (view),
&iter,
buf_x, buf_y);
-
+
if (gtk_text_iter_has_tag (&iter, tag)) {
if (!hand) {
hand = gdk_cursor_new (GDK_HAND2);
@@ -170,7 +170,7 @@ chat_text_view_event_cb (EmpathyChatTextView *view,
}
gdk_window_set_cursor (win, beam);
}
-
+
return FALSE;
}
@@ -192,7 +192,7 @@ chat_text_view_create_tags (EmpathyChatTextView *view)
g_signal_connect (tag, "event",
G_CALLBACK (chat_text_view_url_event_cb),
view);
-
+
g_signal_connect (view, "motion-notify-event",
G_CALLBACK (chat_text_view_event_cb),
tag);
@@ -203,7 +203,7 @@ chat_text_view_system_font_update (EmpathyChatTextView *view)
{
PangoFontDescription *font_description = NULL;
gchar *font_name;
-
+
if (empathy_conf_get_string (empathy_conf_get (),
"/desktop/gnome/interface/document_font_name",
&font_name) && font_name) {
@@ -212,9 +212,9 @@ chat_text_view_system_font_update (EmpathyChatTextView *view)
} else {
font_description = NULL;
}
-
+
gtk_widget_modify_font (GTK_WIDGET (view), font_description);
-
+
if (font_description) {
pango_font_description_free (font_description);
}
@@ -226,14 +226,8 @@ chat_text_view_notify_system_font_cb (EmpathyConf *conf,
gpointer user_data)
{
EmpathyChatTextView *view = user_data;
-
- chat_text_view_system_font_update (view);
-}
-static void
-chat_text_view_clear_view_cb (GtkMenuItem *menuitem, EmpathyChatTextView *view)
-{
- empathy_chat_view_clear (EMPATHY_CHAT_VIEW (view));
+ chat_text_view_system_font_update (view);
}
static void
@@ -246,18 +240,18 @@ static void
chat_text_view_copy_address_cb (GtkMenuItem *menuitem, const gchar *url)
{
GtkClipboard *clipboard;
-
+
clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
gtk_clipboard_set_text (clipboard, url, -1);
-
+
clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
gtk_clipboard_set_text (clipboard, url, -1);
}
static void
chat_text_view_populate_popup (EmpathyChatTextView *view,
- GtkMenu *menu,
- gpointer user_data)
+ GtkMenu *menu,
+ gpointer user_data)
{
EmpathyChatTextViewPriv *priv;
GtkTextTagTable *table;
@@ -266,71 +260,68 @@ chat_text_view_populate_popup (EmpathyChatTextView *view,
GtkTextIter iter, start, end;
GtkWidget *item;
gchar *str = NULL;
-
+
priv = GET_PRIV (view);
-
+
/* Clear menu item */
if (gtk_text_buffer_get_char_count (priv->buffer) > 0) {
- item = gtk_menu_item_new ();
+ item = gtk_separator_menu_item_new ();
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
-
+
item = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL);
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
-
- g_signal_connect (item,
- "activate",
- G_CALLBACK (chat_text_view_clear_view_cb),
- view);
+
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (empathy_chat_view_clear),
+ view);
}
-
+
/* Link context menu items */
table = gtk_text_buffer_get_tag_table (priv->buffer);
tag = gtk_text_tag_table_lookup (table, EMPATHY_CHAT_TEXT_VIEW_TAG_LINK);
-
+
gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y);
-
+
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (view),
GTK_TEXT_WINDOW_WIDGET,
x, y,
&x, &y);
-
+
gtk_text_view_get_iter_at_location (GTK_TEXT_VIEW (view), &iter, x, y);
-
+
start = end = iter;
-
+
if (gtk_text_iter_backward_to_tag_toggle (&start, tag) &&
gtk_text_iter_forward_to_tag_toggle (&end, tag)) {
str = gtk_text_buffer_get_text (priv->buffer,
&start, &end, FALSE);
}
-
+
if (EMP_STR_EMPTY (str)) {
g_free (str);
return;
}
-
+
/* NOTE: Set data just to get the string freed when not needed. */
g_object_set_data_full (G_OBJECT (menu),
"url", str,
(GDestroyNotify) g_free);
-
- item = gtk_menu_item_new ();
+
+ item = gtk_separator_menu_item_new ();
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
-
+
item = gtk_menu_item_new_with_mnemonic (_("_Copy Link Address"));
- g_signal_connect (item,
- "activate",
+ g_signal_connect (item, "activate",
G_CALLBACK (chat_text_view_copy_address_cb),
str);
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
-
+
item = gtk_menu_item_new_with_mnemonic (_("_Open Link"));
- g_signal_connect (item,
- "activate",
+ g_signal_connect (item, "activate",
G_CALLBACK (chat_text_view_open_address_cb),
str);
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
@@ -341,18 +332,24 @@ static gboolean
chat_text_view_is_scrolled_down (EmpathyChatTextView *view)
{
GtkWidget *sw;
-
+
sw = gtk_widget_get_parent (GTK_WIDGET (view));
if (GTK_IS_SCROLLED_WINDOW (sw)) {
GtkAdjustment *vadj;
-
+ gdouble value;
+ gdouble upper;
+ gdouble page_size;
+
vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (sw));
-
- if (vadj->value + vadj->page_size / 2 < vadj->upper - vadj->page_size) {
+ value = gtk_adjustment_get_value (vadj);
+ upper = gtk_adjustment_get_upper (vadj);
+ page_size = gtk_adjustment_get_page_size (vadj);
+
+ if (value < upper - page_size) {
return FALSE;
}
}
-
+
return TRUE;
}
@@ -365,23 +362,23 @@ chat_text_view_maybe_trim_buffer (EmpathyChatTextView *view)
gint remove;
GtkTextTagTable *table;
GtkTextTag *tag;
-
+
priv = GET_PRIV (view);
-
+
gtk_text_buffer_get_end_iter (priv->buffer, &bottom);
line = gtk_text_iter_get_line (&bottom);
if (line < MAX_LINES) {
return;
}
-
+
remove = line - MAX_LINES;
gtk_text_buffer_get_start_iter (priv->buffer, &top);
-
+
bottom = top;
if (!gtk_text_iter_forward_lines (&bottom, remove)) {
return;
}
-
+
/* Track backwords to a place where we can safely cut, we don't do it in
* the middle of a tag.
*/
@@ -390,11 +387,11 @@ chat_text_view_maybe_trim_buffer (EmpathyChatTextView *view)
if (!tag) {
return;
}
-
+
if (!gtk_text_iter_forward_to_tag_toggle (&bottom, tag)) {
return;
}
-
+
if (!gtk_text_iter_equal (&top, &bottom)) {
gtk_text_buffer_delete (priv->buffer, &top, &bottom);
}
@@ -445,7 +442,7 @@ chat_text_view_append_timestamp (EmpathyChatTextView *view,
priv->last_timestamp = timestamp;
- g_string_free (str, TRUE);
+ g_string_free (str, TRUE);
}
static void
@@ -470,7 +467,7 @@ chat_text_maybe_append_date_and_time (EmpathyChatTextView *view,
append_date = TRUE;
append_time = TRUE;
}
-
+
g_date_free (last_date);
g_date_free (date);
@@ -489,14 +486,14 @@ chat_text_view_size_allocate (GtkWidget *widget,
GtkAllocation *alloc)
{
gboolean down;
-
+
down = chat_text_view_is_scrolled_down (EMPATHY_CHAT_TEXT_VIEW (widget));
-
+
GTK_WIDGET_CLASS (empathy_chat_text_view_parent_class)->size_allocate (widget, alloc);
-
+
if (down) {
GtkAdjustment *adj;
-
+
adj = GTK_TEXT_VIEW (widget)->vadjustment;
gtk_adjustment_set_value (adj, adj->upper - adj->page_size);
}
@@ -511,7 +508,7 @@ chat_text_view_drag_motion (GtkWidget *widget,
{
/* Don't handle drag motion, since we don't want the view to scroll as
* the result of dragging something across it. */
-
+
return FALSE;
}
@@ -559,14 +556,14 @@ chat_text_view_finalize (GObject *object)
{
EmpathyChatTextView *view;
EmpathyChatTextViewPriv *priv;
-
+
view = EMPATHY_CHAT_TEXT_VIEW (object);
priv = GET_PRIV (view);
-
+
DEBUG ("%p", object);
-
+
empathy_conf_notify_remove (empathy_conf_get (), priv->notify_system_fonts_id);
-
+
if (priv->last_contact) {
g_object_unref (priv->last_contact);
}
@@ -576,7 +573,8 @@ chat_text_view_finalize (GObject *object)
if (priv->scroll_timeout) {
g_source_remove (priv->scroll_timeout);
}
-
+ g_object_unref (priv->smiley_manager);
+
G_OBJECT_CLASS (empathy_chat_text_view_parent_class)->finalize (object);
}
@@ -585,7 +583,7 @@ empathy_chat_text_view_class_init (EmpathyChatTextViewClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
+
object_class->finalize = chat_text_view_finalize;
object_class->get_property = chat_text_view_get_property;
object_class->set_property = chat_text_view_set_property;
@@ -618,18 +616,18 @@ empathy_chat_text_view_init (EmpathyChatTextView *view)
EmpathyChatTextViewPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (view,
EMPATHY_TYPE_CHAT_TEXT_VIEW, EmpathyChatTextViewPriv);
- view->priv = priv;
+ view->priv = priv;
priv->buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
priv->last_timestamp = 0;
priv->allow_scrolling = TRUE;
priv->smiley_manager = empathy_smiley_manager_dup_singleton ();
-
+
g_object_set (view,
"wrap-mode", GTK_WRAP_WORD_CHAR,
"editable", FALSE,
"cursor-visible", FALSE,
NULL);
-
+
priv->notify_system_fonts_id =
empathy_conf_notify_add (empathy_conf_get (),
"/desktop/gnome/interface/document_font_name",
@@ -651,13 +649,13 @@ chat_text_view_scroll_cb (EmpathyChatTextView *view)
EmpathyChatTextViewPriv *priv;
GtkAdjustment *adj;
gdouble max_val;
-
+
priv = GET_PRIV (view);
adj = GTK_TEXT_VIEW (view)->vadjustment;
max_val = adj->upper - adj->page_size;
-
+
g_return_val_if_fail (priv->scroll_time != NULL, FALSE);
-
+
if (g_timer_elapsed (priv->scroll_time, NULL) > MAX_SCROLL_TIME) {
/* time's up. jump to the end and kill the timer */
gtk_adjustment_set_value (adj, max_val);
@@ -666,7 +664,7 @@ chat_text_view_scroll_cb (EmpathyChatTextView *view)
priv->scroll_timeout = 0;
return FALSE;
}
-
+
/* scroll by 1/3rd the remaining distance */
gtk_adjustment_set_value (adj, gtk_adjustment_get_value (adj) + ((max_val - gtk_adjustment_get_value (adj)) / 3));
return TRUE;
@@ -676,9 +674,9 @@ static void
chat_text_view_scroll_down (EmpathyChatView *view)
{
EmpathyChatTextViewPriv *priv = GET_PRIV (view);
-
+
g_return_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view));
-
+
if (!priv->allow_scrolling) {
return;
}
@@ -705,29 +703,29 @@ chat_text_view_append_message (EmpathyChatView *view,
EmpathyChatTextViewPriv *priv = GET_PRIV (text_view);
gboolean bottom;
time_t timestamp;
-
+
g_return_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view));
g_return_if_fail (EMPATHY_IS_MESSAGE (msg));
-
+
if (!empathy_message_get_body (msg)) {
return;
}
-
+
bottom = chat_text_view_is_scrolled_down (text_view);
-
+
chat_text_view_maybe_trim_buffer (EMPATHY_CHAT_TEXT_VIEW (view));
-
+
timestamp = empathy_message_get_timestamp (msg);
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);
}
-
+
if (bottom) {
chat_text_view_scroll_down (view);
}
-
+
if (priv->last_contact) {
g_object_unref (priv->last_contact);
}
@@ -765,7 +763,7 @@ chat_text_view_append_event (EmpathyChatView *view,
if (bottom) {
chat_text_view_scroll_down (view);
}
-
+
if (priv->last_contact) {
g_object_unref (priv->last_contact);
priv->last_contact = NULL;
@@ -778,9 +776,9 @@ chat_text_view_scroll (EmpathyChatView *view,
gboolean allow_scrolling)
{
EmpathyChatTextViewPriv *priv = GET_PRIV (view);
-
+
g_return_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view));
-
+
DEBUG ("Scrolling %s", allow_scrolling ? "enabled" : "disabled");
priv->allow_scrolling = allow_scrolling;
@@ -793,11 +791,11 @@ static gboolean
chat_text_view_get_has_selection (EmpathyChatView *view)
{
GtkTextBuffer *buffer;
-
+
g_return_val_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view), FALSE);
-
+
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-
+
return gtk_text_buffer_get_has_selection (buffer);
}
@@ -806,18 +804,18 @@ chat_text_view_clear (EmpathyChatView *view)
{
GtkTextBuffer *buffer;
EmpathyChatTextViewPriv *priv;
-
+
g_return_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view));
-
+
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
gtk_text_buffer_set_text (buffer, "", -1);
-
+
/* We set these back to the initial values so we get
* timestamps when clearing the window to know when
* conversations start.
*/
priv = GET_PRIV (view);
-
+
priv->last_timestamp = 0;
}
@@ -833,18 +831,18 @@ chat_text_view_find_previous (EmpathyChatView *view,
GtkTextIter iter_match_end;
gboolean found;
gboolean from_start = FALSE;
-
+
g_return_val_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view), FALSE);
g_return_val_if_fail (search_criteria != NULL, FALSE);
-
+
priv = GET_PRIV (view);
-
+
buffer = priv->buffer;
-
+
if (EMP_STR_EMPTY (search_criteria)) {
if (priv->find_mark_previous) {
gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
-
+
gtk_text_buffer_move_mark (buffer,
priv->find_mark_previous,
&iter_at_mark);
@@ -858,14 +856,14 @@ chat_text_view_find_previous (EmpathyChatView *view,
&iter_at_mark,
&iter_at_mark);
}
-
+
return FALSE;
}
-
+
if (new_search) {
from_start = TRUE;
}
-
+
if (priv->find_mark_previous) {
gtk_text_buffer_get_iter_at_mark (buffer,
&iter_at_mark,
@@ -874,22 +872,22 @@ chat_text_view_find_previous (EmpathyChatView *view,
gtk_text_buffer_get_end_iter (buffer, &iter_at_mark);
from_start = TRUE;
}
-
+
priv->find_last_direction = FALSE;
-
+
found = empathy_text_iter_backward_search (&iter_at_mark,
search_criteria,
&iter_match_start,
&iter_match_end,
NULL);
-
+
if (!found) {
gboolean result = FALSE;
-
+
if (from_start) {
return result;
}
-
+
/* Here we wrap around. */
if (!new_search && !priv->find_wrapped) {
priv->find_wrapped = TRUE;
@@ -898,10 +896,10 @@ chat_text_view_find_previous (EmpathyChatView *view,
FALSE);
priv->find_wrapped = FALSE;
}
-
+
return result;
}
-
+
/* Set new mark and show on screen */
if (!priv->find_mark_previous) {
priv->find_mark_previous = gtk_text_buffer_create_mark (buffer, NULL,
@@ -912,7 +910,7 @@ chat_text_view_find_previous (EmpathyChatView *view,
priv->find_mark_previous,
&iter_match_start);
}
-
+
if (!priv->find_mark_next) {
priv->find_mark_next = gtk_text_buffer_create_mark (buffer, NULL,
&iter_match_end,
@@ -922,17 +920,17 @@ chat_text_view_find_previous (EmpathyChatView *view,
priv->find_mark_next,
&iter_match_end);
}
-
+
gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
priv->find_mark_previous,
0.0,
TRUE,
0.5,
0.5);
-
+
gtk_text_buffer_move_mark_by_name (buffer, "selection_bound", &iter_match_start);
gtk_text_buffer_move_mark_by_name (buffer, "insert", &iter_match_end);
-
+
return TRUE;
}
@@ -948,18 +946,18 @@ chat_text_view_find_next (EmpathyChatView *view,
GtkTextIter iter_match_end;
gboolean found;
gboolean from_start = FALSE;
-
+
g_return_val_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view), FALSE);
g_return_val_if_fail (search_criteria != NULL, FALSE);
-
+
priv = GET_PRIV (view);
-
+
buffer = priv->buffer;
-
+
if (EMP_STR_EMPTY (search_criteria)) {
if (priv->find_mark_next) {
gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
-
+
gtk_text_buffer_move_mark (buffer,
priv->find_mark_next,
&iter_at_mark);
@@ -973,14 +971,14 @@ chat_text_view_find_next (EmpathyChatView *view,
&iter_at_mark,
&iter_at_mark);
}
-
+
return FALSE;
}
-
+
if (new_search) {
from_start = TRUE;
}
-
+
if (priv->find_mark_next) {
gtk_text_buffer_get_iter_at_mark (buffer,
&iter_at_mark,
@@ -989,22 +987,22 @@ chat_text_view_find_next (EmpathyChatView *view,
gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
from_start = TRUE;
}
-
+
priv->find_last_direction = TRUE;
-
+
found = empathy_text_iter_forward_search (&iter_at_mark,
search_criteria,
&iter_match_start,
&iter_match_end,
NULL);
-
+
if (!found) {
gboolean result = FALSE;
-
+
if (from_start) {
return result;
}
-
+
/* Here we wrap around. */
if (!new_search && !priv->find_wrapped) {
priv->find_wrapped = TRUE;
@@ -1013,10 +1011,10 @@ chat_text_view_find_next (EmpathyChatView *view,
FALSE);
priv->find_wrapped = FALSE;
}
-
+
return result;
}
-
+
/* Set new mark and show on screen */
if (!priv->find_mark_next) {
priv->find_mark_next = gtk_text_buffer_create_mark (buffer, NULL,
@@ -1027,7 +1025,7 @@ chat_text_view_find_next (EmpathyChatView *view,
priv->find_mark_next,
&iter_match_end);
}
-
+
if (!priv->find_mark_previous) {
priv->find_mark_previous = gtk_text_buffer_create_mark (buffer, NULL,
&iter_match_start,
@@ -1037,17 +1035,17 @@ chat_text_view_find_next (EmpathyChatView *view,
priv->find_mark_previous,
&iter_match_start);
}
-
+
gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
priv->find_mark_next,
0.0,
TRUE,
0.5,
0.5);
-
+
gtk_text_buffer_move_mark_by_name (buffer, "selection_bound", &iter_match_start);
gtk_text_buffer_move_mark_by_name (buffer, "insert", &iter_match_end);
-
+
return TRUE;
}
@@ -1062,15 +1060,15 @@ chat_text_view_find_abilities (EmpathyChatView *view,
GtkTextIter iter_at_mark;
GtkTextIter iter_match_start;
GtkTextIter iter_match_end;
-
+
g_return_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view));
g_return_if_fail (search_criteria != NULL);
g_return_if_fail (can_do_previous != NULL && can_do_next != NULL);
-
+
priv = GET_PRIV (view);
-
+
buffer = priv->buffer;
-
+
if (can_do_previous) {
if (priv->find_mark_previous) {
gtk_text_buffer_get_iter_at_mark (buffer,
@@ -1079,14 +1077,14 @@ chat_text_view_find_abilities (EmpathyChatView *view,
} else {
gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
}
-
+
*can_do_previous = empathy_text_iter_backward_search (&iter_at_mark,
search_criteria,
&iter_match_start,
&iter_match_end,
NULL);
}
-
+
if (can_do_next) {
if (priv->find_mark_next) {
gtk_text_buffer_get_iter_at_mark (buffer,
@@ -1095,7 +1093,7 @@ chat_text_view_find_abilities (EmpathyChatView *view,
} else {
gtk_text_buffer_get_start_iter (buffer, &iter_at_mark);
}
-
+
*can_do_next = empathy_text_iter_forward_search (&iter_at_mark,
search_criteria,
&iter_match_start,
@@ -1115,37 +1113,37 @@ chat_text_view_highlight (EmpathyChatView *view,
GtkTextIter iter_match_start;
GtkTextIter iter_match_end;
gboolean found;
-
+
g_return_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view));
-
+
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-
+
gtk_text_buffer_get_start_iter (buffer, &iter);
-
+
gtk_text_buffer_get_bounds (buffer, &iter_start, &iter_end);
gtk_text_buffer_remove_tag_by_name (buffer, EMPATHY_CHAT_TEXT_VIEW_TAG_HIGHLIGHT,
&iter_start,
&iter_end);
-
+
if (EMP_STR_EMPTY (text)) {
return;
}
-
+
while (1) {
found = empathy_text_iter_forward_search (&iter,
text,
&iter_match_start,
&iter_match_end,
NULL);
-
+
if (!found) {
break;
}
-
+
gtk_text_buffer_apply_tag_by_name (buffer, EMPATHY_CHAT_TEXT_VIEW_TAG_HIGHLIGHT,
&iter_match_start,
&iter_match_end);
-
+
iter = iter_match_end;
gtk_text_iter_forward_char (&iter);
}
@@ -1156,12 +1154,12 @@ chat_text_view_copy_clipboard (EmpathyChatView *view)
{
GtkTextBuffer *buffer;
GtkClipboard *clipboard;
-
+
g_return_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view));
-
+
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
-
+
gtk_text_buffer_copy_clipboard (buffer, clipboard);
}
@@ -1185,9 +1183,9 @@ EmpathyContact *
empathy_chat_text_view_get_last_contact (EmpathyChatTextView *view)
{
EmpathyChatTextViewPriv *priv = GET_PRIV (view);
-
+
g_return_val_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view), NULL);
-
+
return priv->last_contact;
}
@@ -1196,7 +1194,7 @@ empathy_chat_text_view_set_only_if_date (EmpathyChatTextView *view,
gboolean only_if_date)
{
EmpathyChatTextViewPriv *priv = GET_PRIV (view);
-
+
g_return_if_fail (EMPATHY_IS_CHAT_TEXT_VIEW (view));
if (only_if_date != priv->only_if_date) {
diff --git a/libempathy-gtk/empathy-chat-text-view.h b/libempathy-gtk/empathy-chat-text-view.h
index 7c4ff3430..0180f21d1 100644
--- a/libempathy-gtk/empathy-chat-text-view.h
+++ b/libempathy-gtk/empathy-chat-text-view.h
@@ -27,7 +27,7 @@
#ifndef __EMPATHY_CHAT_TEXT_VIEW_H__
#define __EMPATHY_CHAT_TEXT_VIEW_H__
-#include <gtk/gtktextview.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-contact.h>
#include <libempathy/empathy-message.h>
diff --git a/libempathy-gtk/empathy-chat-view.c b/libempathy-gtk/empathy-chat-view.c
index e0a7905df..ed5740a8e 100644
--- a/libempathy-gtk/empathy-chat-view.c
+++ b/libempathy-gtk/empathy-chat-view.c
@@ -31,21 +31,21 @@ GType
empathy_chat_view_get_type (void)
{
static GType type = 0;
-
+
if (!type) {
static const GTypeInfo type_info = {
sizeof (EmpathyChatViewIface),
chat_view_base_init,
NULL,
};
-
+
type = g_type_register_static (G_TYPE_INTERFACE,
"EmpathyChatView",
&type_info, 0);
-
+
g_type_interface_add_prerequisite (type, GTK_TYPE_WIDGET);
}
-
+
return type;
}
@@ -53,7 +53,7 @@ static void
chat_view_base_init (gpointer klass)
{
static gboolean initialized = FALSE;
-
+
if (!initialized) {
initialized = TRUE;
}
@@ -64,7 +64,7 @@ empathy_chat_view_append_message (EmpathyChatView *view,
EmpathyMessage *msg)
{
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);
@@ -76,7 +76,7 @@ empathy_chat_view_append_event (EmpathyChatView *view,
const gchar *str)
{
g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->append_event) {
EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->append_event (view,
str);
@@ -88,7 +88,7 @@ empathy_chat_view_scroll (EmpathyChatView *view,
gboolean allow_scrolling)
{
g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->scroll) {
EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->scroll (view,
allow_scrolling);
@@ -99,7 +99,7 @@ void
empathy_chat_view_scroll_down (EmpathyChatView *view)
{
g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->scroll_down) {
EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->scroll_down (view);
}
@@ -109,7 +109,7 @@ gboolean
empathy_chat_view_get_has_selection (EmpathyChatView *view)
{
g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), FALSE);
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->get_has_selection) {
return EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->get_has_selection (view);
}
@@ -120,7 +120,7 @@ void
empathy_chat_view_clear (EmpathyChatView *view)
{
g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->clear) {
EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->clear (view);
}
@@ -132,7 +132,7 @@ empathy_chat_view_find_previous (EmpathyChatView *view,
gboolean new_search)
{
g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), FALSE);
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->find_previous) {
return EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->find_previous (view,
search_criteria,
@@ -147,7 +147,7 @@ empathy_chat_view_find_next (EmpathyChatView *view,
gboolean new_search)
{
g_return_val_if_fail (EMPATHY_IS_CHAT_VIEW (view), FALSE);
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->find_next) {
return EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->find_next (view,
search_criteria,
@@ -164,7 +164,7 @@ empathy_chat_view_find_abilities (EmpathyChatView *view,
gboolean *can_do_next)
{
g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->find_abilities) {
EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->find_abilities (view,
search_criteria,
@@ -178,7 +178,7 @@ empathy_chat_view_highlight (EmpathyChatView *view,
const gchar *text)
{
g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->highlight) {
EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->highlight (view, text);
}
@@ -188,7 +188,7 @@ void
empathy_chat_view_copy_clipboard (EmpathyChatView *view)
{
g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view));
-
+
if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->copy_clipboard) {
EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->copy_clipboard (view);
}
diff --git a/libempathy-gtk/empathy-chat-view.h b/libempathy-gtk/empathy-chat-view.h
index 893cf83e4..f3478be6d 100644
--- a/libempathy-gtk/empathy-chat-view.h
+++ b/libempathy-gtk/empathy-chat-view.h
@@ -23,7 +23,7 @@
#ifndef __EMPATHY_CHAT_VIEW_H__
#define __EMPATHY_CHAT_VIEW_H__
-#include <gtk/gtktextview.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-contact.h>
#include <libempathy/empathy-message.h>
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index 248fd116d..9c5e47b0e 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -69,6 +69,7 @@ typedef struct {
gchar *name;
gchar *subject;
EmpathyContact *remote_contact;
+ gboolean show_contacts;
EmpathyLogManager *log_manager;
EmpathyAccountManager *account_manager;
@@ -107,6 +108,7 @@ enum {
PROP_NAME,
PROP_SUBJECT,
PROP_REMOTE_CONTACT,
+ PROP_SHOW_CONTACTS,
};
static guint signals[LAST_SIGNAL] = { 0 };
@@ -141,6 +143,9 @@ chat_get_property (GObject *object,
case PROP_REMOTE_CONTACT:
g_value_set_object (value, priv->remote_contact);
break;
+ case PROP_SHOW_CONTACTS:
+ g_value_set_boolean (value, priv->show_contacts);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
@@ -159,6 +164,9 @@ chat_set_property (GObject *object,
case PROP_TP_CHAT:
empathy_chat_set_tp_chat (chat, EMPATHY_TP_CHAT (g_value_get_object (value)));
break;
+ case PROP_SHOW_CONTACTS:
+ empathy_chat_set_show_contacts (chat, g_value_get_boolean (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
break;
@@ -199,7 +207,7 @@ chat_new_connection_cb (EmpathyAccountManager *manager,
if (!priv->tp_chat && empathy_account_equal (account, priv->account) &&
priv->handle_type != TP_HANDLE_TYPE_NONE &&
!EMP_STR_EMPTY (priv->id)) {
-
+
DEBUG ("Account reconnected, request a new Text channel");
switch (priv->handle_type) {
@@ -294,7 +302,7 @@ chat_sent_message_add (EmpathyChat *chat,
/* Save the sent message in our repeat buffer */
list = priv->sent_messages;
-
+
/* Remove any other occurances of this msg */
while ((item = g_slist_find_custom (list, str, (GCompareFunc) strcmp)) != NULL) {
list = g_slist_remove_link (list, item);
@@ -325,7 +333,7 @@ chat_sent_message_get_next (EmpathyChat *chat)
{
EmpathyChatPriv *priv;
gint max;
-
+
priv = GET_PRIV (chat);
if (!priv->sent_messages) {
@@ -338,7 +346,7 @@ chat_sent_message_get_next (EmpathyChat *chat)
if (priv->sent_messages_index < max) {
priv->sent_messages_index++;
}
-
+
DEBUG ("Returning next message index:%d", priv->sent_messages_index);
return g_slist_nth_data (priv->sent_messages, priv->sent_messages_index);
@@ -352,7 +360,7 @@ chat_sent_message_get_last (EmpathyChat *chat)
g_return_val_if_fail (EMPATHY_IS_CHAT (chat), NULL);
priv = GET_PRIV (chat);
-
+
if (!priv->sent_messages) {
DEBUG ("No sent messages, last message is NULL");
return NULL;
@@ -1188,15 +1196,18 @@ chat_reset_size_request (gpointer widget)
}
static void
-chat_set_show_contacts (EmpathyChat *chat, gboolean show)
+chat_update_contacts_visibility (EmpathyChat *chat)
{
EmpathyChatPriv *priv = GET_PRIV (chat);
+ gboolean show;
+
+ show = priv->remote_contact == NULL && priv->show_contacts;
if (!priv->scrolled_window_contacts) {
return;
}
- if (show) {
+ if (show && priv->contact_list_view == NULL) {
EmpathyContactListStore *store;
gint min_width;
@@ -1217,7 +1228,7 @@ chat_set_show_contacts (EmpathyChat *chat, gboolean show)
store = empathy_contact_list_store_new (EMPATHY_CONTACT_LIST (priv->tp_chat));
priv->contact_list_view = GTK_WIDGET (empathy_contact_list_view_new (store,
- EMPATHY_CONTACT_LIST_FEATURE_NONE,
+ EMPATHY_CONTACT_LIST_FEATURE_CONTACT_TOOLTIP,
EMPATHY_CONTACT_FEATURE_CHAT |
EMPATHY_CONTACT_FEATURE_CALL |
EMPATHY_CONTACT_FEATURE_LOG |
@@ -1227,34 +1238,47 @@ chat_set_show_contacts (EmpathyChat *chat, gboolean show)
gtk_widget_show (priv->contact_list_view);
gtk_widget_show (priv->scrolled_window_contacts);
g_object_unref (store);
- } else {
+ } else if (!show) {
priv->contacts_width = gtk_paned_get_position (GTK_PANED (priv->hpaned));
gtk_widget_hide (priv->scrolled_window_contacts);
- if (priv->contact_list_view) {
+ if (priv->contact_list_view != NULL) {
gtk_widget_destroy (priv->contact_list_view);
priv->contact_list_view = NULL;
}
}
}
+void
+empathy_chat_set_show_contacts (EmpathyChat *chat,
+ gboolean show)
+{
+ EmpathyChatPriv *priv = GET_PRIV (chat);
+
+ priv->show_contacts = show;
+
+ chat_update_contacts_visibility (chat);
+
+ g_object_notify (G_OBJECT (chat), "show-contacts");
+}
+
static void
chat_remote_contact_changed_cb (EmpathyChat *chat)
{
EmpathyChatPriv *priv = GET_PRIV (chat);
- if (priv->remote_contact) {
+ if (priv->remote_contact != NULL) {
g_object_unref (priv->remote_contact);
priv->remote_contact = NULL;
}
priv->remote_contact = empathy_tp_chat_get_remote_contact (priv->tp_chat);
- if (priv->remote_contact) {
+ if (priv->remote_contact != NULL) {
g_object_ref (priv->remote_contact);
priv->handle_type = TP_HANDLE_TYPE_CONTACT;
g_free (priv->id);
priv->id = g_strdup (empathy_contact_get_id (priv->remote_contact));
}
- else if (priv->tp_chat) {
+ else if (priv->tp_chat != NULL) {
TpChannel *channel;
channel = empathy_tp_chat_get_channel (priv->tp_chat);
@@ -1263,7 +1287,7 @@ chat_remote_contact_changed_cb (EmpathyChat *chat)
priv->id = g_strdup (empathy_tp_chat_get_id (priv->tp_chat));
}
- chat_set_show_contacts (chat, priv->remote_contact == NULL);
+ chat_update_contacts_visibility (chat);
g_object_notify (G_OBJECT (chat), "remote-contact");
g_object_notify (G_OBJECT (chat), "id");
@@ -1288,7 +1312,7 @@ chat_destroy_cb (EmpathyTpChat *tp_chat,
empathy_chat_view_append_event (chat->view, _("Disconnected"));
gtk_widget_set_sensitive (chat->input_text_view, FALSE);
- chat_set_show_contacts (chat, FALSE);
+ empathy_chat_set_show_contacts (chat, FALSE);
}
static void
@@ -1373,7 +1397,7 @@ chat_create_ui (EmpathyChat *chat)
gtk_widget_show (chat->input_text_view);
/* Create contact list */
- chat_set_show_contacts (chat, priv->remote_contact == NULL);
+ chat_update_contacts_visibility (chat);
/* Initialy hide the topic, will be shown if not empty */
gtk_widget_hide (priv->hbox_topic);
@@ -1531,42 +1555,56 @@ empathy_chat_class_init (EmpathyChatClass *klass)
"The tp chat object",
EMPATHY_TYPE_TP_CHAT,
G_PARAM_CONSTRUCT |
- G_PARAM_READWRITE));
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
g_object_class_install_property (object_class,
PROP_ACCOUNT,
g_param_spec_object ("account",
"Account of the chat",
"The account of the chat",
MC_TYPE_ACCOUNT,
- G_PARAM_READABLE));
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
g_object_class_install_property (object_class,
PROP_ID,
g_param_spec_string ("id",
"Chat's id",
"The id of the chat",
NULL,
- G_PARAM_READABLE));
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
g_object_class_install_property (object_class,
PROP_NAME,
g_param_spec_string ("name",
"Chat's name",
"The name of the chat",
NULL,
- G_PARAM_READABLE));
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
g_object_class_install_property (object_class,
PROP_SUBJECT,
g_param_spec_string ("subject",
"Chat's subject",
"The subject or topic of the chat",
NULL,
- G_PARAM_READABLE));
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
g_object_class_install_property (object_class,
PROP_REMOTE_CONTACT,
g_param_spec_object ("remote-contact",
"The remote contact",
"The remote contact is any",
EMPATHY_TYPE_CONTACT,
- G_PARAM_READABLE));
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class,
+ PROP_SHOW_CONTACTS,
+ g_param_spec_boolean ("show-contacts",
+ "Contacts' visibility",
+ "The visibility of the contacts' list",
+ TRUE,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
signals[COMPOSING] =
g_signal_new ("composing",
@@ -1619,6 +1657,10 @@ empathy_chat_init (EmpathyChat *chat)
G_CALLBACK (chat_new_connection_cb),
chat);
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS,
+ &priv->show_contacts);
+
/* Block events for some time to avoid having "has come online" or
* "joined" messages. */
priv->block_events_timeout_id =
diff --git a/libempathy-gtk/empathy-chat.h b/libempathy-gtk/empathy-chat.h
index 74d7e0681..c38fd64a6 100644
--- a/libempathy-gtk/empathy-chat.h
+++ b/libempathy-gtk/empathy-chat.h
@@ -28,7 +28,7 @@
#ifndef __EMPATHY_CHAT_H__
#define __EMPATHY_CHAT_H__
-#include <gtk/gtkbin.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-contact.h>
#include <libempathy/empathy-message.h>
@@ -82,6 +82,8 @@ void empathy_chat_correct_word (EmpathyChat *chat,
GtkTextIter *end,
const gchar *new_word);
gboolean empathy_chat_is_room (EmpathyChat *chat);
+void empathy_chat_set_show_contacts (EmpathyChat *chat,
+ gboolean show);
G_END_DECLS
#endif /* __EMPATHY_CHAT_H__ */
diff --git a/libempathy-gtk/empathy-chat.ui b/libempathy-gtk/empathy-chat.ui
index 3a9f49c34..7af4832a5 100644
--- a/libempathy-gtk/empathy-chat.ui
+++ b/libempathy-gtk/empathy-chat.ui
@@ -83,8 +83,10 @@
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Topic:&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Topic:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
diff --git a/libempathy-gtk/empathy-conf.h b/libempathy-gtk/empathy-conf.h
index 07026df5c..937a4bf9c 100644
--- a/libempathy-gtk/empathy-conf.h
+++ b/libempathy-gtk/empathy-conf.h
@@ -48,6 +48,8 @@ struct _EmpathyConfClass {
#define EMPATHY_PREFS_NOTIFICATIONS_ENABLED EMPATHY_PREFS_PATH "/notifications/notifications_enabled"
#define EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY EMPATHY_PREFS_PATH "/notifications/notifications_disabled_away"
#define EMPATHY_PREFS_NOTIFICATIONS_FOCUS EMPATHY_PREFS_PATH "/notifications/notifications_focus"
+#define EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN EMPATHY_PREFS_PATH "/notifications/notifications_contact_signin"
+#define EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT EMPATHY_PREFS_PATH "/notifications/notifications_contact_signout"
#define EMPATHY_PREFS_SOUNDS_ENABLED EMPATHY_PREFS_PATH "/sounds/sounds_enabled"
#define EMPATHY_PREFS_SOUNDS_DISABLED_AWAY EMPATHY_PREFS_PATH "/sounds/sounds_disabled_away"
#define EMPATHY_PREFS_SOUNDS_INCOMING_MESSAGE EMPATHY_PREFS_PATH "/sounds/sounds_incoming_message"
@@ -59,7 +61,9 @@ struct _EmpathyConfClass {
#define EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT EMPATHY_PREFS_PATH "/sounds/sounds_contact_logout"
#define EMPATHY_PREFS_POPUPS_WHEN_AVAILABLE EMPATHY_PREFS_PATH "/notifications/popups_when_available"
#define EMPATHY_PREFS_CHAT_SHOW_SMILEYS EMPATHY_PREFS_PATH "/conversation/graphical_smileys"
+#define EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS EMPATHY_PREFS_PATH "/conversation/show_contacts_in_rooms"
#define EMPATHY_PREFS_CHAT_THEME EMPATHY_PREFS_PATH "/conversation/theme"
+#define EMPATHY_PREFS_CHAT_ADIUM_PATH EMPATHY_PREFS_PATH "/conversation/adium_path"
#define EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES EMPATHY_PREFS_PATH "/conversation/spell_checker_languages"
#define EMPATHY_PREFS_CHAT_SPELL_CHECKER_ENABLED EMPATHY_PREFS_PATH "/conversation/spell_checker_enabled"
#define EMPATHY_PREFS_CHAT_NICK_COMPLETION_CHAR EMPATHY_PREFS_PATH "/conversation/nick_completion_char"
diff --git a/libempathy-gtk/empathy-contact-dialogs.c b/libempathy-gtk/empathy-contact-dialogs.c
index 307b0fbb3..39edbf579 100644
--- a/libempathy-gtk/empathy-contact-dialogs.c
+++ b/libempathy-gtk/empathy-contact-dialogs.c
@@ -398,7 +398,7 @@ empathy_new_contact_dialog_show (GtkWindow *parent)
button,
GTK_RESPONSE_CANCEL);
gtk_widget_show (button);
-
+
/* Add button */
button = gtk_button_new_with_label (GTK_STOCK_ADD);
gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
diff --git a/libempathy-gtk/empathy-contact-list-store.c b/libempathy-gtk/empathy-contact-list-store.c
index 261b2cc60..0e9372be1 100644
--- a/libempathy-gtk/empathy-contact-list-store.c
+++ b/libempathy-gtk/empathy-contact-list-store.c
@@ -601,7 +601,7 @@ empathy_contact_list_store_set_sort_criterium (EmpathyContactListStore *stor
EMPATHY_CONTACT_LIST_STORE_COL_STATUS,
GTK_SORT_ASCENDING);
break;
-
+
case EMPATHY_CONTACT_LIST_STORE_SORT_NAME:
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
EMPATHY_CONTACT_LIST_STORE_COL_NAME,
@@ -738,7 +738,7 @@ contact_list_store_setup (EmpathyContactListStore *store)
G_TYPE_BOOLEAN, /* Is separator */
G_TYPE_BOOLEAN, /* Can make audio calls */
G_TYPE_BOOLEAN}; /* Can make video calls */
-
+
priv = GET_PRIV (store);
gtk_tree_store_set_column_types (GTK_TREE_STORE (store),
@@ -853,7 +853,7 @@ contact_list_store_add_contact (EmpathyContactListStore *store,
GList *groups = NULL, *l;
priv = GET_PRIV (store);
-
+
if (EMP_STR_EMPTY (empathy_contact_get_name (contact)) ||
(!priv->show_offline && !empathy_contact_is_online (contact))) {
return;
@@ -922,7 +922,7 @@ contact_list_store_remove_contact (EmpathyContactListStore *store,
if (!iters) {
return;
}
-
+
/* Clean up model */
model = GTK_TREE_MODEL (store);
@@ -1156,7 +1156,7 @@ contact_list_store_contact_active_new (EmpathyContactListStore *store,
DEBUG ("Contact:'%s' now active, and %s be removed",
empathy_contact_get_name (contact),
remove ? "WILL" : "WILL NOT");
-
+
data = g_slice_new0 (ShowActiveData);
data->store = g_object_ref (store);
diff --git a/libempathy-gtk/empathy-contact-list-store.h b/libempathy-gtk/empathy-contact-list-store.h
index 13ea099b3..007a6b069 100644
--- a/libempathy-gtk/empathy-contact-list-store.h
+++ b/libempathy-gtk/empathy-contact-list-store.h
@@ -26,7 +26,7 @@
#ifndef __EMPATHY_CONTACT_LIST_STORE_H__
#define __EMPATHY_CONTACT_LIST_STORE_H__
-#include <gtk/gtktreestore.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-contact-list.h>
#include <libempathy/empathy-contact.h>
diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c
index c106653b1..61db60cdf 100644
--- a/libempathy-gtk/empathy-contact-list-view.c
+++ b/libempathy-gtk/empathy-contact-list-view.c
@@ -121,7 +121,7 @@ contact_list_view_tooltip_destroy_cb (GtkWidget *widget,
EmpathyContactListView *view)
{
EmpathyContactListViewPriv *priv = GET_PRIV (view);
-
+
if (priv->tooltip_widget) {
DEBUG ("Tooltip destroyed");
g_object_unref (priv->tooltip_widget);
@@ -230,7 +230,7 @@ contact_list_view_drag_got_contact (EmpathyTpContactFactory *factory,
if (data->new_group) {
empathy_contact_list_add_to_group (list, contact, data->new_group);
}
- if (data->old_group && data->action == GDK_ACTION_MOVE) {
+ if (data->old_group && data->action == GDK_ACTION_MOVE) {
empathy_contact_list_remove_from_group (list, contact, data->old_group);
}
}
@@ -1272,7 +1272,7 @@ empathy_contact_list_view_new (EmpathyContactListStore *store,
EmpathyContactFeatureFlags contact_features)
{
g_return_val_if_fail (EMPATHY_IS_CONTACT_LIST_STORE (store), NULL);
-
+
return g_object_new (EMPATHY_TYPE_CONTACT_LIST_VIEW,
"store", store,
"contact-features", contact_features,
@@ -1344,7 +1344,7 @@ contact_list_view_remove_dialog_show (GtkWindow *parent,
{
GtkWidget *dialog;
gboolean res;
-
+
dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL,
GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
"%s", message);
@@ -1446,7 +1446,7 @@ contact_list_view_remove_activate_cb (GtkMenuItem *menuitem,
{
EmpathyContactListViewPriv *priv = GET_PRIV (view);
EmpathyContact *contact;
-
+
contact = empathy_contact_list_view_dup_selected (view);
if (contact) {
@@ -1455,7 +1455,7 @@ contact_list_view_remove_activate_cb (GtkMenuItem *menuitem,
parent = empathy_get_toplevel_window (GTK_WIDGET (view));
text = g_strdup_printf (_("Do you really want to remove the contact '%s'?"),
- empathy_contact_get_name (contact));
+ empathy_contact_get_name (contact));
if (contact_list_view_remove_dialog_show (parent, _("Removing contact"), text)) {
EmpathyContactList *list;
diff --git a/libempathy-gtk/empathy-contact-list-view.h b/libempathy-gtk/empathy-contact-list-view.h
index 0c48764c4..e9c3457d8 100644
--- a/libempathy-gtk/empathy-contact-list-view.h
+++ b/libempathy-gtk/empathy-contact-list-view.h
@@ -26,7 +26,7 @@
#ifndef __EMPATHY_CONTACT_LIST_VIEW_H__
#define __EMPATHY_CONTACT_LIST_VIEW_H__
-#include <gtk/gtktreeview.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-contact.h>
diff --git a/libempathy-gtk/empathy-contact-menu.c b/libempathy-gtk/empathy-contact-menu.c
index fdd9c34a1..2bad5c9fe 100644
--- a/libempathy-gtk/empathy-contact-menu.c
+++ b/libempathy-gtk/empathy-contact-menu.c
@@ -141,7 +141,7 @@ empathy_contact_chat_menu_item_new (EmpathyContact *contact)
g_signal_connect (item, "activate",
G_CALLBACK (empathy_contact_chat_menu_item_activated),
contact);
-
+
return item;
}
@@ -244,7 +244,7 @@ empathy_contact_log_menu_item_new (EmpathyContact *contact)
g_signal_connect_swapped (item, "activate",
G_CALLBACK (contact_log_menu_item_activate_cb),
contact);
-
+
return item;
}
@@ -293,7 +293,7 @@ empathy_contact_info_menu_item_new (EmpathyContact *contact)
g_signal_connect_swapped (item, "activate",
G_CALLBACK (contact_info_menu_item_activate_cb),
contact);
-
+
return item;
}
@@ -320,7 +320,7 @@ empathy_contact_edit_menu_item_new (EmpathyContact *contact)
g_signal_connect_swapped (item, "activate",
G_CALLBACK (contact_edit_menu_item_activate_cb),
contact);
-
+
return item;
}
diff --git a/libempathy-gtk/empathy-contact-menu.h b/libempathy-gtk/empathy-contact-menu.h
index 8126a8e59..262ec9650 100644
--- a/libempathy-gtk/empathy-contact-menu.h
+++ b/libempathy-gtk/empathy-contact-menu.h
@@ -22,7 +22,7 @@
#ifndef __EMPATHY_CONTACT_MENU_H__
#define __EMPATHY_CONTACT_MENU_H__
-#include <gtk/gtkmenu.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-contact.h>
diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c
index 6c1015364..12a139303 100644
--- a/libempathy-gtk/empathy-contact-widget.c
+++ b/libempathy-gtk/empathy-contact-widget.c
@@ -105,7 +105,7 @@ typedef struct
#if HAVE_LIBCHAMPLAIN
GtkWidget *viewport_map;
GtkWidget *map_view_embed;
- ClutterActor *map_view;
+ ChamplainView *map_view;
#endif
/* Groups */
@@ -1420,9 +1420,9 @@ contact_widget_location_update (EmpathyContactWidget *information)
ClutterActor *marker;
ChamplainLayer *layer;
- information->map_view = champlain_view_new ();
- information->map_view_embed = champlain_view_embed_new (
- CHAMPLAIN_VIEW (information->map_view));
+ information->map_view_embed = gtk_champlain_embed_new ();
+ information->map_view = gtk_champlain_embed_get_view (
+ GTK_CHAMPLAIN_EMBED (information->map_view_embed));
gtk_container_add (GTK_CONTAINER (information->viewport_map),
information->map_view_embed);
@@ -1431,14 +1431,14 @@ contact_widget_location_update (EmpathyContactWidget *information)
NULL);
layer = champlain_layer_new ();
- champlain_view_add_layer (CHAMPLAIN_VIEW (information->map_view), layer);
+ champlain_view_add_layer (information->map_view, layer);
marker = champlain_marker_new_with_text (
empathy_contact_get_name (information->contact), NULL, NULL, NULL);
champlain_base_marker_set_position (CHAMPLAIN_BASE_MARKER (marker), lat, lon);
clutter_container_add (CLUTTER_CONTAINER (layer), marker, NULL);
- champlain_view_center_on (CHAMPLAIN_VIEW(information->map_view), lat, lon);
+ champlain_view_center_on (information->map_view, lat, lon);
gtk_widget_show_all (information->viewport_map);
}
#endif
diff --git a/libempathy-gtk/empathy-contact-widget.ui b/libempathy-gtk/empathy-contact-widget.ui
index a46b2c6a0..c5bbd5bbe 100644
--- a/libempathy-gtk/empathy-contact-widget.ui
+++ b/libempathy-gtk/empathy-contact-widget.ui
@@ -14,8 +14,10 @@
<object class="GtkLabel" id="label654">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Contact&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Contact</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
@@ -225,8 +227,10 @@
<object class="GtkLabel" id="label672">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Groups&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Groups</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
@@ -334,8 +338,10 @@
<object class="GtkLabel" id="label649">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Contact Details&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Contact Details</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
@@ -478,8 +484,10 @@
<object class="GtkLabel" id="label662">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Client Information&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Client Information</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
diff --git a/libempathy-gtk/empathy-irc-network-dialog.h b/libempathy-gtk/empathy-irc-network-dialog.h
index 985849696..df4a8b152 100644
--- a/libempathy-gtk/empathy-irc-network-dialog.h
+++ b/libempathy-gtk/empathy-irc-network-dialog.h
@@ -21,7 +21,7 @@
#ifndef __EMPATHY_IRC_NETWORK_DIALOG_H__
#define __EMPATHY_IRC_NETWORK_DIALOG_H__
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
#include <libempathy/empathy-irc-network.h>
diff --git a/libempathy-gtk/empathy-location-manager.c b/libempathy-gtk/empathy-location-manager.c
index fb804315c..278af72f2 100644
--- a/libempathy-gtk/empathy-location-manager.c
+++ b/libempathy-gtk/empathy-location-manager.c
@@ -302,7 +302,10 @@ address_changed_cb (GeoclueAddress *address,
g_hash_table_remove (priv->location, EMPATHY_LOCATION_POSTAL_CODE);
if (g_hash_table_size (details) == 0)
- return;
+ {
+ DEBUG ("\t - (Empty)");
+ return;
+ }
g_hash_table_iter_init (&iter, details);
while (g_hash_table_iter_next (&iter, &key, &value))
@@ -449,17 +452,20 @@ update_resources (EmpathyLocationManager *location_manager)
DEBUG ("Updating resources %d", priv->resources);
+ if (!priv->geoclue_is_setup)
+ return;
+
+ /* As per Geoclue bug #15126, using NONE results in no address
+ * being found as geoclue-manual report an empty address with
+ * accuracy = NONE */
if (!geoclue_master_client_set_requirements (priv->gc_client,
- GEOCLUE_ACCURACY_LEVEL_NONE, 0, TRUE, priv->resources,
+ GEOCLUE_ACCURACY_LEVEL_COUNTRY, 0, TRUE, priv->resources,
NULL))
{
DEBUG ("set_requirements failed");
return;
}
- if (!priv->geoclue_is_setup)
- return;
-
geoclue_address_get_address_async (priv->gc_address,
initial_address_cb, location_manager);
geoclue_position_get_position_async (priv->gc_position,
@@ -476,9 +482,16 @@ setup_geoclue (EmpathyLocationManager *location_manager)
DEBUG ("Setting up Geoclue");
master = geoclue_master_get_default ();
- priv->gc_client = geoclue_master_create_client (master, NULL, NULL);
+ priv->gc_client = geoclue_master_create_client (master, NULL, &error);
g_object_unref (master);
+ if (priv->gc_client == NULL)
+ {
+ DEBUG ("Failed to GeoclueMasterClient: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
update_resources (location_manager);
/* Get updated when the position is changes */
diff --git a/libempathy-gtk/empathy-log-window.c b/libempathy-gtk/empathy-log-window.c
index dc2efa332..21d73f8ea 100644
--- a/libempathy-gtk/empathy-log-window.c
+++ b/libempathy-gtk/empathy-log-window.c
@@ -320,7 +320,7 @@ log_window_find_changed_cb (GtkTreeSelection *selection,
gtk_widget_set_sensitive (window->button_next, FALSE);
empathy_chat_view_clear (window->chatview_find);
-
+
return;
}
@@ -646,7 +646,7 @@ log_window_chats_populate (EmpathyLogWindow *window)
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
COL_CHAT_ICON, "empathy-available", /* FIXME */
- COL_CHAT_NAME, hit->chat_id,
+ COL_CHAT_NAME, hit->chat_id,
COL_CHAT_ACCOUNT, account,
COL_CHAT_ID, hit->chat_id,
COL_CHAT_IS_CHATROOM, hit->is_chatroom,
diff --git a/libempathy-gtk/empathy-new-message-dialog.c b/libempathy-gtk/empathy-new-message-dialog.c
index 512cd1ba3..9aee42913 100644
--- a/libempathy-gtk/empathy-new-message-dialog.c
+++ b/libempathy-gtk/empathy-new-message-dialog.c
@@ -239,7 +239,7 @@ new_message_change_state_button_cb (GtkEditable *editable,
id = gtk_entry_get_text (GTK_ENTRY (editable));
sensitive = !EMP_STR_EMPTY (id);
-
+
gtk_widget_set_sensitive (dialog->button_chat, sensitive);
gtk_widget_set_sensitive (dialog->button_call, sensitive);
}
diff --git a/libempathy-gtk/empathy-new-message-dialog.h b/libempathy-gtk/empathy-new-message-dialog.h
index c1781d0cf..08887c5e8 100644
--- a/libempathy-gtk/empathy-new-message-dialog.h
+++ b/libempathy-gtk/empathy-new-message-dialog.h
@@ -22,7 +22,7 @@
#ifndef __EMPATHY_NEW_MESSAGE_DIALOG_H__
#define __EMPATHY_NEW_MESSAGE_DIALOG_H__
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/libempathy-gtk/empathy-plist.c b/libempathy-gtk/empathy-plist.c
new file mode 100644
index 000000000..4cc392bec
--- /dev/null
+++ b/libempathy-gtk/empathy-plist.c
@@ -0,0 +1,336 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008 Christophe Fergeau <teuf@gnome.org>
+ * Based on itdb_plist parser from the gtkpod project.
+ *
+ * The code contained in this file 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 file 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 code; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <telepathy-glib/util.h>
+#include <telepathy-glib/dbus.h>
+
+#include "empathy-plist.h"
+
+static GValue *empathy_plist_parse_node (xmlNode *a_node);
+
+static GValue *
+empathy_plist_parse_integer (xmlNode *a_node)
+{
+ char *str_val;
+ char *end_ptr;
+ gint int_val;
+
+ str_val = (char *) xmlNodeGetContent (a_node);
+ int_val = strtol (str_val, &end_ptr, 0);
+ if (*end_ptr != '\0') {
+ xmlFree (str_val);
+ return NULL;
+ }
+ xmlFree (str_val);
+
+ return tp_g_value_slice_new_int (int_val);
+}
+
+static GValue *
+empathy_plist_parse_string (xmlNode *a_node)
+{
+ char *str_val;
+ GValue *value;
+
+ str_val = (char *) xmlNodeGetContent (a_node);
+
+ value = tp_g_value_slice_new_string (str_val);
+
+ xmlFree (str_val);
+
+ return value;
+}
+
+static GValue *
+empathy_plist_parse_real (xmlNode *a_node)
+{
+ char *str_val;
+ char *end_ptr;
+ gdouble double_val;
+
+ str_val = (char *) xmlNodeGetContent (a_node);
+ double_val = g_ascii_strtod (str_val, &end_ptr);
+ if (*end_ptr != '\0') {
+ xmlFree (str_val);
+ return NULL;
+ }
+ xmlFree (str_val);
+
+ return tp_g_value_slice_new_double (double_val);
+}
+
+static GValue *
+empathy_plist_parse_boolean (xmlNode *a_node)
+{
+ gboolean bool_val;
+
+ if (strcmp ((char *) a_node->name, "true") == 0) {
+ bool_val = TRUE;
+ } else if (strcmp ((char *) a_node->name, "false") == 0) {
+ bool_val = FALSE;
+ } else {
+ return NULL;
+ }
+
+ return tp_g_value_slice_new_boolean (bool_val);
+}
+
+static GValue *
+empathy_plist_parse_data (xmlNode *a_node)
+{
+ char *str_val;
+ guchar *raw_data;
+ gsize len;
+ GValue *value;
+
+ str_val = (char *) xmlNodeGetContent (a_node);
+ raw_data = g_base64_decode (str_val, &len);
+ xmlFree (str_val);
+
+ value = tp_g_value_slice_new_bytes (len, raw_data);
+
+ g_free (raw_data);
+
+ return value;
+}
+
+static xmlNode *
+empathy_plist_parse_one_dict_entry (xmlNode *a_node, GHashTable *dict)
+{
+ xmlNode *cur_node = a_node;
+ xmlChar *key_name;
+ GValue *value;
+
+ while (cur_node &&
+ (xmlStrcmp (cur_node->name, (xmlChar *) "key") != 0)) {
+ cur_node = cur_node->next;
+ }
+ if (!cur_node) {
+ return NULL;
+ }
+ key_name = xmlNodeGetContent (cur_node);
+ cur_node = cur_node->next;
+ while (cur_node && xmlIsBlankNode (cur_node)) {
+ cur_node = cur_node->next;
+ }
+ if (!cur_node) {
+ xmlFree (key_name);
+ return NULL;
+ }
+
+ value = empathy_plist_parse_node (cur_node);
+ if (value) {
+ g_hash_table_insert (dict, g_strdup ((char *) key_name), value);
+ }
+ xmlFree (key_name);
+
+ return cur_node->next;
+}
+
+static GValue *
+empathy_plist_parse_dict (xmlNode *a_node)
+{
+ xmlNode *cur_node = a_node->children;
+ GHashTable *dict;
+
+ dict = g_hash_table_new_full (g_str_hash, g_str_equal,
+ g_free, (GDestroyNotify) tp_g_value_slice_free);
+
+ while (cur_node) {
+ if (xmlIsBlankNode (cur_node)) {
+ cur_node = cur_node->next;
+ } else {
+ cur_node = empathy_plist_parse_one_dict_entry (cur_node, dict);
+ }
+ }
+
+ return tp_g_value_slice_new_take_boxed (G_TYPE_HASH_TABLE, dict);
+}
+
+static GValue *
+empathy_plist_parse_array (xmlNode *a_node)
+{
+ xmlNode *cur_node = a_node->children;
+ GValueArray *array;
+
+ array = g_value_array_new (4);
+
+ while (cur_node) {
+ GValue *cur_value;
+
+ cur_value = empathy_plist_parse_node (cur_node);
+ if (cur_value) {
+ g_value_array_append (array, cur_value);
+ tp_g_value_slice_free (cur_value);
+ }
+
+ /* When an array contains an element enclosed in "unknown" tags (ie
+ * non-type ones), we silently skip them since early
+ * SysInfoExtended files used to have <key> values enclosed within
+ * <array> tags.
+ */
+ cur_node = cur_node->next;
+ }
+
+ return tp_g_value_slice_new_take_boxed (G_TYPE_VALUE_ARRAY, array);
+}
+
+typedef GValue *(*ParseCallback) (xmlNode *);
+
+struct Parser {
+ const char * const type_name;
+ ParseCallback parser;
+};
+
+static const struct Parser parsers[] = { {"integer", empathy_plist_parse_integer},
+ {"real", empathy_plist_parse_real},
+ {"string", empathy_plist_parse_string},
+ {"true", empathy_plist_parse_boolean},
+ {"false", empathy_plist_parse_boolean},
+ {"data", empathy_plist_parse_data},
+ {"dict", empathy_plist_parse_dict},
+ {"array", empathy_plist_parse_array},
+ {NULL, NULL} };
+
+static ParseCallback
+empathy_plist_get_parser_for_type (const xmlChar *type)
+{
+ guint i = 0;
+
+ while (parsers[i].type_name) {
+ if (xmlStrcmp (type, (xmlChar *) parsers[i].type_name) == 0) {
+ if (parsers[i].parser) {
+ return parsers[i].parser;
+ }
+ }
+ i++;
+ }
+ return NULL;
+}
+
+static GValue *
+empathy_plist_parse_node (xmlNode *a_node)
+{
+ ParseCallback parser;
+
+ g_return_val_if_fail (a_node != NULL, NULL);
+ parser = empathy_plist_get_parser_for_type (a_node->name);
+ if (parser) {
+ return parser (a_node);
+ } else {
+ return NULL;
+ }
+}
+
+static GValue *
+empathy_plist_parse (xmlNode * a_node)
+{
+ xmlNode *cur_node;
+
+ if (!a_node) {
+ return NULL;
+ }
+ if (xmlStrcmp (a_node->name, (xmlChar *) "plist") != 0) {
+ return NULL;
+ }
+ cur_node = a_node->xmlChildrenNode;
+ while (cur_node && (xmlIsBlankNode (cur_node))) {
+ cur_node = cur_node->next;
+ }
+ if (cur_node) {
+ return empathy_plist_parse_node (cur_node);
+ }
+
+ return NULL;
+}
+
+/**
+ * empathy_plist_parse_from_file:
+ * @filename: file containing XML plist data to parse
+ *
+ * Parses the XML plist file. If an error occurs during the parsing,
+ * empathy_plist_parse_from_file() will return NULL.
+ *
+ * Returns: NULL on error, a newly allocated
+ * #GValue otherwise. Free it using tp_g_value_slice_free()
+ */
+GValue *
+empathy_plist_parse_from_file (const char *filename)
+{
+ xmlDoc *doc = NULL;
+ xmlNode *root_element = NULL;
+ GValue *parsed_doc;
+
+ doc = xmlReadFile (filename, NULL, 0);
+
+ if (!doc) {
+ return NULL;
+ }
+
+ root_element = xmlDocGetRootElement (doc);
+
+ parsed_doc = empathy_plist_parse (root_element);
+
+ xmlFreeDoc (doc);
+ xmlCleanupParser ();
+
+ return parsed_doc;
+}
+
+/**
+ * empathy_plist_parse_from_memory:
+ * @data: memory location containing XML plist data to parse
+ * @len: length in bytes of the string to parse
+ *
+ * Parses the XML plist file stored in @data which length is @len
+ * bytes. If an error occurs during the parsing,
+ * empathy_plist_parse_from_memory() will return NULL.
+ *
+ * Returns: NULL on error, a newly allocated
+ * #GValue otherwise. Free it using tp_g_value_slice_free()
+ */
+GValue *
+empathy_plist_parse_from_memory (const char *data, gsize len)
+{
+ xmlDoc *doc = NULL;
+ xmlNode *root_element = NULL;
+ GValue *parsed_doc;
+
+ doc = xmlReadMemory (data, len, "noname.xml", NULL, 0);
+
+ if (doc == NULL) {
+ return NULL;
+ }
+
+ root_element = xmlDocGetRootElement (doc);
+
+ parsed_doc = empathy_plist_parse (root_element);
+
+ xmlFreeDoc (doc);
+ xmlCleanupParser ();
+
+ return parsed_doc;
+}
+
diff --git a/libempathy-gtk/empathy-plist.h b/libempathy-gtk/empathy-plist.h
new file mode 100644
index 000000000..a15ad6a01
--- /dev/null
+++ b/libempathy-gtk/empathy-plist.h
@@ -0,0 +1,34 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008 Christophe Fergeau <teuf@gnome.org>
+ * Based on itdb_plist parser from the gtkpod project.
+ *
+ * The code contained in this file 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 file 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 code; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef __EMPATHY_PLIST_H__
+#define __EMPATHY_PLIST_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+GValue * empathy_plist_parse_from_file (const char *filename);
+GValue * empathy_plist_parse_from_memory (const char *data, gsize len);
+
+G_END_DECLS
+
+#endif
diff --git a/libempathy-gtk/empathy-presence-chooser.c b/libempathy-gtk/empathy-presence-chooser.c
index 879e04139..8fba26ff7 100644
--- a/libempathy-gtk/empathy-presence-chooser.c
+++ b/libempathy-gtk/empathy-presence-chooser.c
@@ -293,7 +293,7 @@ presence_chooser_is_preset (EmpathyPresenceChooser *self)
for (l = presets; l; l = l->next) {
char *preset = (char *) l->data;
- if (!strcmp (status, preset)) {
+ if (!tp_strdiff (status, preset)) {
match = TRUE;
break;
}
@@ -468,6 +468,10 @@ presence_chooser_entry_icon_release_cb (EmpathyPresenceChooser *self,
state = empathy_idle_get_state (priv->idle);
status = empathy_idle_get_status (priv->idle);
+ if (!empathy_status_presets_is_valid (state))
+ /* It doesn't make sense to add such presence as favorite */
+ return;
+
if (presence_chooser_is_preset (self)) {
/* remove the entry */
DEBUG ("REMOVING PRESET (%i, %s)\n", state, status);
diff --git a/libempathy-gtk/empathy-smiley-manager.c b/libempathy-gtk/empathy-smiley-manager.c
index a729a2929..900e9211c 100644
--- a/libempathy-gtk/empathy-smiley-manager.c
+++ b/libempathy-gtk/empathy-smiley-manager.c
@@ -37,9 +37,10 @@ typedef struct {
} EmpathySmileyManagerPriv;
struct _SmileyManagerTree {
- gunichar c;
- GdkPixbuf *pixbuf;
- GSList *childrens;
+ gunichar c;
+ GdkPixbuf *pixbuf;
+ const gchar *path;
+ GSList *childrens;
};
G_DEFINE_TYPE (EmpathySmileyManager, empathy_smiley_manager, G_TYPE_OBJECT);
@@ -55,6 +56,7 @@ smiley_manager_tree_new (gunichar c)
tree->c = c;
tree->pixbuf = NULL;
tree->childrens = NULL;
+ tree->path = NULL;
return tree;
}
@@ -81,7 +83,7 @@ smiley_manager_tree_free (SmileyManagerTree *tree)
/* Note: This function takes the ownership of str */
static EmpathySmiley *
-smiley_new (GdkPixbuf *pixbuf, gchar *str)
+smiley_new (GdkPixbuf *pixbuf, gchar *str, const gchar *path)
{
EmpathySmiley *smiley;
@@ -90,6 +92,7 @@ smiley_new (GdkPixbuf *pixbuf, gchar *str)
smiley->pixbuf = g_object_ref (pixbuf);
}
smiley->str = str;
+ smiley->path = path;
return smiley;
}
@@ -112,9 +115,16 @@ static void
smiley_manager_finalize (GObject *object)
{
EmpathySmileyManagerPriv *priv = GET_PRIV (object);
+ GSList *l;
smiley_manager_tree_free (priv->tree);
- g_slist_foreach (priv->smileys, (GFunc) empathy_smiley_free, NULL);
+ for (l = priv->smileys; l; l = l->next) {
+ EmpathySmiley *smiley = l->data;
+
+ /* The smiley got the ownership of the path */
+ g_free ((gchar *) smiley->path);
+ empathy_smiley_free (smiley);
+ }
g_slist_free (priv->smileys);
}
@@ -201,8 +211,9 @@ smiley_manager_tree_find_or_insert_child (SmileyManagerTree *tree, gunichar c)
static void
smiley_manager_tree_insert (SmileyManagerTree *tree,
- GdkPixbuf *smiley,
- const gchar *str)
+ GdkPixbuf *pixbuf,
+ const gchar *str,
+ const gchar *path)
{
SmileyManagerTree *child;
@@ -210,28 +221,32 @@ smiley_manager_tree_insert (SmileyManagerTree *tree,
str = g_utf8_next_char (str);
if (*str) {
- smiley_manager_tree_insert (child, smiley, str);
+ smiley_manager_tree_insert (child, pixbuf, str, path);
return;
}
- child->pixbuf = g_object_ref (smiley);
+ child->pixbuf = g_object_ref (pixbuf);
+ child->path = path;
}
static void
smiley_manager_add_valist (EmpathySmileyManager *manager,
- GdkPixbuf *smiley,
+ GdkPixbuf *pixbuf,
+ gchar *path,
const gchar *first_str,
va_list var_args)
{
EmpathySmileyManagerPriv *priv = GET_PRIV (manager);
const gchar *str;
+ EmpathySmiley *smiley;
for (str = first_str; str; str = va_arg (var_args, gchar*)) {
- smiley_manager_tree_insert (priv->tree, smiley, str);
+ smiley_manager_tree_insert (priv->tree, pixbuf, str, path);
}
- priv->smileys = g_slist_prepend (priv->smileys,
- smiley_new (smiley, g_strdup (first_str)));
+ /* We give the ownership of path to the smiley */
+ smiley = smiley_new (pixbuf, g_strdup (first_str), path);
+ priv->smileys = g_slist_prepend (priv->smileys, smiley);
}
void
@@ -240,40 +255,26 @@ empathy_smiley_manager_add (EmpathySmileyManager *manager,
const gchar *first_str,
...)
{
- GdkPixbuf *smiley;
+ GdkPixbuf *pixbuf;
va_list var_args;
g_return_if_fail (EMPATHY_IS_SMILEY_MANAGER (manager));
g_return_if_fail (!EMP_STR_EMPTY (icon_name));
g_return_if_fail (!EMP_STR_EMPTY (first_str));
- smiley = empathy_pixbuf_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
- if (smiley) {
+ pixbuf = empathy_pixbuf_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
+ if (pixbuf) {
+ gchar *path;
+
va_start (var_args, first_str);
- smiley_manager_add_valist (manager, smiley, first_str, var_args);
+ path = empathy_filename_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
+ smiley_manager_add_valist (manager, pixbuf, path, first_str, var_args);
va_end (var_args);
- g_object_unref (smiley);
+ g_object_unref (pixbuf);
}
}
void
-empathy_smiley_manager_add_from_pixbuf (EmpathySmileyManager *manager,
- GdkPixbuf *smiley,
- const gchar *first_str,
- ...)
-{
- va_list var_args;
-
- g_return_if_fail (EMPATHY_IS_SMILEY_MANAGER (manager));
- g_return_if_fail (GDK_IS_PIXBUF (smiley));
- g_return_if_fail (!EMP_STR_EMPTY (first_str));
-
- va_start (var_args, first_str);
- smiley_manager_add_valist (manager, smiley, first_str, var_args);
- va_end (var_args);
-}
-
-void
empathy_smiley_manager_load (EmpathySmileyManager *manager)
{
g_return_if_fail (EMPATHY_IS_SMILEY_MANAGER (manager));
@@ -313,14 +314,16 @@ empathy_smiley_manager_parse (EmpathySmileyManager *manager,
for (t = text; *t; t = g_utf8_next_char (t)) {
SmileyManagerTree *child;
gunichar c;
-
+
c = g_utf8_get_char (t);
child = smiley_manager_tree_find_child (cur_tree, c);
if (cur_tree == priv->tree) {
if (child) {
if (t > cur_str) {
- smiley = smiley_new (NULL, g_strndup (cur_str, t - cur_str));
+ smiley = smiley_new (NULL,
+ g_strndup (cur_str, t - cur_str),
+ NULL);
smileys = g_slist_prepend (smileys, smiley);
}
cur_str = t;
@@ -335,7 +338,9 @@ empathy_smiley_manager_parse (EmpathySmileyManager *manager,
continue;
}
- smiley = smiley_new (cur_tree->pixbuf, g_strndup (cur_str, t - cur_str));
+ smiley = smiley_new (cur_tree->pixbuf,
+ g_strndup (cur_str, t - cur_str),
+ cur_tree->path);
smileys = g_slist_prepend (smileys, smiley);
if (cur_tree->pixbuf) {
cur_str = t;
@@ -350,7 +355,9 @@ empathy_smiley_manager_parse (EmpathySmileyManager *manager,
}
}
- smiley = smiley_new (cur_tree->pixbuf, g_strndup (cur_str, t - cur_str));
+ smiley = smiley_new (cur_tree->pixbuf,
+ g_strndup (cur_str, t - cur_str),
+ cur_tree->path);
smileys = g_slist_prepend (smileys, smiley);
return g_slist_reverse (smileys);
diff --git a/libempathy-gtk/empathy-smiley-manager.h b/libempathy-gtk/empathy-smiley-manager.h
index 5eaf4b283..dc7428c3b 100644
--- a/libempathy-gtk/empathy-smiley-manager.h
+++ b/libempathy-gtk/empathy-smiley-manager.h
@@ -48,8 +48,9 @@ struct _EmpathySmileyManagerClass {
};
typedef struct {
- GdkPixbuf *pixbuf;
- gchar *str;
+ GdkPixbuf *pixbuf;
+ gchar *str;
+ const gchar *path;
} EmpathySmiley;
typedef void (*EmpathySmileyMenuFunc) (EmpathySmileyManager *manager,
@@ -63,10 +64,6 @@ void empathy_smiley_manager_add (EmpathySmileyManag
const gchar *icon_name,
const gchar *first_str,
...);
-void empathy_smiley_manager_add_from_pixbuf (EmpathySmileyManager *manager,
- GdkPixbuf *smiley,
- const gchar *first_str,
- ...);
GSList * empathy_smiley_manager_get_all (EmpathySmileyManager *manager);
GSList * empathy_smiley_manager_parse (EmpathySmileyManager *manager,
const gchar *text);
diff --git a/libempathy-gtk/empathy-sound.c b/libempathy-gtk/empathy-sound.c
new file mode 100644
index 000000000..d97f72bef
--- /dev/null
+++ b/libempathy-gtk/empathy-sound.c
@@ -0,0 +1,385 @@
+/*
+ * empathy-sound.c - Various sound related utility functions.
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <config.h>
+
+#include "empathy-sound.h"
+
+#include <canberra-gtk.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+
+#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
+#include <libempathy/empathy-debug.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-conf.h"
+
+typedef struct {
+ EmpathySound sound_id;
+ const char * event_ca_id;
+ const char * event_ca_description;
+ const char * gconf_key;
+} EmpathySoundEntry;
+
+typedef struct {
+ GtkWidget *widget;
+ gint sound_id;
+ guint play_interval;
+ guint replay_timeout_id;
+} EmpathyRepeatableSound;
+
+/* NOTE: these entries MUST be in the same order than EmpathySound enum */
+static EmpathySoundEntry sound_entries[LAST_EMPATHY_SOUND] = {
+ { EMPATHY_SOUND_MESSAGE_INCOMING, "message-new-instant",
+ N_("Received an instant message"), EMPATHY_PREFS_SOUNDS_INCOMING_MESSAGE } ,
+ { EMPATHY_SOUND_MESSAGE_OUTGOING, "message-sent-instant",
+ N_("Sent an instant message"), EMPATHY_PREFS_SOUNDS_OUTGOING_MESSAGE } ,
+ { EMPATHY_SOUND_CONVERSATION_NEW, "message-new-instant",
+ N_("Incoming chat request"), EMPATHY_PREFS_SOUNDS_NEW_CONVERSATION },
+ { EMPATHY_SOUND_CONTACT_CONNECTED, "service-login",
+ N_("Contact connected"), EMPATHY_PREFS_SOUNDS_CONTACT_LOGIN },
+ { EMPATHY_SOUND_CONTACT_DISCONNECTED, "service-logout",
+ N_("Contact disconnected"), EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT },
+ { EMPATHY_SOUND_ACCOUNT_CONNECTED, "service-login",
+ N_("Connected to server"), EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN },
+ { EMPATHY_SOUND_ACCOUNT_DISCONNECTED, "service-logout",
+ N_("Disconnected from server"), EMPATHY_PREFS_SOUNDS_SERVICE_LOGOUT },
+ { EMPATHY_SOUND_PHONE_INCOMING, "phone-incoming-call",
+ N_("Incoming voice call"), NULL },
+ { EMPATHY_SOUND_PHONE_OUTGOING, "phone-outgoing-calling",
+ N_("Outgoing voice call"), NULL },
+ { EMPATHY_SOUND_PHONE_HANGUP, "phone-hangup",
+ N_("Voice call ended"), NULL },
+};
+
+/* An hash table containing currently repeating sounds. The format is the
+ * following:
+ * Key: An EmpathySound
+ * Value : The EmpathyRepeatableSound associated with that EmpathySound. */
+static GHashTable *repeating_sounds;
+
+static gboolean
+empathy_sound_pref_is_enabled (EmpathySound sound_id)
+{
+ EmpathySoundEntry *entry;
+ EmpathyConf *conf;
+ gboolean res;
+
+ entry = &(sound_entries[sound_id]);
+ g_return_val_if_fail (entry->sound_id == sound_id, FALSE);
+
+ if (entry->gconf_key == NULL)
+ return TRUE;
+
+ conf = empathy_conf_get ();
+ res = FALSE;
+
+ empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_ENABLED, &res);
+
+ if (!res)
+ return FALSE;
+
+ if (!empathy_check_available_state ())
+ {
+ empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_DISABLED_AWAY, &res);
+
+ if (res)
+ return FALSE;
+ }
+
+ empathy_conf_get_bool (conf, entry->gconf_key, &res);
+
+ return res;
+}
+
+/**
+ * empathy_sound_stop:
+ * @sound_id: The #EmpathySound to stop playing.
+ *
+ * Stop playing a sound. If it has been stated in loop with
+ * empathy_sound_start_playing(), it will also stop replaying.
+ */
+void
+empathy_sound_stop (EmpathySound sound_id)
+{
+ EmpathySoundEntry *entry;
+
+ g_return_if_fail (sound_id < LAST_EMPATHY_SOUND);
+
+ entry = &(sound_entries[sound_id]);
+ g_return_if_fail (entry->sound_id == sound_id);
+
+ if (repeating_sounds != NULL)
+ {
+ EmpathyRepeatableSound *repeatable_sound;
+
+ repeatable_sound = g_hash_table_lookup (repeating_sounds,
+ GINT_TO_POINTER (sound_id));
+ if (repeatable_sound != NULL)
+ {
+ /* The sound must be stopped... If it is waiting for replay, remove
+ * it from hash table to cancel. Otherwise we'll cancel the sound
+ * being played. */
+ if (repeatable_sound->replay_timeout_id != 0)
+ {
+ g_hash_table_remove (repeating_sounds, GINT_TO_POINTER (sound_id));
+ return;
+ }
+ }
+ }
+
+ ca_context_cancel (ca_gtk_context_get (), entry->sound_id);
+}
+
+static gboolean
+empathy_sound_play_internal (GtkWidget *widget, EmpathySound sound_id,
+ ca_finish_callback_t callback, gpointer user_data)
+{
+ EmpathySoundEntry *entry;
+ ca_context *c;
+ ca_proplist *p = NULL;
+
+ entry = &(sound_entries[sound_id]);
+ g_return_val_if_fail (entry->sound_id == sound_id, FALSE);
+
+ c = ca_gtk_context_get ();
+ ca_context_cancel (c, entry->sound_id);
+
+ DEBUG ("Play sound \"%s\" (%s)",
+ entry->event_ca_id,
+ entry->event_ca_description);
+
+ if (ca_proplist_create (&p) < 0)
+ goto failed;
+
+ if (ca_proplist_sets (p, CA_PROP_EVENT_ID, entry->event_ca_id) < 0)
+ goto failed;
+
+ if (ca_proplist_sets (p, CA_PROP_EVENT_DESCRIPTION,
+ gettext (entry->event_ca_id)) < 0)
+ goto failed;
+
+ 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);
+
+ ca_proplist_destroy (p);
+
+ return TRUE;
+
+failed:
+ if (p != NULL)
+ ca_proplist_destroy (p);
+
+ return FALSE;
+}
+
+/**
+ * empathy_sound_play_full:
+ * @widget: The #GtkWidget from which the sound is originating.
+ * @sound_id: The #EmpathySound to play.
+ * @callback: The #ca_finish_callback_t function that will be called when the
+ * sound has stopped playing.
+ * @user_data: user data to pass to the function.
+ *
+ * Plays a sound.
+ *
+ * Returns %TRUE if the sound has successfully started playing, otherwise
+ * returning %FALSE and @callback won't be called.
+ *
+ * This function returns %FALSE if the sound is already playing in loop using
+ * %empathy_sound_start_playing.
+ *
+ * This function returns %FALSE if the sound is disabled in empathy preferences.
+ *
+ * Return value: %TRUE if the sound has successfully started playing, %FALSE
+ * otherwise.
+ */
+gboolean
+empathy_sound_play_full (GtkWidget *widget, EmpathySound sound_id,
+ ca_finish_callback_t callback, gpointer user_data)
+{
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+ g_return_val_if_fail (sound_id < LAST_EMPATHY_SOUND, FALSE);
+
+ if (!empathy_sound_pref_is_enabled (sound_id))
+ return FALSE;
+
+ /* The sound might already be playing repeatedly. If it's the case, we
+ * immediadely return since there's no need to make it play again */
+ if (repeating_sounds != NULL &&
+ g_hash_table_lookup (repeating_sounds, GINT_TO_POINTER (sound_id)) != NULL)
+ return FALSE;
+
+ return empathy_sound_play_internal (widget, sound_id, callback, user_data);
+}
+
+/**
+ * empathy_sound_play:
+ * @widget: The #GtkWidget from which the sound is originating.
+ * @sound_id: The #EmpathySound to play.
+ *
+ * Plays a sound. See %empathy_sound_play_full for details.'
+ *
+ * Return value: %TRUE if the sound has successfully started playing, %FALSE
+ * otherwise.
+ */
+gboolean
+empathy_sound_play (GtkWidget *widget, EmpathySound sound_id)
+{
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+ g_return_val_if_fail (sound_id < LAST_EMPATHY_SOUND, FALSE);
+
+ return empathy_sound_play_full (widget, sound_id, NULL, NULL);
+}
+
+static void playing_finished_cb (ca_context *c, guint id, int error_code,
+ gpointer user_data);
+
+static gboolean
+playing_timeout_cb (gpointer data)
+{
+ EmpathyRepeatableSound *repeatable_sound = data;
+ gboolean playing;
+
+ repeatable_sound->replay_timeout_id = 0;
+
+ playing = empathy_sound_play_internal (repeatable_sound->widget,
+ repeatable_sound->sound_id, playing_finished_cb, data);
+
+ if (!playing)
+ {
+ DEBUG ("Failed to replay sound, stop repeating");
+ g_hash_table_remove (repeating_sounds,
+ GINT_TO_POINTER (repeatable_sound->sound_id));
+ }
+
+ return FALSE;
+}
+
+static void
+playing_finished_cb (ca_context *c, guint id, int error_code,
+ gpointer user_data)
+{
+ EmpathyRepeatableSound *repeatable_sound = user_data;
+
+ if (error_code != CA_SUCCESS)
+ {
+ DEBUG ("Error: %s", ca_strerror (error_code));
+ g_hash_table_remove (repeating_sounds,
+ GINT_TO_POINTER (repeatable_sound->sound_id));
+ return;
+ }
+
+ repeatable_sound->replay_timeout_id = g_timeout_add (
+ repeatable_sound->play_interval, playing_timeout_cb, user_data);
+}
+
+static void
+empathy_sound_widget_destroyed_cb (GtkWidget *widget, gpointer user_data)
+{
+ EmpathyRepeatableSound *repeatable_sound = user_data;
+
+ /* The sound must be stopped... If it is waiting for replay, remove
+ * it from hash table to cancel. Otherwise playing_finished_cb will be
+ * called with an error. */
+ if (repeatable_sound->replay_timeout_id != 0)
+ {
+ g_hash_table_remove (repeating_sounds,
+ GINT_TO_POINTER (repeatable_sound->sound_id));
+ }
+}
+
+static void
+repeating_sounds_item_delete (gpointer data)
+{
+ EmpathyRepeatableSound *repeatable_sound = 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);
+
+ g_slice_free (EmpathyRepeatableSound, repeatable_sound);
+}
+
+/**
+ * empathy_sound_start_playing:
+ * @widget: The #GtkWidget from which the sound is originating.
+ * @sound_id: The #EmpathySound to play.
+ * @timeout_before_replay: The amount of time, in milliseconds, between two
+ * consecutive play.
+ *
+ * Start playing a sound in loop. To stop the sound, call empathy_call_stop ()
+ * by passing it the same @sound_id. Note that if you start playing a sound
+ * multiple times, you'll have to call %empathy_sound_stop the same number of
+ * times.
+ *
+ * Return value: %TRUE if the sound has successfully started playing.
+ */
+gboolean
+empathy_sound_start_playing (GtkWidget *widget, EmpathySound sound_id,
+ guint timeout_before_replay)
+{
+ EmpathyRepeatableSound *repeatable_sound;
+ gboolean playing = FALSE;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+ g_return_val_if_fail (sound_id < LAST_EMPATHY_SOUND, FALSE);
+
+ if (!empathy_sound_pref_is_enabled (sound_id))
+ return FALSE;
+
+ if (repeating_sounds == NULL)
+ {
+ repeating_sounds = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+ NULL, repeating_sounds_item_delete);
+ }
+ else if (g_hash_table_lookup (repeating_sounds,
+ GINT_TO_POINTER (sound_id)) != NULL)
+ {
+ /* The sound is already playing in loop. No need to continue. */
+ return FALSE;
+ }
+
+ repeatable_sound = g_slice_new0 (EmpathyRepeatableSound);
+ repeatable_sound->widget = widget;
+ repeatable_sound->sound_id = sound_id;
+ repeatable_sound->play_interval = timeout_before_replay;
+ repeatable_sound->replay_timeout_id = 0;
+
+ g_hash_table_insert (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);
+
+ playing = empathy_sound_play_internal (widget, sound_id, playing_finished_cb,
+ repeatable_sound);
+
+ if (!playing)
+ g_hash_table_remove (repeating_sounds, GINT_TO_POINTER (sound_id));
+
+ return playing;
+}
diff --git a/libempathy-gtk/empathy-sound.h b/libempathy-gtk/empathy-sound.h
new file mode 100644
index 000000000..f65f6260e
--- /dev/null
+++ b/libempathy-gtk/empathy-sound.h
@@ -0,0 +1,56 @@
+/*
+ * empathy-sound.h - Various sound related utility functions.
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+
+#ifndef __EMPATHY_SOUND_H__
+#define __EMPATHY_SOUND_H__
+
+#include <gtk/gtk.h>
+
+#include <canberra-gtk.h>
+
+G_BEGIN_DECLS
+
+/* NOTE: Keep this sync with sound_entries in empathy-sound.c */
+typedef enum {
+ EMPATHY_SOUND_MESSAGE_INCOMING = 0,
+ EMPATHY_SOUND_MESSAGE_OUTGOING,
+ EMPATHY_SOUND_CONVERSATION_NEW,
+ EMPATHY_SOUND_CONTACT_CONNECTED,
+ EMPATHY_SOUND_CONTACT_DISCONNECTED,
+ EMPATHY_SOUND_ACCOUNT_CONNECTED,
+ EMPATHY_SOUND_ACCOUNT_DISCONNECTED,
+ EMPATHY_SOUND_PHONE_INCOMING,
+ EMPATHY_SOUND_PHONE_OUTGOING,
+ EMPATHY_SOUND_PHONE_HANGUP,
+ LAST_EMPATHY_SOUND,
+} EmpathySound;
+
+gboolean empathy_sound_play (GtkWidget *widget, EmpathySound sound_id);
+void empathy_sound_stop (EmpathySound sound_id);
+
+gboolean empathy_sound_start_playing (GtkWidget *widget, EmpathySound sound_id,
+ guint timeout_before_replay);
+
+gboolean empathy_sound_play_full (GtkWidget *widget, EmpathySound sound_id,
+ ca_finish_callback_t callback, gpointer user_data);
+
+G_END_DECLS
+
+#endif /* #ifndef __EMPATHY_SOUND_H__*/
diff --git a/libempathy-gtk/empathy-spell.c b/libempathy-gtk/empathy-spell.c
index 9cd7c555b..076e81a03 100644
--- a/libempathy-gtk/empathy-spell.c
+++ b/libempathy-gtk/empathy-spell.c
@@ -175,7 +175,7 @@ spell_notify_languages_cb (EmpathyConf *conf,
enchant_broker_free_dict (lang->config, lang->speller);
enchant_broker_free (lang->config);
-
+
g_slice_free (SpellLanguage, lang);
}
@@ -363,7 +363,7 @@ empathy_spell_get_suggestions (const gchar *word)
suggestions = enchant_dict_suggest (lang->speller, word, len,
&number_of_suggestions);
-
+
for (i = 0; i < number_of_suggestions; i++) {
suggestion_list = g_list_append (suggestion_list,
g_strdup (suggestions[i]));
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c
new file mode 100644
index 000000000..b16a3e7c9
--- /dev/null
+++ b/libempathy-gtk/empathy-theme-adium.c
@@ -0,0 +1,1051 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008-2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <glib/gi18n.h>
+
+#include <webkit/webkitnetworkrequest.h>
+#include <telepathy-glib/dbus.h>
+#include <telepathy-glib/util.h>
+
+
+#include <libempathy/empathy-time.h>
+#include <libempathy/empathy-utils.h>
+#include <libmissioncontrol/mc-profile.h>
+
+#include "empathy-theme-adium.h"
+#include "empathy-smiley-manager.h"
+#include "empathy-conf.h"
+#include "empathy-ui-utils.h"
+#include "empathy-plist.h"
+
+#define DEBUG_FLAG EMPATHY_DEBUG_CHAT
+#include <libempathy/empathy-debug.h>
+
+#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyThemeAdium)
+
+/* "Join" consecutive messages with timestamps within five minutes */
+#define MESSAGE_JOIN_PERIOD 5*60
+
+typedef struct {
+ EmpathyAdiumData *data;
+ EmpathySmileyManager *smiley_manager;
+ EmpathyContact *last_contact;
+ time_t last_timestamp;
+ gboolean page_loaded;
+ GList *message_queue;
+} EmpathyThemeAdiumPriv;
+
+struct _EmpathyAdiumData {
+ guint ref_count;
+ gchar *path;
+ gchar *basedir;
+ gchar *default_avatar_filename;
+ gchar *default_incoming_avatar_filename;
+ gchar *default_outgoing_avatar_filename;
+ gchar *template_html;
+ gchar *in_content_html;
+ gsize in_content_len;
+ gchar *in_nextcontent_html;
+ gsize in_nextcontent_len;
+ gchar *out_content_html;
+ gsize out_content_len;
+ gchar *out_nextcontent_html;
+ gsize out_nextcontent_len;
+ gchar *status_html;
+ gsize status_len;
+ GHashTable *info;
+};
+
+static void theme_adium_iface_init (EmpathyChatViewIface *iface);
+
+enum {
+ PROP_0,
+ PROP_ADIUM_DATA,
+};
+
+G_DEFINE_TYPE_WITH_CODE (EmpathyThemeAdium, empathy_theme_adium,
+ WEBKIT_TYPE_WEB_VIEW,
+ G_IMPLEMENT_INTERFACE (EMPATHY_TYPE_CHAT_VIEW,
+ theme_adium_iface_init));
+
+static WebKitNavigationResponse
+theme_adium_navigation_requested_cb (WebKitWebView *view,
+ WebKitWebFrame *frame,
+ WebKitNetworkRequest *request,
+ gpointer user_data)
+{
+ const gchar *uri;
+
+ uri = webkit_network_request_get_uri (request);
+ empathy_url_show (GTK_WIDGET (view), uri);
+
+ return WEBKIT_NAVIGATION_RESPONSE_IGNORE;
+}
+
+static void
+theme_adium_populate_popup_cb (WebKitWebView *view,
+ GtkMenu *menu,
+ gpointer user_data)
+{
+ GtkWidget *item;
+
+ /* Remove default menu items */
+ gtk_container_foreach (GTK_CONTAINER (menu),
+ (GtkCallback) gtk_widget_destroy, NULL);
+
+ /* Select all item */
+ item = gtk_image_menu_item_new_from_stock (GTK_STOCK_SELECT_ALL, NULL);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (webkit_web_view_select_all),
+ view);
+
+ /* Copy menu item */
+ if (webkit_web_view_can_copy_clipboard (view)) {
+ item = gtk_image_menu_item_new_from_stock (GTK_STOCK_COPY, NULL);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (webkit_web_view_copy_clipboard),
+ view);
+ }
+
+ /* Clear menu item */
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ item = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ g_signal_connect_swapped (item, "activate",
+ G_CALLBACK (empathy_chat_view_clear),
+ view);
+
+ /* FIXME: Add open_link and copy_link when those bugs are fixed:
+ * https://bugs.webkit.org/show_bug.cgi?id=16092
+ * https://bugs.webkit.org/show_bug.cgi?id=16562
+ */
+}
+
+static gchar *
+theme_adium_parse_body (EmpathyThemeAdium *theme,
+ const gchar *text)
+{
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (theme);
+ gboolean use_smileys = FALSE;
+ GSList *smileys, *l;
+ GString *string;
+ gint i;
+ GRegex *uri_regex;
+ GMatchInfo *match_info;
+ gboolean match;
+ gchar *ret = NULL;
+ gint prev;
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
+ &use_smileys);
+
+ if (use_smileys) {
+ /* Replace smileys by a <img/> tag */
+ string = g_string_sized_new (strlen (text));
+ smileys = empathy_smiley_manager_parse (priv->smiley_manager, text);
+ for (l = smileys; l; l = l->next) {
+ EmpathySmiley *smiley;
+
+ smiley = l->data;
+ if (smiley->path) {
+ g_string_append_printf (string,
+ "<abbr title='%s'><img src=\"%s\"/ alt=\"%s\"/></abbr>",
+ smiley->str, smiley->path, smiley->str);
+ } else {
+ gchar *str;
+
+ str = g_markup_escape_text (smiley->str, -1);
+ g_string_append (string, str);
+ g_free (str);
+ }
+ empathy_smiley_free (smiley);
+ }
+ g_slist_free (smileys);
+
+ g_free (ret);
+ text = ret = g_string_free (string, FALSE);
+ }
+
+ /* Add <a href></a> arround links */
+ uri_regex = empathy_uri_regex_dup_singleton ();
+ match = g_regex_match (uri_regex, text, 0, &match_info);
+ if (match) {
+ gint last = 0;
+ gint s = 0, e = 0;
+
+ string = g_string_sized_new (strlen (text));
+ do {
+ g_match_info_fetch_pos (match_info, 0, &s, &e);
+
+ if (s > last) {
+ /* Append the text between last link (or the
+ * start of the message) and this link */
+ g_string_append_len (string, text + last, s - last);
+ }
+
+ /* Append the link inside <a href=""></a> tag */
+ g_string_append (string, "<a href=\"");
+ g_string_append_len (string, text + s, e - s);
+ g_string_append (string, "\">");
+ g_string_append_len (string, text + s, e - s);
+ g_string_append (string, "</a>");
+
+ last = e;
+ } while (g_match_info_next (match_info, NULL));
+
+ if (e < strlen (text)) {
+ /* Append the text after the last link */
+ g_string_append_len (string, text + e, strlen (text) - e);
+ }
+
+ g_free (ret);
+ text = ret = g_string_free (string, FALSE);
+ }
+ g_match_info_free (match_info);
+ g_regex_unref (uri_regex);
+
+ /* Replace \n by <br/> */
+ string = NULL;
+ prev = 0;
+ for (i = 0; text[i] != '\0'; i++) {
+ if (text[i] == '\n') {
+ if (!string ) {
+ string = g_string_sized_new (strlen (text));
+ }
+ g_string_append_len (string, text + prev, i - prev);
+ g_string_append (string, "<br/>");
+ prev = i + 1;
+ }
+ }
+ if (string) {
+ g_string_append (string, text + prev);
+ g_free (ret);
+ text = ret = g_string_free (string, FALSE);
+ }
+
+ return ret;
+}
+
+static void
+escape_and_append_len (GString *string, const gchar *str, gint len)
+{
+ while (*str != '\0' && len != 0) {
+ switch (*str) {
+ case '\\':
+ /* \ becomes \\ */
+ g_string_append (string, "\\\\");
+ break;
+ case '\"':
+ /* " becomes \" */
+ g_string_append (string, "\\\"");
+ break;
+ case '\n':
+ /* Remove end of lines */
+ break;
+ default:
+ g_string_append_c (string, *str);
+ }
+
+ str++;
+ len--;
+ }
+}
+
+static gboolean
+theme_adium_match (const gchar **str, const gchar *match)
+{
+ gint len;
+
+ len = strlen (match);
+ if (strncmp (*str, match, len) == 0) {
+ *str += len - 1;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void
+theme_adium_append_html (EmpathyThemeAdium *theme,
+ const gchar *func,
+ const gchar *html, gsize len,
+ const gchar *message,
+ const gchar *avatar_filename,
+ const gchar *name,
+ const gchar *contact_id,
+ const gchar *service_name,
+ const gchar *message_classes,
+ time_t timestamp)
+{
+ GString *string;
+ const gchar *cur = NULL;
+ gchar *script;
+
+ /* Make some search-and-replace in the html code */
+ string = g_string_sized_new (len + strlen (message));
+ g_string_append_printf (string, "%s(\"", func);
+ for (cur = html; *cur != '\0'; cur++) {
+ const gchar *replace = NULL;
+ gchar *dup_replace = NULL;
+
+ if (theme_adium_match (&cur, "%message%")) {
+ replace = message;
+ } else if (theme_adium_match (&cur, "%messageClasses%")) {
+ replace = message_classes;
+ } else if (theme_adium_match (&cur, "%userIconPath%")) {
+ replace = avatar_filename;
+ } else if (theme_adium_match (&cur, "%sender%")) {
+ replace = name;
+ } else if (theme_adium_match (&cur, "%senderScreenName%")) {
+ replace = contact_id;
+ } else if (theme_adium_match (&cur, "%senderDisplayName%")) {
+ /* %senderDisplayName% -
+ * "The serverside (remotely set) name of the sender,
+ * such as an MSN display name."
+ *
+ * We don't have access to that yet so we use local
+ * alias instead.*/
+ replace = name;
+ } else if (theme_adium_match (&cur, "%service%")) {
+ replace = service_name;
+ } else if (theme_adium_match (&cur, "%shortTime%")) {
+ dup_replace = empathy_time_to_string_local (timestamp,
+ EMPATHY_TIME_FORMAT_DISPLAY_SHORT);
+ replace = dup_replace;
+ } else if (theme_adium_match (&cur, "%time")) {
+ gchar *format = NULL;
+ gchar *end;
+
+ /* Time can be in 2 formats:
+ * %time% or %time{strftime format}%
+ * Extract the time format if provided. */
+ if (cur[1] == '{') {
+ cur += 2;
+ end = strstr (cur, "}%");
+ if (!end) {
+ /* Invalid string */
+ continue;
+ }
+ format = g_strndup (cur, end - cur);
+ cur = end + 1;
+ } else {
+ cur++;
+ }
+
+ dup_replace = empathy_time_to_string_local (timestamp,
+ format ? format : EMPATHY_TIME_FORMAT_DISPLAY_SHORT);
+ replace = dup_replace;
+ g_free (format);
+ } else {
+ escape_and_append_len (string, cur, 1);
+ continue;
+ }
+
+ /* Here we have a replacement to make */
+ escape_and_append_len (string, replace, -1);
+ g_free (dup_replace);
+ }
+ g_string_append (string, "\")");
+
+ script = g_string_free (string, FALSE);
+ webkit_web_view_execute_script (WEBKIT_WEB_VIEW (theme), script);
+ g_free (script);
+}
+
+static void
+theme_adium_append_message (EmpathyChatView *view,
+ EmpathyMessage *msg)
+{
+ EmpathyThemeAdium *theme = EMPATHY_THEME_ADIUM (view);
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (theme);
+ EmpathyContact *sender;
+ McAccount *account;
+ McProfile *account_profile;
+ gchar *dup_body = NULL;
+ const gchar *body;
+ const gchar *name;
+ const gchar *contact_id;
+ EmpathyAvatar *avatar;
+ const gchar *avatar_filename = NULL;
+ time_t timestamp;
+ gchar *html = NULL;
+ gsize len = 0;
+ const gchar *func;
+ const gchar *service_name;
+ const gchar *message_classes = NULL;
+
+ if (!priv->page_loaded) {
+ priv->message_queue = g_list_prepend (priv->message_queue,
+ g_object_ref (msg));
+ return;
+ }
+
+ /* Get information */
+ sender = empathy_message_get_sender (msg);
+ account = empathy_contact_get_account (sender);
+ account_profile = mc_account_get_profile (account);
+ service_name = mc_profile_get_display_name (account_profile);
+ timestamp = empathy_message_get_timestamp (msg);
+ body = empathy_message_get_body (msg);
+ dup_body = theme_adium_parse_body (theme, body);
+ if (dup_body) {
+ body = dup_body;
+ }
+ name = empathy_contact_get_name (sender);
+ contact_id = empathy_contact_get_id (sender);
+
+ /* If this is a /me, append an event */
+ if (empathy_message_get_tptype (msg) == TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION) {
+ gchar *str;
+
+ str = g_strdup_printf ("%s %s", name, body);
+ empathy_chat_view_append_event (view, str);
+ g_free (str);
+ g_free (dup_body);
+ return;
+ }
+
+ /* Get the avatar filename, or a fallback */
+ avatar = empathy_contact_get_avatar (sender);
+ if (avatar) {
+ avatar_filename = avatar->filename;
+ }
+ if (!avatar_filename) {
+ if (empathy_contact_is_user (sender)) {
+ avatar_filename = priv->data->default_outgoing_avatar_filename;
+ } else {
+ avatar_filename = priv->data->default_incoming_avatar_filename;
+ }
+ if (!avatar_filename) {
+ if (!priv->data->default_avatar_filename) {
+ priv->data->default_avatar_filename =
+ empathy_filename_from_icon_name ("stock_person",
+ GTK_ICON_SIZE_DIALOG);
+ }
+ avatar_filename = priv->data->default_avatar_filename;
+ }
+ }
+
+ /* Get the right html/func to add the message */
+ func = "appendMessage";
+ /*
+ * To mimick Adium's behavior, we only want to join messages
+ * sent within a 5 minute time frame.
+ */
+ if (empathy_contact_equal (priv->last_contact, sender) &&
+ (timestamp - priv->last_timestamp < MESSAGE_JOIN_PERIOD)) {
+ func = "appendNextMessage";
+ if (empathy_contact_is_user (sender)) {
+ message_classes = "consecutive incoming message";
+ html = priv->data->out_nextcontent_html;
+ len = priv->data->out_nextcontent_len;
+ }
+ if (!html) {
+ message_classes = "consecutive message outgoing";
+ html = priv->data->in_nextcontent_html;
+ len = priv->data->in_nextcontent_len;
+ }
+ }
+ if (!html) {
+ if (empathy_contact_is_user (sender)) {
+ if (!message_classes) {
+ message_classes = "incoming message";
+ }
+ html = priv->data->out_content_html;
+ len = priv->data->out_content_len;
+ }
+ if (!html) {
+ if (!message_classes) {
+ message_classes = "message outgoing";
+ }
+ html = priv->data->in_content_html;
+ len = priv->data->in_content_len;
+ }
+ }
+
+ theme_adium_append_html (theme, func, html, len, body, avatar_filename,
+ name, contact_id, service_name, message_classes,
+ timestamp);
+
+ /* Keep the sender of the last displayed message */
+ if (priv->last_contact) {
+ g_object_unref (priv->last_contact);
+ }
+ priv->last_contact = g_object_ref (sender);
+ priv->last_timestamp = timestamp;
+
+ g_free (dup_body);
+}
+
+static void
+theme_adium_append_event (EmpathyChatView *view,
+ const gchar *str)
+{
+ EmpathyThemeAdium *theme = EMPATHY_THEME_ADIUM (view);
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (theme);
+
+ if (priv->data->status_html) {
+ theme_adium_append_html (theme, "appendMessage",
+ priv->data->status_html,
+ priv->data->status_len,
+ str, NULL, NULL, NULL, NULL, "event",
+ empathy_time_get_current ());
+ }
+
+ /* There is no last contact */
+ if (priv->last_contact) {
+ g_object_unref (priv->last_contact);
+ priv->last_contact = NULL;
+ }
+}
+
+static void
+theme_adium_scroll (EmpathyChatView *view,
+ gboolean allow_scrolling)
+{
+ /* FIXME: Is it possible? I guess we need a js function, but I don't
+ * see any... */
+}
+
+static void
+theme_adium_scroll_down (EmpathyChatView *view)
+{
+ webkit_web_view_execute_script (WEBKIT_WEB_VIEW (view), "scrollToBottom()");
+}
+
+static gboolean
+theme_adium_get_has_selection (EmpathyChatView *view)
+{
+ return webkit_web_view_has_selection (WEBKIT_WEB_VIEW (view));
+}
+
+static void
+theme_adium_clear (EmpathyChatView *view)
+{
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (view);
+ gchar *basedir_uri;
+
+ priv->page_loaded = FALSE;
+ basedir_uri = g_strconcat ("file://", priv->data->basedir, NULL);
+ webkit_web_view_load_html_string (WEBKIT_WEB_VIEW (view),
+ priv->data->template_html,
+ basedir_uri);
+ g_free (basedir_uri);
+}
+
+static gboolean
+theme_adium_find_previous (EmpathyChatView *view,
+ const gchar *search_criteria,
+ gboolean new_search)
+{
+ return webkit_web_view_search_text (WEBKIT_WEB_VIEW (view),
+ search_criteria, FALSE,
+ FALSE, TRUE);
+}
+
+static gboolean
+theme_adium_find_next (EmpathyChatView *view,
+ const gchar *search_criteria,
+ gboolean new_search)
+{
+ return webkit_web_view_search_text (WEBKIT_WEB_VIEW (view),
+ search_criteria, FALSE,
+ TRUE, TRUE);
+}
+
+static void
+theme_adium_find_abilities (EmpathyChatView *view,
+ const gchar *search_criteria,
+ gboolean *can_do_previous,
+ gboolean *can_do_next)
+{
+ /* FIXME: Does webkit provide an API for that? We have wrap=true in
+ * find_next and find_previous to work around this problem. */
+ if (can_do_previous)
+ *can_do_previous = TRUE;
+ if (can_do_next)
+ *can_do_next = TRUE;
+}
+
+static void
+theme_adium_highlight (EmpathyChatView *view,
+ const gchar *text)
+{
+ webkit_web_view_unmark_text_matches (WEBKIT_WEB_VIEW (view));
+ webkit_web_view_mark_text_matches (WEBKIT_WEB_VIEW (view),
+ text, FALSE, 0);
+ webkit_web_view_set_highlight_text_matches (WEBKIT_WEB_VIEW (view),
+ TRUE);
+}
+
+static void
+theme_adium_copy_clipboard (EmpathyChatView *view)
+{
+ webkit_web_view_copy_clipboard (WEBKIT_WEB_VIEW (view));
+}
+
+static void
+theme_adium_iface_init (EmpathyChatViewIface *iface)
+{
+ iface->append_message = theme_adium_append_message;
+ iface->append_event = theme_adium_append_event;
+ iface->scroll = theme_adium_scroll;
+ iface->scroll_down = theme_adium_scroll_down;
+ iface->get_has_selection = theme_adium_get_has_selection;
+ iface->clear = theme_adium_clear;
+ iface->find_previous = theme_adium_find_previous;
+ iface->find_next = theme_adium_find_next;
+ iface->find_abilities = theme_adium_find_abilities;
+ iface->highlight = theme_adium_highlight;
+ iface->copy_clipboard = theme_adium_copy_clipboard;
+}
+
+static void
+theme_adium_load_finished_cb (WebKitWebView *view,
+ WebKitWebFrame *frame,
+ gpointer user_data)
+{
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (view);
+ EmpathyChatView *chat_view = EMPATHY_CHAT_VIEW (view);
+
+ DEBUG ("Page loaded");
+ priv->page_loaded = TRUE;
+
+ /* Display queued messages */
+ priv->message_queue = g_list_reverse (priv->message_queue);
+ while (priv->message_queue) {
+ EmpathyMessage *message = priv->message_queue->data;
+
+ theme_adium_append_message (chat_view, message);
+ priv->message_queue = g_list_remove (priv->message_queue, message);
+ g_object_unref (message);
+ }
+}
+
+static void
+theme_adium_finalize (GObject *object)
+{
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (object);
+
+ empathy_adium_data_unref (priv->data);
+
+ G_OBJECT_CLASS (empathy_theme_adium_parent_class)->finalize (object);
+}
+
+static void
+theme_adium_dispose (GObject *object)
+{
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (object);
+
+ if (priv->smiley_manager) {
+ g_object_unref (priv->smiley_manager);
+ priv->smiley_manager = NULL;
+ }
+
+ if (priv->last_contact) {
+ g_object_unref (priv->last_contact);
+ priv->last_contact = NULL;
+ }
+
+ G_OBJECT_CLASS (empathy_theme_adium_parent_class)->dispose (object);
+}
+
+static void
+theme_adium_constructed (GObject *object)
+{
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (object);
+ gchar *basedir_uri;
+ const gchar *font_family = NULL;
+ gint font_size = 0;
+ WebKitWebSettings *webkit_settings;
+
+ /* Set default settings */
+ font_family = tp_asv_get_string (priv->data->info, "DefaultFontFamily");
+ font_size = tp_asv_get_int32 (priv->data->info, "DefaultFontSize", NULL);
+ webkit_settings = webkit_web_settings_new ();
+ if (font_family) {
+ g_object_set (G_OBJECT (webkit_settings), "default-font-family", font_family, NULL);
+ }
+ if (font_size) {
+ g_object_set (G_OBJECT (webkit_settings), "default-font-size", font_size, NULL);
+ }
+ webkit_web_view_set_settings (WEBKIT_WEB_VIEW (object), webkit_settings);
+
+ /* Load template */
+ basedir_uri = g_strconcat ("file://", priv->data->basedir, NULL);
+ webkit_web_view_load_html_string (WEBKIT_WEB_VIEW (object),
+ priv->data->template_html,
+ basedir_uri);
+
+ g_object_unref (webkit_settings);
+ g_free (basedir_uri);
+}
+
+static void
+theme_adium_get_property (GObject *object,
+ guint param_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_ADIUM_DATA:
+ g_value_set_boxed (value, priv->data);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+theme_adium_set_property (GObject *object,
+ guint param_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (object);
+
+ switch (param_id) {
+ case PROP_ADIUM_DATA:
+ g_assert (priv->data == NULL);
+ priv->data = g_value_dup_boxed (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ break;
+ };
+}
+
+static void
+empathy_theme_adium_class_init (EmpathyThemeAdiumClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = theme_adium_finalize;
+ object_class->dispose = theme_adium_dispose;
+ object_class->constructed = theme_adium_constructed;
+ object_class->get_property = theme_adium_get_property;
+ object_class->set_property = theme_adium_set_property;
+
+ g_object_class_install_property (object_class,
+ PROP_ADIUM_DATA,
+ g_param_spec_boxed ("adium-data",
+ "The theme data",
+ "Data for the adium theme",
+ EMPATHY_TYPE_ADIUM_DATA,
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+
+ g_type_class_add_private (object_class, sizeof (EmpathyThemeAdiumPriv));
+}
+
+static void
+empathy_theme_adium_init (EmpathyThemeAdium *theme)
+{
+ EmpathyThemeAdiumPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (theme,
+ EMPATHY_TYPE_THEME_ADIUM, EmpathyThemeAdiumPriv);
+
+ theme->priv = priv;
+
+ priv->smiley_manager = empathy_smiley_manager_dup_singleton ();
+
+ g_signal_connect (theme, "load-finished",
+ G_CALLBACK (theme_adium_load_finished_cb),
+ NULL);
+ g_signal_connect (theme, "navigation-requested",
+ G_CALLBACK (theme_adium_navigation_requested_cb),
+ NULL);
+ g_signal_connect (theme, "populate-popup",
+ G_CALLBACK (theme_adium_populate_popup_cb),
+ NULL);
+}
+
+EmpathyThemeAdium *
+empathy_theme_adium_new (EmpathyAdiumData *data)
+{
+ g_return_val_if_fail (data != NULL, NULL);
+
+ return g_object_new (EMPATHY_TYPE_THEME_ADIUM,
+ "adium-data", data,
+ NULL);
+}
+
+gboolean
+empathy_adium_path_is_valid (const gchar *path)
+{
+ gboolean ret;
+ gchar *file;
+
+ /* We ship a default Template.html as fallback if there is any problem
+ * with the one inside the theme. The only other required file is
+ * Content.html for incoming messages (outgoing fallback to use
+ * incoming). */
+ file = g_build_filename (path, "Contents", "Resources", "Incoming",
+ "Content.html", NULL);
+ ret = g_file_test (file, G_FILE_TEST_EXISTS);
+ g_free (file);
+
+ return ret;
+}
+
+GHashTable *
+empathy_adium_info_new (const gchar *path)
+{
+ gchar *file;
+ GValue *value;
+ GHashTable *info = NULL;
+
+ g_return_val_if_fail (empathy_adium_path_is_valid (path), NULL);
+
+ file = g_build_filename (path, "Contents", "Info.plist", NULL);
+ value = empathy_plist_parse_from_file (file);
+ g_free (file);
+
+ if (value) {
+ info = g_value_dup_boxed (value);
+ tp_g_value_slice_free (value);
+ }
+
+ return info;
+}
+
+GType
+empathy_adium_data_get_type (void)
+{
+ static GType type_id = 0;
+
+ if (!type_id)
+ {
+ type_id = g_boxed_type_register_static ("EmpathyAdiumData",
+ (GBoxedCopyFunc) empathy_adium_data_ref,
+ (GBoxedFreeFunc) empathy_adium_data_unref);
+ }
+
+ return type_id;
+}
+
+EmpathyAdiumData *
+empathy_adium_data_new_with_info (const gchar *path, GHashTable *info)
+{
+ EmpathyAdiumData *data;
+ gchar *file;
+ gchar *template_html = NULL;
+ gsize template_len;
+ gchar *footer_html = NULL;
+ gsize footer_len;
+ GString *string;
+ gchar **strv = NULL;
+ gchar *css_path;
+ guint len = 0;
+ guint i = 0;
+
+ g_return_val_if_fail (empathy_adium_path_is_valid (path), NULL);
+
+ data = g_slice_new0 (EmpathyAdiumData);
+ data->ref_count = 1;
+ data->path = g_strdup (path);
+ data->basedir = g_strconcat (path, G_DIR_SEPARATOR_S "Contents"
+ G_DIR_SEPARATOR_S "Resources" G_DIR_SEPARATOR_S, NULL);
+ data->info = g_hash_table_ref (info);
+
+ /* Load html files */
+ file = g_build_filename (data->basedir, "Incoming", "Content.html", NULL);
+ g_file_get_contents (file, &data->in_content_html, &data->in_content_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (data->basedir, "Incoming", "NextContent.html", NULL);
+ g_file_get_contents (file, &data->in_nextcontent_html, &data->in_nextcontent_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (data->basedir, "Outgoing", "Content.html", NULL);
+ g_file_get_contents (file, &data->out_content_html, &data->out_content_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (data->basedir, "Outgoing", "NextContent.html", NULL);
+ g_file_get_contents (file, &data->out_nextcontent_html, &data->out_nextcontent_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (data->basedir, "Status.html", NULL);
+ g_file_get_contents (file, &data->status_html, &data->status_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (data->basedir, "Footer.html", NULL);
+ g_file_get_contents (file, &footer_html, &footer_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (data->basedir, "Incoming", "buddy_icon.png", NULL);
+ if (g_file_test (file, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+ data->default_incoming_avatar_filename = file;
+ } else {
+ g_free (file);
+ }
+
+ file = g_build_filename (data->basedir, "Outgoing", "buddy_icon.png", NULL);
+ if (g_file_test (file, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+ data->default_outgoing_avatar_filename = file;
+ } else {
+ g_free (file);
+ }
+
+ css_path = g_build_filename (data->basedir, "main.css", NULL);
+
+ /* There is 2 formats for Template.html: The old one has 4 parameters,
+ * the new one has 5 parameters. */
+ file = g_build_filename (data->basedir, "Template.html", NULL);
+ if (g_file_get_contents (file, &template_html, &template_len, NULL)) {
+ strv = g_strsplit (template_html, "%@", -1);
+ len = g_strv_length (strv);
+ }
+ g_free (file);
+
+ if (len != 5 && len != 6) {
+ /* Either the theme has no template or it don't have the good
+ * number of parameters. Fallback to use our own template. */
+ g_free (template_html);
+ g_strfreev (strv);
+
+ file = empathy_file_lookup ("Template.html", "data");
+ g_file_get_contents (file, &template_html, &template_len, NULL);
+ g_free (file);
+ strv = g_strsplit (template_html, "%@", -1);
+ len = g_strv_length (strv);
+ }
+
+ /* Replace %@ with the needed information in the template html. */
+ string = g_string_sized_new (template_len);
+ g_string_append (string, strv[i++]);
+ g_string_append (string, data->basedir);
+ g_string_append (string, strv[i++]);
+ if (len == 6) {
+ const gchar *variant;
+
+ /* We include main.css by default */
+ g_string_append_printf (string, "@import url(\"%s\");", css_path);
+ g_string_append (string, strv[i++]);
+ variant = tp_asv_get_string (data->info, "DefaultVariant");
+ if (variant) {
+ g_string_append (string, "Variants/");
+ g_string_append (string, variant);
+ g_string_append (string, ".css");
+ }
+ } else {
+ /* FIXME: We should set main.css OR the variant css */
+ g_string_append (string, css_path);
+ }
+ g_string_append (string, strv[i++]);
+ g_string_append (string, ""); /* We don't want header */
+ g_string_append (string, strv[i++]);
+ /* FIXME: We should replace adium %macros% in footer */
+ if (footer_html) {
+ g_string_append (string, footer_html);
+ }
+ g_string_append (string, strv[i++]);
+ data->template_html = g_string_free (string, FALSE);
+
+ g_free (footer_html);
+ g_free (template_html);
+ g_free (css_path);
+ g_strfreev (strv);
+
+ return data;
+}
+
+EmpathyAdiumData *
+empathy_adium_data_new (const gchar *path)
+{
+ EmpathyAdiumData *data;
+ GHashTable *info;
+
+ info = empathy_adium_info_new (path);
+ data = empathy_adium_data_new_with_info (path, info);
+ g_hash_table_unref (info);
+
+ return data;
+}
+
+EmpathyAdiumData *
+empathy_adium_data_ref (EmpathyAdiumData *data)
+{
+ g_return_val_if_fail (data != NULL, NULL);
+
+ data->ref_count++;
+
+ return data;
+}
+
+void
+empathy_adium_data_unref (EmpathyAdiumData *data)
+{
+ g_return_if_fail (data != NULL);
+
+ data->ref_count--;
+ if (data->ref_count == 0) {
+ g_free (data->path);
+ g_free (data->basedir);
+ g_free (data->template_html);
+ g_free (data->in_content_html);
+ g_free (data->in_nextcontent_html);
+ g_free (data->out_content_html);
+ g_free (data->out_nextcontent_html);
+ g_free (data->default_avatar_filename);
+ g_free (data->default_incoming_avatar_filename);
+ g_free (data->default_outgoing_avatar_filename);
+ g_free (data->status_html);
+ g_hash_table_unref (data->info);
+ g_slice_free (EmpathyAdiumData, data);
+ }
+}
+
+GHashTable *
+empathy_adium_data_get_info (EmpathyAdiumData *data)
+{
+ g_return_val_if_fail (data != NULL, NULL);
+
+ return data->info;
+}
+
+const gchar *
+empathy_adium_data_get_path (EmpathyAdiumData *data)
+{
+ g_return_val_if_fail (data != NULL, NULL);
+
+ return data->path;
+}
+
diff --git a/libempathy-gtk/empathy-theme-adium.h b/libempathy-gtk/empathy-theme-adium.h
new file mode 100644
index 000000000..a8ed19de4
--- /dev/null
+++ b/libempathy-gtk/empathy-theme-adium.h
@@ -0,0 +1,70 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008-2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ */
+
+#ifndef __EMPATHY_THEME_ADIUM_H__
+#define __EMPATHY_THEME_ADIUM_H__
+
+#include <webkit/webkitwebview.h>
+
+#include "empathy-chat-view.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_THEME_ADIUM (empathy_theme_adium_get_type ())
+#define EMPATHY_THEME_ADIUM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_THEME_ADIUM, EmpathyThemeAdium))
+#define EMPATHY_THEME_ADIUM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_THEME_ADIUM, EmpathyThemeAdiumClass))
+#define EMPATHY_IS_THEME_ADIUM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_THEME_ADIUM))
+#define EMPATHY_IS_THEME_ADIUM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_THEME_ADIUM))
+#define EMPATHY_THEME_ADIUM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_THEME_ADIUM, EmpathyThemeAdiumClass))
+
+typedef struct _EmpathyThemeAdium EmpathyThemeAdium;
+typedef struct _EmpathyThemeAdiumClass EmpathyThemeAdiumClass;
+typedef struct _EmpathyAdiumData EmpathyAdiumData;
+
+struct _EmpathyThemeAdium {
+ WebKitWebView parent;
+ gpointer priv;
+};
+
+struct _EmpathyThemeAdiumClass {
+ WebKitWebViewClass parent_class;
+};
+
+GType empathy_theme_adium_get_type (void) G_GNUC_CONST;
+EmpathyThemeAdium *empathy_theme_adium_new (EmpathyAdiumData *data);
+
+gboolean empathy_adium_path_is_valid (const gchar *path);
+GHashTable *empathy_adium_info_new (const gchar *path);
+
+#define EMPATHY_TYPE_ADIUM_DATA (empathy_adium_data_get_type ())
+GType empathy_adium_data_get_type (void) G_GNUC_CONST;
+EmpathyAdiumData *empathy_adium_data_new (const gchar *path);
+EmpathyAdiumData *empathy_adium_data_new_with_info (const gchar *path,
+ GHashTable *info);
+EmpathyAdiumData *empathy_adium_data_ref (EmpathyAdiumData *data);
+void empathy_adium_data_unref (EmpathyAdiumData *data);
+GHashTable *empathy_adium_data_get_info (EmpathyAdiumData *data);
+const gchar *empathy_adium_data_get_path (EmpathyAdiumData *data);
+
+
+G_END_DECLS
+
+#endif /* __EMPATHY_THEME_ADIUM_H__ */
diff --git a/libempathy-gtk/empathy-theme-boxes.c b/libempathy-gtk/empathy-theme-boxes.c
index 199132956..f5224278c 100644
--- a/libempathy-gtk/empathy-theme-boxes.c
+++ b/libempathy-gtk/empathy-theme-boxes.c
@@ -167,7 +167,7 @@ table_size_allocate_cb (GtkWidget *view,
gtk_widget_get_size_request (box, NULL, &height);
width = allocation->width;
-
+
width -= \
gtk_text_view_get_right_margin (GTK_TEXT_VIEW (view)) - \
gtk_text_view_get_left_margin (GTK_TEXT_VIEW (view));
@@ -210,7 +210,7 @@ theme_boxes_maybe_append_header (EmpathyThemeBoxes *theme,
/* Only insert a header if the previously inserted block is not the same
* as this one.
*/
- if (last_contact == contact) {
+ if (empathy_contact_equal (last_contact, contact)) {
return;
}
@@ -269,7 +269,7 @@ theme_boxes_maybe_append_header (EmpathyThemeBoxes *theme,
NULL);
g_free (tmp);
g_free (str);
-
+
/* Set foreground color of labels to the same color than the header tag. */
table = gtk_text_buffer_get_tag_table (buffer);
tag = gtk_text_tag_table_lookup (table, EMPATHY_THEME_BOXES_TAG_HEADER);
@@ -349,7 +349,7 @@ theme_boxes_notify_show_avatars_cb (EmpathyConf *conf,
gpointer user_data)
{
EmpathyThemeBoxesPriv *priv = GET_PRIV (user_data);
-
+
empathy_conf_get_bool (conf, key, &priv->show_avatars);
}
diff --git a/libempathy-gtk/empathy-theme-irc.c b/libempathy-gtk/empathy-theme-irc.c
index 183a5cc51..5d298564e 100644
--- a/libempathy-gtk/empathy-theme-irc.c
+++ b/libempathy-gtk/empathy-theme-irc.c
@@ -83,7 +83,7 @@ theme_irc_append_message (EmpathyChatTextView *view,
nick_tag = EMPATHY_THEME_IRC_TAG_NICK_OTHER;
}
}
-
+
gtk_text_buffer_get_end_iter (buffer, &iter);
/* The nickname. */
diff --git a/libempathy-gtk/empathy-theme-manager.c b/libempathy-gtk/empathy-theme-manager.c
index 0186b5eb7..ba3d48e68 100644
--- a/libempathy-gtk/empathy-theme-manager.c
+++ b/libempathy-gtk/empathy-theme-manager.c
@@ -38,6 +38,10 @@
#include "empathy-theme-boxes.h"
#include "empathy-theme-irc.h"
+#ifdef HAVE_WEBKIT
+#include "empathy-theme-adium.h"
+#endif
+
#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
#include <libempathy/empathy-debug.h>
@@ -45,6 +49,8 @@
typedef struct {
gchar *name;
guint name_notify_id;
+ gchar *adium_path;
+ guint adium_path_notify_id;
GtkSettings *settings;
GList *boxes_views;
} EmpathyThemeManagerPriv;
@@ -61,6 +67,9 @@ static const gchar *themes[] = {
"simple", N_("Simple"),
"clean", N_("Clean"),
"blue", N_("Blue"),
+#ifdef HAVE_WEBKIT
+ "adium", N_("Adium"),
+#endif
NULL
};
@@ -184,7 +193,7 @@ theme_manager_update_boxes_tags (EmpathyThemeBoxes *theme,
/* FIXME: GtkTextTag don't support to set color properties to NULL.
* See bug #542523 */
-
+
#define TAG_SET(prop, prop_set, value) \
if (value != NULL) { \
g_object_set (tag, prop, value, NULL); \
@@ -198,7 +207,7 @@ theme_manager_update_boxes_tags (EmpathyThemeBoxes *theme,
"pixels-above-lines", 4,
NULL);
TAG_SET ("paragraph-background", "paragraph-background-set", text_background);
- TAG_SET ("foreground", "foreground-set",highlight_foreground);
+ TAG_SET ("foreground", "foreground-set", highlight_foreground);
empathy_chat_text_view_tag_set (view, EMPATHY_CHAT_TEXT_VIEW_TAG_SPACING,
"size", 3000,
@@ -243,7 +252,7 @@ theme_manager_update_boxes_tags (EmpathyThemeBoxes *theme,
}
static void
-theme_manager_update_simple_tags (EmpathyThemeBoxes *theme)
+on_style_set_cb (GtkWidget *widget, GtkStyle *previous_style, gpointer data)
{
GtkStyle *style;
gchar color1[10];
@@ -251,14 +260,14 @@ theme_manager_update_simple_tags (EmpathyThemeBoxes *theme)
gchar color3[10];
gchar color4[10];
- style = gtk_widget_get_default_style ();
+ style = gtk_widget_get_style (GTK_WIDGET (widget));
theme_manager_gdk_color_to_hex (&style->base[GTK_STATE_SELECTED], color1);
theme_manager_gdk_color_to_hex (&style->bg[GTK_STATE_SELECTED], color2);
theme_manager_gdk_color_to_hex (&style->dark[GTK_STATE_SELECTED], color3);
theme_manager_gdk_color_to_hex (&style->fg[GTK_STATE_SELECTED], color4);
- theme_manager_update_boxes_tags (theme,
+ theme_manager_update_boxes_tags (EMPATHY_THEME_BOXES (widget),
color4, /* header_foreground */
color2, /* header_background */
color3, /* header_line_background */
@@ -278,7 +287,8 @@ theme_manager_update_boxes_theme (EmpathyThemeManager *manager,
EmpathyThemeManagerPriv *priv = GET_PRIV (manager);
if (strcmp (priv->name, "simple") == 0) {
- theme_manager_update_simple_tags (theme);
+ g_signal_connect (G_OBJECT (theme), "style-set",
+ G_CALLBACK (on_style_set_cb), theme);
}
else if (strcmp (priv->name, "clean") == 0) {
theme_manager_update_boxes_tags (theme,
@@ -318,6 +328,37 @@ empathy_theme_manager_create_view (EmpathyThemeManager *manager)
DEBUG ("Using theme %s", priv->name);
+#ifdef HAVE_WEBKIT
+ if (strcmp (priv->name, "adium") == 0) {
+ if (empathy_adium_path_is_valid (priv->adium_path)) {
+ static EmpathyAdiumData *data = NULL;
+ EmpathyThemeAdium *theme_adium;
+
+ if (data &&
+ !tp_strdiff (empathy_adium_data_get_path (data),
+ priv->adium_path)) {
+ /* Theme did not change, reuse data */
+ theme_adium = empathy_theme_adium_new (data);
+ return EMPATHY_CHAT_VIEW (theme_adium);
+ }
+
+ /* Theme changed, drop old data if any and
+ * load a new one */
+ if (data) {
+ empathy_adium_data_unref (data);
+ data = NULL;
+ }
+
+ data = empathy_adium_data_new (priv->adium_path);
+ theme_adium = empathy_theme_adium_new (data);
+ return EMPATHY_CHAT_VIEW (theme_adium);
+ } else {
+ /* The adium path is not valid, fallback to classic theme */
+ return EMPATHY_CHAT_VIEW (theme_manager_create_irc_view (manager));
+ }
+ }
+#endif
+
if (strcmp (priv->name, "classic") == 0) {
return EMPATHY_CHAT_VIEW (theme_manager_create_irc_view (manager));
}
@@ -328,25 +369,6 @@ empathy_theme_manager_create_view (EmpathyThemeManager *manager)
return EMPATHY_CHAT_VIEW (theme);
}
-static void
-theme_manager_color_hash_notify_cb (EmpathyThemeManager *manager)
-{
- EmpathyThemeManagerPriv *priv = GET_PRIV (manager);
-
- /* FIXME: Make that work, it should update color when theme changes but
- * it doesnt seems to work with all themes. */
-
- if (strcmp (priv->name, "simple") == 0) {
- GList *l;
-
- /* We are using the simple theme which use the GTK theme color,
- * Update views to use the new color. */
- for (l = priv->boxes_views; l; l = l->next) {
- theme_manager_update_simple_tags (EMPATHY_THEME_BOXES (l->data));
- }
- }
-}
-
static gboolean
theme_manager_ensure_theme_exists (const gchar *name)
{
@@ -404,6 +426,27 @@ theme_manager_notify_name_cb (EmpathyConf *conf,
}
static void
+theme_manager_notify_adium_path_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ EmpathyThemeManager *manager = EMPATHY_THEME_MANAGER (user_data);
+ EmpathyThemeManagerPriv *priv = GET_PRIV (manager);
+ gchar *adium_path = NULL;
+
+ if (!empathy_conf_get_string (conf, key, &adium_path) ||
+ !tp_strdiff (priv->adium_path, adium_path)) {
+ g_free (adium_path);
+ return;
+ }
+
+ g_free (priv->adium_path);
+ priv->adium_path = adium_path;
+
+ g_signal_emit (manager, signals[THEME_CHANGED], 0, NULL);
+}
+
+static void
theme_manager_finalize (GObject *object)
{
EmpathyThemeManagerPriv *priv = GET_PRIV (object);
@@ -411,6 +454,8 @@ theme_manager_finalize (GObject *object)
empathy_conf_notify_remove (empathy_conf_get (), priv->name_notify_id);
g_free (priv->name);
+ empathy_conf_notify_remove (empathy_conf_get (), priv->adium_path_notify_id);
+ g_free (priv->adium_path);
for (l = priv->boxes_views; l; l = l->next) {
g_object_weak_unref (G_OBJECT (l->data),
@@ -460,11 +505,15 @@ empathy_theme_manager_init (EmpathyThemeManager *manager)
EMPATHY_PREFS_CHAT_THEME,
manager);
- /* Track GTK color changes */
- priv->settings = gtk_settings_get_default ();
- g_signal_connect_swapped (priv->settings, "notify::color-hash",
- G_CALLBACK (theme_manager_color_hash_notify_cb),
- manager);
+ /* Take the adium path and track changes */
+ priv->adium_path_notify_id =
+ empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_ADIUM_PATH,
+ theme_manager_notify_adium_path_cb,
+ manager);
+ theme_manager_notify_adium_path_cb (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_ADIUM_PATH,
+ manager);
}
EmpathyThemeManager *
diff --git a/libempathy-gtk/empathy-theme.c b/libempathy-gtk/empathy-theme.c
deleted file mode 100644
index ca4f66663..000000000
--- a/libempathy-gtk/empathy-theme.c
+++ /dev/null
@@ -1,408 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2007 Imendio AB
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-
-#include <string.h>
-#include <glib/gi18n-lib.h>
-#include <gtk/gtk.h>
-
-#include <libempathy/empathy-utils.h>
-
-#include "empathy-chat.h"
-#include "empathy-conf.h"
-#include "empathy-theme.h"
-#include "empathy-smiley-manager.h"
-
-/* Number of seconds between timestamps when using normal mode, 5 minutes. */
-#define TIMESTAMP_INTERVAL 300
-
-#define SCHEMES "(https?|ftps?|nntp|news|javascript|about|ghelp|apt|telnet|"\
- "file|webcal|mailto)"
-#define BODY "([^\\ ]+)"
-#define END_BODY "([^\\ ]*[^,;\?><()\\ \"\\.])"
-#define URI_REGEX "("SCHEMES"://"END_BODY")" \
- "|((mailto:)?"BODY"@"BODY"\\."END_BODY")"\
- "|((www|ftp)\\."END_BODY")"
-static GRegex *uri_regex = NULL;
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyTheme)
-
-typedef struct {
- EmpathySmileyManager *smiley_manager;
- gboolean show_avatars;
-} EmpathyThemePriv;
-
-static void theme_finalize (GObject *object);
-static void theme_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec);
-static void theme_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec);
-
-
-G_DEFINE_TYPE (EmpathyTheme, empathy_theme, G_TYPE_OBJECT);
-
-enum {
- PROP_0,
- PROP_SHOW_AVATARS
-};
-
-static void
-empathy_theme_class_init (EmpathyThemeClass *class)
-{
- GObjectClass *object_class;
-
- object_class = G_OBJECT_CLASS (class);
-
- object_class->finalize = theme_finalize;
- object_class->get_property = theme_get_property;
- object_class->set_property = theme_set_property;
-
- class->update_view = NULL;
- class->append_message = NULL;
- class->append_event = NULL;
- class->append_timestamp = NULL;
- class->append_spacing = NULL;
-
- g_object_class_install_property (object_class,
- PROP_SHOW_AVATARS,
- g_param_spec_boolean ("show-avatars",
- "", "",
- TRUE,
- G_PARAM_READWRITE));
-
- g_type_class_add_private (object_class, sizeof (EmpathyThemePriv));
-}
-
-static void
-empathy_theme_init (EmpathyTheme *theme)
-{
- EmpathyThemePriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (theme,
- EMPATHY_TYPE_THEME, EmpathyThemePriv);
-
- theme->priv = priv;
- priv->smiley_manager = empathy_smiley_manager_dup_singleton ();
-}
-
-static void
-theme_finalize (GObject *object)
-{
- EmpathyThemePriv *priv;
-
- priv = GET_PRIV (object);
-
- if (priv->smiley_manager) {
- g_object_unref (priv->smiley_manager);
- }
-
- (G_OBJECT_CLASS (empathy_theme_parent_class)->finalize) (object);
-}
-
-static void
-theme_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec)
-{
- EmpathyThemePriv *priv;
-
- priv = GET_PRIV (object);
-
- switch (param_id) {
- case PROP_SHOW_AVATARS:
- g_value_set_boolean (value, priv->show_avatars);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- }
-}
-
-static void
-theme_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- EmpathyThemePriv *priv;
-
- priv = GET_PRIV (object);
-
- switch (param_id) {
- case PROP_SHOW_AVATARS:
- empathy_theme_set_show_avatars (EMPATHY_THEME (object),
- g_value_get_boolean (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- }
-}
-
-void
-empathy_theme_maybe_append_date_and_time (EmpathyTheme *theme,
- EmpathyChatView *view,
- EmpathyMessage *message)
-{
- time_t timestamp;
- GDate *date, *last_date;
- gboolean append_date, append_time;
-
- date = empathy_message_get_date_and_time (message, &timestamp);
-
- last_date = g_date_new ();
- g_date_set_time_t (last_date, empathy_chat_view_get_last_timestamp (view));
-
- append_date = FALSE;
- append_time = FALSE;
-
- if (g_date_compare (date, last_date) > 0) {
- append_date = TRUE;
- append_time = TRUE;
- }
-
- g_date_free (last_date);
- g_date_free (date);
-
- if (empathy_chat_view_get_last_timestamp (view) + TIMESTAMP_INTERVAL < timestamp) {
- append_time = TRUE;
- }
-
- if (append_time || append_date) {
- empathy_theme_append_timestamp (theme, view, message,
- append_date, append_time);
- }
-}
-
-void
-empathy_theme_update_view (EmpathyTheme *theme,
- EmpathyChatView *view)
-{
- if (!EMPATHY_THEME_GET_CLASS(theme)->update_view) {
- g_error ("Theme must override update_view");
- }
-
- EMPATHY_THEME_GET_CLASS(theme)->update_view (theme, view);
-}
-
-void
-empathy_theme_append_message (EmpathyTheme *theme,
- EmpathyChatView *view,
- EmpathyMessage *message)
-{
- if (!EMPATHY_THEME_GET_CLASS(theme)->append_message) {
- g_warning ("Theme should override append_message");
- return;
- }
-
- EMPATHY_THEME_GET_CLASS(theme)->append_message (theme, view, message);
-}
-
-static void
-theme_insert_text_with_emoticons (GtkTextBuffer *buf,
- GtkTextIter *iter,
- const gchar *str,
- EmpathySmileyManager *smiley_manager)
-{
- gboolean use_smileys = FALSE;
- GSList *smileys, *l;
-
- empathy_conf_get_bool (empathy_conf_get (),
- EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
- &use_smileys);
-
- if (!use_smileys) {
- gtk_text_buffer_insert (buf, iter, str, -1);
- return;
- }
-
- smileys = empathy_smiley_manager_parse (smiley_manager, str);
- for (l = smileys; l; l = l->next) {
- EmpathySmiley *smiley;
-
- smiley = l->data;
- if (smiley->pixbuf) {
- gtk_text_buffer_insert_pixbuf (buf, iter, smiley->pixbuf);
- } else {
- gtk_text_buffer_insert (buf, iter, smiley->str, -1);
- }
- empathy_smiley_free (smiley);
- }
- g_slist_free (smileys);
-}
-
-void
-empathy_theme_append_text (EmpathyTheme *theme,
- EmpathyChatView *view,
- const gchar *body,
- const gchar *tag,
- const gchar *link_tag)
-{
- EmpathyThemePriv *priv;
- GtkTextBuffer *buffer;
- GtkTextIter start_iter, end_iter;
- GtkTextMark *mark;
- GtkTextIter iter;
- GMatchInfo *match_info;
- gboolean match;
- gint last = 0;
- gint s = 0, e = 0;
- gchar *tmp;
-
- priv = GET_PRIV (theme);
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
-
- gtk_text_buffer_get_end_iter (buffer, &start_iter);
- mark = gtk_text_buffer_create_mark (buffer, NULL, &start_iter, TRUE);
-
- if (!uri_regex) {
- uri_regex = g_regex_new (URI_REGEX, 0, 0, NULL);
- }
-
- for (match = g_regex_match (uri_regex, body, 0, &match_info); match;
- match = g_match_info_next (match_info, NULL)) {
- if (!g_match_info_fetch_pos (match_info, 0, &s, &e))
- continue;
-
- if (s > last) {
- tmp = empathy_substring (body, last, s);
-
- gtk_text_buffer_get_end_iter (buffer, &iter);
- theme_insert_text_with_emoticons (buffer,
- &iter,
- tmp,
- priv->smiley_manager);
- g_free (tmp);
- }
-
- tmp = empathy_substring (body, s, e);
-
- gtk_text_buffer_get_end_iter (buffer, &iter);
- if (!link_tag) {
- gtk_text_buffer_insert (buffer, &iter,
- tmp, -1);
- } else {
- gtk_text_buffer_insert_with_tags_by_name (buffer,
- &iter,
- tmp,
- -1,
- link_tag,
- "link",
- NULL);
- }
-
- g_free (tmp);
- last = e;
- }
- g_match_info_free (match_info);
-
- if (last < strlen (body)) {
- gtk_text_buffer_get_end_iter (buffer, &iter);
- theme_insert_text_with_emoticons (buffer,
- &iter,
- body + last,
- priv->smiley_manager);
- }
-
- gtk_text_buffer_get_end_iter (buffer, &iter);
- gtk_text_buffer_insert (buffer, &iter, "\n", 1);
-
- /* Apply the style to the inserted text. */
- gtk_text_buffer_get_iter_at_mark (buffer, &start_iter, mark);
- gtk_text_buffer_get_end_iter (buffer, &end_iter);
-
- gtk_text_buffer_apply_tag_by_name (buffer,
- tag,
- &start_iter,
- &end_iter);
-
- gtk_text_buffer_delete_mark (buffer, mark);
-}
-
-void
-empathy_theme_append_event (EmpathyTheme *theme,
- EmpathyChatView *view,
- const gchar *str)
-{
- if (!EMPATHY_THEME_GET_CLASS(theme)->append_event) {
- return;
- }
-
- EMPATHY_THEME_GET_CLASS(theme)->append_event (theme, view, str);
-}
-
-void
-empathy_theme_append_spacing (EmpathyTheme *theme,
- EmpathyChatView *view)
-{
- if (!EMPATHY_THEME_GET_CLASS(theme)->append_spacing) {
- return;
- }
-
- EMPATHY_THEME_GET_CLASS(theme)->append_spacing (theme, view);
-}
-
-
-void
-empathy_theme_append_timestamp (EmpathyTheme *theme,
- EmpathyChatView *view,
- EmpathyMessage *message,
- gboolean show_date,
- gboolean show_time)
-{
- if (!EMPATHY_THEME_GET_CLASS(theme)->append_timestamp) {
- return;
- }
-
- EMPATHY_THEME_GET_CLASS(theme)->append_timestamp (theme, view,
- message, show_date,
- show_time);
-}
-
-gboolean
-empathy_theme_get_show_avatars (EmpathyTheme *theme)
-{
- EmpathyThemePriv *priv;
-
- g_return_val_if_fail (EMPATHY_IS_THEME (theme), FALSE);
-
- priv = GET_PRIV (theme);
-
- return priv->show_avatars;
-}
-
-void
-empathy_theme_set_show_avatars (EmpathyTheme *theme, gboolean show)
-{
- EmpathyThemePriv *priv;
-
- g_return_if_fail (EMPATHY_IS_THEME (theme));
-
- priv = GET_PRIV (theme);
-
- priv->show_avatars = show;
-
- g_object_notify (G_OBJECT (theme), "show-avatars");
-}
-
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index f30c58aad..ffe81a352 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -37,7 +37,6 @@
#include <glib/gi18n-lib.h>
#include <gtk/gtk.h>
#include <gio/gio.h>
-#include <canberra-gtk.h>
#include <libmissioncontrol/mc-profile.h>
@@ -558,6 +557,29 @@ empathy_pixbuf_from_icon_name (const gchar *icon_name,
return empathy_pixbuf_from_icon_name_sized (icon_name, size);
}
+gchar *
+empathy_filename_from_icon_name (const gchar *icon_name,
+ GtkIconSize icon_size)
+{
+ GtkIconTheme *icon_theme;
+ GtkIconInfo *icon_info;
+ gint w, h;
+ gint size = 48;
+ gchar *ret;
+
+ icon_theme = gtk_icon_theme_get_default ();
+
+ if (gtk_icon_size_lookup (icon_size, &w, &h)) {
+ size = (w + h) / 2;
+ }
+
+ icon_info = gtk_icon_theme_lookup_icon (icon_theme, icon_name, size, 0);
+ ret = g_strdup (gtk_icon_info_get_filename (icon_info));
+ gtk_icon_info_free (icon_info);
+
+ return ret;
+}
+
/* Stolen from GtkSourceView, hence the weird intendation. Please keep it like
* that to make it easier to apply changes from the original code.
*/
@@ -1288,8 +1310,8 @@ empathy_window_present (GtkWindow *window,
}
timestamp = gtk_get_current_event_time ();
- gtk_window_set_skip_taskbar_hint (window, FALSE);
gtk_window_present_with_time (window, timestamp);
+ gtk_window_set_skip_taskbar_hint (window, FALSE);
/* FIXME: This shouldn't be required as gtk_window_present's doc says
* it deiconify automatically. */
gtk_window_deiconify (window);
@@ -1517,140 +1539,4 @@ empathy_receive_file_with_file_chooser (EmpathyFTHandler *handler)
G_CALLBACK (file_manager_receive_file_response_cb), handler);
gtk_widget_show (widget);
-}
-
-typedef struct {
- EmpathySound sound_id;
- const char * event_ca_id;
- const char * event_ca_description;
- const char * gconf_key;
-} EmpathySoundEntry;
-
-/* NOTE: these entries MUST be in the same order than EmpathySound enum */
-static EmpathySoundEntry sound_entries[LAST_EMPATHY_SOUND] = {
- { EMPATHY_SOUND_MESSAGE_INCOMING, "message-new-instant",
- N_("Received an instant message"), EMPATHY_PREFS_SOUNDS_INCOMING_MESSAGE } ,
- { EMPATHY_SOUND_MESSAGE_OUTGOING, "message-sent-instant",
- N_("Sent an instant message"), EMPATHY_PREFS_SOUNDS_OUTGOING_MESSAGE } ,
- { EMPATHY_SOUND_CONVERSATION_NEW, "message-new-instant",
- N_("Incoming chat request"), EMPATHY_PREFS_SOUNDS_NEW_CONVERSATION },
- { EMPATHY_SOUND_CONTACT_CONNECTED, "service-login",
- N_("Contact connected"), EMPATHY_PREFS_SOUNDS_CONTACT_LOGIN },
- { EMPATHY_SOUND_CONTACT_DISCONNECTED, "service-logout",
- N_("Contact disconnected"), EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT },
- { EMPATHY_SOUND_ACCOUNT_CONNECTED, "service-login",
- N_("Connected to server"), EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN },
- { EMPATHY_SOUND_ACCOUNT_DISCONNECTED, "service-logout",
- N_("Disconnected from server"), EMPATHY_PREFS_SOUNDS_SERVICE_LOGOUT },
- { EMPATHY_SOUND_PHONE_INCOMING, "phone-incoming-call",
- N_("Incoming voice call"), NULL },
- { EMPATHY_SOUND_PHONE_OUTGOING, "phone-outgoing-calling",
- N_("Outgoing voice call"), NULL },
- { EMPATHY_SOUND_PHONE_HANGUP, "phone-hangup",
- N_("Voice call ended"), NULL },
-};
-
-
-static gboolean
-empathy_sound_pref_is_enabled (const char *key)
-{
- EmpathyConf *conf;
- gboolean res;
-
- conf = empathy_conf_get ();
- res = FALSE;
-
- empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_ENABLED, &res);
-
- if (!res) {
- return FALSE;
- }
-
- if (!empathy_check_available_state ()) {
- empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_DISABLED_AWAY,
- &res);
- if (res) {
- return FALSE;
- }
- }
-
- empathy_conf_get_bool (conf, key, &res);
-
- return res;
-}
-
-void
-empathy_sound_stop (EmpathySound sound_id)
-{
- EmpathySoundEntry *entry;
-
- g_return_if_fail (sound_id < LAST_EMPATHY_SOUND);
-
- entry = &(sound_entries[sound_id]);
- g_return_if_fail (entry->sound_id == sound_id);
-
- ca_context_cancel (ca_gtk_context_get (), entry->sound_id);
-}
-
-
-gboolean
-empathy_sound_play_full (GtkWidget *widget, EmpathySound sound_id,
- ca_finish_callback_t callback, gpointer user_data)
-{
- EmpathySoundEntry *entry;
- gboolean should_play = TRUE;
- ca_proplist *p = NULL;
- ca_context *c;
-
- g_return_val_if_fail (sound_id < LAST_EMPATHY_SOUND, FALSE);
-
- entry = &(sound_entries[sound_id]);
- g_return_val_if_fail (entry->sound_id == sound_id, FALSE);
-
- if (entry->gconf_key != NULL) {
- should_play = empathy_sound_pref_is_enabled (entry->gconf_key);
- }
-
- if (!should_play)
- return FALSE;
-
- c = ca_gtk_context_get ();
- ca_context_cancel (c, entry->sound_id);
-
- DEBUG ("Play sound \"%s\" (%s)",
- entry->event_ca_id,
- entry->event_ca_description);
-
- if (ca_proplist_create (&p) < 0)
- goto failed;
-
- if (ca_proplist_sets (p, CA_PROP_EVENT_ID, entry->event_ca_id) < 0)
- goto failed;
-
- if (ca_proplist_sets (p, CA_PROP_EVENT_DESCRIPTION,
- gettext (entry->event_ca_id)) < 0)
- goto failed;
-
- 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);
-
- ca_proplist_destroy (p);
-
- return TRUE;
-
-failed:
- if (p != NULL)
- ca_proplist_destroy (p);
-
- return FALSE;
-}
-
-void
-empathy_sound_play (GtkWidget *widget, EmpathySound sound_id)
-{
- empathy_sound_play_full (widget, sound_id, NULL, NULL);
-}
-
+} \ No newline at end of file
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index 4d58fedcf..4c1384602 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -34,8 +34,6 @@
#include <gtk/gtk.h>
-#include <canberra-gtk.h>
-
#include <libmissioncontrol/mc-account.h>
#include <libmissioncontrol/mc-profile.h>
@@ -46,21 +44,6 @@
G_BEGIN_DECLS
-/* NOTE: Keep this sync with sound_entries in empathy-ui-utils.c */
-typedef enum {
- EMPATHY_SOUND_MESSAGE_INCOMING = 0,
- EMPATHY_SOUND_MESSAGE_OUTGOING,
- EMPATHY_SOUND_CONVERSATION_NEW,
- EMPATHY_SOUND_CONTACT_CONNECTED,
- EMPATHY_SOUND_CONTACT_DISCONNECTED,
- EMPATHY_SOUND_ACCOUNT_CONNECTED,
- EMPATHY_SOUND_ACCOUNT_DISCONNECTED,
- EMPATHY_SOUND_PHONE_INCOMING,
- EMPATHY_SOUND_PHONE_OUTGOING,
- EMPATHY_SOUND_PHONE_HANGUP,
- LAST_EMPATHY_SOUND,
-} EmpathySound;
-
void empathy_gtk_init (void);
GRegex * empathy_uri_regex_dup_singleton (void);
@@ -90,12 +73,15 @@ GdkPixbuf * empathy_pixbuf_from_avatar_scaled (EmpathyAvatar *avata
GdkPixbuf * empathy_pixbuf_avatar_from_contact_scaled (EmpathyContact *contact,
gint width,
gint height);
-GdkPixbuf * empathy_pixbuf_scale_down_if_necessary (GdkPixbuf *pixbuf,
+GdkPixbuf * empathy_pixbuf_scale_down_if_necessary (GdkPixbuf *pixbuf,
gint max_size);
-GdkPixbuf * empathy_pixbuf_from_icon_name (const gchar *icon_name,
+GdkPixbuf * empathy_pixbuf_from_icon_name (const gchar *icon_name,
GtkIconSize icon_size);
-GdkPixbuf * empathy_pixbuf_from_icon_name_sized (const gchar *icon_name,
+GdkPixbuf * empathy_pixbuf_from_icon_name_sized (const gchar *icon_name,
gint size);
+gchar * empathy_filename_from_icon_name (const gchar *icon_name,
+ GtkIconSize icon_size);
+
/* Text view */
gboolean empathy_text_iter_forward_search (const GtkTextIter*iter,
const gchar *str,
@@ -126,15 +112,6 @@ GtkWidget * empathy_link_button_new (const gchar *url,
void empathy_send_file_with_file_chooser (EmpathyContact *contact);
void empathy_receive_file_with_file_chooser (EmpathyFTHandler *handler);
-/* Sounds */
-void empathy_sound_play (GtkWidget *widget,
- EmpathySound sound_id);
-gboolean empathy_sound_play_full (GtkWidget *widget,
- EmpathySound sound_id,
- ca_finish_callback_t callback,
- gpointer user_data);
-void empathy_sound_stop (EmpathySound sound_id);
-
G_END_DECLS
#endif /* __EMPATHY_UI_UTILS_H__ */
diff --git a/libempathy-gtk/empathy-video-widget.c b/libempathy-gtk/empathy-video-widget.c
index 7647b845f..79f27814f 100644
--- a/libempathy-gtk/empathy-video-widget.c
+++ b/libempathy-gtk/empathy-video-widget.c
@@ -300,6 +300,9 @@ empathy_video_widget_dispose (GObject *object)
priv->dispose_has_run = TRUE;
+ g_signal_handlers_disconnect_by_func (priv->bus,
+ empathy_video_widget_sync_message_cb, object);
+
if (priv->bus != NULL)
g_object_unref (priv->bus);
diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am
index 3540c88bf..87b728464 100644
--- a/libempathy/Makefile.am
+++ b/libempathy/Makefile.am
@@ -7,6 +7,7 @@ AM_CPPFLAGS = \
-I$(top_builddir) \
-DDATADIR=\""$(datadir)"\" \
-DLOCALEDIR=\""$(datadir)/locale"\" \
+ -DG_LOG_DOMAIN=\"empathy\" \
$(LIBEMPATHY_CFLAGS) \
$(GEOCLUE_CFLAGS) \
$(WARN_CFLAGS) \
@@ -33,6 +34,7 @@ libempathy_la_SOURCES = \
empathy-contact-manager.c \
empathy-contact-monitor.c \
empathy-debug.c \
+ empathy-debugger.c \
empathy-dispatcher.c \
empathy-dispatch-operation.c \
empathy-ft-factory.c \
@@ -53,7 +55,6 @@ libempathy_la_SOURCES = \
empathy-tp-contact-list.c \
empathy-tp-file.c \
empathy-tp-roomlist.c \
- empathy-tp-tube.c \
empathy-tube-handler.c \
empathy-utils.c
@@ -82,6 +83,7 @@ libempathy_headers = \
empathy-contact-manager.h \
empathy-contact-monitor.h \
empathy-debug.h \
+ empathy-debugger.h \
empathy-dispatcher.h \
empathy-dispatch-operation.h \
empathy-ft-factory.h \
@@ -103,7 +105,6 @@ libempathy_headers = \
empathy-tp-contact-list.h \
empathy-tp-file.h \
empathy-tp-roomlist.h \
- empathy-tp-tube.h \
empathy-tube-handler.h \
empathy-types.h \
empathy-utils.h
diff --git a/libempathy/empathy-call-handler.c b/libempathy/empathy-call-handler.c
index 8d70885b4..f73c41e2e 100644
--- a/libempathy/empathy-call-handler.c
+++ b/libempathy/empathy-call-handler.c
@@ -1,6 +1,6 @@
/*
* empathy-call-handler.c - Source for EmpathyCallHandler
- * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2008-2009 Collabora Ltd.
* @author Sjoerd Simons <sjoerd.simons@collabora.co.uk>
*
* This library is free software; you can redistribute it and/or
@@ -304,7 +304,9 @@ EmpathyCallHandler *
empathy_call_handler_new_for_channel (EmpathyTpCall *call)
{
return EMPATHY_CALL_HANDLER (g_object_new (EMPATHY_TYPE_CALL_HANDLER,
- "tp-call", call, NULL));
+ "tp-call", call,
+ "initial-video", empathy_tp_call_is_receiving_video (call),
+ NULL));
}
void
@@ -577,3 +579,40 @@ empathy_call_handler_start_call (EmpathyCallHandler *handler)
g_object_unref (dispatcher);
}
+/**
+ * empathy_call_handler_stop_call:
+ * @handler: an #EmpathyCallHandler
+ *
+ * Closes the #EmpathyCallHandler's call and frees its resources.
+ */
+void
+empathy_call_handler_stop_call (EmpathyCallHandler *handler)
+{
+ EmpathyCallHandlerPriv *priv = GET_PRIV (handler);
+
+ if (priv->call != NULL)
+ {
+ empathy_tp_call_close (priv->call);
+ g_object_unref (priv->call);
+ }
+
+ priv->call = NULL;
+}
+
+/**
+ * empathy_call_handler_has_initial_video:
+ * @handler: an #EmpathyCallHandler
+ *
+ * Return %TRUE if the call managed by this #EmpathyCallHandler was
+ * created with video enabled
+ *
+ * Return value: %TRUE if the call was created as a video conversation.
+ */
+gboolean
+empathy_call_handler_has_initial_video (EmpathyCallHandler *handler)
+{
+ EmpathyCallHandlerPriv *priv = GET_PRIV (handler);
+
+ return priv->initial_video;
+}
+
diff --git a/libempathy/empathy-call-handler.h b/libempathy/empathy-call-handler.h
index 9a039f06a..1f67fe56b 100644
--- a/libempathy/empathy-call-handler.h
+++ b/libempathy/empathy-call-handler.h
@@ -1,6 +1,6 @@
/*
* empathy-call-handler.h - Header for EmpathyCallHandler
- * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2008-2009 Collabora Ltd.
* @author Sjoerd Simons <sjoerd.simons@collabora.co.uk>
*
* This library is free software; you can redistribute it and/or
@@ -71,6 +71,9 @@ EmpathyCallHandler * empathy_call_handler_new_for_channel (
EmpathyTpCall *call);
void empathy_call_handler_start_call (EmpathyCallHandler *handler);
+void empathy_call_handler_stop_call (EmpathyCallHandler *handler);
+
+gboolean empathy_call_handler_has_initial_video (EmpathyCallHandler *handler);
void empathy_call_handler_bus_message (EmpathyCallHandler *handler,
GstBus *bus, GstMessage *message);
diff --git a/libempathy/empathy-chatroom-manager.c b/libempathy/empathy-chatroom-manager.c
index 3bdc5f154..44416670e 100644
--- a/libempathy/empathy-chatroom-manager.c
+++ b/libempathy/empathy-chatroom-manager.c
@@ -506,6 +506,27 @@ empathy_chatroom_manager_add (EmpathyChatroomManager *manager,
return FALSE;
}
+static void
+chatroom_manager_remove_link (EmpathyChatroomManager *manager,
+ GList *l)
+{
+ EmpathyChatroomManagerPriv *priv;
+ EmpathyChatroom *chatroom;
+
+ priv = GET_PRIV (manager);
+
+ chatroom = l->data;
+
+ if (empathy_chatroom_is_favorite (chatroom))
+ reset_save_timeout (manager);
+
+ g_signal_emit (manager, signals[CHATROOM_REMOVED], 0, chatroom);
+ g_signal_handlers_disconnect_by_func (chatroom, chatroom_changed_cb, manager);
+
+ priv->chatrooms = g_list_delete_link (priv->chatrooms, l);
+ g_object_unref (chatroom);
+}
+
void
empathy_chatroom_manager_remove (EmpathyChatroomManager *manager,
EmpathyChatroom *chatroom)
@@ -527,15 +548,7 @@ empathy_chatroom_manager_remove (EmpathyChatroomManager *manager,
if (this_chatroom == chatroom ||
empathy_chatroom_equal (chatroom, this_chatroom))
{
- priv->chatrooms = g_list_delete_link (priv->chatrooms, l);
- if (empathy_chatroom_is_favorite (chatroom))
- reset_save_timeout (manager);
-
- g_signal_emit (manager, signals[CHATROOM_REMOVED], 0, this_chatroom);
- g_signal_handlers_disconnect_by_func (chatroom, chatroom_changed_cb,
- manager);
-
- g_object_unref (this_chatroom);
+ chatroom_manager_remove_link (manager, l);
break;
}
}
@@ -649,13 +662,16 @@ chatroom_manager_chat_destroyed_cb (EmpathyTpChat *chat,
continue;
empathy_chatroom_set_tp_chat (chatroom, NULL);
+
if (!empathy_chatroom_is_favorite (chatroom))
{
/* Remove the chatroom from the list, unless it's in the list of
* favourites..
* FIXME this policy should probably not be in libempathy */
- empathy_chatroom_manager_remove (manager, chatroom);
+ chatroom_manager_remove_link (manager, l);
}
+
+ break;
}
}
diff --git a/libempathy/empathy-chatroom.c b/libempathy/empathy-chatroom.c
index 6575bb998..147fca0a9 100644
--- a/libempathy/empathy-chatroom.c
+++ b/libempathy/empathy-chatroom.c
@@ -407,11 +407,11 @@ empathy_chatroom_get_name (EmpathyChatroom *chatroom)
g_return_val_if_fail (EMPATHY_IS_CHATROOM (chatroom), NULL);
priv = GET_PRIV (chatroom);
-
+
if (EMP_STR_EMPTY (priv->name)) {
return priv->room;
}
-
+
return priv->name;
}
diff --git a/libempathy/empathy-contact-manager.c b/libempathy/empathy-contact-manager.c
index 412087ec0..7af2bd349 100644
--- a/libempathy/empathy-contact-manager.c
+++ b/libempathy/empathy-contact-manager.c
@@ -103,7 +103,7 @@ contact_manager_invalidated_cb (TpProxy *connection,
list = g_hash_table_lookup (priv->lists, connection);
if (list) {
empathy_tp_contact_list_remove_all (list);
- g_hash_table_remove (priv->lists, connection);
+ g_hash_table_remove (priv->lists, connection);
}
}
@@ -503,7 +503,7 @@ contact_manager_remove_group (EmpathyContactList *manager,
const gchar *group)
{
EmpathyContactManagerPriv *priv = GET_PRIV (manager);
-
+
g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
g_hash_table_foreach (priv->lists,
@@ -533,7 +533,7 @@ empathy_contact_manager_can_add (EmpathyContactManager *manager,
{
EmpathyContactManagerPriv *priv = GET_PRIV (manager);
EmpathyTpContactList *list;
-
+
g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), FALSE);
list = g_hash_table_lookup (priv->lists, connection);
diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c
index 03ce8d28a..bad6ef470 100644
--- a/libempathy/empathy-contact.c
+++ b/libempathy/empathy-contact.c
@@ -830,17 +830,16 @@ static gchar *
contact_get_avatar_filename (EmpathyContact *contact,
const gchar *token)
{
- EmpathyContactPriv *priv = GET_PRIV (contact);
McAccount *account;
gchar *avatar_path;
gchar *avatar_file;
gchar *token_escaped;
gchar *contact_escaped;
- if (EMP_STR_EMPTY (priv->id))
+ if (EMP_STR_EMPTY (empathy_contact_get_id (contact)))
return NULL;
- contact_escaped = tp_escape_as_identifier (priv->id);
+ contact_escaped = tp_escape_as_identifier (empathy_contact_get_id (contact));
token_escaped = tp_escape_as_identifier (token);
account = empathy_contact_get_account (contact);
@@ -864,7 +863,7 @@ contact_get_avatar_filename (EmpathyContact *contact,
void
empathy_contact_load_avatar_data (EmpathyContact *contact,
- const guchar *data,
+ const guchar *data,
const gsize len,
const gchar *format,
const gchar *token)
@@ -880,13 +879,13 @@ empathy_contact_load_avatar_data (EmpathyContact *contact,
g_return_if_fail (!EMP_STR_EMPTY (token));
/* Load and set the avatar */
+ filename = contact_get_avatar_filename (contact, token);
avatar = empathy_avatar_new (g_memdup (data, len), len, g_strdup (format),
- g_strdup (token));
+ g_strdup (token), filename);
empathy_contact_set_avatar (contact, avatar);
empathy_avatar_unref (avatar);
/* Save to cache if not yet in it */
- filename = contact_get_avatar_filename (contact, token);
if (filename && !g_file_test (filename, G_FILE_TEST_EXISTS))
{
if (!empathy_avatar_save_to_file (avatar, filename, &error))
@@ -898,7 +897,6 @@ empathy_contact_load_avatar_data (EmpathyContact *contact,
else
DEBUG ("Avatar saved to %s", filename);
}
- g_free (filename);
}
gboolean
@@ -929,13 +927,11 @@ empathy_contact_load_avatar_cache (EmpathyContact *contact,
if (data)
{
DEBUG ("Avatar loaded from %s", filename);
- avatar = empathy_avatar_new (data, len, NULL, g_strdup (token));
+ avatar = empathy_avatar_new (data, len, NULL, g_strdup (token), filename);
empathy_contact_set_avatar (contact, avatar);
empathy_avatar_unref (avatar);
}
- g_free (filename);
-
return data != NULL;
}
@@ -954,11 +950,25 @@ empathy_avatar_get_type (void)
return type_id;
}
+/**
+ * empathy_avatar_new:
+ * @data: the avatar data
+ * @len: the size of avatar data
+ * @format: the mime type of the avatar image
+ * @token: the token of the avatar
+ * @filename: the filename where the avatar is stored in cache
+ *
+ * Create a #EmpathyAvatar from the provided data. This function takes the
+ * ownership of @data, @format, @token and @filename.
+ *
+ * Returns: a new #EmpathyAvatar
+ */
EmpathyAvatar *
empathy_avatar_new (guchar *data,
gsize len,
gchar *format,
- gchar *token)
+ gchar *token,
+ gchar *filename)
{
EmpathyAvatar *avatar;
@@ -967,6 +977,7 @@ empathy_avatar_new (guchar *data,
avatar->len = len;
avatar->format = format;
avatar->token = token;
+ avatar->filename = filename;
avatar->refcount = 1;
return avatar;
@@ -1071,3 +1082,40 @@ empathy_contact_set_location (EmpathyContact *contact,
priv->location = g_hash_table_ref (location);
g_object_notify (G_OBJECT (contact), "location");
}
+
+/**
+ * empathy_contact_equal:
+ * @contact1: an #EmpathyContact
+ * @contact2: an #EmpathyContact
+ *
+ * Returns FALSE if one of the contacts is NULL but the other is not.
+ * Otherwise returns TRUE if both pointer are equal or if they bith
+ * refer to the same id.
+ * It's only necessary to call this function if your contact objects
+ * come from logs where contacts are created dynamically and comparing
+ * pointers is not enough.
+ */
+gboolean
+empathy_contact_equal (gconstpointer contact1,
+ gconstpointer contact2)
+{
+ EmpathyContact *c1;
+ EmpathyContact *c2;
+ const gchar *id1;
+ const gchar *id2;
+
+ if ((contact1 == NULL) != (contact2 == NULL)) {
+ return FALSE;
+ }
+ if (contact1 == contact2) {
+ return TRUE;
+ }
+ c1 = EMPATHY_CONTACT (contact1);
+ c2 = EMPATHY_CONTACT (contact2);
+ id1 = empathy_contact_get_id (c1);
+ id2 = empathy_contact_get_id (c2);
+ if (!tp_strdiff (id1, id2)) {
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/libempathy/empathy-contact.h b/libempathy/empathy-contact.h
index ff8d426e2..f88831342 100644
--- a/libempathy/empathy-contact.h
+++ b/libempathy/empathy-contact.h
@@ -55,6 +55,7 @@ typedef struct {
gsize len;
gchar *format;
gchar *token;
+ gchar *filename;
guint refcount;
} EmpathyAvatar;
@@ -114,7 +115,8 @@ GType empathy_avatar_get_type (void) G_GNUC_CONST;
EmpathyAvatar * empathy_avatar_new (guchar *data,
gsize len,
gchar *format,
- gchar *token);
+ gchar *token,
+ gchar *filename);
EmpathyAvatar * empathy_avatar_ref (EmpathyAvatar *avatar);
void empathy_avatar_unref (EmpathyAvatar *avatar);
@@ -123,7 +125,9 @@ gboolean empathy_avatar_save_to_file (EmpathyAvatar *avatar,
GHashTable * empathy_contact_get_location (EmpathyContact *contact);
void empathy_contact_set_location (EmpathyContact *contact,
- GHashTable *location);
+ GHashTable *location);
+gboolean empathy_contact_equal (gconstpointer contact1,
+ gconstpointer contact2);
G_END_DECLS
diff --git a/libempathy/empathy-debug.c b/libempathy/empathy-debug.c
index bcfa25deb..99111deec 100644
--- a/libempathy/empathy-debug.c
+++ b/libempathy/empathy-debug.c
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
/*
* Copyright (C) 2007 Collabora Ltd.
* Copyright (C) 2007 Nokia Corporation
@@ -33,6 +33,8 @@
#include "empathy-debug.h"
+#include "empathy-debugger.h"
+
#ifdef ENABLE_DEBUG
static EmpathyDebugFlags flags = 0;
@@ -75,18 +77,74 @@ empathy_debug_flag_is_set (EmpathyDebugFlags flag)
return (flag & flags) != 0;
}
+GHashTable *flag_to_keys = NULL;
+
+static const gchar *
+debug_flag_to_key (EmpathyDebugFlags flag)
+{
+ if (flag_to_keys == NULL)
+ {
+ guint i;
+
+ flag_to_keys = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+ NULL, g_free);
+
+ for (i = 0; keys[i].value; i++)
+ {
+ GDebugKey key = (GDebugKey) keys[i];
+ g_hash_table_insert (flag_to_keys, GUINT_TO_POINTER (key.value),
+ g_strdup (key.key));
+ }
+ }
+
+ return g_hash_table_lookup (flag_to_keys, GUINT_TO_POINTER (flag));
+}
+
+void
+empathy_debug_free (void)
+{
+ if (flag_to_keys == NULL)
+ return;
+
+ g_hash_table_destroy (flag_to_keys);
+ flag_to_keys = NULL;
+}
+
+static void
+log_to_debugger (EmpathyDebugFlags flag,
+ const gchar *message)
+{
+ EmpathyDebugger *dbg = empathy_debugger_get_singleton ();
+ gchar *domain;
+ GTimeVal now;
+
+ g_get_current_time (&now);
+
+ domain = g_strdup_printf ("%s/%s", G_LOG_DOMAIN, debug_flag_to_key (flag));
+
+ empathy_debugger_add_message (dbg, &now, domain, G_LOG_LEVEL_DEBUG, message);
+
+ g_free (domain);
+}
+
void
empathy_debug (EmpathyDebugFlags flag,
- const gchar *format,
- ...)
+ const gchar *format,
+ ...)
{
+ gchar *message;
+ va_list args;
+
+ va_start (args, format);
+ message = g_strdup_vprintf (format, args);
+ va_end (args);
+
+ log_to_debugger (flag, message);
+
if (flag & flags)
- {
- va_list args;
- va_start (args, format);
- g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format, args);
- va_end (args);
- }
+ g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%s", message);
+
+ g_free (message);
}
#else
diff --git a/libempathy/empathy-debug.h b/libempathy/empathy-debug.h
index 787264dd0..9df728922 100644
--- a/libempathy/empathy-debug.h
+++ b/libempathy/empathy-debug.h
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
/*
* Copyright (C) 2007 Collabora Ltd.
* Copyright (C) 2007 Nokia Corporation
@@ -46,6 +46,7 @@ typedef enum
gboolean empathy_debug_flag_is_set (EmpathyDebugFlags flag);
void empathy_debug (EmpathyDebugFlags flag, const gchar *format, ...)
G_GNUC_PRINTF (2, 3);
+void empathy_debug_free (void);
void empathy_debug_set_flags (const gchar *flags_string);
G_END_DECLS
@@ -88,4 +89,7 @@ G_END_DECLS
#define DEBUGGING 0
#endif /* !defined (ENABLE_DEBUG) */
+
+#define gabble_debug_free() G_STMT_START { } G_STMT_END
+
#endif /* defined (DEBUG_FLAG) */
diff --git a/libempathy/empathy-debugger.c b/libempathy/empathy-debugger.c
new file mode 100644
index 000000000..04873120c
--- /dev/null
+++ b/libempathy/empathy-debugger.c
@@ -0,0 +1,270 @@
+/*
+ * Telepathy debug interface implementation
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "empathy-debugger.h"
+#include "config.h"
+
+#include <telepathy-glib/dbus.h>
+
+#include "extensions/extensions.h"
+
+static EmpathyDebugger *singleton = NULL;
+
+static void
+debug_iface_init (gpointer g_iface, gpointer iface_data);
+
+G_DEFINE_TYPE_WITH_CODE (EmpathyDebugger, empathy_debugger, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES,
+ tp_dbus_properties_mixin_iface_init);
+ G_IMPLEMENT_INTERFACE (EMP_TYPE_SVC_DEBUG, debug_iface_init));
+
+/* properties */
+enum
+{
+ PROP_ENABLED = 1,
+ NUM_PROPERTIES
+};
+
+static EmpDebugLevel
+log_level_flags_to_debug_level (GLogLevelFlags level)
+{
+ if (level & G_LOG_LEVEL_ERROR)
+ return EMP_DEBUG_LEVEL_ERROR;
+ else if (level & G_LOG_LEVEL_CRITICAL)
+ return EMP_DEBUG_LEVEL_CRITICAL;
+ else if (level & G_LOG_LEVEL_WARNING)
+ return EMP_DEBUG_LEVEL_WARNING;
+ else if (level & G_LOG_LEVEL_MESSAGE)
+ return EMP_DEBUG_LEVEL_MESSAGE;
+ else if (level & G_LOG_LEVEL_INFO)
+ return EMP_DEBUG_LEVEL_INFO;
+ else if (level & G_LOG_LEVEL_DEBUG)
+ return EMP_DEBUG_LEVEL_DEBUG;
+ else
+ /* Fall back to DEBUG if all else fails */
+ return EMP_DEBUG_LEVEL_DEBUG;
+}
+
+static EmpathyDebugMessage *
+debug_message_new (GTimeVal *timestamp,
+ const gchar *domain,
+ GLogLevelFlags level,
+ const gchar *string)
+{
+ EmpathyDebugMessage *msg;
+
+ msg = g_slice_new0 (EmpathyDebugMessage);
+ msg->timestamp = timestamp->tv_sec + timestamp->tv_usec / 1e6;
+ msg->domain = g_strdup (domain);
+ msg->level = log_level_flags_to_debug_level (level);
+ msg->string = g_strdup (string);
+ return msg;
+}
+
+static void
+debug_message_free (EmpathyDebugMessage *msg)
+{
+ g_free (msg->domain);
+ g_free (msg->string);
+ g_slice_free (EmpathyDebugMessage, msg);
+}
+
+static void
+empathy_debugger_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyDebugger *self = EMPATHY_DEBUGGER (object);
+
+ switch (property_id)
+ {
+ case PROP_ENABLED:
+ g_value_set_boolean (value, self->enabled);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
+empathy_debugger_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EmpathyDebugger *self = EMPATHY_DEBUGGER (object);
+
+ switch (property_id)
+ {
+ case PROP_ENABLED:
+ self->enabled = g_value_get_boolean (value);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
+empathy_debugger_finalize (GObject *object)
+{
+ EmpathyDebugger *self = EMPATHY_DEBUGGER (object);
+
+ g_queue_foreach (self->messages, (GFunc) debug_message_free, NULL);
+ g_queue_free (self->messages);
+ self->messages = NULL;
+
+ G_OBJECT_CLASS (empathy_debugger_parent_class)->finalize (object);
+}
+
+static void
+empathy_debugger_class_init (EmpathyDebuggerClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ static TpDBusPropertiesMixinPropImpl debug_props[] = {
+ { "Enabled", "enabled", "enabled" },
+ { NULL }
+ };
+ static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = {
+ { EMP_IFACE_DEBUG,
+ tp_dbus_properties_mixin_getter_gobject_properties,
+ tp_dbus_properties_mixin_setter_gobject_properties,
+ debug_props,
+ },
+ { NULL }
+ };
+
+ object_class->get_property = empathy_debugger_get_property;
+ object_class->set_property = empathy_debugger_set_property;
+ object_class->finalize = empathy_debugger_finalize;
+
+ g_object_class_install_property (object_class, PROP_ENABLED,
+ g_param_spec_boolean ("enabled", "Enabled?",
+ "True if the new-debug-message signal is enabled.",
+ FALSE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ klass->dbus_props_class.interfaces = prop_interfaces;
+ tp_dbus_properties_mixin_class_init (object_class,
+ G_STRUCT_OFFSET (EmpathyDebuggerClass, dbus_props_class));
+}
+
+static void
+get_messages (EmpSvcDebug *self,
+ DBusGMethodInvocation *context)
+{
+ EmpathyDebugger *dbg = EMPATHY_DEBUGGER (self);
+ GPtrArray *messages;
+ static GType struct_type = 0;
+ GList *i;
+ guint j;
+
+ if (G_UNLIKELY (struct_type == 0))
+ {
+ struct_type = dbus_g_type_get_struct (
+ "GValueArray", G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_UINT,
+ G_TYPE_STRING, G_TYPE_INVALID);
+ }
+
+ messages = g_ptr_array_sized_new (g_queue_get_length (dbg->messages));
+
+ for (i = dbg->messages->head; i; i = i->next)
+ {
+ GValue gvalue = { 0 };
+ EmpathyDebugMessage *message = (EmpathyDebugMessage *) i->data;
+
+ g_value_init (&gvalue, struct_type);
+ g_value_take_boxed (&gvalue,
+ dbus_g_type_specialized_construct (struct_type));
+ dbus_g_type_struct_set (&gvalue,
+ 0, message->timestamp,
+ 1, message->domain,
+ 2, message->level,
+ 3, message->string,
+ G_MAXUINT);
+ g_ptr_array_add (messages, g_value_get_boxed (&gvalue));
+ }
+
+ emp_svc_debug_return_from_get_messages (context, messages);
+
+ for (j = 0; j < messages->len; j++)
+ g_boxed_free (struct_type, messages->pdata[j]);
+
+ g_ptr_array_free (messages, TRUE);
+}
+
+static void
+debug_iface_init (gpointer g_iface,
+ gpointer iface_data)
+{
+ EmpSvcDebugClass *klass = (EmpSvcDebugClass *) g_iface;
+
+ emp_svc_debug_implement_get_messages (klass, get_messages);
+}
+
+static void
+empathy_debugger_init (EmpathyDebugger *self)
+{
+ self->messages = g_queue_new ();
+}
+
+EmpathyDebugger *
+empathy_debugger_get_singleton (void)
+{
+ if (G_UNLIKELY (singleton == NULL))
+ {
+ DBusGConnection *bus;
+
+ singleton = g_object_new (EMPATHY_TYPE_DEBUGGER, NULL);
+ bus = tp_get_bus ();
+ dbus_g_connection_register_g_object (bus,
+ "/org/freedesktop/Telepathy/debug", (GObject *) singleton);
+ }
+
+ return singleton;
+}
+
+void
+empathy_debugger_add_message (EmpathyDebugger *self,
+ GTimeVal *timestamp,
+ const gchar *domain,
+ GLogLevelFlags level,
+ const gchar *string)
+{
+ EmpathyDebugMessage *new_msg;
+
+ if (g_queue_get_length (self->messages) >= DEBUG_MESSAGE_LIMIT)
+ {
+ EmpathyDebugMessage *old_head =
+ (EmpathyDebugMessage *) g_queue_pop_head (self->messages);
+
+ debug_message_free (old_head);
+ }
+
+ new_msg = debug_message_new (timestamp, domain, level, string);
+ g_queue_push_tail (self->messages, new_msg);
+
+ if (self->enabled)
+ {
+ emp_svc_debug_emit_new_debug_message (self, new_msg->timestamp,
+ domain, new_msg->level, string);
+ }
+}
diff --git a/libempathy/empathy-debugger.h b/libempathy/empathy-debugger.h
new file mode 100644
index 000000000..f3fdc7070
--- /dev/null
+++ b/libempathy/empathy-debugger.h
@@ -0,0 +1,88 @@
+/*
+ * header for Telepathy debug interface implementation
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef _EMPATHY_DEBUGGER
+#define _EMPATHY_DEBUGGER
+
+#include <glib-object.h>
+
+#include <telepathy-glib/properties-mixin.h>
+#include <telepathy-glib/dbus-properties-mixin.h>
+
+#include "extensions/extensions.h"
+
+G_BEGIN_DECLS
+
+#define EMPATHY_TYPE_DEBUGGER empathy_debugger_get_type()
+
+#define EMPATHY_DEBUGGER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMPATHY_TYPE_DEBUGGER, EmpathyDebugger))
+
+#define EMPATHY_DEBUGGER_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), EMPATHY_TYPE_DEBUGGER, EmpathyDebuggerClass))
+
+#define EMPATHY_IS_DEBUGGER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMPATHY_TYPE_DEBUGGER))
+
+#define EMPATHY_IS_DEBUGGER_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), EMPATHY_TYPE_DEBUGGER))
+
+#define EMPATHY_DEBUGGER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), EMPATHY_TYPE_DEBUGGER, EmpathyDebuggerClass))
+
+/* On the basis that messages are around 60 bytes on average, and that 50kb is
+ * a reasonable maximum size for a frame buffer.
+ */
+
+#define DEBUG_MESSAGE_LIMIT 800
+
+typedef struct {
+ gdouble timestamp;
+ gchar *domain;
+ EmpDebugLevel level;
+ gchar *string;
+} EmpathyDebugMessage;
+
+typedef struct {
+ GObject parent;
+
+ gboolean enabled;
+ GQueue *messages;
+} EmpathyDebugger;
+
+typedef struct {
+ GObjectClass parent_class;
+ TpDBusPropertiesMixinClass dbus_props_class;
+} EmpathyDebuggerClass;
+
+GType empathy_debugger_get_type (void);
+
+EmpathyDebugger *
+empathy_debugger_get_singleton (void);
+
+void
+empathy_debugger_add_message (EmpathyDebugger *self,
+ GTimeVal *timestamp,
+ const gchar *domain,
+ GLogLevelFlags level,
+ const gchar *string);
+
+G_END_DECLS
+
+#endif /* _EMPATHY_DEBUGGER */
diff --git a/libempathy/empathy-dispatcher.c b/libempathy/empathy-dispatcher.c
index f46d15f80..b51df95fa 100644
--- a/libempathy/empathy-dispatcher.c
+++ b/libempathy/empathy-dispatcher.c
@@ -112,7 +112,16 @@ typedef struct
GHashTable *dispatched_channels;
/* ObjectPath -> EmpathyDispatchOperations */
GHashTable *dispatching_channels;
- /* ObjectPath -> EmpathyDispatchOperations */
+
+ /* ObjectPath -> EmpathyDispatchOperations
+ *
+ * This holds channels which were announced with NewChannel while we have an
+ * outstanding channel request for a channel of this type. On the Requests
+ * interface, CreateChannel and EnsureChannel are guaranteed by the spec to
+ * return before NewChannels is emitted, but there was no guarantee of the
+ * ordering of RequestChannel vs. NewChannel. So if necessary, channels are
+ * held in limbo here until we know whether they were requested.
+ */
GHashTable *outstanding_channels;
/* List of DispatcherRequestData */
GList *outstanding_requests;
@@ -523,8 +532,8 @@ dispatcher_flush_outstanding_operations (EmpathyDispatcher *self,
if (dispatcher_operation_can_start (self, operation, cd))
{
- dispatcher_start_dispatching (dispatcher, operation, cd);
g_hash_table_iter_remove (&iter);
+ dispatcher_start_dispatching (dispatcher, operation, cd);
}
}
}
diff --git a/libempathy/empathy-ft-handler.c b/libempathy/empathy-ft-handler.c
index ba81fd4c7..d24467b24 100644
--- a/libempathy/empathy-ft-handler.c
+++ b/libempathy/empathy-ft-handler.c
@@ -1149,9 +1149,25 @@ ft_handler_gfile_ready_cb (GObject *source,
if (error != NULL)
goto out;
+ if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR)
+ {
+ error = g_error_new_literal (EMPATHY_FT_ERROR_QUARK,
+ EMPATHY_FT_ERROR_INVALID_SOURCE_FILE,
+ _("The selected file is not a regular file"));
+ goto out;
+ }
+
+ priv->total_bytes = g_file_info_get_size (info);
+ if (priv->total_bytes == 0)
+ {
+ error = g_error_new_literal (EMPATHY_FT_ERROR_QUARK,
+ EMPATHY_FT_ERROR_EMPTY_SOURCE_FILE,
+ _("The selected file is empty"));
+ goto out;
+ }
+
priv->content_type = g_strdup (g_file_info_get_content_type (info));
priv->filename = g_strdup (g_file_info_get_display_name (info));
- priv->total_bytes = g_file_info_get_size (info);
g_file_info_get_modification_time (info, &mtime);
priv->mtime = mtime.tv_sec;
priv->transferred_bytes = 0;
@@ -1303,6 +1319,7 @@ empathy_ft_handler_new_outgoing (EmpathyContact *contact,
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME ","
G_FILE_ATTRIBUTE_STANDARD_SIZE ","
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
+ G_FILE_ATTRIBUTE_STANDARD_TYPE ","
G_FILE_ATTRIBUTE_TIME_MODIFIED,
G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT,
NULL, (GAsyncReadyCallback) ft_handler_gfile_ready_cb, data);
diff --git a/libempathy/empathy-idle.c b/libempathy/empathy-idle.c
index 92ab9f39f..2ed1440fc 100644
--- a/libempathy/empathy-idle.c
+++ b/libempathy/empathy-idle.c
@@ -68,6 +68,14 @@ typedef enum {
NM_STATE_DISCONNECTED
} NMState;
+typedef enum {
+ SESSION_STATUS_AVAILABLE,
+ SESSION_STATUS_INVISIBLE,
+ SESSION_STATUS_BUSY,
+ SESSION_STATUS_IDLE,
+ SESSION_STATUS_UNKNOWN
+} SessionStatus;
+
enum {
PROP_0,
PROP_STATE,
@@ -91,6 +99,10 @@ idle_presence_changed_cb (MissionControl *mc,
priv = GET_PRIV (idle);
+ if (state == TP_CONNECTION_PRESENCE_TYPE_UNSET)
+ /* Assume our presence is offline if MC reports UNSET */
+ state = TP_CONNECTION_PRESENCE_TYPE_OFFLINE;
+
DEBUG ("Presence changed to '%s' (%d)", status, state);
g_free (priv->status);
@@ -147,14 +159,17 @@ idle_ext_away_start (EmpathyIdle *idle)
}
static void
-idle_session_idle_changed_cb (DBusGProxy *gs_proxy,
- gboolean is_idle,
- EmpathyIdle *idle)
+idle_session_status_changed_cb (DBusGProxy *gs_proxy,
+ SessionStatus status,
+ EmpathyIdle *idle)
{
EmpathyIdlePriv *priv;
+ gboolean is_idle;
priv = GET_PRIV (idle);
+ is_idle = (status == SESSION_STATUS_IDLE);
+
DEBUG ("Session idle state changed, %s -> %s",
priv->is_idle ? "yes" : "no",
is_idle ? "yes" : "no");
@@ -465,7 +480,10 @@ empathy_idle_init (EmpathyIdle *idle)
if (error) {
DEBUG ("Error getting actual presence: %s", error->message);
- priv->state = TP_CONNECTION_PRESENCE_TYPE_UNSET;
+ /* Fallback to OFFLINE as that's what mission_control_get_presence_actual
+ does. This also ensure to always display the status icon (there is no
+ unset presence icon). */
+ priv->state = TP_CONNECTION_PRESENCE_TYPE_OFFLINE;
g_clear_error (&error);
}
priv->status = mission_control_get_presence_message_actual (priv->mc, &error);
@@ -485,15 +503,14 @@ empathy_idle_init (EmpathyIdle *idle)
idle, NULL);
priv->gs_proxy = dbus_g_proxy_new_for_name (tp_get_bus (),
- "org.gnome.ScreenSaver",
- "/org/gnome/ScreenSaver",
- "org.gnome.ScreenSaver");
+ "org.gnome.SessionManager",
+ "/org/gnome/SessionManager/Presence",
+ "org.gnome.SessionManager.Presence");
if (priv->gs_proxy) {
- dbus_g_proxy_add_signal (priv->gs_proxy, "SessionIdleChanged",
- G_TYPE_BOOLEAN,
- G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->gs_proxy, "SessionIdleChanged",
- G_CALLBACK (idle_session_idle_changed_cb),
+ dbus_g_proxy_add_signal (priv->gs_proxy, "StatusChanged",
+ G_TYPE_UINT, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (priv->gs_proxy, "StatusChanged",
+ G_CALLBACK (idle_session_status_changed_cb),
idle, NULL);
} else {
DEBUG ("Failed to get gs proxy");
@@ -726,7 +743,7 @@ empathy_idle_set_use_nm (EmpathyIdle *idle,
g_clear_error (&error);
nm_status = NM_STATE_ASLEEP;
}
-
+
idle_nm_state_change_cb (priv->nm_proxy, nm_status, idle);
} else {
priv->nm_connected = TRUE;
diff --git a/libempathy/empathy-status-presets.c b/libempathy/empathy-status-presets.c
index 9f9a2030b..135212cc5 100644
--- a/libempathy/empathy-status-presets.c
+++ b/libempathy/empathy-status-presets.c
@@ -131,16 +131,17 @@ status_presets_file_parse (const gchar *filename)
if (state_str) {
state = empathy_presence_from_str (state_str);
-
- if (is_default) {
- DEBUG ("Default status preset state is:"
- " '%s', status:'%s'", state_str,
- status);
-
- status_presets_set_default (state, status);
- } else {
- preset = status_preset_new (state, status);
- presets = g_list_append (presets, preset);
+ if (empathy_status_presets_is_valid (state)) {
+ if (is_default) {
+ DEBUG ("Default status preset state is:"
+ " '%s', status:'%s'", state_str,
+ status);
+
+ status_presets_set_default (state, status);
+ } else {
+ preset = status_preset_new (state, status);
+ presets = g_list_append (presets, preset);
+ }
}
}
@@ -405,3 +406,31 @@ empathy_status_presets_clear_default (void)
status_presets_file_save ();
}
+
+/**
+ * empathy_status_presets_is_valid:
+ * @state: a #TpConnectionPresenceType
+ *
+ * Check if a presence type can be used as a preset.
+ *
+ * Returns: %TRUE if the presence type can be used as a preset.
+ */
+gboolean
+empathy_status_presets_is_valid (TpConnectionPresenceType state)
+{
+ switch (state) {
+ case TP_CONNECTION_PRESENCE_TYPE_UNSET:
+ case TP_CONNECTION_PRESENCE_TYPE_OFFLINE:
+ case TP_CONNECTION_PRESENCE_TYPE_UNKNOWN:
+ case TP_CONNECTION_PRESENCE_TYPE_ERROR:
+ return FALSE;
+
+ case TP_CONNECTION_PRESENCE_TYPE_AVAILABLE:
+ case TP_CONNECTION_PRESENCE_TYPE_AWAY:
+ case TP_CONNECTION_PRESENCE_TYPE_EXTENDED_AWAY:
+ case TP_CONNECTION_PRESENCE_TYPE_HIDDEN:
+ case TP_CONNECTION_PRESENCE_TYPE_BUSY:
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/libempathy/empathy-status-presets.h b/libempathy/empathy-status-presets.h
index 335dbcfcb..331c630d5 100644
--- a/libempathy/empathy-status-presets.h
+++ b/libempathy/empathy-status-presets.h
@@ -40,6 +40,7 @@ const gchar * empathy_status_presets_get_default_status (void);
void empathy_status_presets_set_default (TpConnectionPresenceType state,
const gchar *status);
void empathy_status_presets_clear_default (void);
+gboolean empathy_status_presets_is_valid (TpConnectionPresenceType state);
G_END_DECLS
diff --git a/libempathy/empathy-time.c b/libempathy/empathy-time.c
index 64350404c..19397e7a9 100644
--- a/libempathy/empathy-time.c
+++ b/libempathy/empathy-time.c
@@ -42,7 +42,7 @@ empathy_time_get_local_time (struct tm *tm)
{
const gchar *timezone;
time_t t;
-
+
timezone = g_getenv ("TZ");
g_setenv ("TZ", "", TRUE);
@@ -152,6 +152,11 @@ empathy_time_to_string_relative (time_t then)
return g_strdup_printf (ngettext ("%d day ago",
"%d days ago", seconds), seconds);
}
+ else if (seconds < (60 * 60 * 24 * 30)) {
+ seconds /= 60 * 60 * 24 * 7;
+ return g_strdup_printf (ngettext ("%d week ago",
+ "%d weeks ago", seconds), seconds);
+ }
else {
seconds /= 60 * 60 * 24 * 30;
return g_strdup_printf (ngettext ("%d month ago",
diff --git a/libempathy/empathy-tp-call.c b/libempathy/empathy-tp-call.c
index 2971e0ffc..eb70c1a87 100644
--- a/libempathy/empathy-tp-call.c
+++ b/libempathy/empathy-tp-call.c
@@ -672,3 +672,40 @@ empathy_tp_call_has_dtmf (EmpathyTpCall *call)
TP_IFACE_QUARK_CHANNEL_INTERFACE_DTMF);
}
+/**
+ * empathy_tp_call_is_receiving_video:
+ * @call: the call
+ *
+ * Indicates if the call is receiving video or not.
+ *
+ * Returns: %TRUE if the call is currently receiving video, %FALSE otherwise.
+ */
+gboolean
+empathy_tp_call_is_receiving_video (EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CALL (call), FALSE);
+
+ return priv->video->direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE ?
+ TRUE : FALSE;
+}
+
+/**
+ * empathy_tp_call_is_sending_video:
+ * @call: the call
+ *
+ * Indicates if the call is sending video or not.
+ *
+ * Returns: %TRUE if the call is currently sending video, %FALSE otherwise.
+ */
+gboolean
+empathy_tp_call_is_sending_video (EmpathyTpCall *call)
+{
+ EmpathyTpCallPriv *priv = GET_PRIV (call);
+
+ g_return_val_if_fail (EMPATHY_IS_TP_CALL (call), FALSE);
+
+ return priv->video->direction & TP_MEDIA_STREAM_DIRECTION_SEND ?
+ TRUE : FALSE;
+}
diff --git a/libempathy/empathy-tp-call.h b/libempathy/empathy-tp-call.h
index 406ed1c3f..a00fe3e40 100644
--- a/libempathy/empathy-tp-call.h
+++ b/libempathy/empathy-tp-call.h
@@ -85,6 +85,8 @@ void empathy_tp_call_request_video_stream_direction (EmpathyTpCall *call,
void empathy_tp_call_start_tone (EmpathyTpCall *call, TpDTMFEvent event);
void empathy_tp_call_stop_tone (EmpathyTpCall *call);
gboolean empathy_tp_call_has_dtmf (EmpathyTpCall *call);
+gboolean empathy_tp_call_is_receiving_video (EmpathyTpCall *call);
+gboolean empathy_tp_call_is_sending_video (EmpathyTpCall *call);
G_END_DECLS
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index 794e3e3b7..ac61392e0 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -993,7 +993,7 @@ tp_chat_constructor (GType type,
/* Get initial member contacts */
members = tp_channel_group_get_members (priv->channel);
- handles = tp_intset_to_array (members);
+ handles = tp_intset_to_array (members);
empathy_tp_contact_factory_get_from_handles (priv->factory,
handles->len, (TpHandle *) handles->data,
tp_chat_got_added_contacts_cb, NULL, NULL, chat);
diff --git a/libempathy/empathy-tp-contact-list.c b/libempathy/empathy-tp-contact-list.c
index 58cb89cbe..cdb0431c4 100644
--- a/libempathy/empathy-tp-contact-list.c
+++ b/libempathy/empathy-tp-contact-list.c
@@ -205,7 +205,7 @@ tp_contact_list_group_members_changed_cb (TpChannel *channel,
g_signal_emit_by_name (list, "groups-changed", contact,
group_name,
TRUE);
- }
+ }
for (i = 0; i < removed->len; i++) {
EmpathyContact *contact;
@@ -224,7 +224,7 @@ tp_contact_list_group_members_changed_cb (TpChannel *channel,
g_signal_emit_by_name (list, "groups-changed", contact,
group_name,
FALSE);
- }
+ }
}
static void
diff --git a/libempathy/empathy-tp-file.c b/libempathy/empathy-tp-file.c
index 3a5826868..e60b2999d 100644
--- a/libempathy/empathy-tp-file.c
+++ b/libempathy/empathy-tp-file.c
@@ -26,6 +26,7 @@
#include <string.h>
#include <unistd.h>
#include <errno.h>
+#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
@@ -36,6 +37,7 @@
#include <gio/gunixinputstream.h>
#include <gio/gunixoutputstream.h>
+#include <telepathy-glib/gtypes.h>
#include <telepathy-glib/proxy-subclass.h>
#include <telepathy-glib/util.h>
@@ -71,11 +73,14 @@ typedef struct {
/* org.freedesktop.Telepathy.Channel.Type.FileTransfer D-Bus properties */
TpFileTransferState state;
TpFileTransferStateChangeReason state_change_reason;
+ TpSocketAddressType socket_address_type;
+ TpSocketAccessControl socket_access_control;
/* transfer properties */
gboolean incoming;
time_t start_time;
- GArray *unix_socket_path;
+ GArray *socket_address;
+ guint port;
guint64 offset;
/* GCancellable we're passed when offering/accepting the transfer */
@@ -124,6 +129,54 @@ tp_file_get_state_cb (TpProxy *proxy,
}
static void
+tp_file_get_available_socket_types_cb (TpProxy *proxy,
+ const GValue *value,
+ const GError *error,
+ gpointer user_data,
+ GObject *weak_object)
+{
+ EmpathyTpFilePriv *priv = GET_PRIV (weak_object);
+ GHashTable *socket_types;
+ GArray *access_controls;
+
+ if (error != NULL ||
+ !G_VALUE_HOLDS (value, TP_HASH_TYPE_SUPPORTED_SOCKET_MAP))
+ {
+ /* set a default value */
+ priv->socket_address_type = TP_SOCKET_ADDRESS_TYPE_UNIX;
+ priv->socket_access_control = TP_SOCKET_ACCESS_CONTROL_LOCALHOST;
+ goto out;
+ }
+
+ socket_types = g_value_get_boxed (value);
+
+ /* here UNIX is preferred to IPV4 */
+ if ((access_controls = g_hash_table_lookup (socket_types,
+ GUINT_TO_POINTER (TP_SOCKET_ADDRESS_TYPE_UNIX))) != NULL)
+ {
+ priv->socket_address_type = TP_SOCKET_ADDRESS_TYPE_UNIX;
+ priv->socket_access_control = TP_SOCKET_ACCESS_CONTROL_LOCALHOST;
+ goto out;
+ }
+
+ if ((access_controls = g_hash_table_lookup (socket_types,
+ GUINT_TO_POINTER (TP_SOCKET_ADDRESS_TYPE_IPV4))) != NULL)
+ {
+ priv->socket_address_type = TP_SOCKET_ADDRESS_TYPE_IPV4;
+
+ /* TODO: we should prefer PORT over LOCALHOST when the CM will
+ * support it.
+ */
+
+ priv->socket_access_control = TP_SOCKET_ACCESS_CONTROL_LOCALHOST;
+ }
+
+out:
+ DEBUG ("Socket address type: %u, access control %u",
+ priv->socket_address_type, priv->socket_access_control);
+}
+
+static void
tp_file_invalidated_cb (TpProxy *proxy,
guint domain,
gint code,
@@ -206,12 +259,35 @@ splice_stream_ready_cb (GObject *source,
static void
tp_file_start_transfer (EmpathyTpFile *tp_file)
{
- gint fd;
- struct sockaddr_un addr;
+ gint fd, domain, res = 0;
GError *error = NULL;
+ struct sockaddr *my_addr = NULL;
+ size_t my_size = 0;
EmpathyTpFilePriv *priv = GET_PRIV (tp_file);
- fd = socket (PF_UNIX, SOCK_STREAM, 0);
+ if (priv->socket_address_type == TP_SOCKET_ADDRESS_TYPE_UNIX)
+ {
+ domain = AF_UNIX;
+ }
+ else if (priv->socket_address_type == TP_SOCKET_ADDRESS_TYPE_IPV4)
+ {
+ domain = AF_INET;
+ }
+ else
+ {
+ error = g_error_new_literal (EMPATHY_FT_ERROR_QUARK,
+ EMPATHY_FT_ERROR_NOT_SUPPORTED, _("Socket type not supported"));
+
+ DEBUG ("Socket not supported, closing channel");
+
+ ft_operation_close_with_error (tp_file, error);
+ g_clear_error (&error);
+
+ return;
+ }
+
+ fd = socket (domain, SOCK_STREAM, 0);
+
if (fd < 0)
{
int code = errno;
@@ -227,12 +303,34 @@ tp_file_start_transfer (EmpathyTpFile *tp_file)
return;
}
- memset (&addr, 0, sizeof (addr));
- addr.sun_family = AF_UNIX;
- strncpy (addr.sun_path, priv->unix_socket_path->data,
- priv->unix_socket_path->len);
+ if (priv->socket_address_type == TP_SOCKET_ADDRESS_TYPE_UNIX)
+ {
+ struct sockaddr_un addr;
+
+ memset (&addr, 0, sizeof (addr));
+ addr.sun_family = domain;
+ strncpy (addr.sun_path, priv->socket_address->data,
+ priv->socket_address->len);
+
+ my_addr = (struct sockaddr *) &addr;
+ my_size = sizeof (addr);
+ }
+ else if (priv->socket_address_type == TP_SOCKET_ADDRESS_TYPE_IPV4)
+ {
+ struct sockaddr_in addr;
+
+ memset (&addr, 0, sizeof (addr));
+ addr.sin_family = domain;
+ inet_pton (AF_INET, priv->socket_address->data, &addr.sin_addr);
+ addr.sin_port = htons (priv->port);
+
+ my_addr = (struct sockaddr *) &addr;
+ my_size = sizeof (addr);
+ }
+
+ res = connect (fd, my_addr, my_size);
- if (connect (fd, (struct sockaddr*) &addr, sizeof (addr)) < 0)
+ if (res < 0)
{
int code = errno;
@@ -354,7 +452,7 @@ tp_file_state_changed_cb (TpChannel *proxy,
* data transfer but are just an observer for the channel.
*/
if (state == TP_FILE_TRANSFER_STATE_OPEN &&
- priv->unix_socket_path != NULL)
+ priv->socket_address != NULL)
tp_file_start_transfer (EMPATHY_TP_FILE (weak_object));
if (state == TP_FILE_TRANSFER_STATE_COMPLETED)
@@ -407,13 +505,14 @@ ft_operation_provide_or_accept_file_cb (TpChannel *proxy,
* report the method error.
*/
g_clear_error (&myerr);
- myerr = g_error_copy (error);
}
+
+ myerr = g_error_copy (error);
}
if (myerr != NULL)
{
- DEBUG ("Error: %s", error->message);
+ DEBUG ("Error: %s", myerr->message);
ft_operation_close_with_error (tp_file, myerr);
g_clear_error (&myerr);
return;
@@ -421,7 +520,7 @@ ft_operation_provide_or_accept_file_cb (TpChannel *proxy,
if (G_VALUE_TYPE (address) == DBUS_TYPE_G_UCHAR_ARRAY)
{
- priv->unix_socket_path = g_value_dup_boxed (address);
+ priv->socket_address = g_value_dup_boxed (address);
}
else if (G_VALUE_TYPE (address) == G_TYPE_STRING)
{
@@ -430,12 +529,32 @@ ft_operation_provide_or_accept_file_cb (TpChannel *proxy,
const gchar *path;
path = g_value_get_string (address);
- priv->unix_socket_path = g_array_sized_new (TRUE, FALSE, sizeof (gchar),
- strlen (path));
- g_array_insert_vals (priv->unix_socket_path, 0, path, strlen (path));
+ priv->socket_address = g_array_sized_new (TRUE, FALSE, sizeof (gchar),
+ strlen (path));
+ g_array_insert_vals (priv->socket_address, 0, path, strlen (path));
+ }
+ else if (G_VALUE_TYPE (address) == TP_STRUCT_TYPE_SOCKET_ADDRESS_IPV4)
+ {
+ GValueArray *val_array;
+ GValue *v;
+ const char *addr;
+
+ val_array = g_value_get_boxed (address);
+
+ /* IPV4 address */
+ v = g_value_array_get_nth (val_array, 0);
+ addr = g_value_get_string (v);
+ priv->socket_address = g_array_sized_new (TRUE, FALSE, sizeof (gchar),
+ strlen (addr));
+ g_array_insert_vals (priv->socket_address, 0, addr, strlen (addr));
+
+ /* port number */
+ v = g_value_array_get_nth (val_array, 1);
+ priv->port = g_value_get_uint (v);
}
- DEBUG ("Got unix socket path: %s", priv->unix_socket_path->data);
+ DEBUG ("Got socket address: %s, port (not zero if IPV4): %d",
+ priv->socket_address->data, priv->port);
/* if the channel is already open, start the transfer now, otherwise,
* wait for the state change signal.
@@ -445,6 +564,18 @@ ft_operation_provide_or_accept_file_cb (TpChannel *proxy,
}
static void
+initialize_empty_ac_variant (TpSocketAccessControl ac,
+ GValue *val)
+{
+ /* TODO: we will add more types here once we support PORT access control. */
+ if (ac == TP_SOCKET_ACCESS_CONTROL_LOCALHOST)
+ {
+ g_value_init (val, G_TYPE_STRING);
+ g_value_set_static_string (val, "");
+ }
+}
+
+static void
file_read_async_cb (GObject *source,
GAsyncResult *res,
gpointer user_data)
@@ -468,12 +599,14 @@ file_read_async_cb (GObject *source,
priv->in_stream = G_INPUT_STREAM (in_stream);
- g_value_init (&nothing, G_TYPE_STRING);
- g_value_set_static_string (&nothing, "");
+ /* we don't impose specific interface/port requirements even
+ * if we're not using UNIX sockets.
+ */
+ initialize_empty_ac_variant (priv->socket_access_control, &nothing);
tp_cli_channel_type_file_transfer_call_provide_file (
priv->channel, -1,
- TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST,
+ priv->socket_address_type, priv->socket_access_control,
&nothing, ft_operation_provide_or_accept_file_cb,
NULL, NULL, G_OBJECT (tp_file));
}
@@ -503,11 +636,13 @@ file_replace_async_cb (GObject *source,
priv->out_stream = G_OUTPUT_STREAM (out_stream);
- g_value_init (&nothing, G_TYPE_STRING);
- g_value_set_static_string (&nothing, "");
+ /* we don't impose specific interface/port requirements even
+ * if we're not using UNIX sockets.
+ */
+ initialize_empty_ac_variant (priv->socket_access_control, &nothing);
tp_cli_channel_type_file_transfer_call_accept_file (priv->channel,
- -1, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST,
+ -1, priv->socket_address_type, priv->socket_access_control,
&nothing, priv->offset,
ft_operation_provide_or_accept_file_cb, NULL, NULL, G_OBJECT (tp_file));
}
@@ -592,10 +727,10 @@ do_finalize (GObject *object)
DEBUG ("%p", object);
- if (priv->unix_socket_path != NULL)
+ if (priv->socket_address != NULL)
{
- g_array_free (priv->unix_socket_path, TRUE);
- priv->unix_socket_path = NULL;
+ g_array_free (priv->socket_address, TRUE);
+ priv->socket_address = NULL;
}
G_OBJECT_CLASS (empathy_tp_file_parent_class)->finalize (object);
@@ -667,6 +802,10 @@ do_constructed (GObject *object)
-1, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER, "State", tp_file_get_state_cb,
NULL, NULL, object);
+ tp_cli_dbus_properties_call_get (priv->channel,
+ -1, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER, "AvailableSocketTypes",
+ tp_file_get_available_socket_types_cb, NULL, NULL, object);
+
priv->state_change_reason =
TP_FILE_TRANSFER_STATE_CHANGE_REASON_NONE;
}
diff --git a/libempathy/empathy-tp-file.h b/libempathy/empathy-tp-file.h
index 0d7d8efc0..b40b8c364 100644
--- a/libempathy/empathy-tp-file.h
+++ b/libempathy/empathy-tp-file.h
@@ -50,7 +50,9 @@ typedef enum {
EMPATHY_FT_ERROR_HASH_MISMATCH,
EMPATHY_FT_ERROR_TP_ERROR,
EMPATHY_FT_ERROR_SOCKET,
- EMPATHY_FT_ERROR_NOT_SUPPORTED
+ EMPATHY_FT_ERROR_NOT_SUPPORTED,
+ EMPATHY_FT_ERROR_INVALID_SOURCE_FILE,
+ EMPATHY_FT_ERROR_EMPTY_SOURCE_FILE
} EmpathyFTErrorEnum;
typedef struct _EmpathyTpFile EmpathyTpFile;
diff --git a/libempathy/empathy-tp-tube.c b/libempathy/empathy-tp-tube.c
deleted file mode 100644
index 7b9b1889e..000000000
--- a/libempathy/empathy-tp-tube.c
+++ /dev/null
@@ -1,669 +0,0 @@
-/*
- * 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: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
- * Elliot Fairweather <elliot.fairweather@collabora.co.uk>
- */
-
-#include <config.h>
-
-#include <telepathy-glib/connection.h>
-#include <telepathy-glib/proxy.h>
-#include <telepathy-glib/util.h>
-#include <extensions/extensions.h>
-
-#include "empathy-enum-types.h"
-#include "empathy-tp-tube.h"
-#include "empathy-utils.h"
-
-#define DEBUG_FLAG EMPATHY_DEBUG_TP
-#include "empathy-debug.h"
-
-typedef struct {
- TpSocketAddressType type;
- EmpathyTpTubeAcceptStreamTubeCb *callback;
- gpointer user_data;
-} EmpathyTpTubeAcceptData;
-
-static EmpathyTpTubeAcceptData *
-new_empathy_tp_tube_accept_data (TpSocketAddressType type,
- EmpathyTpTubeAcceptStreamTubeCb *callback,
- gpointer user_data)
-{
- EmpathyTpTubeAcceptData *r;
-
- r = g_slice_new0 (EmpathyTpTubeAcceptData);
- r->type = type;
- r->callback = callback;
- r->user_data = user_data;
-
- return r;
-}
-
-static void
-free_empathy_tp_tube_accept_data (gpointer data)
-{
- g_slice_free (EmpathyTpTubeAcceptData, data);
-}
-
-
-typedef struct {
- EmpathyTpTubeReadyCb *callback;
- gpointer user_data;
- GDestroyNotify destroy;
- GObject *weak_object;
-} ReadyCbData;
-
-/**
- * SECTION:empathy-tp-tube
- * @title:EmpathyTpTube
- * @short_description: A wrapper around a Telepathy tube channel
- * @include: libempathy/empathy-tp-tube.h
- *
- * #EmpathyTpTube is a convenient object wrapping a Telepathy tube channel.
- */
-
-/**
- * EmpathyTpTube:
- * @parent: parent object
- *
- * An object wrapping a Telepathy tube channel.
- */
-
-#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyTpTube)
-typedef struct
-{
- TpChannel *channel;
- TpTubeChannelState state;
- gboolean ready;
- GSList *ready_callbacks;
-} EmpathyTpTubePriv;
-
-enum
-{
- PROP_0,
- PROP_CHANNEL,
- PROP_STATE,
-};
-
-enum
-{
- DESTROY,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
-G_DEFINE_TYPE (EmpathyTpTube, empathy_tp_tube, G_TYPE_OBJECT)
-
-static void
-tp_tube_state_changed_cb (TpChannel *channel,
- TpTubeChannelState state,
- gpointer user_data,
- GObject *tube)
-{
- EmpathyTpTubePriv *priv = GET_PRIV (tube);
-
- if (!priv->ready)
- /* We didn't get the state yet */
- return;
-
- DEBUG ("Tube state changed");
-
- priv->state = state;
- g_object_notify (tube, "state");
-}
-
-static void
-tp_tube_invalidated_cb (TpChannel *channel,
- GQuark domain,
- gint code,
- gchar *message,
- EmpathyTpTube *tube)
-{
- DEBUG ("Channel invalidated: %s", message);
- g_signal_emit (tube, signals[DESTROY], 0);
-}
-
-static void
-tp_tube_async_cb (TpChannel *channel,
- const GError *error,
- gpointer user_data,
- GObject *tube)
-{
- if (error)
- DEBUG ("Error %s: %s", (gchar *) user_data, error->message);
-}
-
-static void
-tp_tube_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- EmpathyTpTubePriv *priv = GET_PRIV (object);
-
- switch (prop_id)
- {
- case PROP_CHANNEL:
- priv->channel = g_value_dup_object (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-tp_tube_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- EmpathyTpTubePriv *priv = GET_PRIV (object);
-
- switch (prop_id)
- {
- case PROP_CHANNEL:
- g_value_set_object (value, priv->channel);
- break;
- case PROP_STATE:
- g_value_set_uint (value, priv->state);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void weak_object_notify (gpointer data,
- GObject *old_object);
-
-static ReadyCbData *
-ready_cb_data_new (EmpathyTpTube *self,
- EmpathyTpTubeReadyCb *callback,
- gpointer user_data,
- GDestroyNotify destroy,
- GObject *weak_object)
-{
- ReadyCbData *d = g_slice_new0 (ReadyCbData);
- d->callback = callback;
- d->user_data = user_data;
- d->destroy = destroy;
- d->weak_object = weak_object;
-
- if (weak_object != NULL)
- g_object_weak_ref (weak_object, weak_object_notify, self);
-
- return d;
-}
-
-static void
-ready_cb_data_free (ReadyCbData *data,
- EmpathyTpTube *self)
-{
- if (data->destroy != NULL)
- data->destroy (data->user_data);
-
- if (data->weak_object != NULL)
- g_object_weak_unref (data->weak_object,
- weak_object_notify, self);
-
- g_slice_free (ReadyCbData, data);
-}
-
-static void
-weak_object_notify (gpointer data,
- GObject *old_object)
-{
- EmpathyTpTube *self = EMPATHY_TP_TUBE (data);
- EmpathyTpTubePriv *priv = GET_PRIV (self);
- GSList *l, *ln;
-
- for (l = priv->ready_callbacks ; l != NULL ; l = ln )
- {
- ReadyCbData *d = (ReadyCbData *) l->data;
- ln = g_slist_next (l);
-
- if (d->weak_object == old_object)
- {
- ready_cb_data_free (d, self);
- priv->ready_callbacks = g_slist_delete_link (priv->ready_callbacks,
- l);
- }
- }
-}
-
-
-static void
-tube_is_ready (EmpathyTpTube *self,
- const GError *error)
-{
- EmpathyTpTubePriv *priv = GET_PRIV (self);
- GSList *l;
-
- priv->ready = TRUE;
-
- /* tube has to stay alive while we call the callbacks */
- g_object_ref (self);
- for (l = priv->ready_callbacks ; l != NULL ; l = g_slist_next (l))
- {
- ReadyCbData *data = (ReadyCbData *) l->data;
-
- data->callback (self, error, data->user_data, data->weak_object);
- ready_cb_data_free (data, self);
- }
- g_object_unref (self);
-
- g_slist_free (priv->ready_callbacks);
- priv->ready_callbacks = NULL;
-}
-
-static void
-got_tube_state_cb (TpProxy *proxy,
- const GValue *out_value,
- const GError *error,
- gpointer user_data,
- GObject *weak_object)
-{
- EmpathyTpTube *self = EMPATHY_TP_TUBE (user_data);
- EmpathyTpTubePriv *priv = GET_PRIV (self);
-
- if (error != NULL)
- {
- DEBUG ("Error getting State property: %s", error->message);
- }
- else
- {
- priv->state = g_value_get_uint (out_value);
- g_object_notify (G_OBJECT (self), "state");
- }
-
- tube_is_ready (self, error);
-}
-
-static GObject *
-tp_tube_constructor (GType type,
- guint n_props,
- GObjectConstructParam *props)
-{
- GObject *self;
- EmpathyTpTubePriv *priv;
-
- self = G_OBJECT_CLASS (empathy_tp_tube_parent_class)->constructor (
- type, n_props, props);
- priv = GET_PRIV (self);
-
- g_signal_connect (priv->channel, "invalidated",
- G_CALLBACK (tp_tube_invalidated_cb), self);
-
- priv->ready = FALSE;
-
- tp_cli_channel_interface_tube_connect_to_tube_channel_state_changed (
- priv->channel, tp_tube_state_changed_cb, NULL, NULL,
- self, NULL);
-
- tp_cli_dbus_properties_call_get (priv->channel, -1,
- TP_IFACE_CHANNEL_INTERFACE_TUBE, "State", got_tube_state_cb,
- self, NULL, G_OBJECT (self));
-
- return self;
-}
-
-static void
-tp_tube_finalize (GObject *object)
-{
- EmpathyTpTube *self = EMPATHY_TP_TUBE (object);
- EmpathyTpTubePriv *priv = GET_PRIV (object);
- GSList *l;
-
- DEBUG ("Finalizing: %p", object);
-
- if (priv->channel)
- {
- g_signal_handlers_disconnect_by_func (priv->channel,
- tp_tube_invalidated_cb, object);
- tp_cli_channel_call_close (priv->channel, -1, tp_tube_async_cb,
- "closing tube", NULL, NULL);
- g_object_unref (priv->channel);
- }
-
- for (l = priv->ready_callbacks; l != NULL; l = g_slist_next (l))
- {
- ReadyCbData *d = (ReadyCbData *) l->data;
-
- ready_cb_data_free (d, self);
- }
-
- g_slist_free (priv->ready_callbacks);
- priv->ready_callbacks = NULL;
-
- G_OBJECT_CLASS (empathy_tp_tube_parent_class)->finalize (object);
-}
-
-static void
-empathy_tp_tube_class_init (EmpathyTpTubeClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->constructor = tp_tube_constructor;
- object_class->finalize = tp_tube_finalize;
- object_class->set_property = tp_tube_set_property;
- object_class->get_property = tp_tube_get_property;
-
- /**
- * EmpathyTpTube:channel:
- *
- * The #TpChannel wrapped by the tube object.
- */
- g_object_class_install_property (object_class, PROP_CHANNEL,
- g_param_spec_object ("channel", "channel", "channel", TP_TYPE_CHANNEL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-
- /**
- * EmpathyTpTube:state:
- *
- * The state of the tube.
- */
- g_object_class_install_property (object_class, PROP_STATE,
- g_param_spec_uint ("state", "state", "state",
- 0, NUM_TP_TUBE_CHANNEL_STATES, 0,
- G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_STRINGS));
- /**
- * EmpathyTpTube::destroy:
- * @self: the tube object
- *
- * Emitted when then tube has been invalidated.
- */
- signals[DESTROY] = g_signal_new ("destroy",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
-
- g_type_class_add_private (klass, sizeof (EmpathyTpTubePriv));
-}
-
-static void
-empathy_tp_tube_init (EmpathyTpTube *tube)
-{
- EmpathyTpTubePriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (tube,
- EMPATHY_TYPE_TP_TUBE, EmpathyTpTubePriv);
-
- tube->priv = priv;
-}
-
-/**
- * empathy_tp_tube_new:
- * @channel: a #TpChannel
- *
- * Creates a new #EmpathyTpTube.
- *
- * Return value: a new #EmpathyTpTube
- */
-EmpathyTpTube *
-empathy_tp_tube_new (TpChannel *channel)
-{
- g_return_val_if_fail (TP_IS_CHANNEL (channel), NULL);
-
- return g_object_new (EMPATHY_TYPE_TP_TUBE, "channel", channel, NULL);
-}
-
-/**
- * empathy_tp_tube_new_stream_tube:
- * @contact: the #EmpathyContact to which the tube is offered
- * @type: the type of the listening address of the local service. Either
- * %TP_SOCKET_ADDRESS_TYPE_IPV4 or %TP_SOCKET_ADDRESS_TYPE_IPV6.
- * @hostname: the address of the local service
- * @port: the port of the local service
- * @service: the service name of the tube
- * @parameters: the parameters of the tube
- *
- * Creates and offers a new #EmpathyTpTube of ChannelType StreamTube.
- *
- * Return value: a new #EmpathyTpTube
- */
-EmpathyTpTube *
-empathy_tp_tube_new_stream_tube (EmpathyContact *contact,
- TpSocketAddressType type,
- const gchar *hostname,
- guint port,
- const gchar *service,
- GHashTable *parameters)
-{
- TpConnection *connection;
- TpChannel *channel;
- gchar *object_path;
- GHashTable *params;
- GValue *address;
- GValue *control_param;
- EmpathyTpTube *tube = NULL;
- GError *error = NULL;
- GHashTable *request;
- GHashTable *channel_properties;
- GValue *value;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
- g_return_val_if_fail (hostname != NULL, NULL);
- g_return_val_if_fail (service != NULL, NULL);
-
- connection = empathy_contact_get_connection (contact);
-
- request = g_hash_table_new_full (g_str_hash, g_str_equal, NULL,
- (GDestroyNotify) tp_g_value_slice_free);
-
- /* org.freedesktop.Telepathy.Channel.ChannelType */
- value = tp_g_value_slice_new (G_TYPE_STRING);
- g_value_set_string (value, TP_IFACE_CHANNEL_TYPE_STREAM_TUBE);
- g_hash_table_insert (request, TP_IFACE_CHANNEL ".ChannelType", value);
-
- /* org.freedesktop.Telepathy.Channel.TargetHandleType */
- value = tp_g_value_slice_new (G_TYPE_UINT);
- g_value_set_uint (value, TP_HANDLE_TYPE_CONTACT);
- g_hash_table_insert (request, TP_IFACE_CHANNEL ".TargetHandleType", value);
-
- /* org.freedesktop.Telepathy.Channel.TargetHandleType */
- value = tp_g_value_slice_new (G_TYPE_UINT);
- g_value_set_uint (value, empathy_contact_get_handle (contact));
- g_hash_table_insert (request, TP_IFACE_CHANNEL ".TargetHandle", value);
-
- /* org.freedesktop.Telepathy.Channel.Type.StreamTube.Service */
- value = tp_g_value_slice_new (G_TYPE_STRING);
- g_value_set_string (value, service);
- g_hash_table_insert (request,
- TP_IFACE_CHANNEL_TYPE_STREAM_TUBE ".Service", value);
-
- if (!tp_cli_connection_interface_requests_run_create_channel (connection, -1,
- request, &object_path, &channel_properties, &error, NULL))
- {
- DEBUG ("Error requesting channel: %s", error->message);
- g_clear_error (&error);
- g_object_unref (connection);
- return NULL;
- }
-
- DEBUG ("Offering a new stream tube");
-
- channel = tp_channel_new_from_properties (connection, object_path,
- channel_properties, NULL);
-
- tp_channel_run_until_ready (channel, NULL, NULL);
-
- #define ADDRESS_TYPE dbus_g_type_get_struct ("GValueArray",\
- G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID)
- params = g_hash_table_new (g_str_hash, g_str_equal);
- address = tp_g_value_slice_new (ADDRESS_TYPE);
- g_value_take_boxed (address, dbus_g_type_specialized_construct (ADDRESS_TYPE));
- dbus_g_type_struct_set (address, 0, hostname, 1, port, G_MAXUINT);
- control_param = tp_g_value_slice_new (G_TYPE_STRING);
-
- if (parameters == NULL)
- /* Pass an empty dict as parameters */
- parameters = g_hash_table_new (g_str_hash, g_str_equal);
- else
- g_hash_table_ref (parameters);
-
- if (!tp_cli_channel_type_stream_tube_run_offer (channel, -1, type, address,
- TP_SOCKET_ACCESS_CONTROL_LOCALHOST, parameters,
- &error, NULL))
- {
- DEBUG ("Couldn't offer tube: %s", error->message);
- g_clear_error (&error);
- goto OUT;
- }
-
- DEBUG ("Stream tube offered");
-
- tube = empathy_tp_tube_new (channel);
-
-OUT:
- g_object_unref (channel);
- g_free (object_path);
- g_hash_table_destroy (request);
- g_hash_table_destroy (channel_properties);
- tp_g_value_slice_free (address);
- tp_g_value_slice_free (control_param);
- g_object_unref (connection);
- g_hash_table_unref (parameters);
-
- return tube;
-}
-
-static void
-tp_tube_accept_stream_cb (TpChannel *channel,
- const GValue *address,
- const GError *error,
- gpointer user_data,
- GObject *weak_object)
-{
- EmpathyTpTube *tube = EMPATHY_TP_TUBE (weak_object);
- EmpathyTpTubeAcceptData *data = (EmpathyTpTubeAcceptData *) user_data;
- EmpathyTpTubeAddress eaddress;
-
- eaddress.type = data->type;
-
- if (error)
- {
- DEBUG ("Error accepting tube: %s", error->message);
- data->callback (tube, NULL, error, data->user_data);
- return;
- }
-
- switch (eaddress.type)
- {
- case TP_SOCKET_ADDRESS_TYPE_UNIX:
- case TP_SOCKET_ADDRESS_TYPE_ABSTRACT_UNIX:
- eaddress.a.socket.path = g_value_get_boxed (address);
- break;
- case TP_SOCKET_ADDRESS_TYPE_IPV4:
- case TP_SOCKET_ADDRESS_TYPE_IPV6:
- dbus_g_type_struct_get (address,
- 0, &eaddress.a.inet.hostname,
- 1, &eaddress.a.inet.port, G_MAXUINT);
- break;
- }
-
- data->callback (tube, &eaddress, NULL, data->user_data);
-}
-
-/**
- * empathy_tp_tube_accept_stream_tube:
- * @tube: an #EmpathyTpTube
- * @type: the type of address the connection manager should listen on
- * @callback: called when the tube has been accepted
- * @user_data: arbitrary user-supplied data passed to the callback
- *
- * Accepts @tube of ChannelType StreamTube and call @callback once it's done.
- */
-void
-empathy_tp_tube_accept_stream_tube (EmpathyTpTube *tube,
- TpSocketAddressType type,
- EmpathyTpTubeAcceptStreamTubeCb *callback,
- gpointer user_data)
-{
- EmpathyTpTubePriv *priv = GET_PRIV (tube);
- GValue *control_param;
- EmpathyTpTubeAcceptData *data;
-
- g_return_if_fail (EMPATHY_IS_TP_TUBE (tube));
-
- DEBUG ("Accepting stream tube");
- /* FIXME allow other acls */
- control_param = tp_g_value_slice_new (G_TYPE_STRING);
-
- data = new_empathy_tp_tube_accept_data (type, callback, user_data);
-
- tp_cli_channel_type_stream_tube_call_accept (
- priv->channel, -1, type, TP_SOCKET_ACCESS_CONTROL_LOCALHOST,
- control_param, tp_tube_accept_stream_cb, data,
- free_empathy_tp_tube_accept_data, G_OBJECT (tube));
-
- tp_g_value_slice_free (control_param);
-}
-
-/**
- * EmpathyTpTubeReadyCb:
- * @tube: an #EmpathyTpTube
- * @error: %NULL on success, or the reason why the tube can't be ready
- * @user_data: the @user_data passed to empathy_tp_tube_call_when_ready()
- * @weak_object: the @weak_object passed to
- * empathy_tp_tube_call_when_ready()
- *
- * Called as the result of empathy_tp_tube_call_when_ready(). If the
- * tube's properties could be retrieved,
- * @error is %NULL and @tube is considered to be ready. Otherwise, @error is
- * non-%NULL and @tube is not ready.
- */
-
-/**
- * empathy_tp_tube_call_when_ready:
- * @tube: an #EmpathyTpTube
- * @callback: called when the tube becomes ready
- * @user_data: arbitrary user-supplied data passed to the callback
- * @destroy: called to destroy @user_data
- * @weak_object: object to reference weakly; if it is destroyed, @callback
- * will not be called, but @destroy will still be called
- *
- * If @tube is ready for use, call @callback immediately, then return.
- * Otherwise, arrange for @callback to be called when @tube becomes
- * ready for use.
- */
-void
-empathy_tp_tube_call_when_ready (EmpathyTpTube *self,
- EmpathyTpTubeReadyCb *callback,
- gpointer user_data,
- GDestroyNotify destroy,
- GObject *weak_object)
-{
- EmpathyTpTubePriv *priv = GET_PRIV (self);
-
- g_return_if_fail (self != NULL);
- g_return_if_fail (callback != NULL);
-
- if (priv->ready)
- {
- callback (self, NULL, user_data, weak_object);
- if (destroy != NULL)
- destroy (user_data);
- }
- else
- {
- priv->ready_callbacks = g_slist_prepend (priv->ready_callbacks,
- ready_cb_data_new (self, callback, user_data, destroy, weak_object));
- }
-}
diff --git a/libempathy/empathy-tp-tube.h b/libempathy/empathy-tp-tube.h
deleted file mode 100644
index 79cffa1a2..000000000
--- a/libempathy/empathy-tp-tube.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
- * Elliot Fairweather <elliot.fairweather@collabora.co.uk>
- */
-
-#ifndef __EMPATHY_TP_TUBE_H__
-#define __EMPATHY_TP_TUBE_H__
-
-#include <glib-object.h>
-
-#include <telepathy-glib/channel.h>
-
-#include "empathy-contact.h"
-
-G_BEGIN_DECLS
-
-#define EMPATHY_TYPE_TP_TUBE (empathy_tp_tube_get_type ())
-#define EMPATHY_TP_TUBE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), \
- EMPATHY_TYPE_TP_TUBE, EmpathyTpTube))
-#define EMPATHY_TP_TUBE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \
- EMPATHY_TYPE_TP_TUBE, EmpathyTpTubeClass))
-#define EMPATHY_IS_TP_TUBE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), \
- EMPATHY_TYPE_TP_TUBE))
-#define EMPATHY_IS_TP_TUBE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
- EMPATHY_TYPE_TP_TUBE))
-#define EMPATHY_TP_TUBE_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), \
- EMPATHY_TYPE_TP_TUBE, EmpathyTpTubeClass))
-
-typedef struct _EmpathyTpTube EmpathyTpTube;
-typedef struct _EmpathyTpTubeClass EmpathyTpTubeClass;
-
-typedef struct {
- TpSocketAddressType type;
- union {
- struct socket_address_t {
- GArray *path;
- } socket;
- struct inet_address_t {
- gchar *hostname;
- guint port;
- } inet;
- } a;
-} EmpathyTpTubeAddress;
-
-struct _EmpathyTpTube {
- GObject parent;
- gpointer priv;
-};
-
-struct _EmpathyTpTubeClass {
- GObjectClass parent_class;
-};
-
-GType empathy_tp_tube_get_type (void) G_GNUC_CONST;
-EmpathyTpTube *empathy_tp_tube_new (TpChannel *channel);
-EmpathyTpTube *empathy_tp_tube_new_stream_tube (EmpathyContact *contact,
- TpSocketAddressType type,
- const gchar *hostname,
- guint port,
- const gchar *service,
- GHashTable *parameters);
-
-typedef void (EmpathyTpTubeAcceptStreamTubeCb) (EmpathyTpTube *tube,
- const EmpathyTpTubeAddress *address,
- const GError *error,
- gpointer user_data);
-
-void empathy_tp_tube_accept_stream_tube (EmpathyTpTube *tube,
- TpSocketAddressType type,
- EmpathyTpTubeAcceptStreamTubeCb *callback,
- gpointer user_data);
-
-typedef void (EmpathyTpTubeReadyCb)
- (EmpathyTpTube *tube,
- const GError *error,
- gpointer user_data,
- GObject *weak_object);
-
-void empathy_tp_tube_call_when_ready (EmpathyTpTube *tube,
- EmpathyTpTubeReadyCb *callback,
- gpointer user_data,
- GDestroyNotify destroy,
- GObject *weak_object);
-
-G_END_DECLS
-
-#endif /* __EMPATHY_TP_TUBE_H__ */
diff --git a/libempathy/empathy-tube-handler.c b/libempathy/empathy-tube-handler.c
index bbb7e11a6..2b50ec852 100644
--- a/libempathy/empathy-tube-handler.c
+++ b/libempathy/empathy-tube-handler.c
@@ -31,7 +31,6 @@
#include <extensions/extensions.h>
-#include "empathy-tp-tube.h"
#include "empathy-tube-handler.h"
#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
@@ -59,21 +58,10 @@ typedef struct
gchar *channel;
guint handle_type;
guint handle;
- EmpathyTpTube *tube;
+ TpChannel *tube;
} IdleData;
static void
-tube_ready_cb (EmpathyTpTube *tube,
- const GError *error,
- gpointer user_data,
- GObject *weak_object)
-{
- IdleData *idle_data = user_data;
-
- g_signal_emit (idle_data->thandler, signals[NEW_TUBE], 0, tube);
-}
-
-static void
tube_ready_destroy_notify (gpointer data)
{
IdleData *idle_data = data;
@@ -100,9 +88,7 @@ channel_ready_cb (TpChannel *channel,
return;
}
- idle_data->tube = empathy_tp_tube_new (channel);
- empathy_tp_tube_call_when_ready (idle_data->tube, tube_ready_cb, idle_data,
- tube_ready_destroy_notify, NULL);
+ g_signal_emit (idle_data->thandler, signals[NEW_TUBE], 0, idle_data->tube);
g_object_unref (channel);
}
@@ -183,7 +169,7 @@ empathy_tube_handler_class_init (EmpathyTubeHandlerClass *klass)
signals[NEW_TUBE] =
g_signal_new ("new-tube", G_OBJECT_CLASS_TYPE (klass),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1, EMPATHY_TYPE_TP_TUBE);
+ G_TYPE_NONE, 1, TP_TYPE_CHANNEL);
}
static void
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c
index 47746f536..fca7fcb5f 100644
--- a/libempathy/empathy-utils.c
+++ b/libempathy/empathy-utils.c
@@ -193,7 +193,7 @@ empathy_xml_node_get_child_content (xmlNodePtr node,
if (l) {
return xmlNodeGetContent (l);
}
-
+
return NULL;
}
@@ -220,10 +220,10 @@ empathy_xml_node_find_child_prop_value (xmlNodePtr node,
if (prop && strcmp (prop, prop_value) == 0) {
found = l;
}
-
+
xmlFree (prop);
}
-
+
return found;
}
diff --git a/po/POTFILES.in b/po/POTFILES.in
index e80a29c67..cfd921533 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -40,6 +40,7 @@ libempathy-gtk/empathy-log-window.c
[type: gettext/glade]libempathy-gtk/empathy-log-window.ui
[type: gettext/glade]libempathy-gtk/empathy-new-message-dialog.ui
libempathy-gtk/empathy-presence-chooser.c
+libempathy-gtk/empathy-sound.c
libempathy-gtk/empathy-status-preset-dialog.c
[type: gettext/glade]libempathy-gtk/empathy-status-preset-dialog.ui
libempathy-gtk/empathy-theme-boxes.c
diff --git a/po/bn_IN.po b/po/bn_IN.po
index dc88cc731..b14723405 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -2,15 +2,16 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
-# Runa Bhattacharjee <runab@redhat.com>, 2008.
+# Runa Bhattacharjee <runab@redhat.com>, 2008, 2009.
msgid ""
msgstr ""
"Project-Id-Version: bn_IN\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-21 03:59+0000\n"
-"PO-Revision-Date: 2008-08-21 19:43+0530\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=empathy&component=general\n"
+"POT-Creation-Date: 2009-06-19 11:50+0000\n"
+"PO-Revision-Date: 2009-06-19 18:45+0530\n"
"Last-Translator: Runa Bhattacharjee <runab@redhat.com>\n"
-"Language-Team: Bengali INDIA <fedora-trans-bn_IN@redhat.com>\n"
+"Language-Team: Bengali INDIA <discuss@lists.ankur.org.in>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -40,8 +41,11 @@ msgid "Chat window theme"
msgstr "আলাপন উইন্ডোর থিম"
#: ../data/empathy.schemas.in.h:4
-msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
-msgstr "বিভিন্ন ভাষার জন্য ব্যবহারযোগ্য বানান-পরীক্ষণ ব্যবস্থার তালিকা, কমা চিহ্ন দ্বারা বিভক্ত (উদাহরণস্বরূপ, en, fr, nl)।"
+msgid ""
+"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr ""
+"বিভিন্ন ভাষার জন্য ব্যবহারযোগ্য বানান-পরীক্ষণ ব্যবস্থার তালিকা, কমা চিহ্ন দ্বারা "
+"বিভক্ত (উদাহরণস্বরূপ, en, fr, nl)।"
#: ../data/empathy.schemas.in.h:5
msgid "Compact contact list"
@@ -56,809 +60,1277 @@ msgid "Default directory to select an avatar image from"
msgstr "ব্যবহারকারীর অবতার চিহ্নকারী ছবি নির্ধারণের জন্য ব্যবহৃত ডিফল্ট ডিরেক্টরি"
#: ../data/empathy.schemas.in.h:8
-msgid "Empathy should auto-connect on startup"
-msgstr "আরম্ভকালে Empathy দ্বারা স্বয়ংক্রিয়রূপে সংযোগ স্থাপন করা হবে"
+msgid "Disable popup notifications when away"
+msgstr "অনুপস্থিত হলে পপ-আপ সূচনাবার্তা নিষ্ক্রিয় করা হবে"
#: ../data/empathy.schemas.in.h:9
-msgid "Empathy should use the avatar of the contact as the chat window icon"
-msgstr ""
+msgid "Disable sounds when away"
+msgstr "অনুপস্থিত হলে শব্দ নিষ্ক্রিয় করা হবে"
#: ../data/empathy.schemas.in.h:10
-msgid "Enable popup when contact is available"
-msgstr "পরিচিত ব্যক্তি উপস্থিত হলে পপ-আপ সক্রিয় করা হবে"
+msgid "Empathy can publish the user's location"
+msgstr ""
#: ../data/empathy.schemas.in.h:11
-msgid "Enable sound when away"
-msgstr "অনুপস্থিত হলে শব্দ সক্রিয় করা হবে"
+msgid "Empathy can use the GPS to guess the location"
+msgstr ""
#: ../data/empathy.schemas.in.h:12
-msgid "Enable sound when busy"
-msgstr "ব্যস্ত অবস্থায় শব্দ সক্রিয় করা হবে"
+msgid "Empathy can use the cellular network to guess the location"
+msgstr ""
#: ../data/empathy.schemas.in.h:13
+msgid "Empathy can use the network to guess the location"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
+msgid "Empathy default download folder"
+msgstr "Empathy-র ডিফল্ট ডাউনলোড ফোল্ডার"
+
+#: ../data/empathy.schemas.in.h:15
+msgid "Empathy has asked about importing accounts"
+msgstr "Empathy দ্বারা অ্যাকাউন্ট ইম্পোর্ট সম্পর্কে জিজ্ঞাসা করা হয়েছে"
+
+#: ../data/empathy.schemas.in.h:16
+msgid "Empathy should auto-connect on startup"
+msgstr "আরম্ভকালে Empathy দ্বারা স্বয়ংক্রিয়রূপে সংযোগ স্থাপন করা হবে"
+
+#: ../data/empathy.schemas.in.h:17
+#, fuzzy
+msgid "Empathy should reduce the location's accuracy"
+msgstr "আরম্ভকালে Empathy দ্বারা স্বয়ংক্রিয়রূপে সংযোগ স্থাপন করা হবে"
+
+#: ../data/empathy.schemas.in.h:18
+msgid "Empathy should use the avatar of the contact as the chat window icon"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:19
+msgid "Enable popup notifications for new messages"
+msgstr "নতুন বার্তার জন্য পপ-আপ সূচনাবার্তা সক্রিয় করা হবে"
+
+#: ../data/empathy.schemas.in.h:20
msgid "Enable spell checker"
msgstr "বানা পরীক্ষণ সক্রিয় করা হবে"
-#: ../data/empathy.schemas.in.h:14
+#: ../data/empathy.schemas.in.h:21
msgid "Hide main window"
msgstr "প্রধান উইন্ডো আড়াল করা হবে"
-#: ../data/empathy.schemas.in.h:15
+#: ../data/empathy.schemas.in.h:22
msgid "Hide the main window."
msgstr "প্রধান উইন্ডো আড়াল করা হবে।"
-#: ../data/empathy.schemas.in.h:16
+#: ../data/empathy.schemas.in.h:23
msgid "NetworkManager should be used"
msgstr "NetworkManager ব্যবহার করা হবে"
-#: ../data/empathy.schemas.in.h:17
+#: ../data/empathy.schemas.in.h:24
msgid "Nick completed character"
msgstr ""
-#: ../data/empathy.schemas.in.h:18
+#: ../data/empathy.schemas.in.h:25
msgid "Open new chats in separate windows"
msgstr "নতুন আলাপন আরম্ভ হলে পৃথক উইন্ডোর মধ্যে প্রদর্শন করা হবে"
-#: ../data/empathy.schemas.in.h:19
+#: ../data/empathy.schemas.in.h:26
+msgid "Path of the adium theme to use"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:27
+#, fuzzy
+msgid "Path of the adium theme to use if the theme used for chat is adium."
+msgstr "চ্যাট-রুমের জন্য থিম ব্যবহার করা হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:28
+msgid "Play a sound for incoming messages"
+msgstr "নতুন বার্তা প্রাপ্ত হলে শব্দ বাজানো হবে"
+
+#: ../data/empathy.schemas.in.h:29
+msgid "Play a sound for new conversations"
+msgstr "নতুন আলাপনের জন্য শব্দ বাজানো হবে"
+
+#: ../data/empathy.schemas.in.h:30
+msgid "Play a sound for outgoing messages"
+msgstr "নতুন বার্তা পাঠানো হলে শব্দ বাজানো হবে"
+
+#: ../data/empathy.schemas.in.h:31
+msgid "Play a sound when a contact logs in"
+msgstr "পরিচিত ব্যক্তি লগ-ইন করলে শব্দ বাজানো হবে"
+
+#: ../data/empathy.schemas.in.h:32
+msgid "Play a sound when a contact logs out"
+msgstr "পরিচিত ব্যক্তি লগ-আউট করলে শব্দ বাজানো হবে"
+
+#: ../data/empathy.schemas.in.h:33
+msgid "Play a sound when we log in"
+msgstr "নিজে লগ-ইন করলে শব্দ বাজানো হবে"
+
+#: ../data/empathy.schemas.in.h:34
+msgid "Play a sound when we log out"
+msgstr "নিজে লগ-আউট করলে শব্দ বাজানো হবে"
+
+#: ../data/empathy.schemas.in.h:35
+msgid "Popup notifications if the chat isn't focused"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:36
msgid "Salut account is created"
msgstr "Salut অ্যাকাউন্ট নির্মিত হয়েছে"
-#: ../data/empathy.schemas.in.h:20
+#: ../data/empathy.schemas.in.h:37
msgid "Show avatars"
msgstr "অবতারের ছবি প্রদর্শন করা হবে"
-#: ../data/empathy.schemas.in.h:21
+#: ../data/empathy.schemas.in.h:38
+#, fuzzy
+msgid "Show contact list in rooms"
+msgstr "পরিচিত ব্যক্তিদের তালিকা প্রদর্শন করা হবে (_S)"
+
+#: ../data/empathy.schemas.in.h:39
msgid "Show hint about closing the main window"
msgstr "প্রধান উইন্ডো বন্ধ করার জন্য ইঙ্গিত প্রদর্শন করা হবে"
-#: ../data/empathy.schemas.in.h:22
+#: ../data/empathy.schemas.in.h:40
msgid "Show offline contacts"
msgstr "অফ-লাইন অবস্থায় থাকা পরিচিত ব্যক্তিদের তালিকা প্রদর্শন করা হবে"
-#: ../data/empathy.schemas.in.h:23
+#: ../data/empathy.schemas.in.h:41
msgid "Spell checking languages"
msgstr "ভাষার জন্য বানা পরীক্ষণ"
-#: ../data/empathy.schemas.in.h:24
+#: ../data/empathy.schemas.in.h:42
+msgid "The default folder to save file transfers in."
+msgstr "বিনিময় করা সামগ্রী সংরক্ষণের জন্য চিহ্নিত ফোল্ডার।"
+
+#: ../data/empathy.schemas.in.h:43
msgid "The last directory that an avatar image was chosen from."
msgstr "সর্বশেষ অবতারের জন্য ব্যবহৃথ ছবিটি যে ডিরেক্টরি থেকে নির্বাচন করা হয়েছে।"
-#: ../data/empathy.schemas.in.h:25
+#: ../data/empathy.schemas.in.h:44
msgid "The theme that is used to display the conversation in chat windows."
msgstr ""
-#: ../data/empathy.schemas.in.h:26
+#: ../data/empathy.schemas.in.h:45
msgid "Use graphical smileys"
msgstr "গ্রাফিক্যাল স্মাইলি ব্যবহার করুন"
-#: ../data/empathy.schemas.in.h:27
+#: ../data/empathy.schemas.in.h:46
msgid "Use notification sounds"
msgstr "সূচনামূলক শব্দ ব্যবহার করা হবে"
-#: ../data/empathy.schemas.in.h:28
+#: ../data/empathy.schemas.in.h:47
msgid "Use theme for chat rooms"
+msgstr "চ্যাট-রুমের জন্য থিম প্রয়োগ করা হবে"
+
+#: ../data/empathy.schemas.in.h:48
+#, fuzzy
+msgid "Whether or not Empathy can publish the user's location to his contacts."
msgstr ""
+"পরিচিতি তালিকায় উপস্থিত ব্যক্তিরা অফ-লাইন থাকলে, তালিকায় তাদের প্রদর্শন করা হবে "
+"কি না।"
-#: ../data/empathy.schemas.in.h:29
+#: ../data/empathy.schemas.in.h:49
+msgid "Whether or not Empathy can use the GPS to guess the location."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:50
+msgid ""
+"Whether or not Empathy can use the cellular network to guess the location."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:51
+#, fuzzy
+msgid "Whether or not Empathy can use the network to guess the location."
+msgstr "নতুন আলাপন সম্পর্কে সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:52
+msgid ""
+"Whether or not Empathy has asked about importing accounts from other "
+"programs."
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:53
msgid ""
"Whether or not Empathy should automatically log in to your accounts on "
"startup."
msgstr "Empathy প্রারম্ভকালে স্বয়ংক্রিয়রূপে সকল অ্যাকাউন্টে লগ-ইন করা হবে কি না।"
-#: ../data/empathy.schemas.in.h:30
+#: ../data/empathy.schemas.in.h:54
+#, fuzzy
+msgid ""
+"Whether or not Empathy should reduce the location's accuracy for privacy "
+"reasons."
+msgstr "Empathy প্রারম্ভকালে স্বয়ংক্রিয়রূপে সকল অ্যাকাউন্টে লগ-ইন করা হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:55
msgid ""
"Whether or not Empathy should use the avatar of the contact as the chat "
"window icon."
msgstr ""
-#: ../data/empathy.schemas.in.h:31
-msgid "Whether or not the Salut account has been created on the first Empathy run."
+#: ../data/empathy.schemas.in.h:56
+msgid ""
+"Whether or not the Salut account has been created on the first Empathy run."
msgstr "Empathy প্রথমবার সঞ্চালনের সময় Salut অ্যাকাউন্ট নির্মিত হয়েছে কি না।"
-#: ../data/empathy.schemas.in.h:32
+#: ../data/empathy.schemas.in.h:57
msgid ""
"Whether or not the network manager should be used to automatically "
"disconnect/reconnect."
-msgstr "স্বয়ংক্রিয়রূপে সংযোগ স্থাপন/বিচ্ছিন্ন করার জন্য network manager প্রয়োগ করা হবে কি না।"
+msgstr ""
+"স্বয়ংক্রিয়রূপে সংযোগ স্থাপন/বিচ্ছিন্ন করার জন্য network manager প্রয়োগ করা হবে কি না।"
-#: ../data/empathy.schemas.in.h:33
+#: ../data/empathy.schemas.in.h:58
msgid ""
"Whether or not to check words typed against the languages you want to check "
"with."
msgstr ""
-#: ../data/empathy.schemas.in.h:34
-msgid "Whether or not to convert smileys into graphical images in conversations."
+#: ../data/empathy.schemas.in.h:59
+msgid ""
+"Whether or not to convert smileys into graphical images in conversations."
msgstr ""
-#: ../data/empathy.schemas.in.h:35
-msgid "Whether or not to play a sound when messages arrive."
-msgstr "বার্তা প্রাপ্ত হলে শব্দ বাজানো হবে কি না।"
+#: ../data/empathy.schemas.in.h:60
+msgid ""
+"Whether or not to play a sound to notify for contacts logging in the network."
+msgstr ""
+"পরিচিত ব্যক্তিরা নেটওয়ার্কে লগ-ইন করলে, সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
-#: ../data/empathy.schemas.in.h:36
-msgid "Whether or not to play sounds when away."
-msgstr "অনুপস্থিত অবস্থায় শব্দ বাজানো হবে কি না।"
+#: ../data/empathy.schemas.in.h:61
+msgid ""
+"Whether or not to play a sound to notify for contacts logging off the "
+"network."
+msgstr ""
+"পরিচিত ব্যক্তিরা নেটওয়ার্কে লগ-অফ করলে, সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
-#: ../data/empathy.schemas.in.h:37
-msgid "Whether or not to play sounds when busy."
-msgstr "ব্যস্ত অবস্থায় শব্দ বাজানো হবে কি না।"
+#: ../data/empathy.schemas.in.h:62
+msgid "Whether or not to play a sound to notify for events."
+msgstr "বিভিন্ন ঘটনা সম্পর্কে সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
-#: ../data/empathy.schemas.in.h:38
-msgid "Whether or not to show a popup when a contact becomes available."
+#: ../data/empathy.schemas.in.h:63
+msgid "Whether or not to play a sound to notify for incoming messages."
+msgstr "প্রাপ্ত বার্তা সম্পর্কে সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:64
+msgid "Whether or not to play a sound to notify for new conversations."
+msgstr "নতুন আলাপন সম্পর্কে সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:65
+msgid "Whether or not to play a sound to notify for outgoing messages."
+msgstr "প্রেরিত বার্তা সম্পর্কে সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:66
+msgid "Whether or not to play a sound when logging in a network."
+msgstr "নেটওয়ার্কে লগ-ইন করলে সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:67
+msgid "Whether or not to play a sound when logging off a network."
+msgstr "নেটওয়ার্কে লগ-অফ করলে সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:68
+msgid "Whether or not to play sound notifications when away or busy."
+msgstr "অনুপস্থিত অথবা ব্যস্ত থাকলে সূচনাপ্রদানের জন্য শব্দ বাজানো হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:69
+msgid ""
+"Whether or not to show a popup notification when receiving a new message "
+"even if the chat is already opened, but not focused."
msgstr ""
-#: ../data/empathy.schemas.in.h:39
+#: ../data/empathy.schemas.in.h:70
+msgid ""
+"Whether or not to show a popup notification when receiving a new message."
+msgstr "নতুন বার্তা প্রাপ্ত করা হলে পপ-আপের মাধ্যমে সূচনা প্রদান করা হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:71
msgid ""
"Whether or not to show avatars for contacts in the contact list and chat "
"windows."
msgstr ""
-#: ../data/empathy.schemas.in.h:40
+#: ../data/empathy.schemas.in.h:72
msgid "Whether or not to show contacts that are offline in the contact list."
msgstr ""
+"পরিচিতি তালিকায় উপস্থিত ব্যক্তিরা অফ-লাইন থাকলে, তালিকায় তাদের প্রদর্শন করা হবে "
+"কি না।"
-#: ../data/empathy.schemas.in.h:41
+#: ../data/empathy.schemas.in.h:73
+msgid "Whether or not to show popup notifications when away or busy."
+msgstr "অনুপস্থিত অথবা ব্যস্ত থাকলে পপ সূচনাবার্তা প্রদর্শন করা হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:74
+#, fuzzy
+msgid "Whether or not to show the contact list in chat rooms."
+msgstr "সংকুচিত মোডে, পরিচিতি তালিকা প্রদর্শন করা হবে কি না।"
+
+#: ../data/empathy.schemas.in.h:75
msgid ""
"Whether or not to show the message dialog about closing the main window with "
"the 'x' button in the title bar."
msgstr ""
-#: ../data/empathy.schemas.in.h:42
+#: ../data/empathy.schemas.in.h:76
msgid "Whether to show the contact list in compact mode or not."
-msgstr ""
+msgstr "সংকুচিত মোডে, পরিচিতি তালিকা প্রদর্শন করা হবে কি না।"
-#: ../data/empathy.schemas.in.h:43
+#: ../data/empathy.schemas.in.h:77
msgid "Whether to use the theme for chat rooms or not."
-msgstr ""
+msgstr "চ্যাট-রুমের জন্য থিম ব্যবহার করা হবে কি না।"
-#: ../data/empathy.schemas.in.h:44
+#: ../data/empathy.schemas.in.h:78
msgid ""
"Which criterium to use when sorting the contact list. Default is to use sort "
"by the contact's name with the value \"name\". A value of \"state\" will "
"sort the contact list by state."
msgstr ""
-#: ../libempathy/empathy-tp-contact-list.c:731 ../src/empathy.c:248
+#: ../libempathy/empathy-ft-handler.c:838
+msgid "The hash of the received file and the sent one do not match"
+msgstr ""
+
+#: ../libempathy/empathy-ft-handler.c:1098
+msgid "File transfer not supported by remote contact"
+msgstr ""
+
+#: ../libempathy/empathy-ft-handler.c:1156
+msgid "The selected file is not a regular file"
+msgstr ""
+
+#: ../libempathy/empathy-ft-handler.c:1165
+msgid "The selected file is empty"
+msgstr ""
+
+#: ../libempathy/empathy-tp-contact-list.c:757 ../src/empathy.c:287
msgid "People nearby"
msgstr "নিকটবর্তী ব্যক্তিরা"
-#: ../libempathy/empathy-utils.c:345
+#: ../libempathy/empathy-tp-file.c:279
+msgid "Socket type not supported"
+msgstr ""
+
+#: ../libempathy/empathy-tp-file.c:398
+msgid "No reason was specified"
+msgstr "কোনো কারণ উল্লিখিত হয়নি"
+
+#: ../libempathy/empathy-tp-file.c:401
+msgid "The change in state was requested"
+msgstr "অবস্থার পরিবর্তন অনুরোধ করা হয়েছে"
+
+#: ../libempathy/empathy-tp-file.c:404
+msgid "You canceled the file transfer"
+msgstr "ফাইল বিনিময়ের কাজ আপনি বাতিল করেছেন"
+
+#: ../libempathy/empathy-tp-file.c:407
+msgid "The other participant canceled the file transfer"
+msgstr "ফাইল বিনিময়ের কাজ অন্য ব্যবহারকারী বাতিল করেছেন"
+
+#: ../libempathy/empathy-tp-file.c:410
+msgid "Error while trying to transfer the file"
+msgstr "ফাইল বিনিময় করতে সমস্যা"
+
+#: ../libempathy/empathy-tp-file.c:413
+msgid "The other participant is unable to transfer the file"
+msgstr "অন্য ব্যবহারকারী ফাইল বিনিময় করতে সক্ষম হননি"
+
+#: ../libempathy/empathy-tp-file.c:416
+msgid "Unknown reason"
+msgstr "অজানা কারণ"
+
+#: ../libempathy/empathy-utils.c:274
msgid "Available"
msgstr "উপস্থিত"
-#: ../libempathy/empathy-utils.c:347
+#: ../libempathy/empathy-utils.c:276
msgid "Busy"
msgstr "ব্যস্ত"
-#: ../libempathy/empathy-utils.c:350
+#: ../libempathy/empathy-utils.c:279
msgid "Away"
msgstr "অনুপস্থিত"
-#: ../libempathy/empathy-utils.c:352
+#: ../libempathy/empathy-utils.c:281
msgid "Hidden"
msgstr "আড়ালে"
-#: ../libempathy/empathy-utils.c:355
+#: ../libempathy/empathy-utils.c:283
msgid "Offline"
msgstr "অফ-লাইন"
-#: ../libempathy-gtk/empathy-account-chooser.c:337
+#: ../libempathy/empathy-time.c:137
+#, c-format
+msgid "%d second ago"
+msgid_plural "%d seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:142
+#, c-format
+msgid "%d minute ago"
+msgid_plural "%d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:147
+#, c-format
+msgid "%d hour ago"
+msgid_plural "%d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:152
+#, c-format
+msgid "%d day ago"
+msgid_plural "%d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:157
+#, c-format
+msgid "%d week ago"
+msgid_plural "%d weeks ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:162
+#, c-format
+msgid "%d month ago"
+msgid_plural "%d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:167
+msgid "in the future"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-chooser.c:419
msgid "All"
msgstr "সকল"
#: ../libempathy-gtk/empathy-account-widget.c:302
-#: ../libempathy-gtk/empathy-account-widget.c:347
+#: ../libempathy-gtk/empathy-account-widget.c:354
#, c-format
msgid "%s:"
msgstr "%s:"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-generic.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
-msgid "<b>Advanced</b>"
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:1
+#, fuzzy
+msgid "Advanced"
msgstr "<b>উন্নত বিকল্প</b>"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
-msgid "Forget password and clear the entry."
-msgstr ""
-
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:3
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:2
msgid "Pass_word:"
msgstr "পাসওয়ার্ড: (_w)"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:3
msgid "Screen _Name:"
msgstr "পর্দায় ব্যবহৃত নাম: (_N)"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:7
msgid "_Port:"
msgstr "পোর্ট: (_P)"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
-#: ../src/empathy-new-chatroom-dialog.glade.h:10
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:6
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
+#: ../src/empathy-new-chatroom-dialog.ui.h:9
msgid "_Server:"
msgstr "সার্ভার: (_S)"
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:3
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:2
msgid "Login I_D:"
msgstr "লগ-ইন ID: (_D)"
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:2
msgid "ICQ _UIN:"
msgstr "ICQ _UIN:"
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:5
msgid "_Charset:"
msgstr "ক্যারসেট: (_C)"
-#: ../libempathy-gtk/empathy-account-widget-irc.c:245
+#: ../libempathy-gtk/empathy-account-widget-irc.c:241
msgid "New Network"
msgstr "নতুন নেটওয়ার্ক"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
-msgid "<b>Network</b>"
-msgstr "<b>নেটওয়ার্ক</b>"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
-msgid "<b>Servers</b>"
-msgstr "<b>সার্ভার</b>"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1
msgid "Charset:"
msgstr "ক্যারসেট:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
-msgid "Create a new IRC network"
-msgstr "নতুন IRC নেটওয়ার্ক নির্মাণ করুন"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
-msgid "Edit the selected IRC network"
-msgstr "নির্বাচিত IRC নেটওয়ার্কের বৈশিষ্ট্য পরিবর্তন করুন"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
msgid "Network"
msgstr "নেটওয়ার্ক"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
msgid "Network:"
msgstr "নেটওয়ার্ক:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
msgid "Nickname:"
msgstr "উপনাম (Nickname):"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
msgid "Password:"
msgstr "পাসওয়ার্ড:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
msgid "Quit message:"
msgstr "প্রস্থানকালে প্রদর্শিত বার্তা:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
msgid "Real name:"
msgstr "নাম:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
-msgid "Remove the selected IRC network"
-msgstr "নির্বাচিত IRC নেটওয়ার্ক মুছে ফেলুন"
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+#, fuzzy
+msgid "Servers"
+msgstr "সার্ভার"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
-msgid "<b>Override server settings</b>"
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3
+#, fuzzy
+msgid "Override server settings"
msgstr "<b>সার্ভারের বৈশিষ্ট্য উপেক্ষা করা হবে</b>"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:5
msgid "Pri_ority:"
msgstr "গুরুত্ব: (_o))"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:6
msgid "Reso_urce:"
-msgstr ""
+msgstr "সামগ্রী: (_u)"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
msgid "Use old SS_L"
msgstr "পুরোনো SSL ব্যবহার করা হবে (_L)"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:8
msgid "_Encryption required (TLS/SSL)"
msgstr "এনক্রিপশন আবশ্যক (TLS/SSL) (_E)"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:9
msgid "_Ignore SSL certificate errors"
msgstr "SSL সার্টিফিকেট সংক্রান্ত সমস্যা উপেক্ষা করা হবে (_I)"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:2
msgid "_Email:"
msgstr "ই-মেইল: (_E)"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
-msgid "_First Name: "
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:3
+msgid "_First Name:"
msgstr "নাম: (_F)"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:4
msgid "_Jabber ID:"
msgstr "_Jabber ID:"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:5
msgid "_Last Name:"
msgstr "পদবি: (_L)"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
-#: ../src/empathy-chatrooms-window.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:6
msgid "_Nickname:"
msgstr "উপনাম: (_N)"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:7
msgid "_Published Name:"
msgstr "প্রকাশিত নাম: (_P)"
#. look up the DNS SRV record at the service's domain for the host name of a STUN server.
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:3
msgid "Discover STUN"
-msgstr ""
+msgstr "STUN অনুসন্ধান করা হবে"
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:5
msgid "STUN Server:"
msgstr "STUN সার্ভার:"
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:6
msgid "STUN port:"
msgstr "STUN পোর্ট:"
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:7
msgid "_Username:"
msgstr "ব্যবহারকারীর নাম: (_U)"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:3
msgid "Use _Yahoo Japan"
msgstr "Yahoo Japan ব্যবহার করা হবে (_Y)"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:4
msgid "Yahoo I_D:"
msgstr "Yahoo I_D:"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6
msgid "_Ignore conference and chatroom invitations"
-msgstr ""
+msgstr "বৈঠক ও চ্যাট-রুম থেকে প্রাপ্ত আমন্ত্রণগুলি উপেক্ষা করা হবে (_I)"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:8
msgid "_Room List locale:"
-msgstr ""
+msgstr "রুম তালিকার লোকেইল: (_R)"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+#: ../libempathy-gtk/empathy-avatar-chooser.c:525
+msgid "Couldn't convert image"
+msgstr "ছবি রূপান্তর করতে ব্যর্থ"
+
+#: ../libempathy-gtk/empathy-avatar-chooser.c:450
+msgid "None of the accepted image formats is supported on your system"
+msgstr "গ্রহণযোগ্য ছবির বিন্যাসগুলির মধ্যে একটিও আপনার সিস্টেম দ্বারা সমর্থিত হয় না"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:457
+#: ../libempathy-gtk/empathy-avatar-chooser.c:933
msgid "Select Your Avatar Image"
-msgstr ""
+msgstr "নিজের অবতারের ছবি নির্বাচন করুন"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:460
+#: ../libempathy-gtk/empathy-avatar-chooser.c:936
msgid "No Image"
msgstr "ছবি ব্যবহৃত হবে না"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:520
+#: ../libempathy-gtk/empathy-avatar-chooser.c:998
msgid "Images"
msgstr "ছবি"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:524
+#: ../libempathy-gtk/empathy-avatar-chooser.c:1002
msgid "All Files"
msgstr "সর্বধরনের ফাইল"
-#: ../libempathy-gtk/empathy-avatar-image.c:294
+#: ../libempathy-gtk/empathy-avatar-image.c:324
msgid "Click to enlarge"
msgstr "বড় মাপে প্রদর্শনের জন্য ক্লিক করুন"
-#: ../libempathy-gtk/empathy-chat.c:497
+#: ../libempathy-gtk/empathy-chat.c:186
+msgid "Failed to reconnect this chat"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:404
+msgid "Unsupported command"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:539
msgid "offline"
msgstr "অফ-লাইন"
-#: ../libempathy-gtk/empathy-chat.c:500
+#: ../libempathy-gtk/empathy-chat.c:542
msgid "invalid contact"
msgstr "পরিচিত ব্যক্তির তথ্য বৈধ নয়"
-#: ../libempathy-gtk/empathy-chat.c:503
+#: ../libempathy-gtk/empathy-chat.c:545
msgid "permission denied"
msgstr "অনুমতি প্রদান করা হয়নি"
-#: ../libempathy-gtk/empathy-chat.c:506
+#: ../libempathy-gtk/empathy-chat.c:548
msgid "too long message"
msgstr "বার্তা অত্যাধিক লম্বা"
-#: ../libempathy-gtk/empathy-chat.c:509
+#: ../libempathy-gtk/empathy-chat.c:551
msgid "not implemented"
msgstr "প্রয়োগ করা হয়নি"
-#: ../libempathy-gtk/empathy-chat.c:512
+#: ../libempathy-gtk/empathy-chat.c:554
msgid "unknown"
msgstr "অজানা"
-#: ../libempathy-gtk/empathy-chat.c:516
+#: ../libempathy-gtk/empathy-chat.c:558
#, c-format
msgid "Error sending message '%s': %s"
msgstr "'%s' বার্তা পাঠাতে সমস্যা: %s"
-#: ../libempathy-gtk/empathy-chat.c:546
+#: ../libempathy-gtk/empathy-chat.c:588
#, c-format
msgid "Topic set to: %s"
-msgstr ""
+msgstr "নির্ধারিত বিষয়: %s"
-#: ../libempathy-gtk/empathy-chat.c:548
+#: ../libempathy-gtk/empathy-chat.c:590
msgid "No topic defined"
+msgstr "বিষয় নির্ধারিত হয়নি"
+
+#: ../libempathy-gtk/empathy-chat.c:959
+msgid "(No Suggestions)"
msgstr ""
-#: ../libempathy-gtk/empathy-chat.c:963
+#: ../libempathy-gtk/empathy-chat.c:1013
msgid "Insert Smiley"
msgstr "স্মাইলি চিহ্ন অন্তর্ভুক্ত করুন"
-#: ../libempathy-gtk/empathy-chat.c:979
+#. send button
+#: ../libempathy-gtk/empathy-chat.c:1031
+#: ../libempathy-gtk/empathy-ui-utils.c:1476
msgid "_Send"
msgstr "পাঠিয়ে দিন (_S)"
-#: ../libempathy-gtk/empathy-chat.c:1013
-msgid "_Check Word Spelling..."
-msgstr "শব্দের বানান পরীক্ষা করুন...(_C)"
+#: ../libempathy-gtk/empathy-chat.c:1065
+msgid "_Spelling Suggestions"
+msgstr ""
-#: ../libempathy-gtk/empathy-chat.c:1119
+#: ../libempathy-gtk/empathy-chat.c:1179
#, c-format
msgid "%s has joined the room"
-msgstr ""
+msgstr "%s রুমে এসেছেন"
-#: ../libempathy-gtk/empathy-chat.c:1122
+#: ../libempathy-gtk/empathy-chat.c:1182
#, c-format
msgid "%s has left the room"
-msgstr ""
+msgstr "%s রুম থেকে চলে গেছেন"
-#: ../libempathy-gtk/empathy-chat.c:1236 ../src/empathy-call-window.c:406
+#: ../libempathy-gtk/empathy-chat.c:1313 ../src/empathy-call-window.c:1199
msgid "Disconnected"
msgstr "বিচ্ছিন্ন"
-#: ../libempathy-gtk/empathy-chat.c:1608
+#: ../libempathy-gtk/empathy-chat.c:1742
msgid "Connected"
msgstr "সংযুক্ত"
-#: ../libempathy-gtk/empathy-chat.glade.h:1
-msgid "<b>Topic:</b>"
-msgstr "<b>বিষয়:</b>"
+#: ../libempathy-gtk/empathy-chat.c:1792
+#: ../libempathy-gtk/empathy-log-window.c:501
+msgid "Conversation"
+msgstr "আলাপন"
-#: ../libempathy-gtk/empathy-chat.glade.h:2
-msgid "Group Chat"
-msgstr ""
+#: ../libempathy-gtk/empathy-chat.ui.h:1 ../src/empathy-chat-window.c:471
+msgid "Topic:"
+msgstr "বিষয়:"
-#: ../libempathy-gtk/empathy-chat-view.c:430
+#: ../libempathy-gtk/empathy-chat-text-view.c:316
msgid "_Copy Link Address"
msgstr "লিঙ্ক দ্বারা চিহ্নিত ঠিকানা কপি করুন (_C)"
-#: ../libempathy-gtk/empathy-chat-view.c:438
+#: ../libempathy-gtk/empathy-chat-text-view.c:323
msgid "_Open Link"
msgstr "লিঙ্ক দ্বারা চিহ্নিত খুলুন (_O)"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:180
-msgid "Personal Information"
-msgstr "ব্যক্তিগত তথ্য"
+#. Translators: timestamp displayed between conversations in
+#. * chat windows (strftime format string)
+#: ../libempathy-gtk/empathy-chat-text-view.c:415
+msgid "%A %B %d %Y"
+msgstr "%A %B %d %Y"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:183
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+#: ../libempathy-gtk/empathy-contact-dialogs.c:238
msgid "Edit Contact Information"
msgstr "যোগাযোগ সংক্রান্ত তথ্য পরিবর্তন করুন"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:186
-msgid "Contact Information"
-msgstr "যোগাযোগ সংক্রান্ত তথ্য"
-
-#: ../libempathy-gtk/empathy-contact-dialogs.c:283
-msgid "I would like to add you to my contact list."
-msgstr "আমি আপনাকের আমার পরিচিতি তালিকায় যোগ করতে ইচ্ছুক।"
+#: ../libempathy-gtk/empathy-contact-dialogs.c:289
+msgid "Personal Information"
+msgstr "ব্যক্তিগত তথ্য"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:307
+#: ../libempathy-gtk/empathy-contact-dialogs.c:392
msgid "New Contact"
msgstr "নতুন পরিচিতি"
-#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:1
msgid "Decide _Later"
msgstr "পরে নির্ধারণ করা হবে (_L)"
-#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:2
msgid "Subscription Request"
-msgstr ""
+msgstr "সাবস্ক্রিপশনের অনুরোধ"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1226
+#: ../libempathy-gtk/empathy-contact-list-view.c:1378
#, c-format
msgid "Do you really want to remove the group '%s'?"
msgstr "'%s' নাম দল কি নিশ্চিতরূপে মুছে ফেলতে ইচ্ছুক?"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1228
+#: ../libempathy-gtk/empathy-contact-list-view.c:1380
msgid "Removing group"
msgstr "দল মুছে ফেলা হচ্ছে"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1275
-#: ../libempathy-gtk/empathy-contact-list-view.c:1354
+#: ../libempathy-gtk/empathy-contact-list-view.c:1427
+#: ../libempathy-gtk/empathy-contact-list-view.c:1505
msgid "_Remove"
msgstr "মুছে ফেলুন (_R)"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1305
+#: ../libempathy-gtk/empathy-contact-list-view.c:1457
#, c-format
msgid "Do you really want to remove the contact '%s'?"
-msgstr ""
+msgstr "আপনি কি নিশ্চিতরূপে '%s'-কে পরিচিত তালিকা থেকে সরিয়ে ফেলতে ইচ্ছুক?"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1307
+#: ../libempathy-gtk/empathy-contact-list-view.c:1459
msgid "Removing contact"
-msgstr ""
+msgstr "পরিচিত ব্যক্তিকে সরিয়ে ফেলা হচ্ছে"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1312
-msgid "Sorry, I don't want you in my contact list anymore."
-msgstr ""
-
-#: ../libempathy-gtk/empathy-contact-menu.c:109
-#: ../src/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/empathy-contact-menu.c:135
+#: ../src/empathy-main-window.ui.h:8
msgid "_Chat"
msgstr "আলাপন (_C)"
-#: ../libempathy-gtk/empathy-contact-menu.c:130
-msgid "_Call"
-msgstr ""
+#: ../libempathy-gtk/empathy-contact-menu.c:166
+#, fuzzy
+msgctxt "menu item"
+msgid "_Audio Call"
+msgstr "ডেকে নিন (_C)"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:198
+#, fuzzy
+msgctxt "menu item"
+msgid "_Video Call"
+msgstr "ডেকে নিন (_C)"
-#: ../libempathy-gtk/empathy-contact-menu.c:169
-#: ../src/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-contact-menu.c:237
msgid "_View Previous Conversations"
msgstr "পূর্ববর্তী আলাপ প্রদর্শন করা হবে (_V)"
-#: ../libempathy-gtk/empathy-contact-menu.c:197
+#: ../libempathy-gtk/empathy-contact-menu.c:259
+msgid "Send file"
+msgstr "ফাইল পাঠান"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:287
msgid "Infor_mation"
msgstr "তথ্য (_m)"
-#: ../libempathy-gtk/empathy-contact-menu.c:224
-#: ../src/empathy-chat-window.glade.h:14 ../src/empathy-main-window.glade.h:11
+#: ../libempathy-gtk/empathy-contact-menu.c:314
+#: ../src/empathy-main-window.ui.h:11
msgid "_Edit"
msgstr "সম্পাদনা (_E)"
-#: ../libempathy-gtk/empathy-contact-widget.c:358
+#: ../libempathy-gtk/empathy-contact-menu.c:372
+msgid "Inviting to this room"
+msgstr "এই রুমে আমন্ত্রণ করুন"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:403
+msgid "_Invite to chatroom"
+msgstr "চ্যাট-রুমে আমন্ত্রণ করুন (_I)"
+
+#: ../libempathy-gtk/empathy-contact-selector.c:129
+msgid "Select a contact"
+msgstr "একটি পরিচিতি নির্বাচন করুন"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:440
msgid "Save Avatar"
msgstr "অবতারের ছবি সংরক্ষণ করুন"
-#: ../libempathy-gtk/empathy-contact-widget.c:414
+#: ../libempathy-gtk/empathy-contact-widget.c:496
msgid "Unable to save avatar"
msgstr "অবতারের ছবি সংরক্ষণ করতে ব্যর্থ"
-#: ../libempathy-gtk/empathy-contact-widget.c:875
+#: ../libempathy-gtk/empathy-contact-widget.c:979
msgid "Select"
msgstr "নির্বাচন করুন"
-#: ../libempathy-gtk/empathy-contact-widget.c:884
-#: ../src/empathy-main-window.c:853
+#: ../libempathy-gtk/empathy-contact-widget.c:988
+#: ../src/empathy-main-window.c:905
msgid "Group"
msgstr "দল"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
-msgid "<b>Client Information</b>"
-msgstr "<b>ক্লায়েন্ট সংক্রান্ত তথ্য</b>"
+#: ../libempathy-gtk/empathy-contact-widget.c:1239
+msgid "Country ISO Code:"
+msgstr ""
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
-msgid "<b>Contact Details</b>"
-msgstr "<b>যোগাযোগ সংক্রান্ত বিবরণ</b>"
+#: ../libempathy-gtk/empathy-contact-widget.c:1241
+#, fuzzy
+msgid "Country:"
+msgstr "অ্যাকাউন্ট:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1243
+#, fuzzy
+msgid "State:"
+msgstr "অবস্থা:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
-msgid "<b>Contact</b>"
+#: ../libempathy-gtk/empathy-contact-widget.c:1245
+#, fuzzy
+msgid "City:"
+msgstr "ক্লায়েন্ট:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1247
+#, fuzzy
+msgid "Area:"
+msgstr "আর্মেনিয়ান"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1249
+msgid "Postal Code:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1251
+#, fuzzy
+msgid "Street:"
+msgstr "নির্বাচন করুন"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1253
+msgid "Building:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1255
+#, fuzzy
+msgid "Floor:"
+msgstr "উদ্দিষ্ট বস্তু: (_F)"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1257
+#, fuzzy
+msgid "Room:"
+msgstr "রুম: (_R)"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1259
+#, fuzzy
+msgid "Text:"
+msgstr "প্রকৃতি:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1261
+#, fuzzy
+msgid "Description:"
+msgstr "সংস্করণ:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1263
+msgid "URI:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1265
+msgid "Accuracy Level:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1267
+msgid "Error:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1269
+msgid "Vertical Error (meters):"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1271
+msgid "Horizontal Error (meters):"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1273
+msgid "Speed:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1275
+#, fuzzy
+msgid "Bearing:"
+msgstr "সংস্করণ:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1277
+msgid "Climb Speed:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1279
+msgid "Last Updated on:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1281
+msgid "Longitude:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1283
+msgid "Latitude:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1285
+msgid "Altitude:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1332
+#, fuzzy
+msgid "<b>Location</b>"
+msgstr "<b>যোগাযোগ</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1345
+#, fuzzy
+msgid "<b>Location</b>, "
msgstr "<b>যোগাযোগ</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
-msgid "<b>Groups</b>"
-msgstr "<b>দল</b>"
+#: ../libempathy-gtk/empathy-contact-widget.c:1395
+msgid "%B %e, %Y at %R UTC"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:1
+msgid "<b>Location</b> at (date)\t"
+msgstr ""
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
-#: ../src/empathy-chatrooms-window.glade.h:1
-#: ../src/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:1
+#: ../src/empathy-chatrooms-window.ui.h:1
+#: ../src/empathy-new-chatroom-dialog.ui.h:1
msgid "Account:"
msgstr "অ্যাকাউন্ট:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:3
msgid "Alias:"
-msgstr ""
+msgstr "উপনাম:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:4
msgid "Birthday:"
msgstr "জন্মদিন:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:5
+#, fuzzy
+msgid "Client Information"
+msgstr "<b>ক্লায়েন্ট সংক্রান্ত তথ্য</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:6
msgid "Client:"
msgstr "ক্লায়েন্ট:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
-msgid "Contact information"
-msgstr "যোগাযোগ সংক্রান্ত তথ্য"
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:7
+#: ../src/empathy-main-window.c:888
+msgid "Contact"
+msgstr "পরিচিত ব্যক্তি"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:8
+#, fuzzy
+msgid "Contact Details"
+msgstr "<b>যোগাযোগ সংক্রান্ত বিবরণ</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:9
msgid "Email:"
msgstr "ই-মেইল:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:10
msgid "Fullname:"
msgstr "সম্পূর্ণ নাম:"
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:11
+#, fuzzy
+msgid "Groups"
+msgstr "দল"
+
#. Identifier to connect to Instant Messaging network
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:13
msgid "Identifier:"
-msgstr ""
+msgstr "সনাক্তচিহ্ন:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:14
msgid "Information requested..."
msgstr "অনুরোধ করা তথ্য..."
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:15
msgid "OS:"
msgstr "OS:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:16
msgid ""
"Select the groups you want this contact to appear in. Note that you can "
"select more than one group or no groups."
msgstr ""
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:17
msgid "Version:"
msgstr "সংস্করণ:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:18
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:18
msgid "Web site:"
msgstr "ওয়েব-সাইট:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:19
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:19
msgid "_Add Group"
msgstr "দল যোগ করুন (_A)"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:284
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:283
msgid "new server"
msgstr "নতুন সার্ভার"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:513
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:510
msgid "Server"
msgstr "সার্ভার"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:528
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:525
msgid "Port"
msgstr "পোর্ট"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:541
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:538
msgid "SSL"
msgstr "SSL"
-#: ../libempathy-gtk/empathy-log-window.c:497
+#: ../libempathy-gtk/empathy-log-window.c:494
+#: ../src/empathy-import-dialog.c:281
msgid "Account"
msgstr "অ্যাকাউন্ট"
-#: ../libempathy-gtk/empathy-log-window.c:504 ../src/empathy-chat-window.c:276
-msgid "Conversation"
-msgstr ""
-
-#: ../libempathy-gtk/empathy-log-window.c:514
+#: ../libempathy-gtk/empathy-log-window.c:511
msgid "Date"
msgstr "তারিখ"
-#. Tab Label
-#: ../libempathy-gtk/empathy-log-window.glade.h:2
+#: ../libempathy-gtk/empathy-log-window.ui.h:1
msgid "Conversations"
-msgstr ""
+msgstr "আলাপন"
-#: ../libempathy-gtk/empathy-log-window.glade.h:3
+#: ../libempathy-gtk/empathy-log-window.ui.h:2
msgid "Previous Conversations"
-msgstr ""
+msgstr "পূর্ববর্তী আলাপন"
-#. Tab Label
-#: ../libempathy-gtk/empathy-log-window.glade.h:5
+#: ../libempathy-gtk/empathy-log-window.ui.h:3
msgid "Search"
msgstr "অনুসন্ধান"
-#. Searching *for* something
-#: ../libempathy-gtk/empathy-log-window.glade.h:7
+#: ../libempathy-gtk/empathy-log-window.ui.h:4
msgid "_For:"
-msgstr ""
+msgstr "উদ্দিষ্ট বস্তু: (_F)"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
-msgid "Call"
-msgstr ""
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:2
+msgid "C_all"
+msgstr "ডাকুন (_a)"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
-#: ../src/empathy-chat-window.glade.h:2
-msgid "Chat"
-msgstr "আলাপন"
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:3
+msgid "C_hat"
+msgstr "আলাপন (_h)"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:4
msgid "Contact ID:"
-msgstr ""
+msgstr "পরিচিতির ID:"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:5
msgid "New Conversation"
+msgstr "নতুন আলাপন"
+
+#. COL_STATE_ICON_NAME
+#. COL_STATE
+#. COL_STATUS_TEXT
+#. COL_DISPLAY_MARKUP
+#. COL_STATUS_CUSTOMISABLE
+#. COL_TYPE
+#: ../libempathy-gtk/empathy-presence-chooser.c:172
+#, fuzzy
+msgid "Custom Message..."
+msgstr "স্বনির্ধারিত বার্তা..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:227
+#, fuzzy
+msgid "Edit Custom Messages..."
+msgstr "স্বনির্ধারিত বার্তা..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:326
+msgid "Click to remove this status as a favorite"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:335
+msgid "Click to make this status a favorite"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:369
+#, fuzzy
+msgid "Set status"
+msgstr "অবস্থা"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:782
+msgid "Set your presence and current status"
msgstr ""
#. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:685
+#: ../libempathy-gtk/empathy-presence-chooser.c:1017
msgid "Custom messages..."
msgstr "স্বনির্ধারিত বার্তা..."
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
-msgid "Custom message"
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:362
+#, fuzzy
+msgid "Enter Custom Message"
msgstr "স্বনির্ধারিত বার্তা"
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
-msgid "Message:"
-msgstr "বার্তা:"
-
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
-msgid "Save message"
-msgstr "বার্তা সংরক্ষণ করুন"
-
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
-msgid "Status:"
-msgstr "অবস্থা:"
-
-#: ../libempathy-gtk/empathy-spell-dialog.c:88
-msgid "Word"
-msgstr "শব্দ"
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:521
+#, fuzzy
+msgid "Edit Custom Messages"
+msgstr "স্বনির্ধারিত বার্তা"
-#: ../libempathy-gtk/empathy-spell-dialog.c:265
-msgid "Suggestions for the word"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1
+msgid "Add _New Preset"
msgstr ""
-#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
-msgid "Spell Checker"
-msgstr "বানান পরীক্ষণ ব্যবস্থা"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:2
+#, fuzzy
+msgid "Saved Presets"
+msgstr "বার্তা সংরক্ষণ করুন"
-#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
-msgid "Suggestions for the word:"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:3
+msgid "gtk-add"
msgstr ""
-#: ../libempathy-gtk/empathy-theme-boxes.c:745
-#: ../libempathy-gtk/empathy-theme-irc.c:293
-msgid "%A %d %B %Y"
-msgstr "%A %d %B %Y"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:4
+msgid "gtk-remove"
+msgstr ""
-#: ../libempathy-gtk/empathy-theme-manager.c:73
+#: ../libempathy-gtk/empathy-theme-manager.c:66
msgid "Classic"
msgstr "পারম্পরিক"
-#: ../libempathy-gtk/empathy-theme-manager.c:74
+#: ../libempathy-gtk/empathy-theme-manager.c:67
msgid "Simple"
msgstr "সাধারণ"
-#: ../libempathy-gtk/empathy-theme-manager.c:75
+#: ../libempathy-gtk/empathy-theme-manager.c:68
msgid "Clean"
msgstr "পরিশ্রুত"
-#: ../libempathy-gtk/empathy-theme-manager.c:76
+#: ../libempathy-gtk/empathy-theme-manager.c:69
msgid "Blue"
msgstr "নীল"
-#: ../libempathy-gtk/empathy-ui-utils.c:1330
+#: ../libempathy-gtk/empathy-theme-manager.c:71
+msgid "Adium"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1378
msgid "Unable to open URI"
msgstr "URI খুলতে ব্যর্থ"
+#: ../libempathy-gtk/empathy-ui-utils.c:1468
+msgid "Select a file"
+msgstr "একটি ফাইল নির্বাচন করুন"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1526
+#, fuzzy
+msgid "Select a destination"
+msgstr "একটি পরিচিতি নির্বাচন করুন"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1555
+msgid "Received an instant message"
+msgstr "ইনস্ট্যান্ট বার্তা প্রাপ্ত হয়েছে"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1557
+msgid "Sent an instant message"
+msgstr "ইনস্ট্যান্ট বার্তা পাঠানো হয়েছে"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1559
+msgid "Incoming chat request"
+msgstr "চ্যাটের আগত অনুরোধ"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1561
+msgid "Contact connected"
+msgstr "পরিচিতির সাথে সংযোগ করা হয়েছে"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1563
+msgid "Contact disconnected"
+msgstr "পরিচিতির সাথে সংযোগ বিচ্ছিন্ন করা হয়েছে"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1565
+msgid "Connected to server"
+msgstr "সার্ভারের সাথে সংযুক্ত"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1567
+msgid "Disconnected from server"
+msgstr "সার্ভারে সাথে সংযোগ বিচ্ছিন্ন"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1569
+msgid "Incoming voice call"
+msgstr "আগত ভাষ্যের কল"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1571
+msgid "Outgoing voice call"
+msgstr "বাহিরগামি ভাষ্যের কল"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1573
+msgid "Voice call ended"
+msgstr "ভাষ্যের কল সমাপ্ত হয়েছে"
+
#: ../libempathy-gtk/totem-subtitle-encoding.c:158
msgid "Current Locale"
msgstr "বর্তমান লোকেইল"
@@ -1030,19 +1502,21 @@ msgstr "ভিয়েতনামিস"
#. * vim: sw=2 ts=8 cindent noai bs=2
#.
#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
-msgid "The contact to display in the applet. Empty means no contact is displayed."
+msgid ""
+"The contact to display in the applet. Empty means no contact is displayed."
msgstr ""
+"অ্যাপ্লেটের মধ্যে প্রদর্শনযোগ্য পরিচিতি। ফাঁকা হলে কোনো পরিচিতি প্রদর্শন করা হবে না।"
#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
msgid "The contact's avatar token. Empty means contact has no avatar."
-msgstr ""
+msgstr "পরিচিতির অবতারের টোকেন। পরিচিতির অবতার না থাকলে ফাঁকা থাকবে।"
#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:1
msgid "Megaphone"
msgstr "মেগাফোন"
#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
-#: ../megaphone/src/megaphone-applet.c:417
+#: ../megaphone/src/megaphone-applet.c:527
msgid "Talk!"
msgstr "Talk!"
@@ -1056,10 +1530,18 @@ msgid "_Information"
msgstr "তথ্য (_I)"
#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
-#: ../src/empathy-main-window.glade.h:15
+#: ../src/empathy-main-window.ui.h:18
msgid "_Preferences"
msgstr "পছন্দ (_P)"
+#: ../megaphone/src/megaphone-applet.c:168
+msgid "Please configure a contact."
+msgstr "অনুগ্রহ করে পরিচিতির তথ্য কনফিগার করুন।"
+
+#: ../megaphone/src/megaphone-applet.c:258
+msgid "Select contact..."
+msgstr "পরিচিত ব্যক্তি নির্বাচ করুন..."
+
#: ../nothere/data/GNOME_NotHere_Applet.server.in.in.h:1
msgid "Presence"
msgstr "উপস্থিতি"
@@ -1069,23 +1551,23 @@ msgstr "উপস্থিতি"
msgid "Set your own presence"
msgstr "নিজের উপস্থিতি সংক্রান্ত তথ্য নির্ধারণ করুন"
-#: ../src/empathy.c:380
+#: ../src/empathy.c:478
msgid "Don't connect on startup"
msgstr "প্রারম্ভে সংযোগ স্থাপন করা হবে না"
-#: ../src/empathy.c:384
+#: ../src/empathy.c:482
msgid "Don't show the contact list on startup"
msgstr "প্রারম্ভকালে পরিচিত ব্যক্তিদের তালিকা প্রদর্শন করা হবে না"
-#: ../src/empathy.c:388
+#: ../src/empathy.c:486
msgid "Show the accounts dialog"
msgstr "অ্যাকাউন্ট সংক্রান্ত ডায়লগ প্রদর্শন করা হবে"
-#: ../src/empathy.c:400
+#: ../src/empathy.c:498
msgid "- Empathy Instant Messenger"
msgstr "- Empathy Instant Messenger"
-#: ../src/empathy-about-dialog.c:84
+#: ../src/empathy-about-dialog.c:83
msgid ""
"Empathy is free software; you can redistribute it and/or modify it under the "
"terms of the GNU General Public License as published by the Free Software "
@@ -1097,7 +1579,7 @@ msgstr ""
"Foundation; either version 2 of the License, or (at your option) any later "
"version."
-#: ../src/empathy-about-dialog.c:88
+#: ../src/empathy-about-dialog.c:87
msgid ""
"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
@@ -1109,7 +1591,7 @@ msgstr ""
"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
"details."
-#: ../src/empathy-about-dialog.c:92
+#: ../src/empathy-about-dialog.c:91
msgid ""
"You should have received a copy of the GNU General Public License along with "
"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
@@ -1119,30 +1601,29 @@ msgstr ""
"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
"Street, Fifth Floor, Boston, MA 02110-130159 USA"
-#: ../src/empathy-about-dialog.c:120
+#: ../src/empathy-about-dialog.c:119
msgid "An Instant Messaging client for GNOME"
-msgstr ""
+msgstr "GNOME-র সাথে ব্যবহারযোগ্য ইনস্ট্যান্ট মেসেজিং ক্লায়েন্ট"
-#: ../src/empathy-about-dialog.c:126
+#: ../src/empathy-about-dialog.c:125
msgid "translator-credits"
msgstr "রুণা ভট্টাচার্য্য (runab@redhat.com)"
-#: ../src/empathy-accounts-dialog.c:389
+#: ../src/empathy-accounts-dialog.c:393
msgid "Enabled"
msgstr "সক্রিয়"
-#: ../src/empathy-accounts-dialog.c:399
-#: ../src/empathy-accounts-dialog.glade.h:4
+#: ../src/empathy-accounts-dialog.c:403 ../src/empathy-accounts-dialog.ui.h:1
msgid "Accounts"
msgstr "অ্যাকাউন্ট"
#. To translator: %s is the protocol name
-#: ../src/empathy-accounts-dialog.c:862
+#: ../src/empathy-accounts-dialog.c:837
#, c-format
msgid "New %s account"
msgstr "নতুন %s অ্যাকাউন্ট"
-#: ../src/empathy-accounts-dialog.c:972
+#: ../src/empathy-accounts-dialog.c:950
#, c-format
msgid ""
"You are about to remove your %s account!\n"
@@ -1151,7 +1632,7 @@ msgstr ""
"আপনি %s অ্যাকাউন্টটি মুছে ফেলতে চলেছেন!\n"
"আপনি কি নিশ্চিতরূপে এগিয়ে যেতে ইচ্ছুক?"
-#: ../src/empathy-accounts-dialog.c:978
+#: ../src/empathy-accounts-dialog.c:956
msgid ""
"Any associated conversations and chat rooms will NOT be removed if you "
"decide to proceed.\n"
@@ -1160,589 +1641,1055 @@ msgid ""
"be available."
msgstr ""
-#: ../src/empathy-accounts-dialog.glade.h:1
-msgid "<b>New Account</b>"
-msgstr "<b>নতুন অ্যাকাউন্ট</b>"
-
-#: ../src/empathy-accounts-dialog.glade.h:2
-msgid "<b>No protocol installed</b>"
-msgstr "<b>কোনো প্রোটোকল ইনস্টল করা হয়নি</b>"
-
-#: ../src/empathy-accounts-dialog.glade.h:3
-msgid "<b>Settings</b>"
-msgstr "<b>বিবিধ বৈশিষ্ট্য</b>"
+#: ../src/empathy-accounts-dialog.ui.h:2
+#, fuzzy
+msgid "Add Account"
+msgstr "অ্যাকাউন্ট"
-#: ../src/empathy-accounts-dialog.glade.h:5
+#: ../src/empathy-accounts-dialog.ui.h:3
msgid "Cr_eate"
msgstr "নির্মাণ করুন (_e)"
-#: ../src/empathy-accounts-dialog.glade.h:6
-msgid "I already have an account I want to use"
-msgstr "ব্যবহারযোগ্য আমার একটি অ্যাকাউন্ট বর্তমান উপস্থিত রয়েছে"
+#: ../src/empathy-accounts-dialog.ui.h:4
+#, fuzzy
+msgid "Gmail"
+msgstr "ই-মেইল:"
+
+#: ../src/empathy-accounts-dialog.ui.h:5
+msgid "Import Accounts..."
+msgstr "অ্যাকাউন্ট ইম্পোর্ট করুন..."
-#: ../src/empathy-accounts-dialog.glade.h:7
+#: ../src/empathy-accounts-dialog.ui.h:6
+#, fuzzy
+msgid "No protocol installed"
+msgstr "<b>কোনো প্রোটোকল ইনস্টল করা হয়নি</b>"
+
+#: ../src/empathy-accounts-dialog.ui.h:7
+#, fuzzy
+msgid "Settings"
+msgstr "<b>বিবিধ বৈশিষ্ট্য</b>"
+
+#: ../src/empathy-accounts-dialog.ui.h:8
msgid ""
"To add a new account, you first have to install a backend for each protocol "
"you want to use."
-msgstr "নতুন অ্যাকাউন্ট যোগ করার জন্য, প্রথমে ব্যবহারযোগ্য প্রতিটি প্রোটোকলের জন্য একটি ব্যাক-এন্ড ইনস্টল করা আবশ্যক।"
+msgstr ""
+"নতুন অ্যাকাউন্ট যোগ করার জন্য, প্রথমে ব্যবহারযোগ্য প্রতিটি প্রোটোকলের জন্য একটি ব্যাক-"
+"এন্ড ইনস্টল করা আবশ্যক।"
-#: ../src/empathy-accounts-dialog.glade.h:8
+#: ../src/empathy-accounts-dialog.ui.h:9
msgid "Type:"
msgstr "প্রকৃতি:"
-#: ../src/empathy-call-window.c:142
-msgid "Closed"
-msgstr "বন্ধ"
-
-#: ../src/empathy-call-window.c:254
-msgid "End this call?"
-msgstr ""
+#: ../src/empathy-accounts-dialog.ui.h:10
+#, fuzzy
+msgid "_Add..."
+msgstr "পরিচিত ব্যক্তির তথ্য যোগ করুন... (_A)"
-#: ../src/empathy-call-window.c:256
-msgid "Closing this window will end the call in progress."
-msgstr ""
+#: ../src/empathy-accounts-dialog.ui.h:11
+#, fuzzy
+msgid "_Create a new account"
+msgstr "নতুন IRC নেটওয়ার্ক নির্মাণ করুন"
-#: ../src/empathy-call-window.c:257
-msgid "_End Call"
-msgstr ""
+#: ../src/empathy-accounts-dialog.ui.h:12
+#, fuzzy
+msgid "_Reuse an existing account"
+msgstr "অ্যাকাউন্ট প্রদর্শন ও সম্পাদনা"
-#: ../src/empathy-call-window.c:311
-msgid "Incoming call"
-msgstr ""
+#: ../src/empathy-call-window.c:63
+msgid "Connecting..."
+msgstr "সংযোগ স্থাপন করা হচ্ছে..."
-#: ../src/empathy-call-window.c:313
-#, c-format
-msgid "%s is calling you, do you want to answer?"
-msgstr ""
+#: ../src/empathy-call-window.c:415
+msgid "Contrast"
+msgstr "বৈপরিত্য"
-#: ../src/empathy-call-window.c:319
-msgid "_Reject"
-msgstr "প্রত্যাখ্যান করুন (_R)"
+#: ../src/empathy-call-window.c:418
+msgid "Brightness"
+msgstr "উজ্জ্বলতা"
-#: ../src/empathy-call-window.c:324
-msgid "_Answer"
-msgstr "উত্তর দিন (_A)"
+#: ../src/empathy-call-window.c:421
+msgid "Gamma"
+msgstr "গামা"
-#: ../src/empathy-call-window.c:379
-msgid "Empathy Call"
-msgstr ""
+#: ../src/empathy-call-window.c:526
+msgid "Volume"
+msgstr "আওয়াজ"
-#. To translators: Readying is the first state of the call, it is
-#. * preparing the connection and it does not yet ring.
-#: ../src/empathy-call-window.c:382
-msgid "Readying"
-msgstr "প্রস্তুত করা হচ্ছে"
+#: ../src/empathy-call-window.c:728
+msgid "_Sidebar"
+msgstr "সাইড-বার (_S)"
-#: ../src/empathy-call-window.c:391
-#, c-format
-msgid "%s - Empathy Call"
-msgstr ""
+#: ../src/empathy-call-window.c:747
+msgid "Dialpad"
+msgstr "ডায়াল-প্যাড"
-#: ../src/empathy-call-window.c:395
-msgid "Ringing"
-msgstr "ঘন্টি বাজছে"
+#: ../src/empathy-call-window.c:753
+msgid "Audio input"
+msgstr "অডিও ইনপুট"
-#: ../src/empathy-call-window.c:408
-msgid "Connecting"
-msgstr "সংযোগ স্থাপন করা হচ্ছে"
+#: ../src/empathy-call-window.c:757
+msgid "Video input"
+msgstr "ভিডিও ইনপুট"
-#: ../src/empathy-call-window.c:524
+#: ../src/empathy-call-window.c:820
#, c-format
-msgid "Incoming call from %s rejected because there is already a running call."
+msgid "Call with %s"
msgstr ""
-#: ../src/empathy-call-window.glade.h:1
-msgid "#"
-msgstr "#"
+#: ../src/empathy-call-window.c:889
+#, fuzzy
+msgid "Call"
+msgstr "ডেকে নিন (_C)"
-#: ../src/empathy-call-window.glade.h:2
-msgid "*"
-msgstr "*"
+#. Translators: number of minutes:seconds the caller has been connected
+#: ../src/empathy-call-window.c:1308
+#, fuzzy, c-format
+msgid "Connected — %d:%02dm"
+msgstr "সংযুক্ত -- %d:%02dm"
-#: ../src/empathy-call-window.glade.h:3
-msgid "0"
-msgstr "০"
+#: ../src/empathy-call-window.ui.h:1
+msgid "Hang up"
+msgstr ""
-#: ../src/empathy-call-window.glade.h:4
-msgid "1"
-msgstr "১"
+#: ../src/empathy-call-window.ui.h:2
+msgid "Redial"
+msgstr ""
-#: ../src/empathy-call-window.glade.h:5
-msgid "2"
-msgstr "২"
+#: ../src/empathy-call-window.ui.h:3
+msgid "Send Audio"
+msgstr "অডিও পাঠান"
-#: ../src/empathy-call-window.glade.h:6
-msgid "3"
-msgstr "৩"
+#: ../src/empathy-call-window.ui.h:4
+msgid "Send video"
+msgstr "ভিডিও পাঠান"
-#: ../src/empathy-call-window.glade.h:7
-msgid "4"
-msgstr "৪"
+#: ../src/empathy-call-window.ui.h:5
+msgid "Video preview"
+msgstr "ভিডিওর পূর্বদৃশ্য"
-#: ../src/empathy-call-window.glade.h:8
-msgid "5"
-msgstr "৫"
+#: ../src/empathy-call-window.ui.h:6
+msgid "_Call"
+msgstr "ডেকে নিন (_C)"
-#: ../src/empathy-call-window.glade.h:9
-msgid "6"
-msgstr "৬"
+#: ../src/empathy-call-window.ui.h:7 ../src/empathy-main-window.ui.h:21
+msgid "_View"
+msgstr "প্রদর্শন (_V)"
-#: ../src/empathy-call-window.glade.h:10
-msgid "7"
-msgstr "৭"
+#: ../src/empathy-chat-window.c:343
+#, c-format
+msgid "Conversations (%d)"
+msgstr "আলাপন (%d)"
-#: ../src/empathy-call-window.glade.h:11
-msgid "8"
-msgstr "৮"
+#: ../src/empathy-chat-window.c:475
+msgid "Typing a message."
+msgstr "বার্তা লেখা হচ্ছে।"
-#: ../src/empathy-call-window.glade.h:12
-msgid "9"
-msgstr "৯"
+#: ../src/empathy-chatrooms-window.c:258
+msgid "Name"
+msgstr "নাম"
-#. To translators: The keypad is numbers [0-9], asterisk (*) and hash (#). Presented like on any phone
-#: ../src/empathy-call-window.glade.h:14
-msgid "<b>Keypad</b>"
-msgstr "<b>কি-প্যাড</b>"
+#: ../src/empathy-chatrooms-window.c:276
+msgid "Room"
+msgstr "রুম"
-#: ../src/empathy-call-window.glade.h:15
-msgid "<b>Volume</b>"
-msgstr "<b>আওয়াজ</b>"
+#: ../src/empathy-chatrooms-window.c:285
+msgid "Auto-Connect"
+msgstr "স্বয়ংক্রিয়-সংযোগ"
-#: ../src/empathy-call-window.glade.h:16
-msgid "Hang Up"
+#: ../src/empathy-chatrooms-window.ui.h:2
+msgid "Manage Favorite Rooms"
msgstr ""
-#: ../src/empathy-call-window.glade.h:17
-msgid "Send Video"
-msgstr "ভিডিও পাঠান"
+#: ../src/empathy-event-manager.c:377
+msgid "Incoming call"
+msgstr "আগমনকারী কল"
-#: ../src/empathy-chat-window.c:319
+#: ../src/empathy-event-manager.c:380
#, c-format
-msgid "Conversations (%d)"
+msgid "%s is calling you, do you want to answer?"
msgstr ""
-#: ../src/empathy-chat-window.c:397
-msgid "Topic:"
-msgstr "বিষয়:"
+#: ../src/empathy-event-manager.c:387
+msgid "_Reject"
+msgstr "প্রত্যাখ্যান করুন (_R)"
-#: ../src/empathy-chat-window.c:400
-msgid "Typing a message."
-msgstr "বার্তা লেখা হচ্ছে।"
+#: ../src/empathy-event-manager.c:393
+msgid "_Answer"
+msgstr "উত্তর দিন (_A)"
-#: ../src/empathy-chat-window.glade.h:1
-msgid "C_lear"
-msgstr "মুছে ফেলুন (_l)"
+#: ../src/empathy-event-manager.c:505
+#, c-format
+msgid "Incoming call from %s"
+msgstr "%s থেকে আগমনকারী কল"
-#: ../src/empathy-chat-window.glade.h:3
-msgid "Insert _Smiley"
-msgstr "স্মাইলি যোগ করুন (_S)"
+#: ../src/empathy-event-manager.c:545
+#, c-format
+msgid "%s is offering you an invitation"
+msgstr "%s আপনাকে আমন্ত্রণ জানাচ্ছেন"
-#: ../src/empathy-chat-window.glade.h:4
-msgid "Invitation _message:"
-msgstr "আমন্ত্রণ বার্তা: (_m)"
+#: ../src/empathy-event-manager.c:551
+msgid "An external application will be started to handle it."
+msgstr "এটি পরিচালনার জন্য একটি বহিস্থিত অ্যাপ্লিকেশন আরম্ভ করা হবে।"
-#: ../src/empathy-chat-window.glade.h:5
-msgid "Invite"
-msgstr "আমন্ত্রণ করুন"
+#: ../src/empathy-event-manager.c:556
+msgid "You don't have the needed external application to handle it."
+msgstr "এটি পরিচালনার জন্য বহিস্থিত অ্যাপ্লিকেশনের প্রয়োজন নেই।"
-#: ../src/empathy-chat-window.glade.h:6
-msgid "Move Tab _Left"
-msgstr "ট্যাব বাঁদিকে সরিয়ে নিন (_L)"
+#: ../src/empathy-event-manager.c:683
+msgid "Room invitation"
+msgstr "রুমের আমন্ত্রণ"
-#: ../src/empathy-chat-window.glade.h:7
-msgid "Move Tab _Right"
-msgstr "ট্যাব ডানদিকে সরিয়ে নিন (_R)"
+#: ../src/empathy-event-manager.c:686
+#, c-format
+msgid "%s is inviting you to join %s"
+msgstr "%s আপনাকে %s-এ আমন্ত্রণ জানাচ্ছেন"
-#: ../src/empathy-chat-window.glade.h:8
-msgid "Select who would you like to invite:"
-msgstr "আমন্ত্রিতদের তালিকা তৈরি করুন:"
+#: ../src/empathy-event-manager.c:694
+msgid "_Decline"
+msgstr "প্রত্যাখ্যান করুন (_D)"
-#: ../src/empathy-chat-window.glade.h:9
-msgid "You have been invited to join a chat conference."
-msgstr ""
+#: ../src/empathy-event-manager.c:699
+#: ../src/empathy-new-chatroom-dialog.ui.h:7
+msgid "_Join"
+msgstr "যোগ দিন (_J)"
-#: ../src/empathy-chat-window.glade.h:10
-msgid "_Contact"
-msgstr "পরিচিত ব্যক্তি (_C)"
+#: ../src/empathy-event-manager.c:738
+#, c-format
+msgid "%s invited you to join %s"
+msgstr "%s আপনাকে %s-এ আমন্ত্রণ জানিয়েছেন"
-#: ../src/empathy-chat-window.glade.h:11 ../src/empathy-main-window.glade.h:10
-msgid "_Contents"
-msgstr "সূচী (_C)"
+#: ../src/empathy-event-manager.c:764
+#, c-format
+msgid "Incoming file transfer from %s"
+msgstr ""
+
+#: ../src/empathy-event-manager.c:944
+#, c-format
+msgid "Subscription requested by %s"
+msgstr "%s দ্বারা অনুরোধ করা সাবস্ক্রিপশন"
-#: ../src/empathy-chat-window.glade.h:12
-msgid "_Conversation"
+#: ../src/empathy-event-manager.c:948
+#, c-format
+msgid ""
+"\n"
+"Message: %s"
msgstr ""
+"\n"
+"বার্তা: %s"
-#: ../src/empathy-chat-window.glade.h:13
-msgid "_Detach Tab"
-msgstr "ট্যাব বিচ্ছিন্ন করুন (_D)"
+#. Translators: time left, when it is more than one hour
+#: ../src/empathy-ft-manager.c:101
+#, c-format
+msgid "%u:%02u.%02u"
+msgstr "%u:%02u.%02u"
-#: ../src/empathy-chat-window.glade.h:15 ../src/empathy-main-window.glade.h:12
-msgid "_Help"
-msgstr "সাহায্য (_H)"
+#. Translators: time left, when is is less than one hour
+#: ../src/empathy-ft-manager.c:104
+#, c-format
+msgid "%02u.%02u"
+msgstr "%02u.%02u"
-#: ../src/empathy-chat-window.glade.h:16
-msgid "_Next Tab"
-msgstr "পরবর্তী ট্যাব (_N)"
+#: ../src/empathy-ft-manager.c:180
+msgctxt "file transfer percent"
+msgid "Unknown"
+msgstr "অজানা"
-#: ../src/empathy-chat-window.glade.h:17
-msgid "_Previous Tab"
-msgstr "পূর্ববর্তী ট্যাব (_P)"
+#: ../src/empathy-ft-manager.c:275
+#, fuzzy, c-format
+msgid "%s of %s at %s/s"
+msgstr "%s, সর্বমোট %s"
-#: ../src/empathy-chat-window.glade.h:18
-msgid "_Tabs"
-msgstr "ট্যাব (_T)"
+#: ../src/empathy-ft-manager.c:276
+#, c-format
+msgid "%s of %s"
+msgstr "%s, সর্বমোট %s"
-#: ../src/empathy-chatrooms-window.c:262
-msgid "Name"
-msgstr "নাম"
+#. translators: first %s is filename, second %s is the contact name
+#: ../src/empathy-ft-manager.c:307
+#, c-format
+msgid "Receiving \"%s\" from %s"
+msgstr "\"%s\" প্রাপ্ত করা হচ্ছে, %s থেকে"
-#: ../src/empathy-chatrooms-window.c:280
-msgid "Room"
-msgstr ""
+#. translators: first %s is filename, second %s is the contact name
+#: ../src/empathy-ft-manager.c:310
+#, c-format
+msgid "Sending \"%s\" to %s"
+msgstr "\"%s\" পাঠানো হচ্ছে, %s-কে"
-#: ../src/empathy-chatrooms-window.c:289
-msgid "Auto-Connect"
-msgstr "স্বয়ংক্রিয়-সংযোগ"
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:340
+#, fuzzy, c-format
+msgid "Error receiving \"%s\" from %s"
+msgstr "\"%s\" প্রাপ্ত করা হচ্ছে, %s থেকে"
-#: ../src/empathy-chatrooms-window.glade.h:2
-msgid "Edit Favorite Room"
+#: ../src/empathy-ft-manager.c:343
+msgid "Error receiving a file"
msgstr ""
-#: ../src/empathy-chatrooms-window.glade.h:3
-msgid "Join room on start_up"
-msgstr ""
+#: ../src/empathy-ft-manager.c:348
+#, fuzzy, c-format
+msgid "Error sending \"%s\" to %s"
+msgstr "\"%s\" পাঠানো হচ্ছে, %s-কে"
-#: ../src/empathy-chatrooms-window.glade.h:4
-msgid "Join this chat room when Empathy starts and you are connected"
-msgstr ""
+#: ../src/empathy-ft-manager.c:351
+#, fuzzy
+msgid "Error sending a file"
+msgstr "'%s' বার্তা পাঠাতে সমস্যা: %s"
-#: ../src/empathy-chatrooms-window.glade.h:5
-msgid "Manage Favorite Rooms"
-msgstr ""
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:490
+#, c-format
+msgid "\"%s\" received from %s"
+msgstr "\"%s\" প্রাপ্ত হয়েছে, %s থেকে"
-#: ../src/empathy-chatrooms-window.glade.h:6
-msgid "N_ame:"
-msgstr "নাম: (_a)"
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:495
+#, c-format
+msgid "\"%s\" sent to %s"
+msgstr "\"%s\" প্রেরিত হয়েছে, %s-কে"
-#: ../src/empathy-chatrooms-window.glade.h:7
-msgid "S_erver:"
-msgstr "সার্ভার: (_e)"
+#: ../src/empathy-ft-manager.c:498
+msgid "File transfer completed"
+msgstr "ফাইল বিনিময় সম্পূর্ণ হয়েছে"
-#: ../src/empathy-chatrooms-window.glade.h:9
-#: ../src/empathy-new-chatroom-dialog.glade.h:9
-msgid "_Room:"
-msgstr ""
+#: ../src/empathy-ft-manager.c:617 ../src/empathy-ft-manager.c:784
+#, fuzzy
+msgid "Waiting for the other participant's response"
+msgstr "অন্য ব্যবহারকারীর প্রতিক্রিয়ার অপেক্ষা করা হচ্ছে"
-#: ../src/empathy-event-manager.c:166
+#: ../src/empathy-ft-manager.c:643 ../src/empathy-ft-manager.c:681
#, c-format
-msgid ""
-"New message from %s:\n"
-"%s"
+msgid "Checking integrity of \"%s\""
msgstr ""
-"%s থেকে প্রাপ্ত নতুন বার্তা:\n"
-"%s"
-#: ../src/empathy-event-manager.c:205
+#: ../src/empathy-ft-manager.c:646 ../src/empathy-ft-manager.c:684
#, c-format
-msgid "Incoming call from %s"
+msgid "Hashing \"%s\""
msgstr ""
-#: ../src/empathy-event-manager.c:238
-#, c-format
-msgid ""
-"%s is offering you an invitation, but you don't have the needed external "
-"application to handle it."
-msgstr ""
+#: ../src/empathy-ft-manager.c:1024
+msgid "%"
+msgstr "%"
-#: ../src/empathy-event-manager.c:263
-msgid "Invitation Error"
-msgstr "আমন্ত্রণ সংক্রান্ত ত্রুটি"
+#: ../src/empathy-ft-manager.c:1036
+msgid "File"
+msgstr "ফাইল"
-#: ../src/empathy-event-manager.c:289
-#, c-format
-msgid ""
-"%s is offering you an invitation. An external application will be started to "
-"handle it."
-msgstr ""
+#: ../src/empathy-ft-manager.c:1058
+msgid "Remaining"
+msgstr "অবশিষ্ট"
-#: ../src/empathy-event-manager.c:345
-#, c-format
-msgid "Subscription requested by %s"
+#: ../src/empathy-ft-manager.ui.h:1
+#, fuzzy
+msgid "File Transfers"
+msgstr "ফাইল বিনিময়"
+
+#: ../src/empathy-ft-manager.ui.h:2
+msgid "Remove completed, canceled and failed file transfers from the list"
msgstr ""
-#: ../src/empathy-event-manager.c:348
-#, c-format
+#. Translators: this is the header of a treeview column
+#: ../src/empathy-import-dialog.c:259
+msgid "Import"
+msgstr "ইম্পোর্ট"
+
+#: ../src/empathy-import-dialog.c:268
+msgid "Protocol"
+msgstr "প্রোটোকল"
+
+#: ../src/empathy-import-dialog.c:294
+msgid "Source"
+msgstr "উৎসস্থল"
+
+#: ../src/empathy-import-dialog.c:388
msgid ""
-"\n"
-"Message: %s"
+"No accounts to import could be found. Empathy currently only supports "
+"importing accounts from Pidgin."
msgstr ""
-"\n"
-"বার্তা: %s"
-
-#: ../src/empathy-main-window.c:466
-msgid "Show and edit accounts"
-msgstr "অ্যাকাউন্ট প্রদর্শন ও সম্পাদনা"
-#: ../src/empathy-main-window.c:836
-msgid "Contact"
-msgstr "পরিচিত ব্যক্তি"
+#: ../src/empathy-import-dialog.ui.h:1
+msgid "Import Accounts"
+msgstr "অ্যাকাউন্ট ইম্পোর্ট করুন"
-#: ../src/empathy-main-window.c:1038
+#: ../src/empathy-main-window.c:395
msgid "_Edit account"
msgstr "অ্যাকাউন্ট সম্পাদনা (_E)"
-#: ../src/empathy-main-window.c:1121
+#: ../src/empathy-main-window.c:498
msgid "No error specified"
msgstr "ত্রুটি নির্ধারিত হয়নি"
-#: ../src/empathy-main-window.c:1124
+#: ../src/empathy-main-window.c:501
msgid "Network error"
msgstr "নেটওয়ার্ক সংক্রান্ত ত্রুটি"
-#: ../src/empathy-main-window.c:1127
+#: ../src/empathy-main-window.c:504
msgid "Authentication failed"
msgstr "অনুমোদন ব্যর্থ"
-#: ../src/empathy-main-window.c:1130
+#: ../src/empathy-main-window.c:507
msgid "Encryption error"
msgstr "এনক্রিপশন সংক্রান্ত ত্রুটি"
-#: ../src/empathy-main-window.c:1133
+#: ../src/empathy-main-window.c:510
msgid "Name in use"
msgstr "নাম বর্তমানে ব্যবহৃত হচ্ছে"
-#: ../src/empathy-main-window.c:1136
+#: ../src/empathy-main-window.c:513
msgid "Certificate not provided"
msgstr "সার্টিফিকেট উপলব্ধ করা হয়নি"
-#: ../src/empathy-main-window.c:1139
+#: ../src/empathy-main-window.c:516
msgid "Certificate untrusted"
msgstr "সার্টিফিকেট বিশ্বস্ত নয়"
-#: ../src/empathy-main-window.c:1142
+#: ../src/empathy-main-window.c:519
msgid "Certificate expired"
msgstr "সার্টিফিকেটের মেয়াদ উত্তীর্ণ হয়েছে"
-#: ../src/empathy-main-window.c:1145
+#: ../src/empathy-main-window.c:522
msgid "Certificate not activated"
msgstr "সার্টিফিকেট সক্রিয় করা হয়নি"
-#: ../src/empathy-main-window.c:1148
+#: ../src/empathy-main-window.c:525
msgid "Certificate hostname mismatch"
msgstr "সার্টিফিকেটের হোস্টনেম-এ গরমিল"
-#: ../src/empathy-main-window.c:1151
+#: ../src/empathy-main-window.c:528
msgid "Certificate fingerprint mismatch"
msgstr "সার্টিফিকেটের ফিনঙ্গারপ্রিন্ট-এ গরমিল"
-#: ../src/empathy-main-window.c:1154
+#: ../src/empathy-main-window.c:531
msgid "Certificate self-signed"
msgstr "স্বয়ং স্বাক্ষরিত সার্টিফিকেট"
-#: ../src/empathy-main-window.c:1157
+#: ../src/empathy-main-window.c:534
msgid "Certificate error"
msgstr "সার্টিফিকেট সংক্রান্ত ত্রুটি"
-#: ../src/empathy-main-window.c:1160
+#: ../src/empathy-main-window.c:537
msgid "Unknown error"
msgstr "অজানা ত্রুটি"
-#: ../src/empathy-main-window.glade.h:1
+#: ../src/empathy-main-window.c:1220
+msgid "Show and edit accounts"
+msgstr "অ্যাকাউন্ট প্রদর্শন ও সম্পাদনা"
+
+#: ../src/empathy-main-window.ui.h:1 ../src/empathy-preferences.ui.h:10
msgid "Contact List"
msgstr "পরিচিত ব্যক্তিদের তালিকা"
-#: ../src/empathy-main-window.glade.h:2
+#: ../src/empathy-main-window.ui.h:2
+msgid "Contacts on a _Map"
+msgstr ""
+
+#: ../src/empathy-main-window.ui.h:3
msgid "Context"
msgstr "প্রসঙ্গ"
-#: ../src/empathy-main-window.glade.h:3
+#: ../src/empathy-main-window.ui.h:4
msgid "Join _Favorites"
-msgstr ""
+msgstr "জনপ্রিয়গুলিতে যোগ দিন (_F)"
-#: ../src/empathy-main-window.glade.h:4
-msgid "Join _New..."
-msgstr ""
-
-#: ../src/empathy-main-window.glade.h:5
+#: ../src/empathy-main-window.ui.h:5
msgid "Manage Favorites"
-msgstr ""
-
-#: ../src/empathy-main-window.glade.h:6
-msgid "Show _Offline Contacts"
-msgstr ""
+msgstr "জনপ্রিয় মান পরিচালনা"
-#: ../src/empathy-main-window.glade.h:7
+#: ../src/empathy-main-window.ui.h:6
msgid "_Accounts"
msgstr "অ্যাকাউন্ট তালিকা (_A)"
-#: ../src/empathy-main-window.glade.h:8
+#: ../src/empathy-main-window.ui.h:7
msgid "_Add Contact..."
msgstr "পরিচিত ব্যক্তির তথ্য যোগ করুন... (_A)"
-#: ../src/empathy-main-window.glade.h:13 ../src/empathy-status-icon.glade.h:2
-msgid "_New Conversation..."
+#: ../src/empathy-main-window.ui.h:9
+msgid "_Contents"
+msgstr "সূচী (_C)"
+
+#: ../src/empathy-main-window.ui.h:10
+msgid "_Debug"
msgstr ""
-#: ../src/empathy-main-window.glade.h:14
+#: ../src/empathy-main-window.ui.h:12
+#, fuzzy
+msgid "_File Transfers"
+msgstr "ফাইল বিনিময়"
+
+#: ../src/empathy-main-window.ui.h:13
+msgid "_Help"
+msgstr "সাহায্য (_H)"
+
+#: ../src/empathy-main-window.ui.h:14
+#, fuzzy
+msgid "_Join..."
+msgstr "যোগ দিন (_J)"
+
+#: ../src/empathy-main-window.ui.h:15 ../src/empathy-status-icon.ui.h:2
+msgid "_New Conversation..."
+msgstr "নতুন আলাপন...(_N)"
+
+#: ../src/empathy-main-window.ui.h:16
+#, fuzzy
+msgid "_Offline Contacts"
+msgstr "অফ-লাইন পরিচিতিদের তথ্য প্রকাশ করা হবে (_O)"
+
+#: ../src/empathy-main-window.ui.h:17
msgid "_Personal Information"
msgstr "ব্যক্তিগত তথ্য (_P)"
-#: ../src/empathy-main-window.glade.h:16
+#: ../src/empathy-main-window.ui.h:19
+#, fuzzy
+msgid "_Previous Conversations"
+msgstr "পূর্ববর্তী আলাপন"
+
+#: ../src/empathy-main-window.ui.h:20
msgid "_Room"
+msgstr "রুম (_R)"
+
+#: ../src/empathy-new-chatroom-dialog.c:332
+#, fuzzy
+msgid "Chat Room"
+msgstr "চ্যাট রুম"
+
+#: ../src/empathy-new-chatroom-dialog.c:348
+#, fuzzy
+msgid "Members"
+msgstr "থিম"
+
+#: ../src/empathy-new-chatroom-dialog.c:492
+#, c-format
+msgctxt ""
+"Room/Join's roomlist tooltip. Parametersare a channel name, yes/no, yes/no "
+"and a number."
+msgid ""
+"<b>%s</b>\n"
+"Invite required: %s\n"
+"Password required: %s\n"
+"Members: %s"
+msgstr ""
+
+#: ../src/empathy-new-chatroom-dialog.c:494
+#: ../src/empathy-new-chatroom-dialog.c:495
+msgid "Yes"
+msgstr ""
+
+#: ../src/empathy-new-chatroom-dialog.c:494
+#: ../src/empathy-new-chatroom-dialog.c:495
+msgid "No"
+msgstr ""
+
+#: ../src/empathy-new-chatroom-dialog.c:522
+msgid "Could not start room listing"
msgstr ""
-#: ../src/empathy-new-chatroom-dialog.c:290
-msgid "Chat Rooms"
+#: ../src/empathy-new-chatroom-dialog.c:532
+msgid "Could not stop room listing"
msgstr ""
-#: ../src/empathy-new-chatroom-dialog.glade.h:2
-msgid "Browse:"
-msgstr "ব্রাউজ করুন:"
+#: ../src/empathy-new-chatroom-dialog.ui.h:2
+msgid "Couldn't load room list"
+msgstr ""
-#: ../src/empathy-new-chatroom-dialog.glade.h:3
-msgid "Enter the room name to join here or click on one or more rooms in the list."
+#: ../src/empathy-new-chatroom-dialog.ui.h:3
+msgid ""
+"Enter the room name to join here or click on one or more rooms in the list."
msgstr ""
-#: ../src/empathy-new-chatroom-dialog.glade.h:4
+#: ../src/empathy-new-chatroom-dialog.ui.h:4
msgid ""
"Enter the server which hosts the room, or leave it empty if the room is on "
"the current account's server"
msgstr ""
-#: ../src/empathy-new-chatroom-dialog.glade.h:5
-msgid "Join"
-msgstr "যোগ দিন"
+#: ../src/empathy-new-chatroom-dialog.ui.h:5
+#, fuzzy
+msgid "Join Room"
+msgstr "রুম"
-#: ../src/empathy-new-chatroom-dialog.glade.h:6
-msgid "Join New"
-msgstr "নতুনে যোগ দিন"
+#: ../src/empathy-new-chatroom-dialog.ui.h:6
+#, fuzzy
+msgid "Room List"
+msgstr "রুম তালিকার লোকেইল: (_R)"
-#: ../src/empathy-new-chatroom-dialog.glade.h:7
-msgid "Re_fresh"
-msgstr "নতুন করে প্রদর্শন (_f)"
+#: ../src/empathy-new-chatroom-dialog.ui.h:8
+msgid "_Room:"
+msgstr "রুম: (_R)"
-#: ../src/empathy-new-chatroom-dialog.glade.h:8
-msgid "This list represents all chat rooms hosted on the server you have entered."
-msgstr ""
+#: ../src/empathy-preferences.c:159
+msgid "Message received"
+msgstr "প্রাপ্ত বার্তা"
-#: ../src/empathy-preferences.c:264
-msgid "Language"
-msgstr "ভাষা"
+#: ../src/empathy-preferences.c:160
+msgid "Message sent"
+msgstr "বার্তা পাঠানো হয়েছে"
-#: ../src/empathy-preferences.glade.h:1
-msgid "<b>Appearance</b>"
-msgstr "<b>চেহারা ছবি</b>"
+#: ../src/empathy-preferences.c:161
+msgid "New conversation"
+msgstr "নতুন আলাপন"
-#. To translators: Audio notifications preferences
-#: ../src/empathy-preferences.glade.h:3
-msgid "<b>Audio</b>"
-msgstr "<b>অডিও</b>"
+#: ../src/empathy-preferences.c:162
+msgid "Contact goes online"
+msgstr "পরিচিতি অন-লাইন এসেছেন"
-#: ../src/empathy-preferences.glade.h:4
-msgid "<b>Behaviour</b>"
-msgstr "<b>আচরণ</b>"
+#: ../src/empathy-preferences.c:163
+msgid "Contact goes offline"
+msgstr "পরিচিতি অফ-লাইন চলে গেছেন"
-#: ../src/empathy-preferences.glade.h:5
-msgid "<b>Contact List</b>"
-msgstr "<b>পরিচিতদের তালিকা</b>"
+#: ../src/empathy-preferences.c:164
+msgid "Account connected"
+msgstr "অ্যাকাউন্ট সংযুক্ত করা হয়েছে"
-#: ../src/empathy-preferences.glade.h:6
-msgid "<b>Enable spell checking for languages:</b>"
-msgstr "<b>চিহ্নিত ভাষাগুলির জন্য বানান পরীক্ষণ সক্রিয় করা হবে:</b>"
+#: ../src/empathy-preferences.c:165
+msgid "Account disconnected"
+msgstr "অ্যাকাউন্টের সাথে সংযোগ বিচ্ছিন্ন করা হয়েছে"
-#. To translators: Visual notifications preferences, like notify bubbles, etc.
-#: ../src/empathy-preferences.glade.h:8
-msgid "<b>Visual</b>"
+#: ../src/empathy-preferences.c:432
+msgid "Language"
+msgstr "ভাষা"
+
+#: ../src/empathy-preferences.ui.h:1
+msgid "Adium theme to use:"
msgstr ""
-#: ../src/empathy-preferences.glade.h:9
-msgid ""
-"<small>The list of languages reflects only the languages for which you have "
-"a dictionary installed.</small>"
+#: ../src/empathy-preferences.ui.h:2
+msgid "Allow _GPS usage"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:3
+msgid "Allow _cellphone usage"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:4
+msgid "Allow _network usage"
msgstr ""
-#: ../src/empathy-preferences.glade.h:10
+#: ../src/empathy-preferences.ui.h:5
+#, fuzzy
+msgid "Appearance"
+msgstr "<b>চেহারা ছবি</b>"
+
+#: ../src/empathy-preferences.ui.h:6
msgid "Automatically _connect on startup "
msgstr "প্রারম্ভকালে স্বয়ংক্রিয়রূপে সংযোগ স্থাপন করা হবে (_c)"
-#: ../src/empathy-preferences.glade.h:11
+#: ../src/empathy-preferences.ui.h:7
msgid "Avatars are user chosen images shown in the contact list"
msgstr ""
-#: ../src/empathy-preferences.glade.h:12
+#: ../src/empathy-preferences.ui.h:8
+#, fuzzy
+msgid "Behavior"
+msgstr "<b>আচরণ</b>"
+
+#: ../src/empathy-preferences.ui.h:9
msgid "Chat Th_eme:"
-msgstr ""
+msgstr "চ্যাটের থিম: (_e)"
-#: ../src/empathy-preferences.glade.h:13
-msgid "Display notifications when contacts come _online"
-msgstr "পরিচিত ব্যক্তিরা অন-লাইন যোগদান করলে সূচনাবার্তা প্রদর্শিত হবে (_o)"
+#: ../src/empathy-preferences.ui.h:11
+msgid "Disable notifications when _away or busy"
+msgstr "অনুপস্থিত অথবা ব্যস্ত থাকলে সূচনাপ্রদানের ব্যবস্থা নিষ্ক্রিয় করা হবে (_a)"
-#: ../src/empathy-preferences.glade.h:14
-msgid "Enable sounds when _away"
-msgstr "অনুপস্থিত হলে শব্দ সক্রিয় করা হবে (_a)"
+#: ../src/empathy-preferences.ui.h:12
+msgid "Disable sounds when _away or busy"
+msgstr "অনুপস্থিত অথবা ব্যস্ত থাকলে শব্দ নিষ্ক্রিয় করা হবে (_a)"
-#: ../src/empathy-preferences.glade.h:15
-msgid "Enable sounds when _busy"
-msgstr "ব্যস্ত অবস্থায় শব্দ সক্রিয় করা হবে (_b)"
+#: ../src/empathy-preferences.ui.h:13
+msgid "Enable notifications when the _chat is not focused"
+msgstr ""
-#: ../src/empathy-preferences.glade.h:16
+#: ../src/empathy-preferences.ui.h:14
+#, fuzzy
+msgid "Enable spell checking for languages:"
+msgstr "<b>চিহ্নিত ভাষাগুলির জন্য বানান পরীক্ষণ সক্রিয় করা হবে:</b>"
+
+#: ../src/empathy-preferences.ui.h:15
msgid "General"
msgstr "সাধারণ"
-#: ../src/empathy-preferences.glade.h:17
+#: ../src/empathy-preferences.ui.h:16
+msgid "Geoclue Settings"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:17
+#, fuzzy
+msgid "Location"
+msgstr "সূচনাবার্তা"
+
+#: ../src/empathy-preferences.ui.h:18
+msgid "Not a valid adium theme"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:19
msgid "Notifications"
msgstr "সূচনাবার্তা"
-#: ../src/empathy-preferences.glade.h:18
+#: ../src/empathy-preferences.ui.h:20
+#, fuzzy
+msgid "Play sound for events"
+msgstr "<b>বিভিন্ন ঘটনার জন্য শব্দ বাজানো হবে</b>"
+
+#: ../src/empathy-preferences.ui.h:21
msgid "Preferences"
msgstr "পছন্দ"
-#: ../src/empathy-preferences.glade.h:19
+#: ../src/empathy-preferences.ui.h:22
+msgid "Privacy"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:23
+msgid ""
+"Reduced location accuracy means that nothing more precise than your city, "
+"state and country will be published. GPS coordinates will have a random "
+"value added (&#xB1;0.25&#xB0;)."
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:24
msgid "Show _avatars"
msgstr "অবতারের ছবি প্রদর্শন করা হবে (_a)"
-#: ../src/empathy-preferences.glade.h:20
+#: ../src/empathy-preferences.ui.h:25
msgid "Show _smileys as images"
msgstr "ছবি রূপে স্মাইলি প্রদর্শন করা হবে (_s)"
-#: ../src/empathy-preferences.glade.h:21
+#: ../src/empathy-preferences.ui.h:26
msgid "Show co_mpact contact list"
-msgstr ""
+msgstr "পরিচিতিদের তালিকা সংকুচন করে প্রদর্শন করা হবে (_m)"
-#: ../src/empathy-preferences.glade.h:22
+#: ../src/empathy-preferences.ui.h:27
+#, fuzzy
+msgid "Show contact _list in rooms"
+msgstr "পরিচিত ব্যক্তিদের তালিকা প্রদর্শন করা হবে (_S)"
+
+#: ../src/empathy-preferences.ui.h:28
msgid "Sort by _name"
msgstr "নাম অনুযায়ী সুবিন্যস্ত করা হবে (_n)"
-#: ../src/empathy-preferences.glade.h:23
+#: ../src/empathy-preferences.ui.h:29
msgid "Sort by s_tate"
msgstr "অবস্থা অনুযায়ী সুবিন্যস্ত করা হবে (_t)"
-#: ../src/empathy-preferences.glade.h:24
+#: ../src/empathy-preferences.ui.h:30
+msgid "Sounds"
+msgstr "শব্দ"
+
+#: ../src/empathy-preferences.ui.h:31
msgid "Spell Checking"
msgstr "বানা পরীক্ষণ"
-#: ../src/empathy-preferences.glade.h:25
+#: ../src/empathy-preferences.ui.h:32
+msgid ""
+"The list of languages reflects only the languages for which you have a "
+"dictionary installed."
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:33
msgid "Themes"
msgstr "থিম"
-#: ../src/empathy-preferences.glade.h:26
+#: ../src/empathy-preferences.ui.h:34
+msgid "_Enable bubble notifications"
+msgstr "বাবল দ্বারা সূচনাপ্রদান সক্রিয় করা হবে (_E)"
+
+#: ../src/empathy-preferences.ui.h:35
+msgid "_Enable sound notifications"
+msgstr "শব্দ দ্বারা সূচনাপ্রদান সক্রিয় করা হবে (_E)"
+
+#: ../src/empathy-preferences.ui.h:36
msgid "_Open new chats in separate windows"
+msgstr "নতুন চ্যাটগুলি পৃথক উইন্ডোর মধ্যে খোলা হবে (_O)"
+
+#: ../src/empathy-preferences.ui.h:37
+msgid "_Publish location to my contacts"
msgstr ""
-#: ../src/empathy-preferences.glade.h:27
-msgid "_Play sound when messages arrive"
-msgstr "নতুন বার্তা প্রাপ্ত হলে শব্দ বাজানো হবে (_P)"
+#: ../src/empathy-preferences.ui.h:38
+msgid "_Reduce location accuracy"
+msgstr ""
-#: ../src/empathy-status-icon.glade.h:1
+#: ../src/empathy-status-icon.ui.h:1
msgid "Status"
msgstr "অবস্থা"
-#: ../src/empathy-status-icon.glade.h:3
+#: ../src/empathy-status-icon.ui.h:3
msgid "_Quit"
msgstr "প্রস্থান (_Q)"
-#: ../src/empathy-status-icon.glade.h:4
+#: ../src/empathy-status-icon.ui.h:4
msgid "_Show Contact List"
msgstr "পরিচিত ব্যক্তিদের তালিকা প্রদর্শন করা হবে (_S)"
+#: ../src/empathy-tube-dispatch.c:375
+#, c-format
+msgid "Unable to start application for service %s: %s"
+msgstr "%s পরিসেবার জন্য অ্যাপ্লিকেশন আরম্ভ করতে ব্যর্থ: %s"
+
+#: ../src/empathy-tube-dispatch.c:446
+#, c-format
+msgid ""
+"An invitation was offered for service %s, but you don't have the needed "
+"application to handle it"
+msgstr ""
+
+#: ../src/empathy-call-window-fullscreen.ui.h:1
+msgid "gtk-leave-fullscreen"
+msgstr ""
+
+#: ../src/empathy-map-view.ui.h:1
+#, fuzzy
+msgid "Contact Map View"
+msgstr "পরিচিত ব্যক্তিদের তালিকা"
+
+#: ../src/empathy-debug-dialog.c:111 ../src/empathy-debug-dialog.c:1075
+msgid "Error"
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:114 ../src/empathy-debug-dialog.c:1069
+#, fuzzy
+msgid "Critical"
+msgstr "ক্রোয়েশিয়ান"
+
+#: ../src/empathy-debug-dialog.c:117 ../src/empathy-debug-dialog.c:1063
+#, fuzzy
+msgid "Warning"
+msgstr "অবশিষ্ট"
+
+#: ../src/empathy-debug-dialog.c:120 ../src/empathy-debug-dialog.c:1057
+#: ../src/empathy-debug-dialog.c:1105
+#, fuzzy
+msgid "Message"
+msgstr "বার্তা:"
+
+#: ../src/empathy-debug-dialog.c:123 ../src/empathy-debug-dialog.c:1051
+msgid "Info"
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:126 ../src/empathy-debug-dialog.c:1045
+msgid "Debug"
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:837
+#, fuzzy
+msgid "Save"
+msgstr "সার্ভার"
+
+#: ../src/empathy-debug-dialog.c:940
+msgid "Debug Window"
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:1013
+msgid "Pause"
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:1025
+msgid "Level "
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:1094
+#, fuzzy
+msgid "Time"
+msgstr "সাধারণ"
+
+#: ../src/empathy-debug-dialog.c:1096
+#, fuzzy
+msgid "Domain"
+msgstr "রোমেনিয়ান"
+
+#: ../src/empathy-debug-dialog.c:1098
+msgid "Category"
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:1100
+msgid "Level"
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:1132
+msgid ""
+"The selected connection manager does not support the remote debugging "
+"extension."
+msgstr ""
+
+#~ msgid "Forget password and clear the entry."
+#~ msgstr "পাসওয়ার্ড মুছে ফেলা হবে ও এনট্রি পরিশ্রুত করা হবে।"
+
+#~ msgid "<b>Network</b>"
+#~ msgstr "<b>নেটওয়ার্ক</b>"
+
+#~ msgid "<b>Servers</b>"
+#~ msgstr "<b>সার্ভার</b>"
+
+#~ msgid "Edit the selected IRC network"
+#~ msgstr "নির্বাচিত IRC নেটওয়ার্কের বৈশিষ্ট্য পরিবর্তন করুন"
+
+#~ msgid "Remove the selected IRC network"
+#~ msgstr "নির্বাচিত IRC নেটওয়ার্ক মুছে ফেলুন"
+
+#~ msgid "_Check Word Spelling..."
+#~ msgstr "শব্দের বানান পরীক্ষা করুন...(_C)"
+
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>বিষয়:</b>"
+
+#~ msgid "Group Chat"
+#~ msgstr "দলভিক্তিক আলাপন"
+
+#~ msgid "Contact Information"
+#~ msgstr "যোগাযোগ সংক্রান্ত তথ্য"
+
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "আমি আপনাকের আমার পরিচিতি তালিকায় যোগ করতে ইচ্ছুক।"
+
+#~ msgid "Sorry, I don't want you in my contact list anymore."
+#~ msgstr "দুঃখিত, আমার পরিচিতি তালিকায় আপনাকে আমি স্থান দিতে ইচ্ছুক নই।"
+
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>দল</b>"
+
+#~ msgid "Contact information"
+#~ msgstr "যোগাযোগ সংক্রান্ত তথ্য"
+
+#~ msgid "Word"
+#~ msgstr "শব্দ"
+
+#~ msgid "Suggestions for the word"
+#~ msgstr "শব্দের প্রস্তাব"
+
+#~ msgid "Spell Checker"
+#~ msgstr "বানান পরীক্ষণ ব্যবস্থা"
+
+#~ msgid "Suggestions for the word:"
+#~ msgstr "শব্দের প্রস্তাব:"
+
+#~ msgid "<b>New Account</b>"
+#~ msgstr "<b>নতুন অ্যাকাউন্ট</b>"
+
+#~ msgid "I already have an account I want to use"
+#~ msgstr "ব্যবহারযোগ্য আমার একটি অ্যাকাউন্ট বর্তমান উপস্থিত রয়েছে"
+
+#~| msgid ""
+#~| "New message from %s:\n"
+#~| "%s"
+#~ msgid "New message from %s"
+#~ msgstr "%s থেকে প্রাপ্ত নতুন বার্তা"
+
+#~ msgid "C_lear"
+#~ msgstr "মুছে ফেলুন (_l)"
+
+#~ msgid "Chat"
+#~ msgstr "আলাপন"
+
+#~ msgid "Insert _Smiley"
+#~ msgstr "স্মাইলি যোগ করুন (_S)"
+
+#~ msgid "Invitation _message:"
+#~ msgstr "আমন্ত্রণ বার্তা: (_m)"
+
+#~ msgid "Invite"
+#~ msgstr "আমন্ত্রণ করুন"
+
+#~ msgid "Move Tab _Left"
+#~ msgstr "ট্যাব বাঁদিকে সরিয়ে নিন (_L)"
+
+#~ msgid "Move Tab _Right"
+#~ msgstr "ট্যাব ডানদিকে সরিয়ে নিন (_R)"
+
+#~ msgid "Select who would you like to invite:"
+#~ msgstr "আমন্ত্রিতদের তালিকা তৈরি করুন:"
+
+#~ msgid "You have been invited to join a chat conference."
+#~ msgstr "চ্যাট বৈঠকে যোগদানের জন্য আপনাকে আমন্ত্রণ করা হয়েছে।"
+
+#~ msgid "_Contact"
+#~ msgstr "পরিচিত ব্যক্তি (_C)"
+
+#~ msgid "_Conversation"
+#~ msgstr "আলাপন (_C)"
+
+#~ msgid "_Detach Tab"
+#~ msgstr "ট্যাব বিচ্ছিন্ন করুন (_D)"
+
+#~ msgid "_Favorite Chatroom"
+#~ msgstr "জনপ্রিয় চ্যাট-রুম (_F)"
+
+#~ msgid "_Next Tab"
+#~ msgstr "পরবর্তী ট্যাব (_N)"
+
+#~ msgid "_Previous Tab"
+#~ msgstr "পূর্ববর্তী ট্যাব (_P)"
+
+#~ msgid "_Tabs"
+#~ msgstr "ট্যাব (_T)"
+
+#~ msgid "Edit Favorite Room"
+#~ msgstr "জনপ্রিয় রুমের তালিকা সম্পাদনা"
+
+#~ msgid "Join room on start_up"
+#~ msgstr "প্রারম্ভকালে রুমে সংযোগ করা হবে (_u)"
+
+#~ msgid "N_ame:"
+#~ msgstr "নাম: (_a)"
+
+#~ msgid "S_erver:"
+#~ msgstr "সার্ভার: (_e)"
+
+#~| msgid "unknown"
+#~ msgctxt "file size"
+#~ msgid "Unknown"
+#~ msgstr "অজানা"
+
+#~ msgid "\"%s\" receiving from %s"
+#~ msgstr "\"%s\" প্রাপ্ত করা হচ্ছে, %s থেকে"
+
+#~ msgid "\"%s\" sending to %s"
+#~ msgstr "\"%s\" পাঠানো হচ্ছে, %s-কে"
+
+#~ msgid "File transfer canceled: %s"
+#~ msgstr "ফাইল বিনিময় বাতিল করা হয়েছে: %s"
+
+#~| msgid "unknown"
+#~ msgctxt "remaining time"
+#~ msgid "Unknown"
+#~ msgstr "অজানা"
+
+#~ msgid "Cannot save file to this location"
+#~ msgstr "এই স্থানে ফাইল সংরক্ষণ করা সম্ভব নয়"
+
+#~ msgid "Save file as..."
+#~ msgstr "নতুন রূপে ফাইল সংরক্ষণ করুন..."
+
+#~| msgid "unknown"
+#~ msgid "unknown size"
+#~ msgstr "অজানা মাপ"
+
+#~| msgid "I would like to add you to my contact list."
+#~ msgid "%s would like to send you a file"
+#~ msgstr "%s আপনাকে একটি ফাইল সংরক্ষণ করতে ইচ্ছুক"
+
+#~ msgid "Do you want to accept the file \"%s\" (%s)?"
+#~ msgstr "আপনি কি \"%s\" (%s) ফাইলটি গ্রহণ করতে ইচ্ছুক?"
+
+#~| msgid "_Accounts"
+#~ msgid "_Accept"
+#~ msgstr "গ্রহণ করুন (_A)"
+
+#~ msgid "Join _New..."
+#~ msgstr "নতুন একটিতে যোগ দিন...(_N)"
+
+#~ msgid "Browse:"
+#~ msgstr "ব্রাউজ করুন:"
+
+#~ msgid "Join"
+#~ msgstr "যোগ দিন"
+
+#~ msgid "Join New"
+#~ msgstr "নতুনে যোগ দিন"
+
+#~ msgid "Re_fresh"
+#~ msgstr "নতুন করে প্রদর্শন (_f)"
+
+#~ msgid "<b>Contact List</b>"
+#~ msgstr "<b>পরিচিতদের তালিকা</b>"
diff --git a/po/es.po b/po/es.po
index b430d5b9e..33c53b1e4 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: empathy.HEAD\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=empathy&component=general\n"
-"POT-Creation-Date: 2009-06-04 16:15+0000\n"
-"PO-Revision-Date: 2009-06-06 12:46+0200\n"
+"POT-Creation-Date: 2009-06-23 10:10+0000\n"
+"PO-Revision-Date: 2009-06-27 15:03+0200\n"
"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
"Language-Team: Español <gnome-es-list@gnome.org>\n"
"MIME-Version: 1.0\n"
@@ -135,104 +135,126 @@ msgid "Open new chats in separate windows"
msgstr "Abrir chats nuevos en ventanas separadas"
#: ../data/empathy.schemas.in.h:26
+msgid "Path of the adium theme to use"
+msgstr "Ruta del tema adium que usar"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Path of the adium theme to use if the theme used for chat is adium."
+msgstr "Ruta al tema adium que usar si el tema usado para el chat es adium."
+
+#: ../data/empathy.schemas.in.h:28
msgid "Play a sound for incoming messages"
msgstr "Reproducir un sonido cuando lleguen mensajes"
-#: ../data/empathy.schemas.in.h:27
+#: ../data/empathy.schemas.in.h:29
msgid "Play a sound for new conversations"
msgstr "Reproducir un sonido para conversaciones nuevas"
-#: ../data/empathy.schemas.in.h:28
+#: ../data/empathy.schemas.in.h:30
msgid "Play a sound for outgoing messages"
msgstr "Reproducir un sonido al enviar mensajes"
-#: ../data/empathy.schemas.in.h:29
+#: ../data/empathy.schemas.in.h:31
msgid "Play a sound when a contact logs in"
msgstr "Reproducir un sonido cuando un contacto inicie sesión"
-#: ../data/empathy.schemas.in.h:30
+#: ../data/empathy.schemas.in.h:32
msgid "Play a sound when a contact logs out"
msgstr "Reproducir un sonido cuando un contacto finalice su sesión"
-#: ../data/empathy.schemas.in.h:31
+#: ../data/empathy.schemas.in.h:33
msgid "Play a sound when we log in"
msgstr "Reproducir un sonido cuando inicio sesión"
-#: ../data/empathy.schemas.in.h:32
+#: ../data/empathy.schemas.in.h:34
msgid "Play a sound when we log out"
msgstr "Reproducir un sonido cuando finalizo una sesión"
-#: ../data/empathy.schemas.in.h:33
+#: ../data/empathy.schemas.in.h:35
msgid "Popup notifications if the chat isn't focused"
msgstr ""
"Mostrar notificaciones emergentes si la ventana de chat no tiene el foco"
-#: ../data/empathy.schemas.in.h:34
+#: ../data/empathy.schemas.in.h:36
+#| msgid "Popup notifications if the chat isn't focused"
+msgid "Popup notifications when a contact sign in"
+msgstr "Mostrar notificaciones emergentes cuando un contacto se conecta."
+
+#: ../data/empathy.schemas.in.h:37
+#| msgid "Popup notifications if the chat isn't focused"
+msgid "Popup notifications when a contact sign out"
+msgstr "Mostrar notificaciones emergentes cuando un contacto se desconecta."
+
+#: ../data/empathy.schemas.in.h:38
msgid "Salut account is created"
msgstr "Se creó la cuenta Salut"
-#: ../data/empathy.schemas.in.h:35
+#: ../data/empathy.schemas.in.h:39
msgid "Show avatars"
msgstr "Mostrar avatares"
-#: ../data/empathy.schemas.in.h:36
+#: ../data/empathy.schemas.in.h:40
+msgid "Show contact list in rooms"
+msgstr "Mostrar lista de contactos en salas"
+
+#: ../data/empathy.schemas.in.h:41
msgid "Show hint about closing the main window"
msgstr "Mostrar consejo sobre cómo cerrar la ventana principal"
-#: ../data/empathy.schemas.in.h:37
+#: ../data/empathy.schemas.in.h:42
msgid "Show offline contacts"
msgstr "Mostrar contactos no conectados"
-#: ../data/empathy.schemas.in.h:38
+#: ../data/empathy.schemas.in.h:43
msgid "Spell checking languages"
msgstr "Idiomas para revisión ortográfica"
-#: ../data/empathy.schemas.in.h:39
+#: ../data/empathy.schemas.in.h:44
msgid "The default folder to save file transfers in."
msgstr "La carpeta predeterminada donde guardar los archivos transferidos."
-#: ../data/empathy.schemas.in.h:40
+#: ../data/empathy.schemas.in.h:45
msgid "The last directory that an avatar image was chosen from."
msgstr "Último directorio del que fue elegido un avatar."
-#: ../data/empathy.schemas.in.h:41
+#: ../data/empathy.schemas.in.h:46
msgid "The theme that is used to display the conversation in chat windows."
msgstr ""
"El tema que se usará para mostrar la conversación en las ventanas de chat."
-#: ../data/empathy.schemas.in.h:42
+#: ../data/empathy.schemas.in.h:47
msgid "Use graphical smileys"
msgstr "Usar emoticonos gráficos"
-#: ../data/empathy.schemas.in.h:43
+#: ../data/empathy.schemas.in.h:48
msgid "Use notification sounds"
msgstr "Usar sonidos de notificación"
-#: ../data/empathy.schemas.in.h:44
+#: ../data/empathy.schemas.in.h:49
msgid "Use theme for chat rooms"
msgstr "Usar tema para salas de chat"
-#: ../data/empathy.schemas.in.h:45
+#: ../data/empathy.schemas.in.h:50
msgid "Whether or not Empathy can publish the user's location to his contacts."
msgstr ""
"Indica si Empathy puede publicar la ubicación del usuario a sus contactos."
-#: ../data/empathy.schemas.in.h:46
+#: ../data/empathy.schemas.in.h:51
msgid "Whether or not Empathy can use the GPS to guess the location."
msgstr "Indica si Empathy puede usar el GPS para deducir la ubicación."
-#: ../data/empathy.schemas.in.h:47
+#: ../data/empathy.schemas.in.h:52
msgid ""
"Whether or not Empathy can use the cellular network to guess the location."
msgstr ""
"Indica si Empathy puede usar la red telefónica móvil para deducir la "
"ubicación."
-#: ../data/empathy.schemas.in.h:48
+#: ../data/empathy.schemas.in.h:53
msgid "Whether or not Empathy can use the network to guess the location."
msgstr "Indica si Empathy puede usar la red para deducir la ubicación."
-#: ../data/empathy.schemas.in.h:49
+#: ../data/empathy.schemas.in.h:54
msgid ""
"Whether or not Empathy has asked about importing accounts from other "
"programs."
@@ -240,7 +262,7 @@ msgstr ""
"Indica si Empathy ha preguntado acerca de importar cuentas de otros "
"programas."
-#: ../data/empathy.schemas.in.h:50
+#: ../data/empathy.schemas.in.h:55
msgid ""
"Whether or not Empathy should automatically log in to your accounts on "
"startup."
@@ -248,7 +270,7 @@ msgstr ""
"Indica si Empathy debe iniciar sesión en sus cuentas automáticamente al "
"inicio."
-#: ../data/empathy.schemas.in.h:51
+#: ../data/empathy.schemas.in.h:56
msgid ""
"Whether or not Empathy should reduce the location's accuracy for privacy "
"reasons."
@@ -256,7 +278,7 @@ msgstr ""
"Indica si Empathy debería reducir la precisión de la ubicación por motivos "
"de privacidad."
-#: ../data/empathy.schemas.in.h:52
+#: ../data/empathy.schemas.in.h:57
msgid ""
"Whether or not Empathy should use the avatar of the contact as the chat "
"window icon."
@@ -264,14 +286,14 @@ msgstr ""
"Indica si Empathy debería usar el avatar del contacto como el icono de la "
"ventana de chat."
-#: ../data/empathy.schemas.in.h:53
+#: ../data/empathy.schemas.in.h:58
msgid ""
"Whether or not the Salut account has been created on the first Empathy run."
msgstr ""
"Indica si la cuenta Salut se ha creado cuando ejecutó por primera vez "
"Empathy."
-#: ../data/empathy.schemas.in.h:54
+#: ../data/empathy.schemas.in.h:59
msgid ""
"Whether or not the network manager should be used to automatically "
"disconnect/reconnect."
@@ -279,7 +301,7 @@ msgstr ""
"Indica si se debe usar el gestor de la red para desconectarse/reconectarse "
"automáticamente."
-#: ../data/empathy.schemas.in.h:55
+#: ../data/empathy.schemas.in.h:60
msgid ""
"Whether or not to check words typed against the languages you want to check "
"with."
@@ -287,21 +309,21 @@ msgstr ""
"Indica si se deben revisar las palabras tecleadas con respecto a los idiomas "
"con los que quiere comprobarlo."
-#: ../data/empathy.schemas.in.h:56
+#: ../data/empathy.schemas.in.h:61
msgid ""
"Whether or not to convert smileys into graphical images in conversations."
msgstr ""
"Indica si se deben convertir los emoticonos en imágenes gráficas en las "
"conversaciones."
-#: ../data/empathy.schemas.in.h:57
+#: ../data/empathy.schemas.in.h:62
msgid ""
"Whether or not to play a sound to notify for contacts logging in the network."
msgstr ""
"Indica si se debe reproducir un sonido para notificar los inicios de sesión "
"de los contactos en la red."
-#: ../data/empathy.schemas.in.h:58
+#: ../data/empathy.schemas.in.h:63
msgid ""
"Whether or not to play a sound to notify for contacts logging off the "
"network."
@@ -309,40 +331,54 @@ msgstr ""
"Indica si se debe reproducir un sonido para notificar las finalizaciones de "
"sesión de los contactos en la red."
-#: ../data/empathy.schemas.in.h:59
+#: ../data/empathy.schemas.in.h:64
msgid "Whether or not to play a sound to notify for events."
msgstr "Indica si se debe reproducir un sonido para notificar eventos."
-#: ../data/empathy.schemas.in.h:60
+#: ../data/empathy.schemas.in.h:65
msgid "Whether or not to play a sound to notify for incoming messages."
msgstr ""
"Indica si se debe reproducir un sonido para notificar mensajes entrantes."
-#: ../data/empathy.schemas.in.h:61
+#: ../data/empathy.schemas.in.h:66
msgid "Whether or not to play a sound to notify for new conversations."
msgstr ""
"Indica si se debe reproducir un sonido para notificar conversaciones nuevas."
-#: ../data/empathy.schemas.in.h:62
+#: ../data/empathy.schemas.in.h:67
msgid "Whether or not to play a sound to notify for outgoing messages."
msgstr ""
"Indica si se debe reproducir un sonido para notificar mensajes salientes."
-#: ../data/empathy.schemas.in.h:63
+#: ../data/empathy.schemas.in.h:68
msgid "Whether or not to play a sound when logging in a network."
msgstr "Indica si se debe reproducir un sonido al iniciar sesión en una red."
-#: ../data/empathy.schemas.in.h:64
+#: ../data/empathy.schemas.in.h:69
msgid "Whether or not to play a sound when logging off a network."
msgstr "Indica si se debe reproducir un sonido al finalizar sesión en una red."
-#: ../data/empathy.schemas.in.h:65
+#: ../data/empathy.schemas.in.h:70
msgid "Whether or not to play sound notifications when away or busy."
msgstr ""
"Indica si se deben reproducir sonidos de notificaciones cuando se esté "
"ausente u ocupado."
-#: ../data/empathy.schemas.in.h:66
+#: ../data/empathy.schemas.in.h:71
+#| msgid "Whether or not to show popup notifications when away or busy."
+msgid ""
+"Whether or not to show a popup notification when a contact goes offline."
+msgstr ""
+"Indica si se deben mostrar las notificaciones emergentes cuando un contacto "
+"se desconecta."
+
+#: ../data/empathy.schemas.in.h:72
+#| msgid "Whether or not to show popup notifications when away or busy."
+msgid "Whether or not to show a popup notification when a contact goes online."
+msgstr ""
+"Indica si se deben mostrar las notificaciones emergentes cuando se conecta."
+
+#: ../data/empathy.schemas.in.h:73
msgid ""
"Whether or not to show a popup notification when receiving a new message "
"even if the chat is already opened, but not focused."
@@ -350,14 +386,14 @@ msgstr ""
"Indica si de deben mostrar notificaciones emergentes al recibir un mensaje "
"nuevo incluso si la ventana de chat ya está abierta pero no tiene el foco."
-#: ../data/empathy.schemas.in.h:67
+#: ../data/empathy.schemas.in.h:74
msgid ""
"Whether or not to show a popup notification when receiving a new message."
msgstr ""
"Indica si se deben mostrar notificaciones emergentes al recibir un mensaje "
"nuevo."
-#: ../data/empathy.schemas.in.h:68
+#: ../data/empathy.schemas.in.h:75
msgid ""
"Whether or not to show avatars for contacts in the contact list and chat "
"windows."
@@ -365,19 +401,23 @@ msgstr ""
"Indica si se debe mostrar los avatares para los contactos en la lista de "
"contactos y ventanas de chat."
-#: ../data/empathy.schemas.in.h:69
+#: ../data/empathy.schemas.in.h:76
msgid "Whether or not to show contacts that are offline in the contact list."
msgstr ""
"Indica si se debe mostrar los contactos que están desconectados en la lista "
"de contactos."
-#: ../data/empathy.schemas.in.h:70
+#: ../data/empathy.schemas.in.h:77
msgid "Whether or not to show popup notifications when away or busy."
msgstr ""
"Indica si se deben mostrar las notificaciones emergentes cuando se esté "
"ausente u ocupado."
-#: ../data/empathy.schemas.in.h:71
+#: ../data/empathy.schemas.in.h:78
+msgid "Whether or not to show the contact list in chat rooms."
+msgstr "Indica si se debe mostrar la lista de contactos en salas de chat."
+
+#: ../data/empathy.schemas.in.h:79
msgid ""
"Whether or not to show the message dialog about closing the main window with "
"the 'x' button in the title bar."
@@ -385,15 +425,15 @@ msgstr ""
"Indica si se debe mostrar un mensaje de diálogo sobre cómo cerrar la ventana "
"principal con el botón 'x' en la barra de título."
-#: ../data/empathy.schemas.in.h:72
+#: ../data/empathy.schemas.in.h:80
msgid "Whether to show the contact list in compact mode or not."
msgstr "Indica si se debe mostrar la lista de contactos en modo compacto."
-#: ../data/empathy.schemas.in.h:73
+#: ../data/empathy.schemas.in.h:81
msgid "Whether to use the theme for chat rooms or not."
msgstr "Indica si se debe usar el tema para salas de chat."
-#: ../data/empathy.schemas.in.h:74
+#: ../data/empathy.schemas.in.h:82
msgid ""
"Which criterium to use when sorting the contact list. Default is to use sort "
"by the contact's name with the value \"name\". A value of \"state\" will "
@@ -411,35 +451,47 @@ msgstr "El «hash» del archivo recibido y del enviado no coinciden"
msgid "File transfer not supported by remote contact"
msgstr "El contacto remoto no soporta la transferencia de archivos"
-#: ../libempathy/empathy-tp-contact-list.c:727 ../src/empathy.c:286
+#: ../libempathy/empathy-ft-handler.c:1156
+msgid "The selected file is not a regular file"
+msgstr "El archivo seleccionado no es un archivo regular"
+
+#: ../libempathy/empathy-ft-handler.c:1165
+msgid "The selected file is empty"
+msgstr "El archivo seleccionado está vacío"
+
+#: ../libempathy/empathy-tp-contact-list.c:757 ../src/empathy.c:287
msgid "People nearby"
msgstr "Gente cerca"
-#: ../libempathy/empathy-tp-file.c:300
+#: ../libempathy/empathy-tp-file.c:279
+msgid "Socket type not supported"
+msgstr "El tipo de socket no está soportado"
+
+#: ../libempathy/empathy-tp-file.c:398
msgid "No reason was specified"
msgstr "No se especificó ninguna razón"
-#: ../libempathy/empathy-tp-file.c:303
+#: ../libempathy/empathy-tp-file.c:401
msgid "The change in state was requested"
msgstr "Se requirió un cambio en el estado"
-#: ../libempathy/empathy-tp-file.c:306
+#: ../libempathy/empathy-tp-file.c:404
msgid "You canceled the file transfer"
msgstr "Canceló la transferencia del archivo"
-#: ../libempathy/empathy-tp-file.c:309
+#: ../libempathy/empathy-tp-file.c:407
msgid "The other participant canceled the file transfer"
msgstr "El otro participante canceló la transferencia del archivo"
-#: ../libempathy/empathy-tp-file.c:312
+#: ../libempathy/empathy-tp-file.c:410
msgid "Error while trying to transfer the file"
msgstr "Error la intentar transferir el archivo"
-#: ../libempathy/empathy-tp-file.c:315
+#: ../libempathy/empathy-tp-file.c:413
msgid "The other participant is unable to transfer the file"
msgstr "El otro participante no puede transferir el archivo"
-#: ../libempathy/empathy-tp-file.c:318
+#: ../libempathy/empathy-tp-file.c:416
msgid "Unknown reason"
msgstr "Razón desconocida"
@@ -493,12 +545,19 @@ msgstr[1] "hace %d días"
#: ../libempathy/empathy-time.c:157
#, c-format
+msgid "%d week ago"
+msgid_plural "%d weeks ago"
+msgstr[0] "hace %d semana"
+msgstr[1] "hace %d semanas"
+
+#: ../libempathy/empathy-time.c:162
+#, c-format
msgid "%d month ago"
msgid_plural "%d months ago"
msgstr[0] "hace %d mes"
msgstr[1] "hace %d meses"
-#: ../libempathy/empathy-time.c:162
+#: ../libempathy/empathy-time.c:167
msgid "in the future"
msgstr "en el futuro"
@@ -521,8 +580,8 @@ msgstr "%s:"
#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:1
#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:1
#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:1
-msgid "<b>Advanced</b>"
-msgstr "<b>Avanzado</b>"
+msgid "Advanced"
+msgstr "Avanzado"
#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:2
#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:3
@@ -558,7 +617,7 @@ msgid "_Server:"
msgstr "_Servidor:"
#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:2
-#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:2
#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:2
msgid "Login I_D:"
msgstr "_ID de sesión:"
@@ -577,44 +636,40 @@ msgid "New Network"
msgstr "Red nueva"
#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1
-msgid "<b>Network</b>"
-msgstr "<b>Red</b>"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
-msgid "<b>Servers</b>"
-msgstr "<b>Servidores</b>"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
msgid "Charset:"
msgstr "Conjunto de caracteres:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
msgid "Network"
msgstr "Red"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
msgid "Network:"
msgstr "Red:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
msgid "Nickname:"
msgstr "Apodo:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
msgid "Password:"
msgstr "Contraseña:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
msgid "Quit message:"
msgstr "Mensaje de salida:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
msgid "Real name:"
msgstr "Nombre real:"
-#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:2
-msgid "<b>Override server settings</b>"
-msgstr "<b>Sobreescribir los ajustes del servidor</b>"
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+msgid "Servers"
+msgstr "Servidores"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3
+msgid "Override server settings"
+msgstr "Sobreescribir los ajustes del servidor"
#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:5
msgid "Pri_ority:"
@@ -722,108 +777,108 @@ msgstr "Todos los archivos"
msgid "Click to enlarge"
msgstr "Pulse para agrandar"
-#: ../libempathy-gtk/empathy-chat.c:178
+#: ../libempathy-gtk/empathy-chat.c:186
msgid "Failed to reconnect this chat"
msgstr "Falló al reconectar a este chat"
-#: ../libempathy-gtk/empathy-chat.c:396
+#: ../libempathy-gtk/empathy-chat.c:404
msgid "Unsupported command"
msgstr "Comando no soportado"
-#: ../libempathy-gtk/empathy-chat.c:531
+#: ../libempathy-gtk/empathy-chat.c:539
msgid "offline"
msgstr "desconectado"
-#: ../libempathy-gtk/empathy-chat.c:534
+#: ../libempathy-gtk/empathy-chat.c:542
msgid "invalid contact"
msgstr "contacto no válido"
-#: ../libempathy-gtk/empathy-chat.c:537
+#: ../libempathy-gtk/empathy-chat.c:545
msgid "permission denied"
msgstr "permiso denegado"
-#: ../libempathy-gtk/empathy-chat.c:540
+#: ../libempathy-gtk/empathy-chat.c:548
msgid "too long message"
msgstr "mensaje demasiado largo"
-#: ../libempathy-gtk/empathy-chat.c:543
+#: ../libempathy-gtk/empathy-chat.c:551
msgid "not implemented"
msgstr "no implementado"
-#: ../libempathy-gtk/empathy-chat.c:546
+#: ../libempathy-gtk/empathy-chat.c:554
msgid "unknown"
msgstr "desconocido"
-#: ../libempathy-gtk/empathy-chat.c:550
+#: ../libempathy-gtk/empathy-chat.c:558
#, c-format
msgid "Error sending message '%s': %s"
msgstr "Error al enviar el mensaje «%s»: %s"
-#: ../libempathy-gtk/empathy-chat.c:580
+#: ../libempathy-gtk/empathy-chat.c:588
#, c-format
msgid "Topic set to: %s"
msgstr "El tema se ha establecido a: %s"
-#: ../libempathy-gtk/empathy-chat.c:582
+#: ../libempathy-gtk/empathy-chat.c:590
msgid "No topic defined"
msgstr "No se ha definido el tema"
-#: ../libempathy-gtk/empathy-chat.c:951
+#: ../libempathy-gtk/empathy-chat.c:959
msgid "(No Suggestions)"
msgstr "(Sin sugerencias)"
-#: ../libempathy-gtk/empathy-chat.c:1005
+#: ../libempathy-gtk/empathy-chat.c:1013
msgid "Insert Smiley"
msgstr "Insertar emoticono"
#. send button
-#: ../libempathy-gtk/empathy-chat.c:1023
-#: ../libempathy-gtk/empathy-ui-utils.c:1453
+#: ../libempathy-gtk/empathy-chat.c:1031
+#: ../libempathy-gtk/empathy-ui-utils.c:1476
msgid "_Send"
msgstr "E_nviar"
-#: ../libempathy-gtk/empathy-chat.c:1057
+#: ../libempathy-gtk/empathy-chat.c:1065
msgid "_Spelling Suggestions"
msgstr "_Sugerencias ortográficas"
-#: ../libempathy-gtk/empathy-chat.c:1171
+#: ../libempathy-gtk/empathy-chat.c:1179
#, c-format
msgid "%s has joined the room"
msgstr "%s ha entrado en la sala"
-#: ../libempathy-gtk/empathy-chat.c:1174
+#: ../libempathy-gtk/empathy-chat.c:1182
#, c-format
msgid "%s has left the room"
msgstr "%s ha dejado la sala"
-#: ../libempathy-gtk/empathy-chat.c:1289 ../src/empathy-call-window.c:1014
+#: ../libempathy-gtk/empathy-chat.c:1313 ../src/empathy-call-window.c:1199
msgid "Disconnected"
msgstr "Desconectado"
-#: ../libempathy-gtk/empathy-chat.c:1700
+#: ../libempathy-gtk/empathy-chat.c:1742
msgid "Connected"
msgstr "Conectado"
-#: ../libempathy-gtk/empathy-chat.c:1750
+#: ../libempathy-gtk/empathy-chat.c:1792
#: ../libempathy-gtk/empathy-log-window.c:501
msgid "Conversation"
msgstr "Conversación"
-#: ../libempathy-gtk/empathy-chat.ui.h:1
-msgid "<b>Topic:</b>"
-msgstr "<b>Tema:</b>"
+#: ../libempathy-gtk/empathy-chat.ui.h:1 ../src/empathy-chat-window.c:471
+msgid "Topic:"
+msgstr "Tema:"
-#: ../libempathy-gtk/empathy-chat-text-view.c:323
+#: ../libempathy-gtk/empathy-chat-text-view.c:316
msgid "_Copy Link Address"
msgstr "_Copiar la dirección del enlace"
-#: ../libempathy-gtk/empathy-chat-text-view.c:331
+#: ../libempathy-gtk/empathy-chat-text-view.c:323
msgid "_Open Link"
msgstr "_Abrir enlace"
#. Translators: timestamp displayed between conversations in
#. * chat windows (strftime format string)
-#: ../libempathy-gtk/empathy-chat-text-view.c:424
+#: ../libempathy-gtk/empathy-chat-text-view.c:415
msgid "%A %B %d %Y"
msgstr "%A %d %B %Y"
@@ -1041,52 +1096,53 @@ msgid "%B %e, %Y at %R UTC"
msgstr "%e de %B de %Y a las %R UTC"
#: ../libempathy-gtk/empathy-contact-widget.ui.h:1
-msgid "<b>Client Information</b>"
-msgstr "<b>Información del cliente</b>"
-
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
-msgid "<b>Contact Details</b>"
-msgstr "<b>Detalles del contacto</b>"
-
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:3
-msgid "<b>Contact</b>"
-msgstr "<b>Contacto</b>"
-
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:4
-msgid "<b>Groups</b>"
-msgstr "<b>Grupos</b>"
-
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:5
msgid "<b>Location</b> at (date)\t"
msgstr "<b>Ubicación</b> en (fecha)\t"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:6
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:1
#: ../src/empathy-chatrooms-window.ui.h:1
#: ../src/empathy-new-chatroom-dialog.ui.h:1
msgid "Account:"
msgstr "Cuenta:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:7
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:3
msgid "Alias:"
msgstr "Apodo:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:8
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:4
msgid "Birthday:"
msgstr "Cumpleaños:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:9
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:5
+msgid "Client Information"
+msgstr "Información del cliente"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:6
msgid "Client:"
msgstr "Cliente:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:10
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:7
+#: ../src/empathy-main-window.c:888
+msgid "Contact"
+msgstr "Contacto"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:8
+msgid "Contact Details"
+msgstr "Detalles del contacto"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:9
msgid "Email:"
msgstr "Correo-e:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:11
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:10
msgid "Fullname:"
msgstr "Nombre completo:"
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:11
+msgid "Groups"
+msgstr "Grupos"
+
#. Identifier to connect to Instant Messaging network
#: ../libempathy-gtk/empathy-contact-widget.ui.h:13
msgid "Identifier:"
@@ -1203,12 +1259,12 @@ msgstr "Pulse para hacer este estado uno favorito"
msgid "Set status"
msgstr "Establecer estado"
-#: ../libempathy-gtk/empathy-presence-chooser.c:778
+#: ../libempathy-gtk/empathy-presence-chooser.c:782
msgid "Set your presence and current status"
msgstr "Establecer su presencia y estado actual"
#. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1013
+#: ../libempathy-gtk/empathy-presence-chooser.c:1017
msgid "Custom messages..."
msgstr "Mensajes personalizados…"
@@ -1236,71 +1292,75 @@ msgstr "gtk-add"
msgid "gtk-remove"
msgstr "gtk-remove"
-#: ../libempathy-gtk/empathy-theme-manager.c:60
+#: ../libempathy-gtk/empathy-theme-manager.c:66
msgid "Classic"
msgstr "Clásico"
-#: ../libempathy-gtk/empathy-theme-manager.c:61
+#: ../libempathy-gtk/empathy-theme-manager.c:67
msgid "Simple"
msgstr "Simple"
-#: ../libempathy-gtk/empathy-theme-manager.c:62
+#: ../libempathy-gtk/empathy-theme-manager.c:68
msgid "Clean"
msgstr "Limpio"
-#: ../libempathy-gtk/empathy-theme-manager.c:63
+#: ../libempathy-gtk/empathy-theme-manager.c:69
msgid "Blue"
msgstr "Azul"
-#: ../libempathy-gtk/empathy-ui-utils.c:1355
+#: ../libempathy-gtk/empathy-theme-manager.c:71
+msgid "Adium"
+msgstr "Adium"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1378
msgid "Unable to open URI"
msgstr "No se pudo abrir el URI"
-#: ../libempathy-gtk/empathy-ui-utils.c:1445
+#: ../libempathy-gtk/empathy-ui-utils.c:1468
msgid "Select a file"
msgstr "Seleccionar un archivo"
-#: ../libempathy-gtk/empathy-ui-utils.c:1503
+#: ../libempathy-gtk/empathy-ui-utils.c:1526
msgid "Select a destination"
msgstr "Seleccionar un destino"
-#: ../libempathy-gtk/empathy-ui-utils.c:1532
+#: ../libempathy-gtk/empathy-ui-utils.c:1555
msgid "Received an instant message"
msgstr "Mensaje instantáneo recibido"
-#: ../libempathy-gtk/empathy-ui-utils.c:1534
+#: ../libempathy-gtk/empathy-ui-utils.c:1557
msgid "Sent an instant message"
msgstr "Enviar un mensaje instantáneo"
-#: ../libempathy-gtk/empathy-ui-utils.c:1536
+#: ../libempathy-gtk/empathy-ui-utils.c:1559
msgid "Incoming chat request"
msgstr "Solicitud de chat entrante"
-#: ../libempathy-gtk/empathy-ui-utils.c:1538
+#: ../libempathy-gtk/empathy-ui-utils.c:1561
msgid "Contact connected"
msgstr "Contacto conectado"
-#: ../libempathy-gtk/empathy-ui-utils.c:1540
+#: ../libempathy-gtk/empathy-ui-utils.c:1563
msgid "Contact disconnected"
msgstr "Contacto desconectado"
-#: ../libempathy-gtk/empathy-ui-utils.c:1542
+#: ../libempathy-gtk/empathy-ui-utils.c:1565
msgid "Connected to server"
msgstr "Conectado con el servidor"
-#: ../libempathy-gtk/empathy-ui-utils.c:1544
+#: ../libempathy-gtk/empathy-ui-utils.c:1567
msgid "Disconnected from server"
msgstr "Desconectado del servidor"
-#: ../libempathy-gtk/empathy-ui-utils.c:1546
+#: ../libempathy-gtk/empathy-ui-utils.c:1569
msgid "Incoming voice call"
msgstr "Llamada de voz entrante"
-#: ../libempathy-gtk/empathy-ui-utils.c:1548
+#: ../libempathy-gtk/empathy-ui-utils.c:1571
msgid "Outgoing voice call"
msgstr "Llamada de voz saliente"
-#: ../libempathy-gtk/empathy-ui-utils.c:1550
+#: ../libempathy-gtk/empathy-ui-utils.c:1573
msgid "Voice call ended"
msgstr "Finalizó la llamada de vz"
@@ -1525,23 +1585,23 @@ msgstr "Presencia"
msgid "Set your own presence"
msgstr "Establezca su propia presencia"
-#: ../src/empathy.c:476
+#: ../src/empathy.c:478
msgid "Don't connect on startup"
msgstr "No conectarse automáticamente al inicio"
-#: ../src/empathy.c:480
+#: ../src/empathy.c:482
msgid "Don't show the contact list on startup"
msgstr "No mostrar la lista de contactos al inicio"
-#: ../src/empathy.c:484
+#: ../src/empathy.c:486
msgid "Show the accounts dialog"
msgstr "Mostrar el diálogo de las cuentas"
-#: ../src/empathy.c:496
+#: ../src/empathy.c:498
msgid "- Empathy Instant Messenger"
msgstr "- Mensajería instantánea Empathy"
-#: ../src/empathy-about-dialog.c:84
+#: ../src/empathy-about-dialog.c:83
msgid ""
"Empathy is free software; you can redistribute it and/or modify it under the "
"terms of the GNU General Public License as published by the Free Software "
@@ -1553,7 +1613,7 @@ msgstr ""
"Foundation; ya sea en la versión 2 de la Licencia, o (a su elección) "
"cualquier versión posterior."
-#: ../src/empathy-about-dialog.c:88
+#: ../src/empathy-about-dialog.c:87
msgid ""
"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
@@ -1565,7 +1625,7 @@ msgstr ""
"PARA UN PROPÓSITO PARTICULAR. Vea la Licencia Pública General de GNU para "
"más detalles."
-#: ../src/empathy-about-dialog.c:92
+#: ../src/empathy-about-dialog.c:91
msgid ""
"You should have received a copy of the GNU General Public License along with "
"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
@@ -1575,29 +1635,29 @@ msgstr ""
"con Gossip ; si no, escriba a la Free Software Foundation, Inc., 51 Franklin "
"Street, Fifth Floor, Boston, MA 02110-130159 EE. UU."
-#: ../src/empathy-about-dialog.c:120
+#: ../src/empathy-about-dialog.c:119
msgid "An Instant Messaging client for GNOME"
msgstr "Un cliente de mensajería instantánea para GNOME"
-#: ../src/empathy-about-dialog.c:126
+#: ../src/empathy-about-dialog.c:125
msgid "translator-credits"
msgstr "Jorge González <jorgegonz@svn.gnome.org>, 2007-2009"
-#: ../src/empathy-accounts-dialog.c:391
+#: ../src/empathy-accounts-dialog.c:393
msgid "Enabled"
msgstr "Activado"
-#: ../src/empathy-accounts-dialog.c:401 ../src/empathy-accounts-dialog.ui.h:4
+#: ../src/empathy-accounts-dialog.c:403 ../src/empathy-accounts-dialog.ui.h:1
msgid "Accounts"
msgstr "Cuentas"
#. To translator: %s is the protocol name
-#: ../src/empathy-accounts-dialog.c:834
+#: ../src/empathy-accounts-dialog.c:837
#, c-format
msgid "New %s account"
msgstr "Cuenta de %s nueva"
-#: ../src/empathy-accounts-dialog.c:944
+#: ../src/empathy-accounts-dialog.c:950
#, c-format
msgid ""
"You are about to remove your %s account!\n"
@@ -1606,7 +1666,7 @@ msgstr ""
"Va a eliminar su cuenta %s\n"
"¿Seguro que quiere continuar?"
-#: ../src/empathy-accounts-dialog.c:950
+#: ../src/empathy-accounts-dialog.c:956
msgid ""
"Any associated conversations and chat rooms will NOT be removed if you "
"decide to proceed.\n"
@@ -1619,30 +1679,30 @@ msgstr ""
"\n"
"Si decidiera volver a añadir la cuenta más tarde, estarán aún disponibles."
-#: ../src/empathy-accounts-dialog.ui.h:1
-msgid "<b>New Account</b>"
-msgstr "<b>Nueva cuenta</b>"
-
#: ../src/empathy-accounts-dialog.ui.h:2
-msgid "<b>No protocol installed</b>"
-msgstr "<b>No hay protocolos instalados</b>"
+msgid "Add Account"
+msgstr "Añadir cuenta"
#: ../src/empathy-accounts-dialog.ui.h:3
-msgid "<b>Settings</b>"
-msgstr "<b>Configuración</b>"
-
-#: ../src/empathy-accounts-dialog.ui.h:5
msgid "Cr_eate"
msgstr "Cr_ear"
-#: ../src/empathy-accounts-dialog.ui.h:6
-msgid "I already have an account I want to use"
-msgstr "Ya tengo una cuenta que quiero usar"
+#: ../src/empathy-accounts-dialog.ui.h:4
+msgid "Gmail"
+msgstr "Gmail"
-#: ../src/empathy-accounts-dialog.ui.h:7
+#: ../src/empathy-accounts-dialog.ui.h:5
msgid "Import Accounts..."
msgstr "Importar cuentas…"
+#: ../src/empathy-accounts-dialog.ui.h:6
+msgid "No protocol installed"
+msgstr "No hay protocolos instalados"
+
+#: ../src/empathy-accounts-dialog.ui.h:7
+msgid "Settings"
+msgstr "Ajustes"
+
#: ../src/empathy-accounts-dialog.ui.h:8
msgid ""
"To add a new account, you first have to install a backend for each protocol "
@@ -1659,53 +1719,61 @@ msgstr "Tipo:"
msgid "_Add..."
msgstr "_Añadir…"
-#: ../src/empathy-call-window.c:382
+#: ../src/empathy-accounts-dialog.ui.h:11
+msgid "_Create a new account"
+msgstr "_Crear una cuenta nueva"
+
+#: ../src/empathy-accounts-dialog.ui.h:12
+msgid "_Reuse an existing account"
+msgstr "_Usar una cuenta ya existente"
+
+#: ../src/empathy-call-window.c:63
+msgid "Connecting..."
+msgstr "Conectando…"
+
+#: ../src/empathy-call-window.c:415
msgid "Contrast"
msgstr "Contraste"
-#: ../src/empathy-call-window.c:385
+#: ../src/empathy-call-window.c:418
msgid "Brightness"
msgstr "Brillo"
-#: ../src/empathy-call-window.c:388
+#: ../src/empathy-call-window.c:421
msgid "Gamma"
msgstr "Gamma"
-#: ../src/empathy-call-window.c:492
+#: ../src/empathy-call-window.c:526
msgid "Volume"
msgstr "Volumen"
-#: ../src/empathy-call-window.c:638
+#: ../src/empathy-call-window.c:728
msgid "_Sidebar"
msgstr "Barra _lateral"
-#: ../src/empathy-call-window.c:657
+#: ../src/empathy-call-window.c:747
msgid "Dialpad"
msgstr "Teclado de llamada"
-#: ../src/empathy-call-window.c:663
+#: ../src/empathy-call-window.c:753
msgid "Audio input"
msgstr "Entrada de sonido"
-#: ../src/empathy-call-window.c:667
+#: ../src/empathy-call-window.c:757
msgid "Video input"
msgstr "Entrada de vídeo"
-#: ../src/empathy-call-window.c:691
-msgid "Connecting..."
-msgstr "Conectando…"
-
-#: ../src/empathy-call-window.c:730
+#: ../src/empathy-call-window.c:820
#, c-format
msgid "Call with %s"
msgstr "Llamar con %s"
-#: ../src/empathy-call-window.c:801
+#: ../src/empathy-call-window.c:889
msgid "Call"
msgstr "Llamar"
#. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-call-window.c:1096
+#: ../src/empathy-call-window.c:1308
#, c-format
msgid "Connected — %d:%02dm"
msgstr "Conectado — %d:%02dm"
@@ -1715,43 +1783,38 @@ msgid "Hang up"
msgstr "Colgar"
#: ../src/empathy-call-window.ui.h:2
+msgid "Redial"
+msgstr "Volver a llamar"
+
+#: ../src/empathy-call-window.ui.h:3
msgid "Send Audio"
msgstr "Enviar sonido"
-#: ../src/empathy-call-window.ui.h:3
+#: ../src/empathy-call-window.ui.h:4
msgid "Send video"
msgstr "Enviar vídeo"
-#: ../src/empathy-call-window.ui.h:4
+#: ../src/empathy-call-window.ui.h:5
msgid "Video preview"
msgstr "Vista preliminar de vídeo"
-#: ../src/empathy-call-window.ui.h:5
+#: ../src/empathy-call-window.ui.h:6
msgid "_Call"
msgstr "_Llamar"
-#: ../src/empathy-call-window.ui.h:6 ../src/empathy-main-window.ui.h:21
+#: ../src/empathy-call-window.ui.h:7 ../src/empathy-main-window.ui.h:21
msgid "_View"
msgstr "_Ver"
-#: ../src/empathy-chat-window.c:342
+#: ../src/empathy-chat-window.c:343
#, c-format
msgid "Conversations (%d)"
msgstr "Conversaciones (%d)"
-#: ../src/empathy-chat-window.c:449
-msgid "Topic:"
-msgstr "Tema:"
-
-#: ../src/empathy-chat-window.c:454
+#: ../src/empathy-chat-window.c:475
msgid "Typing a message."
msgstr "Tecleando un mensaje."
-#: ../src/empathy-chat-window.c:917 ../src/empathy-event-manager.c:429
-#, c-format
-msgid "New message from %s"
-msgstr "Nuevo mensaje de %s"
-
#: ../src/empathy-chatrooms-window.c:258
msgid "Name"
msgstr "Nombre"
@@ -1768,75 +1831,75 @@ msgstr "Autoconectar"
msgid "Manage Favorite Rooms"
msgstr "Gestionar salas favoritas"
-#: ../src/empathy-event-manager.c:377
+#: ../src/empathy-event-manager.c:395
msgid "Incoming call"
msgstr "Llamada entrante"
-#: ../src/empathy-event-manager.c:380
+#: ../src/empathy-event-manager.c:398
#, c-format
msgid "%s is calling you, do you want to answer?"
msgstr "%s le está llamando, ¿quiere responder?"
-#: ../src/empathy-event-manager.c:387
+#: ../src/empathy-event-manager.c:405
msgid "_Reject"
msgstr "_Rechazar"
-#: ../src/empathy-event-manager.c:393
+#: ../src/empathy-event-manager.c:411
msgid "_Answer"
msgstr "Re_spuesta"
-#: ../src/empathy-event-manager.c:507
+#: ../src/empathy-event-manager.c:523
#, c-format
msgid "Incoming call from %s"
msgstr "Llamada entrante de %s"
-#: ../src/empathy-event-manager.c:547
+#: ../src/empathy-event-manager.c:563
#, c-format
msgid "%s is offering you an invitation"
msgstr "%s le está ofreciendo una invitación"
-#: ../src/empathy-event-manager.c:553
+#: ../src/empathy-event-manager.c:569
msgid "An external application will be started to handle it."
msgstr "Se iniciará una aplicación externa para manejarla."
-#: ../src/empathy-event-manager.c:558
+#: ../src/empathy-event-manager.c:574
msgid "You don't have the needed external application to handle it."
msgstr "No tiene la aplicación externa necesaria para manejarla."
-#: ../src/empathy-event-manager.c:685
+#: ../src/empathy-event-manager.c:701
msgid "Room invitation"
msgstr "Invitación a una sala"
-#: ../src/empathy-event-manager.c:688
+#: ../src/empathy-event-manager.c:704
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s le está invitando a unirse a %s"
-#: ../src/empathy-event-manager.c:696
+#: ../src/empathy-event-manager.c:712
msgid "_Decline"
msgstr "_Rechazar"
-#: ../src/empathy-event-manager.c:701
+#: ../src/empathy-event-manager.c:717
#: ../src/empathy-new-chatroom-dialog.ui.h:7
msgid "_Join"
msgstr "_Unirse"
-#: ../src/empathy-event-manager.c:740
+#: ../src/empathy-event-manager.c:756
#, c-format
msgid "%s invited you to join %s"
msgstr "%s le ha invitado a unirse a %s"
-#: ../src/empathy-event-manager.c:766
+#: ../src/empathy-event-manager.c:782
#, c-format
msgid "Incoming file transfer from %s"
msgstr "Transferencia de archivo entrante de %s"
-#: ../src/empathy-event-manager.c:946
+#: ../src/empathy-event-manager.c:962
#, c-format
msgid "Subscription requested by %s"
msgstr "Petición de suscripción de %s"
-#: ../src/empathy-event-manager.c:950
+#: ../src/empathy-event-manager.c:966
#, c-format
msgid ""
"\n"
@@ -1845,6 +1908,18 @@ msgstr ""
"\n"
"Mensaje: %s"
+#. someone is logging off
+#: ../src/empathy-event-manager.c:1009
+#, c-format
+msgid "%s is now offline."
+msgstr "Ahora %s está desconectado."
+
+#. someone is logging in
+#: ../src/empathy-event-manager.c:1025
+#, c-format
+msgid "%s is now online."
+msgstr "Ahora %s está conectado."
+
#. Translators: time left, when it is more than one hour
#: ../src/empathy-ft-manager.c:101
#, c-format
@@ -1949,7 +2024,7 @@ msgid "Remaining"
msgstr "Restantes"
#: ../src/empathy-ft-manager.ui.h:1
-msgid "File transfers"
+msgid "File Transfers"
msgstr "Transferencias de archivos"
#: ../src/empathy-ft-manager.ui.h:2
@@ -2043,15 +2118,11 @@ msgstr "Error del certificado"
msgid "Unknown error"
msgstr "Error desconocido"
-#: ../src/empathy-main-window.c:888
-msgid "Contact"
-msgstr "Contacto"
-
#: ../src/empathy-main-window.c:1220
msgid "Show and edit accounts"
msgstr "Mostrar y editar cuentas"
-#: ../src/empathy-main-window.ui.h:1
+#: ../src/empathy-main-window.ui.h:1 ../src/empathy-preferences.ui.h:10
msgid "Contact List"
msgstr "Lista de contactos"
@@ -2192,187 +2263,205 @@ msgstr "Lista de salas"
msgid "_Room:"
msgstr "_Sala:"
-#: ../src/empathy-preferences.c:162
+#: ../src/empathy-preferences.c:161
msgid "Message received"
msgstr "Mensaje recibido"
-#: ../src/empathy-preferences.c:163
+#: ../src/empathy-preferences.c:162
msgid "Message sent"
msgstr "Mensaje enviado"
-#: ../src/empathy-preferences.c:164
+#: ../src/empathy-preferences.c:163
msgid "New conversation"
msgstr "Conversación nueva"
-#: ../src/empathy-preferences.c:165
+#: ../src/empathy-preferences.c:164
msgid "Contact goes online"
msgstr "El contacto se conecta"
-#: ../src/empathy-preferences.c:166
+#: ../src/empathy-preferences.c:165
msgid "Contact goes offline"
msgstr "El contacto se desconecta"
-#: ../src/empathy-preferences.c:167
+#: ../src/empathy-preferences.c:166
msgid "Account connected"
msgstr "Cuenta conectada"
-#: ../src/empathy-preferences.c:168
+#: ../src/empathy-preferences.c:167
msgid "Account disconnected"
msgstr "Cuenta desconectada"
-#: ../src/empathy-preferences.c:435
+#: ../src/empathy-preferences.c:446
msgid "Language"
msgstr "Idioma"
#: ../src/empathy-preferences.ui.h:1
-msgid "<b>Appearance</b>"
-msgstr "<b>Apariencia</b>"
+msgid "Adium theme to use:"
+msgstr "Tema adium que usar:"
#: ../src/empathy-preferences.ui.h:2
-msgid "<b>Behavior</b>"
-msgstr "<b>Comportamiento</b>"
-
-#: ../src/empathy-preferences.ui.h:3
-msgid "<b>Contact List</b>"
-msgstr "<b>Lista de contactos</b>"
-
-#: ../src/empathy-preferences.ui.h:4
-msgid "<b>Enable spell checking for languages:</b>"
-msgstr "<b>Activar la revisión ortográfica para idiomas:</b>"
-
-#: ../src/empathy-preferences.ui.h:5
-msgid "<b>Geoclue Settings</b>"
-msgstr "<b>Configuración de Geoclue</b>"
-
-#: ../src/empathy-preferences.ui.h:6
-msgid "<b>Play sound for events</b>"
-msgstr "<b>Reproducir sonido para eventos</b>"
-
-#: ../src/empathy-preferences.ui.h:7
-msgid "<b>Privacy</b>"
-msgstr "<b>Privacidad</b>"
-
-#: ../src/empathy-preferences.ui.h:8
-msgid ""
-"<small>Reduced location accuracy means that nothing more precise than your "
-"city, state and country will be published. GPS coordinates will have a "
-"random value added (&#xB1;0.25&#xB0;).</small>"
-msgstr ""
-"<small>Reducir la precisión de la ubicación significa que no se publicará "
-"nada más preciso que su ciudad, estado y país. Las coordenadas GPS tendrán "
-"un valor aleatorio añadido (&#xB1;0.25&#xB0;).</small>"
-
-#: ../src/empathy-preferences.ui.h:9
-msgid ""
-"<small>The list of languages reflects only the languages for which you have "
-"a dictionary installed.</small>"
-msgstr ""
-"<small>La lista de idiomas refleja sólo los idiomas para los cuales tiene un "
-"diccionario instalado.</small>"
-
-#: ../src/empathy-preferences.ui.h:10
msgid "Allow _GPS usage"
msgstr "Permitir el usso de _GPS"
-#: ../src/empathy-preferences.ui.h:11
+#: ../src/empathy-preferences.ui.h:3
msgid "Allow _cellphone usage"
msgstr "Permitir el uso de teléfono _móvil"
-#: ../src/empathy-preferences.ui.h:12
+#: ../src/empathy-preferences.ui.h:4
msgid "Allow _network usage"
msgstr "Permitir el uso de la _red"
-#: ../src/empathy-preferences.ui.h:13
+#: ../src/empathy-preferences.ui.h:5
+msgid "Appearance"
+msgstr "Apariencia"
+
+#: ../src/empathy-preferences.ui.h:6
msgid "Automatically _connect on startup "
msgstr "_Conectarse automáticamente al inicio"
-#: ../src/empathy-preferences.ui.h:14
+#: ../src/empathy-preferences.ui.h:7
msgid "Avatars are user chosen images shown in the contact list"
msgstr ""
"Los avatares son imágenes elegidas por el usuario que se muestran en la "
"lista de contactos"
-#: ../src/empathy-preferences.ui.h:15
+#: ../src/empathy-preferences.ui.h:8
+msgid "Behavior"
+msgstr "Comportamiento"
+
+#: ../src/empathy-preferences.ui.h:9
msgid "Chat Th_eme:"
msgstr "_Tema del chat:"
-#: ../src/empathy-preferences.ui.h:16
+#: ../src/empathy-preferences.ui.h:11
msgid "Disable notifications when _away or busy"
msgstr "Desactivar notificaciones al _ausentarse o estar ocupado"
-#: ../src/empathy-preferences.ui.h:17
+#: ../src/empathy-preferences.ui.h:12
msgid "Disable sounds when _away or busy"
msgstr "Desactivar sonidos al _ausentarse o estar ocupado"
-#: ../src/empathy-preferences.ui.h:18
+#: ../src/empathy-preferences.ui.h:13
+#| msgid "Enable notifications when the _chat is not focused"
+msgid "Enable notifications when a contact comes online"
+msgstr "Activar notificaciones cuando un contacto se conecta"
+
+#: ../src/empathy-preferences.ui.h:14
+#| msgid "Enable notifications when the _chat is not focused"
+msgid "Enable notifications when a contact goes offline"
+msgstr "Activar notificaciones cuando un contacto se desconecta"
+
+#: ../src/empathy-preferences.ui.h:15
msgid "Enable notifications when the _chat is not focused"
msgstr "Activar notificaciones cuando el _chat no tenga el foco"
-#: ../src/empathy-preferences.ui.h:19
+#: ../src/empathy-preferences.ui.h:16
+msgid "Enable spell checking for languages:"
+msgstr "Activar la revisión ortográfica para idiomas:"
+
+#: ../src/empathy-preferences.ui.h:17
msgid "General"
msgstr "General"
-#: ../src/empathy-preferences.ui.h:20
+#: ../src/empathy-preferences.ui.h:18
+msgid "Geoclue Settings"
+msgstr "Configuración de Geoclue"
+
+#: ../src/empathy-preferences.ui.h:19
msgid "Location"
msgstr "Ubicación"
+#: ../src/empathy-preferences.ui.h:20
+msgid "Not a valid adium theme"
+msgstr "No es un tema adium válido"
+
#: ../src/empathy-preferences.ui.h:21
msgid "Notifications"
msgstr "Notificaciones"
#: ../src/empathy-preferences.ui.h:22
+msgid "Play sound for events"
+msgstr "Reproducir sonido para eventos"
+
+#: ../src/empathy-preferences.ui.h:23
msgid "Preferences"
msgstr "Preferencias"
-#: ../src/empathy-preferences.ui.h:23
+#: ../src/empathy-preferences.ui.h:24
+msgid "Privacy"
+msgstr "Privacidad"
+
+#: ../src/empathy-preferences.ui.h:25
+msgid ""
+"Reduced location accuracy means that nothing more precise than your city, "
+"state and country will be published. GPS coordinates will have a random "
+"value added (&#xB1;0.25&#xB0;)."
+msgstr ""
+"Reducir la precisión de la ubicación significa que no se publicará nada más "
+"preciso que su ciudad, estado y país. Las coordenadas GPS tendrán un valor "
+"aleatorio añadido (&#xB1;0.25&#xB0;)."
+
+#: ../src/empathy-preferences.ui.h:26
msgid "Show _avatars"
msgstr "Mostrar _avatares"
-#: ../src/empathy-preferences.ui.h:24
+#: ../src/empathy-preferences.ui.h:27
msgid "Show _smileys as images"
msgstr "Mostrar los _emoticonos como imágenes"
-#: ../src/empathy-preferences.ui.h:25
+#: ../src/empathy-preferences.ui.h:28
msgid "Show co_mpact contact list"
msgstr "Mostrar lista de contactos co_mpacta"
-#: ../src/empathy-preferences.ui.h:26
+#: ../src/empathy-preferences.ui.h:29
+msgid "Show contact _list in rooms"
+msgstr "Mostrar _lista de contactos en salas"
+
+#: ../src/empathy-preferences.ui.h:30
msgid "Sort by _name"
msgstr "Ordenar por _nombre"
-#: ../src/empathy-preferences.ui.h:27
+#: ../src/empathy-preferences.ui.h:31
msgid "Sort by s_tate"
msgstr "Ordenar por es_tado"
-#: ../src/empathy-preferences.ui.h:28
+#: ../src/empathy-preferences.ui.h:32
msgid "Sounds"
msgstr "Sonidos"
-#: ../src/empathy-preferences.ui.h:29
+#: ../src/empathy-preferences.ui.h:33
msgid "Spell Checking"
msgstr "Revisión ortográfica"
-#: ../src/empathy-preferences.ui.h:30
+#: ../src/empathy-preferences.ui.h:34
+msgid ""
+"The list of languages reflects only the languages for which you have a "
+"dictionary installed."
+msgstr ""
+"La lista de idiomas refleja sólo los idiomas para los cuales tiene un "
+"diccionario instalado."
+
+#: ../src/empathy-preferences.ui.h:35
msgid "Themes"
msgstr "Temas"
-#: ../src/empathy-preferences.ui.h:31
+#: ../src/empathy-preferences.ui.h:36
msgid "_Enable bubble notifications"
msgstr "_Activar notificaciones de burbuja"
-#: ../src/empathy-preferences.ui.h:32
+#: ../src/empathy-preferences.ui.h:37
msgid "_Enable sound notifications"
msgstr "_Activar notificaciones de sonido"
-#: ../src/empathy-preferences.ui.h:33
+#: ../src/empathy-preferences.ui.h:38
msgid "_Open new chats in separate windows"
msgstr "_Abrir charlas nuevas en ventanas separadas"
-#: ../src/empathy-preferences.ui.h:34
+#: ../src/empathy-preferences.ui.h:39
msgid "_Publish location to my contacts"
msgstr "_Publicar mi ubicación a mis contactos"
-#: ../src/empathy-preferences.ui.h:35
+#: ../src/empathy-preferences.ui.h:40
msgid "_Reduce location accuracy"
msgstr "_Reducir la precisión de la ubicación"
@@ -2411,23 +2500,19 @@ msgid "Contact Map View"
msgstr "Vista del mapa de contactos"
#: ../src/empathy-debug-dialog.c:111 ../src/empathy-debug-dialog.c:1075
-#| msgid "Error:"
msgid "Error"
msgstr "Error"
#: ../src/empathy-debug-dialog.c:114 ../src/empathy-debug-dialog.c:1069
-#| msgid "Croatian"
msgid "Critical"
msgstr "Crítico"
#: ../src/empathy-debug-dialog.c:117 ../src/empathy-debug-dialog.c:1063
-#| msgid "Remaining"
msgid "Warning"
msgstr "Advertencia"
#: ../src/empathy-debug-dialog.c:120 ../src/empathy-debug-dialog.c:1057
#: ../src/empathy-debug-dialog.c:1105
-#| msgid "Message:"
msgid "Message"
msgstr "Mensaje"
@@ -2439,12 +2524,11 @@ msgstr "Información"
msgid "Debug"
msgstr "Depurar"
-#: ../src/empathy-debug-dialog.c:836
-#| msgid "State:"
+#: ../src/empathy-debug-dialog.c:837
msgid "Save"
msgstr "Guardar"
-#: ../src/empathy-debug-dialog.c:939
+#: ../src/empathy-debug-dialog.c:940
msgid "Debug Window"
msgstr "Depurar ventana"
@@ -2457,12 +2541,10 @@ msgid "Level "
msgstr "Nivel "
#: ../src/empathy-debug-dialog.c:1094
-#| msgid "Simple"
msgid "Time"
msgstr "Hora"
#: ../src/empathy-debug-dialog.c:1096
-#| msgid "Romanian"
msgid "Domain"
msgstr "Dominio"
@@ -2474,7 +2556,7 @@ msgstr "Categoría"
msgid "Level"
msgstr "Nivel"
-#: ../src/empathy-debug-dialog.c:1133
+#: ../src/empathy-debug-dialog.c:1132
msgid ""
"The selected connection manager does not support the remote debugging "
"extension."
@@ -2482,6 +2564,39 @@ msgstr ""
"El gestor de conexiones seleccionado no soporta la extensión de depuración "
"remota."
+#~ msgid "<b>Network</b>"
+#~ msgstr "<b>Red</b>"
+
+#~ msgid "<b>Servers</b>"
+#~ msgstr "<b>Servidores</b>"
+
+#~ msgid "<b>Topic:</b>"
+#~ msgstr "<b>Tema:</b>"
+
+#~ msgid "<b>Contact</b>"
+#~ msgstr "<b>Contacto</b>"
+
+#~ msgid "<b>Groups</b>"
+#~ msgstr "<b>Grupos</b>"
+
+#~ msgid "<b>Add Account</b>"
+#~ msgstr "<b>Añadir cuenta</b>"
+
+#~ msgid "New message from %s"
+#~ msgstr "Nuevo mensaje de %s"
+
+#~ msgid "File transfers"
+#~ msgstr "Transferencias de archivos"
+
+#~ msgid "<b>Contact List</b>"
+#~ msgstr "<b>Lista de contactos</b>"
+
+#~ msgid "Sélectionner un dossier"
+#~ msgstr "Seleccionar una carpeta"
+
+#~ msgid "I already have an account I want to use"
+#~ msgstr "Ya tengo una cuenta que quiero usar"
+
#~ msgctxt "file size"
#~ msgid "Unknown"
#~ msgstr "Desconocido"
@@ -2558,9 +2673,6 @@ msgstr ""
#~ msgid "Forget password and clear the entry."
#~ msgstr "Olvidar la contraseña y limpiar la entrada."
-#~ msgid "Create a new IRC network"
-#~ msgstr "Crear una red IRC nueva"
-
#~ msgid "Edit the selected IRC network"
#~ msgstr "Editar la red IRC seleccionada"
diff --git a/po/he.po b/po/he.po
index 8e86f3bd9..0e8c6c917 100644
--- a/po/he.po
+++ b/po/he.po
@@ -5,10 +5,9 @@
msgid ""
msgstr ""
"Project-Id-Version: empathy\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
-"product=empathy&component=general\n"
-"POT-Creation-Date: 2009-01-11 22:12+0000\n"
-"PO-Revision-Date: 2008-02-23 19:56+0200\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=empathy&component=general\n"
+"POT-Creation-Date: 2009-06-11 18:53+0000\n"
+"PO-Revision-Date: 2009-06-11 23:07+0200\n"
"Last-Translator: Mark Krapivner <mark125@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -23,29 +22,23 @@ msgstr "‏Empathy - מסרים מיידיים"
#: ../data/empathy.desktop.in.in.h:2
msgid "Send and receive instant messages"
-msgstr "שלח וקבל מסרים מיידיים"
+msgstr "שלח וקבל מסרים מידיים"
#: ../data/empathy.schemas.in.h:1
msgid "Always open a separate chat window for new chats."
msgstr "Always open a separate chat window for new chats."
#: ../data/empathy.schemas.in.h:2
-msgid ""
-"Character to add after nickname when using nick completion (tab) in group "
-"chat."
-msgstr ""
-"Character to add after nickname when using nick completion (tab) in group "
-"chat."
+msgid "Character to add after nickname when using nick completion (tab) in group chat."
+msgstr "Character to add after nickname when using nick completion (tab) in group chat."
#: ../data/empathy.schemas.in.h:3
msgid "Chat window theme"
msgstr "Chat window theme"
#: ../data/empathy.schemas.in.h:4
-msgid ""
-"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
-msgstr ""
-"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
#: ../data/empathy.schemas.in.h:5
msgid "Compact contact list"
@@ -60,1021 +53,1186 @@ msgid "Default directory to select an avatar image from"
msgstr "Default directory to select an avatar image from"
#: ../data/empathy.schemas.in.h:8
-#| msgid "Enable sound when away"
+msgid "Disable popup notifications when away"
+msgstr "Disable popup notifications when away"
+
+#: ../data/empathy.schemas.in.h:9
msgid "Disable sounds when away"
msgstr "Disable sounds when away"
-#: ../data/empathy.schemas.in.h:9
+#: ../data/empathy.schemas.in.h:10
+msgid "Empathy can publish the user's location"
+msgstr "Empathy can publish the user's location"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Empathy can use the GPS to guess the location"
+msgstr "Empathy can use the GPS to guess the location"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Empathy can use the cellular network to guess the location"
+msgstr "Empathy can use the cellular network to guess the location"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Empathy can use the network to guess the location"
+msgstr "Empathy can use the network to guess the location"
+
+#: ../data/empathy.schemas.in.h:14
msgid "Empathy default download folder"
msgstr "Empathy default download folder"
-#: ../data/empathy.schemas.in.h:10
+#: ../data/empathy.schemas.in.h:15
msgid "Empathy has asked about importing accounts"
msgstr "Empathy has asked about importing accounts"
-#: ../data/empathy.schemas.in.h:11
+#: ../data/empathy.schemas.in.h:16
msgid "Empathy should auto-connect on startup"
msgstr "Empathy should auto-connect on startup"
-#: ../data/empathy.schemas.in.h:12
+#: ../data/empathy.schemas.in.h:17
+msgid "Empathy should reduce the location's accuracy"
+msgstr "Empathy should reduce the location's accuracy"
+
+#: ../data/empathy.schemas.in.h:18
msgid "Empathy should use the avatar of the contact as the chat window icon"
msgstr "Empathy should use the avatar of the contact as the chat window icon"
-#: ../data/empathy.schemas.in.h:13
-msgid "Enable popup when contact is available"
-msgstr "Enable popup when contact is available"
+#: ../data/empathy.schemas.in.h:19
+msgid "Enable popup notifications for new messages"
+msgstr "Enable popup notifications for new messages"
-#: ../data/empathy.schemas.in.h:14
+#: ../data/empathy.schemas.in.h:20
msgid "Enable spell checker"
msgstr "Enable spell checker"
-#: ../data/empathy.schemas.in.h:15
+#: ../data/empathy.schemas.in.h:21
msgid "Hide main window"
msgstr "Hide main window"
-#: ../data/empathy.schemas.in.h:16
+#: ../data/empathy.schemas.in.h:22
msgid "Hide the main window."
msgstr "Hide the main window."
-#: ../data/empathy.schemas.in.h:17
+#: ../data/empathy.schemas.in.h:23
msgid "NetworkManager should be used"
msgstr "NetworkManager should be used"
-#: ../data/empathy.schemas.in.h:18
+#: ../data/empathy.schemas.in.h:24
msgid "Nick completed character"
msgstr "Nick completed character"
-#: ../data/empathy.schemas.in.h:19
+#: ../data/empathy.schemas.in.h:25
msgid "Open new chats in separate windows"
msgstr "Open new chats in separate windows"
-#: ../data/empathy.schemas.in.h:20
+#: ../data/empathy.schemas.in.h:26
+msgid "Path of the adium theme to use"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:27
#, fuzzy
-#| msgid "_Play sound when messages arrive"
+msgid "Path of the adium theme to use if the theme used for chat is adium."
+msgstr "Whether to use the theme for chat rooms or not."
+
+#: ../data/empathy.schemas.in.h:28
msgid "Play a sound for incoming messages"
-msgstr "_נגן צליל כשמתקבלת הודעה"
+msgstr "Play a sound for incoming messages"
-#: ../data/empathy.schemas.in.h:21
+#: ../data/empathy.schemas.in.h:29
msgid "Play a sound for new conversations"
-msgstr ""
+msgstr "Play a sound for new conversations"
-#: ../data/empathy.schemas.in.h:22
-#, fuzzy
-#| msgid "_Play sound when messages arrive"
+#: ../data/empathy.schemas.in.h:30
msgid "Play a sound for outgoing messages"
-msgstr "_נגן צליל כשמתקבלת הודעה"
+msgstr "Play a sound for outgoing messages"
-#: ../data/empathy.schemas.in.h:23
-#, fuzzy
-#| msgid "_Play sound when messages arrive"
+#: ../data/empathy.schemas.in.h:31
msgid "Play a sound when a contact logs in"
-msgstr "_נגן צליל כשמתקבלת הודעה"
+msgstr "Play a sound when a contact logs in"
-#: ../data/empathy.schemas.in.h:24
+#: ../data/empathy.schemas.in.h:32
msgid "Play a sound when a contact logs out"
-msgstr ""
+msgstr "Play a sound when a contact logs out"
-#: ../data/empathy.schemas.in.h:25
-#, fuzzy
-#| msgid "_Play sound when messages arrive"
+#: ../data/empathy.schemas.in.h:33
msgid "Play a sound when we log in"
-msgstr "_נגן צליל כשמתקבלת הודעה"
+msgstr "Play a sound when we log in"
-#: ../data/empathy.schemas.in.h:26
-#, fuzzy
-#| msgid "_Play sound when messages arrive"
+#: ../data/empathy.schemas.in.h:34
msgid "Play a sound when we log out"
-msgstr "_נגן צליל כשמתקבלת הודעה"
+msgstr "Play a sound when we log out"
-#: ../data/empathy.schemas.in.h:27
+#: ../data/empathy.schemas.in.h:35
+msgid "Popup notifications if the chat isn't focused"
+msgstr "Popup notifications if the chat isn't focused"
+
+#: ../data/empathy.schemas.in.h:36
msgid "Salut account is created"
msgstr "Salut account is created"
-#: ../data/empathy.schemas.in.h:28
+#: ../data/empathy.schemas.in.h:37
msgid "Show avatars"
msgstr "Show avatars"
-#: ../data/empathy.schemas.in.h:29
+#: ../data/empathy.schemas.in.h:38
msgid "Show hint about closing the main window"
msgstr "Show hint about closing the main window"
-#: ../data/empathy.schemas.in.h:30
+#: ../data/empathy.schemas.in.h:39
msgid "Show offline contacts"
msgstr "Show offline contacts"
-#: ../data/empathy.schemas.in.h:31
+#: ../data/empathy.schemas.in.h:40
msgid "Spell checking languages"
msgstr "Spell checking languages"
-#: ../data/empathy.schemas.in.h:32
+#: ../data/empathy.schemas.in.h:41
msgid "The default folder to save file transfers in."
msgstr "The default folder to save file transfers in."
-#: ../data/empathy.schemas.in.h:33
+#: ../data/empathy.schemas.in.h:42
msgid "The last directory that an avatar image was chosen from."
msgstr "The last directory that an avatar image was chosen from."
-#: ../data/empathy.schemas.in.h:34
+#: ../data/empathy.schemas.in.h:43
msgid "The theme that is used to display the conversation in chat windows."
msgstr "The theme that is used to display the conversation in chat windows."
-#: ../data/empathy.schemas.in.h:35
+#: ../data/empathy.schemas.in.h:44
msgid "Use graphical smileys"
msgstr "Use graphical smileys"
-#: ../data/empathy.schemas.in.h:36
+#: ../data/empathy.schemas.in.h:45
msgid "Use notification sounds"
msgstr "Use notification sounds"
-#: ../data/empathy.schemas.in.h:37
+#: ../data/empathy.schemas.in.h:46
msgid "Use theme for chat rooms"
msgstr "Use theme for chat rooms"
-#: ../data/empathy.schemas.in.h:38
-#| msgid ""
-#| "Whether or not Empathy should automatically log in to your accounts on "
-#| "startup."
-msgid ""
-"Whether or not Empathy has asked about importing accounts from other "
-"programs."
-msgstr ""
-"Whether or not Empathy has asked about importing accounts from other "
-"programs."
+#: ../data/empathy.schemas.in.h:47
+msgid "Whether or not Empathy can publish the user's location to his contacts."
+msgstr "Whether or not Empathy can publish the user's location to his contacts."
-#: ../data/empathy.schemas.in.h:39
-msgid ""
-"Whether or not Empathy should automatically log in to your accounts on "
-"startup."
-msgstr ""
-"Whether or not Empathy should automatically log in to your accounts on "
-"startup."
+#: ../data/empathy.schemas.in.h:48
+msgid "Whether or not Empathy can use the GPS to guess the location."
+msgstr "Whether or not Empathy can use the GPS to guess the location."
-#: ../data/empathy.schemas.in.h:40
-msgid ""
-"Whether or not Empathy should use the avatar of the contact as the chat "
-"window icon."
-msgstr ""
-"Whether or not Empathy should use the avatar of the contact as the chat "
-"window icon."
+#: ../data/empathy.schemas.in.h:49
+msgid "Whether or not Empathy can use the cellular network to guess the location."
+msgstr "Whether or not Empathy can use the cellular network to guess the location."
-#: ../data/empathy.schemas.in.h:41
-msgid ""
-"Whether or not the Salut account has been created on the first Empathy run."
-msgstr ""
-"Whether or not the Salut account has been created on the first Empathy run."
+#: ../data/empathy.schemas.in.h:50
+msgid "Whether or not Empathy can use the network to guess the location."
+msgstr "Whether or not Empathy can use the network to guess the location."
-#: ../data/empathy.schemas.in.h:42
-msgid ""
-"Whether or not the network manager should be used to automatically "
-"disconnect/reconnect."
-msgstr ""
-"Whether or not the network manager should be used to automatically "
-"disconnect/reconnect."
+#: ../data/empathy.schemas.in.h:51
+msgid "Whether or not Empathy has asked about importing accounts from other programs."
+msgstr "Whether or not Empathy has asked about importing accounts from other programs."
-#: ../data/empathy.schemas.in.h:43
-msgid ""
-"Whether or not to check words typed against the languages you want to check "
-"with."
-msgstr ""
-"Whether or not to check words typed against the languages you want to check "
-"with."
+#: ../data/empathy.schemas.in.h:52
+msgid "Whether or not Empathy should automatically log in to your accounts on startup."
+msgstr "Whether or not Empathy should automatically log in to your accounts on startup."
-#: ../data/empathy.schemas.in.h:44
-msgid ""
-"Whether or not to convert smileys into graphical images in conversations."
-msgstr ""
-"Whether or not to convert smileys into graphical images in conversations."
+#: ../data/empathy.schemas.in.h:53
+msgid "Whether or not Empathy should reduce the location's accuracy for privacy reasons."
+msgstr "Whether or not Empathy should reduce the location's accuracy for privacy reasons."
-#: ../data/empathy.schemas.in.h:45
-#| msgid "Whether or not to play sounds when away."
-msgid "Whether or not to play a sound notifications when away or busy."
-msgstr "Whether or not to play a sound notifications when away or busy."
+#: ../data/empathy.schemas.in.h:54
+msgid "Whether or not Empathy should use the avatar of the contact as the chat window icon."
+msgstr "Whether or not Empathy should use the avatar of the contact as the chat window icon."
-#: ../data/empathy.schemas.in.h:46
-#| msgid ""
-#| "Whether or not to show avatars for contacts in the contact list and chat "
-#| "windows."
-msgid ""
-"Whether or not to play a sound to notify for contacts logging in the network."
-msgstr ""
-"Whether or not to play a sound to notify for contacts logging in the network."
+#: ../data/empathy.schemas.in.h:55
+msgid "Whether or not the Salut account has been created on the first Empathy run."
+msgstr "Whether or not the Salut account has been created on the first Empathy run."
-#: ../data/empathy.schemas.in.h:47
-#| msgid ""
-#| "Whether or not to show avatars for contacts in the contact list and chat "
-#| "windows."
-msgid ""
-"Whether or not to play a sound to notify for contacts logging off the "
-"network."
-msgstr ""
-"Whether or not to play a sound to notify for contacts logging off the "
-"network."
+#: ../data/empathy.schemas.in.h:56
+msgid "Whether or not the network manager should be used to automatically disconnect/reconnect."
+msgstr "Whether or not the network manager should be used to automatically disconnect/reconnect."
-#: ../data/empathy.schemas.in.h:48
-#| msgid "Whether or not to play sounds when busy."
+#: ../data/empathy.schemas.in.h:57
+msgid "Whether or not to check words typed against the languages you want to check with."
+msgstr "Whether or not to check words typed against the languages you want to check with."
+
+#: ../data/empathy.schemas.in.h:58
+msgid "Whether or not to convert smileys into graphical images in conversations."
+msgstr "Whether or not to convert smileys into graphical images in conversations."
+
+#: ../data/empathy.schemas.in.h:59
+msgid "Whether or not to play a sound to notify for contacts logging in the network."
+msgstr "Whether or not to play a sound to notify for contacts logging in the network."
+
+#: ../data/empathy.schemas.in.h:60
+msgid "Whether or not to play a sound to notify for contacts logging off the network."
+msgstr "Whether or not to play a sound to notify for contacts logging off the network."
+
+#: ../data/empathy.schemas.in.h:61
msgid "Whether or not to play a sound to notify for events."
msgstr "Whether or not to play a sound to notify for events."
-#: ../data/empathy.schemas.in.h:49
-#| msgid "Whether or not to play a sound when messages arrive."
+#: ../data/empathy.schemas.in.h:62
msgid "Whether or not to play a sound to notify for incoming messages."
msgstr "Whether or not to play a sound to notify for incoming messages."
-#: ../data/empathy.schemas.in.h:50
-#| msgid "Whether or not to play a sound when messages arrive."
+#: ../data/empathy.schemas.in.h:63
msgid "Whether or not to play a sound to notify for new conversations."
msgstr "Whether or not to play a sound to notify for new conversations."
-#: ../data/empathy.schemas.in.h:51
-#| msgid "Whether or not to play a sound when messages arrive."
+#: ../data/empathy.schemas.in.h:64
msgid "Whether or not to play a sound to notify for outgoing messages."
msgstr "Whether or not to play a sound to notify for outgoing messages."
-#: ../data/empathy.schemas.in.h:52
-#| msgid "Whether or not to play sounds when away."
+#: ../data/empathy.schemas.in.h:65
msgid "Whether or not to play a sound when logging in a network."
msgstr "Whether or not to play a sound when logging in a network."
-#: ../data/empathy.schemas.in.h:53
-#| msgid "Whether or not to play sounds when away."
+#: ../data/empathy.schemas.in.h:66
msgid "Whether or not to play a sound when logging off a network."
msgstr "Whether or not to play a sound when logging off a network."
-#: ../data/empathy.schemas.in.h:54
-msgid "Whether or not to show a popup when a contact becomes available."
-msgstr "Whether or not to show a popup when a contact becomes available."
+#: ../data/empathy.schemas.in.h:67
+msgid "Whether or not to play sound notifications when away or busy."
+msgstr "Whether or not to play sound notifications when away or busy."
-#: ../data/empathy.schemas.in.h:55
-msgid ""
-"Whether or not to show avatars for contacts in the contact list and chat "
-"windows."
-msgstr ""
-"Whether or not to show avatars for contacts in the contact list and chat "
-"windows."
+#: ../data/empathy.schemas.in.h:68
+msgid "Whether or not to show a popup notification when receiving a new message even if the chat is already opened, but not focused."
+msgstr "Whether or not to show a popup notification when receiving a new message even if the chat is already opened, but not focused."
-#: ../data/empathy.schemas.in.h:56
+#: ../data/empathy.schemas.in.h:69
+msgid "Whether or not to show a popup notification when receiving a new message."
+msgstr "Whether or not to show a popup notification when receiving a new message."
+
+#: ../data/empathy.schemas.in.h:70
+msgid "Whether or not to show avatars for contacts in the contact list and chat windows."
+msgstr "Whether or not to show avatars for contacts in the contact list and chat windows."
+
+#: ../data/empathy.schemas.in.h:71
msgid "Whether or not to show contacts that are offline in the contact list."
msgstr "Whether or not to show contacts that are offline in the contact list."
-#: ../data/empathy.schemas.in.h:57
-msgid ""
-"Whether or not to show the message dialog about closing the main window with "
-"the 'x' button in the title bar."
-msgstr ""
-"Whether or not to show the message dialog about closing the main window with "
-"the 'x' button in the title bar."
+#: ../data/empathy.schemas.in.h:72
+msgid "Whether or not to show popup notifications when away or busy."
+msgstr "Whether or not to show popup notifications when away or busy."
-#: ../data/empathy.schemas.in.h:58
+#: ../data/empathy.schemas.in.h:73
+msgid "Whether or not to show the message dialog about closing the main window with the 'x' button in the title bar."
+msgstr "Whether or not to show the message dialog about closing the main window with the 'x' button in the title bar."
+
+#: ../data/empathy.schemas.in.h:74
msgid "Whether to show the contact list in compact mode or not."
msgstr "Whether to show the contact list in compact mode or not."
-#: ../data/empathy.schemas.in.h:59
+#: ../data/empathy.schemas.in.h:75
msgid "Whether to use the theme for chat rooms or not."
msgstr "Whether to use the theme for chat rooms or not."
-#: ../data/empathy.schemas.in.h:60
-msgid ""
-"Which criterium to use when sorting the contact list. Default is to use sort "
-"by the contact's name with the value \"name\". A value of \"state\" will "
-"sort the contact list by state."
+#: ../data/empathy.schemas.in.h:76
+msgid "Which criterium to use when sorting the contact list. Default is to use sort by the contact's name with the value \"name\". A value of \"state\" will sort the contact list by state."
+msgstr "Which criterium to use when sorting the contact list. Default is to use sort by the contact's name with the value \"name\". A value of \"state\" will sort the contact list by state."
+
+#: ../libempathy/empathy-ft-handler.c:838
+msgid "The hash of the received file and the sent one do not match"
msgstr ""
-"Which criterium to use when sorting the contact list. Default is to use sort "
-"by the contact's name with the value \"name\". A value of \"state\" will "
-"sort the contact list by state."
-#: ../libempathy/empathy-tp-contact-list.c:731 ../src/empathy.c:267
+#: ../libempathy/empathy-ft-handler.c:1098
+msgid "File transfer not supported by remote contact"
+msgstr ""
+
+#: ../libempathy/empathy-tp-contact-list.c:757
+#: ../src/empathy.c:286
msgid "People nearby"
msgstr ""
-#: ../libempathy/empathy-utils.c:251
+#: ../libempathy/empathy-tp-file.c:300
+msgid "No reason was specified"
+msgstr "לא צויינה סיבה"
+
+#: ../libempathy/empathy-tp-file.c:303
+msgid "The change in state was requested"
+msgstr ""
+
+#: ../libempathy/empathy-tp-file.c:306
+msgid "You canceled the file transfer"
+msgstr "ביטלת את ההעברה"
+
+#: ../libempathy/empathy-tp-file.c:309
+msgid "The other participant canceled the file transfer"
+msgstr ""
+
+#: ../libempathy/empathy-tp-file.c:312
+msgid "Error while trying to transfer the file"
+msgstr "התרחשה שגיאה בזמן ניסיון העברת הקובץ"
+
+#: ../libempathy/empathy-tp-file.c:315
+msgid "The other participant is unable to transfer the file"
+msgstr ""
+
+#: ../libempathy/empathy-tp-file.c:318
+msgid "Unknown reason"
+msgstr "סיבה לא ידועה"
+
+#: ../libempathy/empathy-utils.c:274
msgid "Available"
msgstr "זמין"
-#: ../libempathy/empathy-utils.c:253
+#: ../libempathy/empathy-utils.c:276
msgid "Busy"
msgstr "עסוק"
-#: ../libempathy/empathy-utils.c:256
+#: ../libempathy/empathy-utils.c:279
msgid "Away"
msgstr "מרוחק"
-#: ../libempathy/empathy-utils.c:258
+#: ../libempathy/empathy-utils.c:281
msgid "Hidden"
msgstr "מוסתר"
-#: ../libempathy/empathy-utils.c:261
+#: ../libempathy/empathy-utils.c:283
msgid "Offline"
-msgstr "מנותק"
+msgstr "לא מחובר"
+
+#: ../libempathy/empathy-time.c:137
+#, c-format
+msgid "%d second ago"
+msgid_plural "%d seconds ago"
+msgstr[0] "לפני שניה"
+msgstr[1] "לפני %d שניות"
+
+#: ../libempathy/empathy-time.c:142
+#, c-format
+msgid "%d minute ago"
+msgid_plural "%d minutes ago"
+msgstr[0] "לפני דקה"
+msgstr[1] "לפני %d דקות"
-#: ../libempathy-gtk/empathy-account-chooser.c:326
+#: ../libempathy/empathy-time.c:147
+#, c-format
+msgid "%d hour ago"
+msgid_plural "%d hours ago"
+msgstr[0] "לפני שעה"
+msgstr[1] "לפני %d שעות"
+
+#: ../libempathy/empathy-time.c:152
+#, c-format
+msgid "%d day ago"
+msgid_plural "%d days ago"
+msgstr[0] "לפני יום"
+msgstr[1] "לפני %d ימים"
+
+#: ../libempathy/empathy-time.c:157
+#, c-format
+msgid "%d month ago"
+msgid_plural "%d months ago"
+msgstr[0] "לפני חודש"
+msgstr[1] "לפני %d חודשים"
+
+#: ../libempathy/empathy-time.c:162
+msgid "in the future"
+msgstr "בעתיד"
+
+#: ../libempathy-gtk/empathy-account-chooser.c:419
msgid "All"
msgstr "הכל"
#: ../libempathy-gtk/empathy-account-widget.c:302
-#: ../libempathy-gtk/empathy-account-widget.c:347
+#: ../libempathy-gtk/empathy-account-widget.c:354
#, c-format
msgid "%s:"
msgstr "%s:"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-generic.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:1
msgid "<b>Advanced</b>"
msgstr "<b>מתקדם</b>"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
-msgid "Forget password and clear the entry."
-msgstr ""
-
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:3
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:2
msgid "Pass_word:"
msgstr "סיסמ_ה:"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:3
msgid "Screen _Name:"
msgstr "שם _מסך:"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:7
msgid "_Port:"
msgstr "_שער:"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
-#: ../src/empathy-new-chatroom-dialog.glade.h:10
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:6
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
+#: ../src/empathy-new-chatroom-dialog.ui.h:9
msgid "_Server:"
msgstr "_שרת:"
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:3
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:2
msgid "Login I_D:"
msgstr "מזהה משת_מש:"
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:2
msgid "ICQ _UIN:"
msgstr ""
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:5
msgid "_Charset:"
-msgstr "קידוד _תוים:"
+msgstr "קידוד _תווים:"
-#: ../libempathy-gtk/empathy-account-widget-irc.c:245
+#: ../libempathy-gtk/empathy-account-widget-irc.c:241
msgid "New Network"
msgstr "רשת חדשה"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1
msgid "<b>Network</b>"
msgstr "<b>רשת</b>"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
msgid "<b>Servers</b>"
msgstr "<b>שרתים</b>"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
msgid "Charset:"
-msgstr "קידוד תוים:"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
-msgid "Create a new IRC network"
-msgstr "צור רשת IRC חדשה"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
-msgid "Edit the selected IRC network"
-msgstr "ערוך רשת IRC מסומנת"
+msgstr "קידוד תווים:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
msgid "Network"
msgstr "רשת"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
msgid "Network:"
msgstr "רשת:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
msgid "Nickname:"
msgstr "כינוי:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
msgid "Password:"
msgstr "סיסמה:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
msgid "Quit message:"
msgstr "הודאת יציאה:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
msgid "Real name:"
msgstr "שם אמיתי:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
-msgid "Remove the selected IRC network"
-msgstr "הסר רשת IRC מסומנת"
-
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:2
msgid "<b>Override server settings</b>"
-msgstr "<b>עקןף הגדרת שרת</b>"
+msgstr "<b>עקוף הגדרת שרת</b>"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:5
msgid "Pri_ority:"
msgstr "עדי_פות:"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:6
msgid "Reso_urce:"
msgstr "_משאב:"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
msgid "Use old SS_L"
msgstr "השתמש ב-SS_L ישן"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:8
msgid "_Encryption required (TLS/SSL)"
msgstr "_נדרשת הצפנה (TLS/SSL)"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:9
msgid "_Ignore SSL certificate errors"
msgstr "ה_תעלם משגיאות בתעודות SSL"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:2
msgid "_Email:"
msgstr "_דוא\"ל:"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
-msgid "_First Name: "
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:3
+msgid "_First Name:"
msgstr "שם _פרטי:"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:4
msgid "_Jabber ID:"
msgstr "מזהה Jabber:"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:5
msgid "_Last Name:"
msgstr "שם _משפחה"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
-#: ../src/empathy-chatrooms-window.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:6
msgid "_Nickname:"
msgstr "_כינוי"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:7
msgid "_Published Name:"
msgstr ""
#. look up the DNS SRV record at the service's domain for the host name of a STUN server.
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:3
msgid "Discover STUN"
msgstr "גילוי STUN"
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:5
msgid "STUN Server:"
msgstr "שרת STUN:"
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:6
msgid "STUN port:"
msgstr "שער STUN:"
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:7
msgid "_Username:"
msgstr "ש_ם משתמש:"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:3
msgid "Use _Yahoo Japan"
msgstr "השתמש ב-_Yahoo יפן"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
-#, fuzzy
-#| msgid "Login I_D:"
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:4
msgid "Yahoo I_D:"
-msgstr "מזהה משת_מש:"
+msgstr "חש_בון Yahoo:"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6
msgid "_Ignore conference and chatroom invitations"
msgstr "ה_תעלם מהזמנות לשיחות ועידה וחדרי שיחה"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:8
msgid "_Room List locale:"
msgstr ""
-#: ../libempathy-gtk/empathy-avatar-chooser.c:461
-#: ../libempathy-gtk/empathy-avatar-chooser.c:536
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+#: ../libempathy-gtk/empathy-avatar-chooser.c:525
msgid "Couldn't convert image"
msgstr ""
-#: ../libempathy-gtk/empathy-avatar-chooser.c:462
+#: ../libempathy-gtk/empathy-avatar-chooser.c:450
msgid "None of the accepted image formats is supported on your system"
msgstr ""
-#: ../libempathy-gtk/empathy-avatar-chooser.c:947
+#: ../libempathy-gtk/empathy-avatar-chooser.c:933
msgid "Select Your Avatar Image"
msgstr "בחר את התמונה האישית שלך"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:950
+#: ../libempathy-gtk/empathy-avatar-chooser.c:936
msgid "No Image"
msgstr "ללא תמונה"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:1010
+#: ../libempathy-gtk/empathy-avatar-chooser.c:998
msgid "Images"
msgstr "תמונות"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:1014
+#: ../libempathy-gtk/empathy-avatar-chooser.c:1002
msgid "All Files"
msgstr "כל הקבצים"
-#: ../libempathy-gtk/empathy-avatar-image.c:294
+#: ../libempathy-gtk/empathy-avatar-image.c:324
msgid "Click to enlarge"
msgstr "לחץ כדי להגדיל"
-#: ../libempathy-gtk/empathy-chat.c:507
+#: ../libempathy-gtk/empathy-chat.c:178
+msgid "Failed to reconnect this chat"
+msgstr "נכשל בהתחברות לשיחה"
+
+#: ../libempathy-gtk/empathy-chat.c:396
+msgid "Unsupported command"
+msgstr "פקודה לא נתמכת"
+
+#: ../libempathy-gtk/empathy-chat.c:531
msgid "offline"
-msgstr "מנותק"
+msgstr "לא מחובר"
-#: ../libempathy-gtk/empathy-chat.c:510
+#: ../libempathy-gtk/empathy-chat.c:534
msgid "invalid contact"
-msgstr ""
+msgstr "איש קשר לא תקין"
-#: ../libempathy-gtk/empathy-chat.c:513
+#: ../libempathy-gtk/empathy-chat.c:537
msgid "permission denied"
msgstr "איש קשר לא תקין"
-#: ../libempathy-gtk/empathy-chat.c:516
+#: ../libempathy-gtk/empathy-chat.c:540
msgid "too long message"
msgstr "הודעה ארוכה מדי"
-#: ../libempathy-gtk/empathy-chat.c:519
+#: ../libempathy-gtk/empathy-chat.c:543
msgid "not implemented"
msgstr "לא ממומש"
-#: ../libempathy-gtk/empathy-chat.c:522
+#: ../libempathy-gtk/empathy-chat.c:546
msgid "unknown"
msgstr "לא ידוע"
-#: ../libempathy-gtk/empathy-chat.c:526
+#: ../libempathy-gtk/empathy-chat.c:550
#, c-format
msgid "Error sending message '%s': %s"
msgstr "שגיאה בשליחת ההודעה '%s': ‏%s"
-#: ../libempathy-gtk/empathy-chat.c:556
+#: ../libempathy-gtk/empathy-chat.c:580
#, c-format
msgid "Topic set to: %s"
msgstr "הנושא נקבע ל: %s"
-#: ../libempathy-gtk/empathy-chat.c:558
+#: ../libempathy-gtk/empathy-chat.c:582
msgid "No topic defined"
msgstr "לא נקבע נושא"
-#: ../libempathy-gtk/empathy-chat.c:973
+#: ../libempathy-gtk/empathy-chat.c:951
+msgid "(No Suggestions)"
+msgstr "(אין הצעות)"
+
+#: ../libempathy-gtk/empathy-chat.c:1005
msgid "Insert Smiley"
msgstr "הכנס סמיילי"
#. send button
-#: ../libempathy-gtk/empathy-chat.c:991
-#: ../libempathy-gtk/empathy-ui-utils.c:1526
+#: ../libempathy-gtk/empathy-chat.c:1023
+#: ../libempathy-gtk/empathy-ui-utils.c:1476
msgid "_Send"
msgstr "_שלח"
-#: ../libempathy-gtk/empathy-chat.c:1025
-msgid "_Check Word Spelling..."
-msgstr "ב_דוק איות..."
+#: ../libempathy-gtk/empathy-chat.c:1057
+msgid "_Spelling Suggestions"
+msgstr "הצעות _איות"
-#: ../libempathy-gtk/empathy-chat.c:1131
+#: ../libempathy-gtk/empathy-chat.c:1171
#, c-format
msgid "%s has joined the room"
msgstr "‏%s הצטרף לחדר"
-#: ../libempathy-gtk/empathy-chat.c:1134
+#: ../libempathy-gtk/empathy-chat.c:1174
#, c-format
msgid "%s has left the room"
msgstr "‏%s עזב את החדר"
-#: ../libempathy-gtk/empathy-chat.c:1248 ../src/empathy-call-window.c:426
+#: ../libempathy-gtk/empathy-chat.c:1289
+#: ../src/empathy-call-window.c:1107
msgid "Disconnected"
msgstr "מנותק"
-#: ../libempathy-gtk/empathy-chat.c:1644
+#: ../libempathy-gtk/empathy-chat.c:1700
msgid "Connected"
msgstr "מחובר"
-#: ../libempathy-gtk/empathy-chat.c:1694
-#: ../libempathy-gtk/empathy-log-window.c:505
+#: ../libempathy-gtk/empathy-chat.c:1750
+#: ../libempathy-gtk/empathy-log-window.c:501
msgid "Conversation"
msgstr "שיחה"
-#: ../libempathy-gtk/empathy-chat.glade.h:1
+#: ../libempathy-gtk/empathy-chat.ui.h:1
msgid "<b>Topic:</b>"
msgstr "<b>נושא:</b>"
-#: ../libempathy-gtk/empathy-chat.glade.h:2
-msgid "Group Chat"
-msgstr ""
-
-#: ../libempathy-gtk/empathy-chat-text-view.c:340
+#: ../libempathy-gtk/empathy-chat-text-view.c:316
msgid "_Copy Link Address"
msgstr "העתק _מיקום קישור"
-#: ../libempathy-gtk/empathy-chat-text-view.c:348
+#: ../libempathy-gtk/empathy-chat-text-view.c:323
msgid "_Open Link"
msgstr "_פתח קישור"
-#: ../libempathy-gtk/empathy-chat-text-view.c:439
-msgid "%A %d %B %Y"
+#. Translators: timestamp displayed between conversations in
+#. * chat windows (strftime format string)
+#: ../libempathy-gtk/empathy-chat-text-view.c:415
+msgid "%A %B %d %Y"
msgstr "%A %d %B %Y"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:180
-msgid "Personal Information"
-msgstr "מידע אישי"
-
-#: ../libempathy-gtk/empathy-contact-dialogs.c:183
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+#: ../libempathy-gtk/empathy-contact-dialogs.c:238
msgid "Edit Contact Information"
msgstr "ערוך מידע איש קשר"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:186
-msgid "Contact Information"
-msgstr "מידע איש קשר"
-
-#: ../libempathy-gtk/empathy-contact-dialogs.c:266
-msgid "I would like to add you to my contact list."
-msgstr "הייתי רוצה להוסיף אותך לרשימת אנשי הקשר שלי."
+#: ../libempathy-gtk/empathy-contact-dialogs.c:289
+msgid "Personal Information"
+msgstr "מידע אישי"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:290
+#: ../libempathy-gtk/empathy-contact-dialogs.c:392
msgid "New Contact"
msgstr "איש קשר חדש"
-#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:1
msgid "Decide _Later"
msgstr "ה_חלט מאוחר יותר"
-#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:2
msgid "Subscription Request"
msgstr ""
-#: ../libempathy-gtk/empathy-contact-list-view.c:1244
+#: ../libempathy-gtk/empathy-contact-list-view.c:1378
#, c-format
msgid "Do you really want to remove the group '%s'?"
msgstr "להסיר את הקבוצה '%s'?"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1246
+#: ../libempathy-gtk/empathy-contact-list-view.c:1380
msgid "Removing group"
msgstr "מסיר קבוצה"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1293
-#: ../libempathy-gtk/empathy-contact-list-view.c:1372
+#: ../libempathy-gtk/empathy-contact-list-view.c:1427
+#: ../libempathy-gtk/empathy-contact-list-view.c:1505
msgid "_Remove"
msgstr "_הסר"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1323
+#: ../libempathy-gtk/empathy-contact-list-view.c:1457
#, c-format
msgid "Do you really want to remove the contact '%s'?"
msgstr "להסיר את איש הקשר '%s'?"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1325
+#: ../libempathy-gtk/empathy-contact-list-view.c:1459
msgid "Removing contact"
msgstr "מסיר איש קשר"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1330
-msgid "Sorry, I don't want you in my contact list anymore."
-msgstr "מצטער, אני יותר לא רוצה אותך ברשימת אנשי הקשר שלי."
-
-#: ../libempathy-gtk/empathy-contact-menu.c:121
-#: ../src/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/empathy-contact-menu.c:135
+#: ../src/empathy-main-window.ui.h:8
msgid "_Chat"
msgstr "_שיחה"
-#: ../libempathy-gtk/empathy-contact-menu.c:142
-msgid "_Call"
-msgstr "_שיחה"
+#: ../libempathy-gtk/empathy-contact-menu.c:166
+msgctxt "menu item"
+msgid "_Audio Call"
+msgstr "שיחה _קולית"
-#: ../libempathy-gtk/empathy-contact-menu.c:181
-#: ../src/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-contact-menu.c:198
+msgctxt "menu item"
+msgid "_Video Call"
+msgstr "שיחת _וידאו"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:237
msgid "_View Previous Conversations"
msgstr "_צפייה בשיחות קודמות"
-#: ../libempathy-gtk/empathy-contact-menu.c:203
-#| msgid "Send a file"
+#: ../libempathy-gtk/empathy-contact-menu.c:259
msgid "Send file"
msgstr "שלח קובץ"
-#: ../libempathy-gtk/empathy-contact-menu.c:231
+#: ../libempathy-gtk/empathy-contact-menu.c:287
msgid "Infor_mation"
msgstr "_מידע"
-#: ../libempathy-gtk/empathy-contact-menu.c:258
-#: ../src/empathy-chat-window.glade.h:14 ../src/empathy-main-window.glade.h:11
+#: ../libempathy-gtk/empathy-contact-menu.c:314
+#: ../src/empathy-main-window.ui.h:11
msgid "_Edit"
msgstr "_עריכה"
-#: ../libempathy-gtk/empathy-contact-menu.c:317
-#, fuzzy
-#| msgid "_Invite to Chat Room"
+#: ../libempathy-gtk/empathy-contact-menu.c:372
msgid "Inviting to this room"
-msgstr "_הזמן לחדר שיחה"
+msgstr "הזמן לחדר שיחה זה"
-#: ../libempathy-gtk/empathy-contact-menu.c:350
-#, fuzzy
-#| msgid "_Invite to Chat Room"
+#: ../libempathy-gtk/empathy-contact-menu.c:403
msgid "_Invite to chatroom"
msgstr "_הזמן לחדר שיחה"
-#: ../libempathy-gtk/empathy-contact-widget.c:358
-#, fuzzy
+#: ../libempathy-gtk/empathy-contact-selector.c:129
+msgid "Select a contact"
+msgstr "בחר איש קשר"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:440
msgid "Save Avatar"
-msgstr "Show avatars"
+msgstr "שמור תמונה אישית"
-#: ../libempathy-gtk/empathy-contact-widget.c:414
+#: ../libempathy-gtk/empathy-contact-widget.c:496
msgid "Unable to save avatar"
msgstr ""
-#: ../libempathy-gtk/empathy-contact-widget.c:895
+#: ../libempathy-gtk/empathy-contact-widget.c:979
msgid "Select"
msgstr "בחר"
-#: ../libempathy-gtk/empathy-contact-widget.c:904
-#: ../src/empathy-main-window.c:974
+#: ../libempathy-gtk/empathy-contact-widget.c:988
+#: ../src/empathy-main-window.c:905
msgid "Group"
msgstr "קבוצה"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.c:1239
+msgid "Country ISO Code:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1241
+msgid "Country:"
+msgstr "ארץ:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1243
+msgid "State:"
+msgstr "מדינה:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1245
+msgid "City:"
+msgstr "עיר:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1247
+msgid "Area:"
+msgstr "אזור:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1249
+msgid "Postal Code:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1251
+msgid "Street:"
+msgstr "רחוב:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1253
+msgid "Building:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1255
+msgid "Floor:"
+msgstr "קומה:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1257
+msgid "Room:"
+msgstr "חדר:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1259
+msgid "Text:"
+msgstr "טקסט:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1261
+msgid "Description:"
+msgstr "תיאור:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1263
+msgid "URI:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1265
+msgid "Accuracy Level:"
+msgstr "רמת דיוק:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1267
+msgid "Error:"
+msgstr "שגיאה:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1269
+msgid "Vertical Error (meters):"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1271
+msgid "Horizontal Error (meters):"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1273
+msgid "Speed:"
+msgstr "מהירות:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1275
+#, fuzzy
+msgid "Bearing:"
+msgstr "גרסה:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1277
+msgid "Climb Speed:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1279
+msgid "Last Updated on:"
+msgstr "עדכון אחרון ב:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1281
+msgid "Longitude:"
+msgstr "קו אורך:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1283
+msgid "Latitude:"
+msgstr "קו רוחב:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1285
+msgid "Altitude:"
+msgstr "גובה:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1332
+msgid "<b>Location</b>"
+msgstr "<b>מיקום</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1345
+msgid "<b>Location</b>, "
+msgstr "<b>מיקום</b>, "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1395
+msgid "%B %e, %Y at %R UTC"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:1
msgid "<b>Client Information</b>"
msgstr "<b>מידע לקוח</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
msgid "<b>Contact Details</b>"
msgstr "<b>מידע איש קשר</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:3
msgid "<b>Contact</b>"
msgstr "<b>איש קשר</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:4
msgid "<b>Groups</b>"
msgstr "<b>קבוצות</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
-#: ../src/empathy-chatrooms-window.glade.h:1
-#: ../src/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:5
+msgid "<b>Location</b> at (date)\t"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:6
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:1
+#: ../src/empathy-chatrooms-window.ui.h:1
+#: ../src/empathy-new-chatroom-dialog.ui.h:1
msgid "Account:"
msgstr "חשבון:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:7
msgid "Alias:"
msgstr "כינוי:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:8
msgid "Birthday:"
msgstr "יום הולדת:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:9
msgid "Client:"
msgstr "לקוח:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
-msgid "Contact information"
-msgstr "נתוני איש קשר"
-
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:10
msgid "Email:"
msgstr "דוא\"ל:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:11
msgid "Fullname:"
msgstr "שם מלא:"
#. Identifier to connect to Instant Messaging network
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:13
msgid "Identifier:"
msgstr "מזהה:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:14
msgid "Information requested..."
msgstr ""
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:15
msgid "OS:"
-msgstr ""
+msgstr "מערכת הפעלה:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
-msgid ""
-"Select the groups you want this contact to appear in. Note that you can "
-"select more than one group or no groups."
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:16
+msgid "Select the groups you want this contact to appear in. Note that you can select more than one group or no groups."
msgstr ""
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:17
msgid "Version:"
msgstr "גרסה:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:18
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:18
msgid "Web site:"
msgstr "אתר אינטרנט:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:19
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:19
msgid "_Add Group"
msgstr "_הוסף קבוצה"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:284
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:283
msgid "new server"
msgstr "שרת חדש"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:513
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:510
msgid "Server"
msgstr "שרת"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:528
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:525
msgid "Port"
msgstr "שער"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:541
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:538
msgid "SSL"
msgstr "SSL"
-#: ../libempathy-gtk/empathy-log-window.c:498
-#: ../src/empathy-import-dialog.c:271
+#: ../libempathy-gtk/empathy-log-window.c:494
+#: ../src/empathy-import-dialog.c:281
msgid "Account"
msgstr "חשבון"
-#: ../libempathy-gtk/empathy-log-window.c:515
+#: ../libempathy-gtk/empathy-log-window.c:511
msgid "Date"
msgstr "תאריך"
-#. Tab Label
-#: ../libempathy-gtk/empathy-log-window.glade.h:2
+#: ../libempathy-gtk/empathy-log-window.ui.h:1
msgid "Conversations"
msgstr "שיחות"
-#: ../libempathy-gtk/empathy-log-window.glade.h:3
+#: ../libempathy-gtk/empathy-log-window.ui.h:2
msgid "Previous Conversations"
msgstr "שיחות קודמות"
-#. Tab Label
-#: ../libempathy-gtk/empathy-log-window.glade.h:5
+#: ../libempathy-gtk/empathy-log-window.ui.h:3
msgid "Search"
msgstr "חיפוש"
-#. Searching *for* something
-#: ../libempathy-gtk/empathy-log-window.glade.h:7
+#: ../libempathy-gtk/empathy-log-window.ui.h:4
msgid "_For:"
msgstr "_ערך:"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
-#, fuzzy
-#| msgid "_Call"
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:2
msgid "C_all"
-msgstr "_שיחה"
+msgstr "ה_תקשר"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
-#, fuzzy
-#| msgid "Chat"
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:3
msgid "C_hat"
-msgstr "שיחה"
+msgstr "שי_חה"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:4
msgid "Contact ID:"
msgstr ""
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:5
msgid "New Conversation"
msgstr "שיחה חדשה"
+#. COL_STATE_ICON_NAME
+#. COL_STATE
+#. COL_STATUS_TEXT
+#. COL_DISPLAY_MARKUP
+#. COL_STATUS_CUSTOMISABLE
+#. COL_TYPE
+#: ../libempathy-gtk/empathy-presence-chooser.c:172
+msgid "Custom Message..."
+msgstr "הודעה מותאמת אישית..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:227
+msgid "Edit Custom Messages..."
+msgstr "ערוך הודעה מותאמת אישית..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:326
+msgid "Click to remove this status as a favorite"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:335
+msgid "Click to make this status a favorite"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:369
+msgid "Set status"
+msgstr "קבע מצב"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:778
+msgid "Set your presence and current status"
+msgstr ""
+
#. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:685
+#: ../libempathy-gtk/empathy-presence-chooser.c:1013
msgid "Custom messages..."
msgstr "הודעות מותאמות אישית..."
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
-msgid "Custom message"
-msgstr "הודעה מותאמת אישית"
-
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
-msgid "Message:"
-msgstr "הודעה:"
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:362
+msgid "Enter Custom Message"
+msgstr "הכנס הודעה מותאמת"
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
-msgid "Save message"
-msgstr "שמור הודעה"
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:521
+msgid "Edit Custom Messages"
+msgstr "ערוך הודעה מותאמת"
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
-msgid "Status:"
-msgstr "מצב:"
-
-#: ../libempathy-gtk/empathy-spell-dialog.c:88
-msgid "Word"
-msgstr "מילה"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1
+msgid "Add _New Preset"
+msgstr ""
-#: ../libempathy-gtk/empathy-spell-dialog.c:265
-msgid "Suggestions for the word"
-msgstr "הצעות עבור המילה"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:2
+#, fuzzy
+msgid "Saved Presets"
+msgstr "שמור הודעה"
-#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
-msgid "Spell Checker"
-msgstr "בודק איות"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:3
+msgid "gtk-add"
+msgstr "gtk-add"
-#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
-msgid "Suggestions for the word:"
-msgstr "הצעות עבור המילה:"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:4
+msgid "gtk-remove"
+msgstr "gtk-remove"
-#: ../libempathy-gtk/empathy-theme-manager.c:60
+#: ../libempathy-gtk/empathy-theme-manager.c:66
msgid "Classic"
msgstr "קלאסי"
-#: ../libempathy-gtk/empathy-theme-manager.c:61
+#: ../libempathy-gtk/empathy-theme-manager.c:67
msgid "Simple"
msgstr "פשוט"
-#: ../libempathy-gtk/empathy-theme-manager.c:62
+#: ../libempathy-gtk/empathy-theme-manager.c:68
msgid "Clean"
msgstr "נקי"
-#: ../libempathy-gtk/empathy-theme-manager.c:63
+#: ../libempathy-gtk/empathy-theme-manager.c:69
msgid "Blue"
msgstr "כחול"
-#: ../libempathy-gtk/empathy-ui-utils.c:1373
+#: ../libempathy-gtk/empathy-theme-manager.c:71
+msgid "Adium"
+msgstr "Adium"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1378
msgid "Unable to open URI"
msgstr "לא נית לפתוח את הכתובת"
-#: ../libempathy-gtk/empathy-ui-utils.c:1518
-#| msgid "Send a file"
+#: ../libempathy-gtk/empathy-ui-utils.c:1468
msgid "Select a file"
msgstr "בחר קובץ"
-#: ../libempathy-gtk/empathy-ui-utils.c:1554
-#, fuzzy
-#| msgid "Send and receive instant messages"
+#: ../libempathy-gtk/empathy-ui-utils.c:1526
+msgid "Select a destination"
+msgstr "בחר יעד"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1555
msgid "Received an instant message"
-msgstr "שלח וקבל מסרים מיידיים"
+msgstr "התקבלה הודעה מידית."
-#: ../libempathy-gtk/empathy-ui-utils.c:1556
-#, fuzzy
-#| msgid "Send and receive instant messages"
+#: ../libempathy-gtk/empathy-ui-utils.c:1557
msgid "Sent an instant message"
-msgstr "שלח וקבל מסרים מיידיים"
+msgstr "שלח הודעה מידית"
-#: ../libempathy-gtk/empathy-ui-utils.c:1558
-#, fuzzy
-#| msgid "Incoming call"
+#: ../libempathy-gtk/empathy-ui-utils.c:1559
msgid "Incoming chat request"
-msgstr "שיחה נכנסת"
+msgstr "בקשת שיחה נכנסת"
-#: ../libempathy-gtk/empathy-ui-utils.c:1560
-#| msgid "Connected"
+#: ../libempathy-gtk/empathy-ui-utils.c:1561
msgid "Contact connected"
msgstr "איש קשר התחבר"
-#: ../libempathy-gtk/empathy-ui-utils.c:1562
-#| msgid "Disconnected"
+#: ../libempathy-gtk/empathy-ui-utils.c:1563
msgid "Contact disconnected"
msgstr "איש קשר התנתק"
-#: ../libempathy-gtk/empathy-ui-utils.c:1564
-#| msgid "Connected"
+#: ../libempathy-gtk/empathy-ui-utils.c:1565
msgid "Connected to server"
msgstr "מחובר לשרת"
-#: ../libempathy-gtk/empathy-ui-utils.c:1566
-#, fuzzy
-#| msgid "Disconnected"
+#: ../libempathy-gtk/empathy-ui-utils.c:1567
msgid "Disconnected from server"
-msgstr "מנותק"
+msgstr "מנותק מהשרת"
-#: ../libempathy-gtk/empathy-ui-utils.c:1568
-#, fuzzy
-#| msgid "Incoming call"
+#: ../libempathy-gtk/empathy-ui-utils.c:1569
msgid "Incoming voice call"
-msgstr "שיחה נכנסת"
+msgstr "שיחה קולית נכנסת"
-#: ../libempathy-gtk/empathy-ui-utils.c:1570
+#: ../libempathy-gtk/empathy-ui-utils.c:1571
msgid "Outgoing voice call"
-msgstr ""
+msgstr "שיחה קולית פעילה"
-#: ../libempathy-gtk/empathy-ui-utils.c:1572
+#: ../libempathy-gtk/empathy-ui-utils.c:1573
msgid "Voice call ended"
-msgstr ""
+msgstr "שיחה קולית הסתיימה"
#: ../libempathy-gtk/totem-subtitle-encoding.c:158
msgid "Current Locale"
@@ -1247,10 +1405,8 @@ msgstr "ויאטנמית"
#. * vim: sw=2 ts=8 cindent noai bs=2
#.
#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
-msgid ""
-"The contact to display in the applet. Empty means no contact is displayed."
-msgstr ""
-"The contact to display in the applet. Empty means no contact is displayed."
+msgid "The contact to display in the applet. Empty means no contact is displayed."
+msgstr "The contact to display in the applet. Empty means no contact is displayed."
#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
msgid "The contact's avatar token. Empty means contact has no avatar."
@@ -1261,7 +1417,7 @@ msgid "Megaphone"
msgstr "Megaphone"
#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
-#: ../megaphone/src/megaphone-applet.c:417
+#: ../megaphone/src/megaphone-applet.c:527
msgid "Talk!"
msgstr "דבר!"
@@ -1275,16 +1431,15 @@ msgid "_Information"
msgstr "_מידע"
#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
-#: ../src/empathy-main-window.glade.h:15
+#: ../src/empathy-main-window.ui.h:18
msgid "_Preferences"
msgstr "_העדפות"
-#: ../megaphone/src/megaphone-applet.c:255
+#: ../megaphone/src/megaphone-applet.c:168
msgid "Please configure a contact."
-msgstr ""
+msgstr "נא להגדיר איש קשר."
-#: ../megaphone/src/megaphone-applet.c:348
-#| msgid "_Add Contact..."
+#: ../megaphone/src/megaphone-applet.c:258
msgid "Select contact..."
msgstr "בחר איש קשר..."
@@ -1297,55 +1452,33 @@ msgstr "Presence"
msgid "Set your own presence"
msgstr ""
-#: ../src/empathy.c:400
+#: ../src/empathy.c:476
msgid "Don't connect on startup"
msgstr "אל תתחבר בהפעלה"
-#: ../src/empathy.c:404
+#: ../src/empathy.c:480
msgid "Don't show the contact list on startup"
msgstr "אל תציג את רשימת אנשי הקשר בהפעלה"
-#: ../src/empathy.c:408
+#: ../src/empathy.c:484
msgid "Show the accounts dialog"
msgstr "הצג חלון החשבונות"
-#: ../src/empathy.c:416
+#: ../src/empathy.c:496
msgid "- Empathy Instant Messenger"
msgstr "- Empathy Instant Messenger"
#: ../src/empathy-about-dialog.c:84
-msgid ""
-"Empathy is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
-msgstr ""
-"Empathy is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version."
+msgid "Empathy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."
+msgstr "Empathy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version."
#: ../src/empathy-about-dialog.c:88
-msgid ""
-"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
-msgstr ""
-"Empathy is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
-"FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
-"details."
+msgid "Empathy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details."
+msgstr "Empathy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details."
#: ../src/empathy-about-dialog.c:92
-msgid ""
-"You should have received a copy of the GNU General Public License along with "
-"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
-"Street, Fifth Floor, Boston, MA 02110-130159 USA"
-msgstr ""
-"You should have received a copy of the GNU General Public License along with "
-"Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin "
-"Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgid "You should have received a copy of the GNU General Public License along with Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
+msgstr "You should have received a copy of the GNU General Public License along with Empathy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA"
#: ../src/empathy-about-dialog.c:120
msgid "An Instant Messaging client for GNOME"
@@ -1359,23 +1492,22 @@ msgstr ""
"פרוייקט תרגום GNOME לעברית:\n"
"‏http://gnome-il.berlios.de"
-#: ../src/empathy-accounts-dialog.c:391
+#: ../src/empathy-accounts-dialog.c:393
msgid "Enabled"
msgstr "מופעל"
-#: ../src/empathy-accounts-dialog.c:401
-#: ../src/empathy-accounts-dialog.glade.h:4
+#: ../src/empathy-accounts-dialog.c:403
+#: ../src/empathy-accounts-dialog.ui.h:4
msgid "Accounts"
msgstr "חשבונות"
#. To translator: %s is the protocol name
-#: ../src/empathy-accounts-dialog.c:827
-#, fuzzy, c-format
-#| msgid "No accounts"
+#: ../src/empathy-accounts-dialog.c:837
+#, c-format
msgid "New %s account"
-msgstr "אין חשבונות"
+msgstr "חשבון %s חדש"
-#: ../src/empathy-accounts-dialog.c:937
+#: ../src/empathy-accounts-dialog.c:950
#, c-format
msgid ""
"You are about to remove your %s account!\n"
@@ -1384,345 +1516,237 @@ msgstr ""
"חשבון ה-%s שלך עומד להיות מוסר!\n"
"להסיר את החשבון?"
-#: ../src/empathy-accounts-dialog.c:943
+#: ../src/empathy-accounts-dialog.c:956
msgid ""
-"Any associated conversations and chat rooms will NOT be removed if you "
-"decide to proceed.\n"
+"Any associated conversations and chat rooms will NOT be removed if you decide to proceed.\n"
"\n"
-"Should you decide to add the account back at a later time, they will still "
-"be available."
+"Should you decide to add the account back at a later time, they will still be available."
msgstr ""
-#: ../src/empathy-accounts-dialog.glade.h:1
-msgid "<b>New Account</b>"
-msgstr "<b>חשבון חדש</b>"
+#: ../src/empathy-accounts-dialog.ui.h:1
+msgid "<b>Add Account</b>"
+msgstr "<b>הוסף חשבון</b>"
-#: ../src/empathy-accounts-dialog.glade.h:2
-#, fuzzy
-#| msgid "<b>No Account Selected</b>"
+#: ../src/empathy-accounts-dialog.ui.h:2
msgid "<b>No protocol installed</b>"
-msgstr "<b>לא נבחרו חשבונות</b>"
+msgstr "<b>אין פרוטוקולים מותקנים</b>"
-#: ../src/empathy-accounts-dialog.glade.h:3
+#: ../src/empathy-accounts-dialog.ui.h:3
msgid "<b>Settings</b>"
msgstr "<b>הגדרות</b>"
-#: ../src/empathy-accounts-dialog.glade.h:5
+#: ../src/empathy-accounts-dialog.ui.h:5
msgid "Cr_eate"
msgstr "_צור"
-#: ../src/empathy-accounts-dialog.glade.h:6
-msgid "I already have an account I want to use"
-msgstr ""
-
-#: ../src/empathy-accounts-dialog.glade.h:7
-#, fuzzy
-#| msgid "Empathy accounts"
+#: ../src/empathy-accounts-dialog.ui.h:6
msgid "Import Accounts..."
-msgstr "חשבונות Empathy"
+msgstr "ייבוא חשבונות..."
-#: ../src/empathy-accounts-dialog.glade.h:8
-msgid ""
-"To add a new account, you first have to install a backend for each protocol "
-"you want to use."
-msgstr ""
-"על מנת להוסיף חשבון חדש עליך להתקין מנוע לכל פרוטוקול שבו ברצונך להשתמש."
+#: ../src/empathy-accounts-dialog.ui.h:7
+msgid "To add a new account, you first have to install a backend for each protocol you want to use."
+msgstr "על מנת להוסיף חשבון חדש עליך להתקין מנוע לכל פרוטוקול שבו ברצונך להשתמש."
-#: ../src/empathy-accounts-dialog.glade.h:9
+#: ../src/empathy-accounts-dialog.ui.h:8
msgid "Type:"
msgstr "סוג:"
-#: ../src/empathy-call-window.c:144
-msgid "Closed"
-msgstr "סגור"
+#: ../src/empathy-accounts-dialog.ui.h:9
+msgid "_Add..."
+msgstr "_הוסף..."
-#: ../src/empathy-call-window.c:264
-msgid "End this call?"
-msgstr "לסיים את השיחה?"
+#: ../src/empathy-accounts-dialog.ui.h:10
+msgid "_Create a new account"
+msgstr "_צור חשבון חדש"
-#: ../src/empathy-call-window.c:266
-msgid "Closing this window will end the call in progress."
-msgstr ""
+#: ../src/empathy-accounts-dialog.ui.h:11
+msgid "_Reuse an existing account"
+msgstr "_שימוש חוזר בחשבון קיים"
-#: ../src/empathy-call-window.c:267
-msgid "_End Call"
-msgstr "_סיים שיחה"
+#: ../src/empathy-call-window.c:63
+msgid "Connecting..."
+msgstr "מתחבר..."
-#: ../src/empathy-call-window.c:321
-msgid "Incoming call"
-msgstr "שיחה נכנסת"
+#: ../src/empathy-call-window.c:405
+msgid "Contrast"
+msgstr "ניגוד"
-#: ../src/empathy-call-window.c:323
-#, c-format
-msgid "%s is calling you, do you want to answer?"
+#: ../src/empathy-call-window.c:408
+msgid "Brightness"
msgstr ""
-#: ../src/empathy-call-window.c:329
-msgid "_Reject"
-msgstr "_דחה"
-
-#: ../src/empathy-call-window.c:334
-msgid "_Answer"
-msgstr "_השב"
+#: ../src/empathy-call-window.c:411
+msgid "Gamma"
+msgstr ""
-#: ../src/empathy-call-window.c:389
-msgid "Empathy Call"
-msgstr "שיחת Empathy"
+#: ../src/empathy-call-window.c:516
+msgid "Volume"
+msgstr "עוצמה"
-#. To translators: Readying is the first state of the call, it is
-#. * preparing the connection and it does not yet ring.
-#: ../src/empathy-call-window.c:392
-msgid "Readying"
-msgstr ""
+#: ../src/empathy-call-window.c:697
+msgid "_Sidebar"
+msgstr "_סרגל צד"
-#: ../src/empathy-call-window.c:401
-#, c-format
-msgid "%s - Empathy Call"
+#: ../src/empathy-call-window.c:716
+msgid "Dialpad"
msgstr ""
-#: ../src/empathy-call-window.c:405
-msgid "Ringing"
-msgstr "מצלצל"
+#: ../src/empathy-call-window.c:722
+msgid "Audio input"
+msgstr "קלט שמע"
-#: ../src/empathy-call-window.c:428
-msgid "Connecting"
-msgstr "מתחבר"
+#: ../src/empathy-call-window.c:726
+msgid "Video input"
+msgstr "קלט וידאו"
-#: ../src/empathy-call-window.c:546
+#: ../src/empathy-call-window.c:789
#, c-format
-msgid "Incoming call from %s rejected because there is already a running call."
+msgid "Call with %s"
msgstr ""
-#: ../src/empathy-call-window.glade.h:1
-msgid "#"
-msgstr "#"
-
-#: ../src/empathy-call-window.glade.h:2
-msgid "*"
-msgstr "*"
-
-#: ../src/empathy-call-window.glade.h:3
-msgid "0"
-msgstr "0"
-
-#: ../src/empathy-call-window.glade.h:4
-msgid "1"
-msgstr "1"
-
-#: ../src/empathy-call-window.glade.h:5
-msgid "2"
-msgstr "2"
-
-#: ../src/empathy-call-window.glade.h:6
-msgid "3"
-msgstr "3"
-
-#: ../src/empathy-call-window.glade.h:7
-msgid "4"
-msgstr "4"
-
-#: ../src/empathy-call-window.glade.h:8
-msgid "5"
-msgstr "5"
+#: ../src/empathy-call-window.c:860
+msgid "Call"
+msgstr "שיחה"
-#: ../src/empathy-call-window.glade.h:9
-msgid "6"
-msgstr "6"
+#. Translators: number of minutes:seconds the caller has been connected
+#: ../src/empathy-call-window.c:1203
+#, c-format
+msgid "Connected — %d:%02dm"
+msgstr "מחובר — %d:%02dד'"
-#: ../src/empathy-call-window.glade.h:10
-msgid "7"
-msgstr "7"
+#: ../src/empathy-call-window.ui.h:1
+msgid "Hang up"
+msgstr "ניתוק"
-#: ../src/empathy-call-window.glade.h:11
-msgid "8"
-msgstr "8"
+#: ../src/empathy-call-window.ui.h:2
+msgid "Redial"
+msgstr "חיוג חוזר"
-#: ../src/empathy-call-window.glade.h:12
-msgid "9"
-msgstr "9"
+#: ../src/empathy-call-window.ui.h:3
+msgid "Send Audio"
+msgstr "שלח צליל"
-#. To translators: The keypad is numbers [0-9], asterisk (*) and hash (#). Presented like on any phone
-#: ../src/empathy-call-window.glade.h:14
-msgid "<b>Keypad</b>"
-msgstr "<b>לוח מקשים</b>"
+#: ../src/empathy-call-window.ui.h:4
+msgid "Send video"
+msgstr "שלח וידאו"
-#: ../src/empathy-call-window.glade.h:15
-msgid "<b>Volume</b>"
-msgstr "<b>עוצמה</b>"
+#: ../src/empathy-call-window.ui.h:5
+msgid "Video preview"
+msgstr "תצוגה מקדימה לווידאו"
-#: ../src/empathy-call-window.glade.h:16
-msgid "Hang Up"
-msgstr "נתק"
+#: ../src/empathy-call-window.ui.h:6
+msgid "_Call"
+msgstr "_שיחה"
-#: ../src/empathy-call-window.glade.h:17
-msgid "Send Video"
-msgstr "שלח וידאו"
+#: ../src/empathy-call-window.ui.h:7
+#: ../src/empathy-main-window.ui.h:21
+msgid "_View"
+msgstr "_תצוגה"
-#: ../src/empathy-chat-window.c:310
+#: ../src/empathy-chat-window.c:342
#, c-format
msgid "Conversations (%d)"
msgstr "שיחות (%d)"
-#: ../src/empathy-chat-window.c:415
+#: ../src/empathy-chat-window.c:470
msgid "Topic:"
msgstr "נושא:"
-#: ../src/empathy-chat-window.c:420
+#: ../src/empathy-chat-window.c:474
msgid "Typing a message."
msgstr "מקליד הודעה."
-#: ../src/empathy-chat-window.glade.h:1
-msgid "C_lear"
-msgstr "נ_קה"
-
-#: ../src/empathy-chat-window.glade.h:2
-msgid "Chat"
-msgstr "שיחה"
-
-#: ../src/empathy-chat-window.glade.h:3
-msgid "Insert _Smiley"
-msgstr "הכנס _סמיילי"
-
-#: ../src/empathy-chat-window.glade.h:4
-msgid "Invitation _message:"
-msgstr "הודעת הזמ_נה:"
-
-#: ../src/empathy-chat-window.glade.h:5
-msgid "Invite"
-msgstr "הזמן"
-
-#: ../src/empathy-chat-window.glade.h:6
-msgid "Move Tab _Left"
-msgstr "הזז לשונית _שמאלה"
-
-#: ../src/empathy-chat-window.glade.h:7
-msgid "Move Tab _Right"
-msgstr "הזז לשונית _ימינה"
-
-#: ../src/empathy-chat-window.glade.h:8
-msgid "Select who would you like to invite:"
-msgstr ""
-
-#: ../src/empathy-chat-window.glade.h:9
-msgid "You have been invited to join a chat conference."
-msgstr ""
-
-#: ../src/empathy-chat-window.glade.h:10
-msgid "_Contact"
-msgstr "_איש קשר"
-
-#: ../src/empathy-chat-window.glade.h:11 ../src/empathy-main-window.glade.h:10
-msgid "_Contents"
-msgstr "_תכנים"
-
-#: ../src/empathy-chat-window.glade.h:12
-msgid "_Conversation"
-msgstr "_שיחה"
-
-#: ../src/empathy-chat-window.glade.h:13
-msgid "_Detach Tab"
-msgstr "_נתק לשונית"
-
-#: ../src/empathy-chat-window.glade.h:15
-#, fuzzy
-#| msgid "_Invite to Chat Room"
-msgid "_Favorite Chatroom"
-msgstr "_הזמן לחדר שיחה"
-
-#: ../src/empathy-chat-window.glade.h:16 ../src/empathy-main-window.glade.h:12
-msgid "_Help"
-msgstr "_עזרה"
-
-#: ../src/empathy-chat-window.glade.h:17
-msgid "_Next Tab"
-msgstr "_לשונית הבאה"
-
-#: ../src/empathy-chat-window.glade.h:18
-msgid "_Previous Tab"
-msgstr "_לשונית קודמת"
-
-#: ../src/empathy-chat-window.glade.h:19
-msgid "_Tabs"
-msgstr "_לשוניות"
+#: ../src/empathy-chat-window.c:935
+#: ../src/empathy-event-manager.c:429
+#, c-format
+msgid "New message from %s"
+msgstr "הודעה חדשת מ־%s"
-#: ../src/empathy-chatrooms-window.c:262
+#: ../src/empathy-chatrooms-window.c:258
msgid "Name"
msgstr "שם"
-#: ../src/empathy-chatrooms-window.c:280
+#: ../src/empathy-chatrooms-window.c:276
msgid "Room"
msgstr "חדר"
-#: ../src/empathy-chatrooms-window.c:289
+#: ../src/empathy-chatrooms-window.c:285
msgid "Auto-Connect"
msgstr "חיבור אוטומטי"
-#: ../src/empathy-chatrooms-window.glade.h:2
-msgid "Edit Favorite Room"
-msgstr "ערוך חדר מועדף"
-
-#: ../src/empathy-chatrooms-window.glade.h:3
-msgid "Join room on start_up"
-msgstr ""
+#: ../src/empathy-chatrooms-window.ui.h:2
+msgid "Manage Favorite Rooms"
+msgstr "ניהול חדרי שיחה מועדפים"
-#: ../src/empathy-chatrooms-window.glade.h:4
-msgid "Join this chat room when Empathy starts and you are connected"
-msgstr ""
+#: ../src/empathy-event-manager.c:377
+msgid "Incoming call"
+msgstr "שיחה נכנסת"
-#: ../src/empathy-chatrooms-window.glade.h:5
-msgid "Manage Favorite Rooms"
-msgstr ""
+#: ../src/empathy-event-manager.c:380
+#, c-format
+msgid "%s is calling you, do you want to answer?"
+msgstr "‏%s מתקשר אליך, האם ברצונך לענות?"
-#: ../src/empathy-chatrooms-window.glade.h:6
-msgid "N_ame:"
-msgstr "ש_ם:"
+#: ../src/empathy-event-manager.c:387
+msgid "_Reject"
+msgstr "_דחה"
-#: ../src/empathy-chatrooms-window.glade.h:7
-msgid "S_erver:"
-msgstr "ש_רת:"
+#: ../src/empathy-event-manager.c:393
+msgid "_Answer"
+msgstr "_השב"
-#: ../src/empathy-chatrooms-window.glade.h:9
-#: ../src/empathy-new-chatroom-dialog.glade.h:9
-msgid "_Room:"
-msgstr "_חדר:"
+#: ../src/empathy-event-manager.c:507
+#, c-format
+msgid "Incoming call from %s"
+msgstr "שיחה נכנסת מ־%s"
-#: ../src/empathy-event-manager.c:193
+#: ../src/empathy-event-manager.c:547
#, c-format
-msgid ""
-"New message from %s:\n"
-"%s"
+msgid "%s is offering you an invitation"
+msgstr "‏%s שולח לך הזמנה"
+
+#: ../src/empathy-event-manager.c:553
+msgid "An external application will be started to handle it."
msgstr ""
-#: ../src/empathy-event-manager.c:261
-#, c-format
-msgid "Incoming call from %s"
+#: ../src/empathy-event-manager.c:558
+msgid "You don't have the needed external application to handle it."
msgstr ""
-#: ../src/empathy-event-manager.c:310
+#: ../src/empathy-event-manager.c:685
+msgid "Room invitation"
+msgstr "הזמנה לחדר"
+
+#: ../src/empathy-event-manager.c:688
#, c-format
-msgid ""
-"%s is offering you an invitation. An external application will be started to "
-"handle it."
-msgstr ""
+msgid "%s is inviting you to join %s"
+msgstr "‏%s מזמין אותך להצטרף אל %s"
+
+#: ../src/empathy-event-manager.c:696
+msgid "_Decline"
+msgstr "_סרב"
+
+#: ../src/empathy-event-manager.c:701
+#: ../src/empathy-new-chatroom-dialog.ui.h:7
+msgid "_Join"
+msgstr "_הצטרף"
-#: ../src/empathy-event-manager.c:317
+#: ../src/empathy-event-manager.c:740
#, c-format
-msgid ""
-"%s is offering you an invitation, but you don't have the needed external "
-"application to handle it."
-msgstr ""
+msgid "%s invited you to join %s"
+msgstr "‏%s הזמין אותך להצטרף אל %s"
-#: ../src/empathy-event-manager.c:452
+#: ../src/empathy-event-manager.c:766
#, c-format
msgid "Incoming file transfer from %s"
msgstr ""
-#: ../src/empathy-event-manager.c:542
+#: ../src/empathy-event-manager.c:946
#, c-format
msgid "Subscription requested by %s"
msgstr ""
-#: ../src/empathy-event-manager.c:546
+#: ../src/empathy-event-manager.c:950
#, c-format
msgid ""
"\n"
@@ -1731,618 +1755,799 @@ msgstr ""
"\n"
"הודעה: %s"
-#: ../src/empathy-ft-manager.c:111
+#. Translators: time left, when it is more than one hour
+#: ../src/empathy-ft-manager.c:101
#, c-format
msgid "%u:%02u.%02u"
msgstr ""
-#: ../src/empathy-ft-manager.c:113
+#. Translators: time left, when is is less than one hour
+#: ../src/empathy-ft-manager.c:104
#, c-format
msgid "%02u.%02u"
msgstr ""
-#: ../src/empathy-ft-manager.c:162
-msgid "No reason was specified"
-msgstr "לא צויינה סיבה"
-
-#: ../src/empathy-ft-manager.c:164
-msgid "The change in state was requested"
-msgstr ""
-
-#: ../src/empathy-ft-manager.c:166
-msgid "You canceled the file transfer"
-msgstr "ביטלת את ההעברה"
-
-#: ../src/empathy-ft-manager.c:168
-msgid "The other participant canceled the file transfer"
-msgstr ""
+#: ../src/empathy-ft-manager.c:180
+msgctxt "file transfer percent"
+msgid "Unknown"
+msgstr "לא ידוע"
-#: ../src/empathy-ft-manager.c:170
-msgid "Error while trying to transfer the file"
+#: ../src/empathy-ft-manager.c:275
+#, c-format
+msgid "%s of %s at %s/s"
msgstr ""
-#: ../src/empathy-ft-manager.c:172
-msgid "The other participant is unable to transfer the file"
+#: ../src/empathy-ft-manager.c:276
+#, c-format
+msgid "%s of %s"
msgstr ""
-#: ../src/empathy-ft-manager.c:174
-#| msgid "Unknown error"
-msgid "Unknown reason"
-msgstr "סיבה לא ידועה"
-
#. translators: first %s is filename, second %s is the contact name
-#: ../src/empathy-ft-manager.c:222
+#: ../src/empathy-ft-manager.c:307
#, c-format
msgid "Receiving \"%s\" from %s"
-msgstr ""
+msgstr "מקבל את הקובץ \"%s\" מ־%s"
#. translators: first %s is filename, second %s is the contact name
-#: ../src/empathy-ft-manager.c:225
+#: ../src/empathy-ft-manager.c:310
#, c-format
msgid "Sending \"%s\" to %s"
msgstr "שולח את \"%s\" ל-\"%s\""
-#: ../src/empathy-ft-manager.c:235
-#| msgid "unknown"
-msgctxt "file size"
-msgid "Unknown"
-msgstr "לא ידוע"
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:340
+#, c-format
+msgid "Error receiving \"%s\" from %s"
+msgstr "התרחשה שגיאה בקבלת הקובץ \"%s\" מ־%s"
-#. translators: first %s is the transferred size, second %s is
-#. * the total file size
-#: ../src/empathy-ft-manager.c:243
+#: ../src/empathy-ft-manager.c:343
+msgid "Error receiving a file"
+msgstr "שגיאה בקבלת קובץ"
+
+#: ../src/empathy-ft-manager.c:348
#, c-format
-msgid "%s of %s"
-msgstr ""
+msgid "Error sending \"%s\" to %s"
+msgstr "שגיאה בשליחת הקובץ \"%s\" אל %s"
-#: ../src/empathy-ft-manager.c:250
-msgid "Waiting the other participant's response"
-msgstr ""
+#: ../src/empathy-ft-manager.c:351
+msgid "Error sending a file"
+msgstr "שגיאה בשליחת קובץ"
-#: ../src/empathy-ft-manager.c:260
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:490
#, c-format
msgid "\"%s\" received from %s"
-msgstr ""
+msgstr "הקובץ \"%s\" התקבל מ־%s"
-#: ../src/empathy-ft-manager.c:266
-#, fuzzy, c-format
-#| msgid "Topic set to: %s"
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:495
+#, c-format
msgid "\"%s\" sent to %s"
-msgstr "הנושא נקבע ל: %s"
+msgstr "הקובץ \"%s\" נשלח אל %s"
-#: ../src/empathy-ft-manager.c:269
+#: ../src/empathy-ft-manager.c:498
msgid "File transfer completed"
-msgstr ""
+msgstr "העברת קובץ הושלמה"
-#: ../src/empathy-ft-manager.c:278
-#, c-format
-msgid "\"%s\" receiving from %s"
-msgstr ""
+#: ../src/empathy-ft-manager.c:617
+#: ../src/empathy-ft-manager.c:784
+msgid "Waiting for the other participant's response"
+msgstr "ממתין לתגובה של משתתפים נוספים"
-#: ../src/empathy-ft-manager.c:284
+#: ../src/empathy-ft-manager.c:643
+#: ../src/empathy-ft-manager.c:681
#, c-format
-msgid "\"%s\" sending to %s"
+msgid "Checking integrity of \"%s\""
msgstr ""
-#: ../src/empathy-ft-manager.c:287
+#: ../src/empathy-ft-manager.c:646
+#: ../src/empathy-ft-manager.c:684
#, c-format
-msgid "File transfer canceled: %s"
+msgid "Hashing \"%s\""
msgstr ""
-#: ../src/empathy-ft-manager.c:302
-#, fuzzy
-#| msgid "unknown"
-msgctxt "remaining time"
-msgid "Unknown"
-msgstr "לא ידוע"
-
-#: ../src/empathy-ft-manager.c:362
-#, fuzzy
-#| msgid "unknown"
-msgctxt "file transfer percent"
-msgid "Unknown"
-msgstr "לא ידוע"
-
-#: ../src/empathy-ft-manager.c:698
+#: ../src/empathy-ft-manager.c:1024
msgid "%"
msgstr ""
-#: ../src/empathy-ft-manager.c:710
-#| msgid "All Files"
+#: ../src/empathy-ft-manager.c:1036
msgid "File"
msgstr "קובץ"
-#: ../src/empathy-ft-manager.c:732
-#, fuzzy
-#| msgid "Ringing"
+#: ../src/empathy-ft-manager.c:1058
msgid "Remaining"
-msgstr "מצלצל"
+msgstr "נותר"
-#: ../src/empathy-ft-manager.c:883
-msgid "Cannot save file to this location"
-msgstr ""
-
-#: ../src/empathy-ft-manager.c:929
-#, fuzzy
-#| msgid "_Send File..."
-msgid "Save file as..."
-msgstr "_שלח קובץ..."
-
-#: ../src/empathy-ft-manager.c:999
-#| msgid "unknown"
-msgid "unknown size"
-msgstr "גודל לא ידוע"
-
-#: ../src/empathy-ft-manager.c:1005
-#, fuzzy, c-format
-#| msgid "I would like to add you to my contact list."
-msgid "%s would like to send you a file"
-msgstr "הייתי רוצה להוסיף אותך לרשימת אנשי הקשר שלי."
-
-#: ../src/empathy-ft-manager.c:1010
-#, c-format
-msgid "Do you want to accept the file \"%s\" (%s)?"
-msgstr ""
-
-#. Decline button
-#: ../src/empathy-ft-manager.c:1019
-msgid "_Decline"
-msgstr "_סרב"
-
-#. Accept button
-#: ../src/empathy-ft-manager.c:1028
-#, fuzzy
-#| msgid "_Accounts"
-msgid "_Accept"
-msgstr "_חשבונות"
-
-#: ../src/empathy-ft-manager.glade.h:1
+#: ../src/empathy-ft-manager.ui.h:1
msgid "File transfers"
-msgstr ""
+msgstr "העברות קבצים"
-#: ../src/empathy-ft-manager.glade.h:2
+#: ../src/empathy-ft-manager.ui.h:2
msgid "Remove completed, canceled and failed file transfers from the list"
msgstr ""
-#: ../src/empathy-ft-manager.glade.h:3
-msgid "gtk-clear"
-msgstr "gtk-clear"
-
-#: ../src/empathy-import-dialog.c:249
-#, fuzzy
-#| msgid "Port"
+#. Translators: this is the header of a treeview column
+#: ../src/empathy-import-dialog.c:259
msgid "Import"
-msgstr "שער"
+msgstr "ייבוא"
-#: ../src/empathy-import-dialog.c:258
+#: ../src/empathy-import-dialog.c:268
msgid "Protocol"
msgstr "פרוטוקול"
-#: ../src/empathy-import-dialog.c:284
-#, fuzzy
-#| msgid "Reso_urce:"
+#: ../src/empathy-import-dialog.c:294
msgid "Source"
-msgstr "_משאב:"
+msgstr "מקור"
-#: ../src/empathy-import-dialog.c:372
-msgid ""
-"No accounts to import could be found. Empathy currently only supports "
-"importing accounts from Pidgin."
+#: ../src/empathy-import-dialog.c:388
+msgid "No accounts to import could be found. Empathy currently only supports importing accounts from Pidgin."
msgstr ""
-#: ../src/empathy-import-dialog.glade.h:1
-#, fuzzy
-#| msgid "Empathy accounts"
+#: ../src/empathy-import-dialog.ui.h:1
msgid "Import Accounts"
-msgstr "חשבונות Empathy"
-
-#: ../src/empathy-import-dialog.glade.h:2
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
+msgstr "ייבוא חשבונות"
-#: ../src/empathy-import-dialog.glade.h:3
-msgid "gtk-ok"
-msgstr "gtk-ok"
+#: ../src/empathy-main-window.c:395
+msgid "_Edit account"
+msgstr "_ערוך חשבון"
-#: ../src/empathy-main-window.c:388
+#: ../src/empathy-main-window.c:498
msgid "No error specified"
-msgstr "לא צויינה שגיאה"
+msgstr "לא צוינה שגיאה"
-#: ../src/empathy-main-window.c:391
+#: ../src/empathy-main-window.c:501
msgid "Network error"
msgstr "שגיאת רשת"
-#: ../src/empathy-main-window.c:394
+#: ../src/empathy-main-window.c:504
msgid "Authentication failed"
msgstr "האימות נכשל"
-#: ../src/empathy-main-window.c:397
+#: ../src/empathy-main-window.c:507
msgid "Encryption error"
-msgstr "שגיטת הצפנה"
+msgstr "שגיאת הצפנה"
-#: ../src/empathy-main-window.c:400
+#: ../src/empathy-main-window.c:510
msgid "Name in use"
msgstr "השם בשימוש"
-#: ../src/empathy-main-window.c:403
+#: ../src/empathy-main-window.c:513
msgid "Certificate not provided"
msgstr "לא סופקה תעודה"
-#: ../src/empathy-main-window.c:406
+#: ../src/empathy-main-window.c:516
msgid "Certificate untrusted"
msgstr ""
-#: ../src/empathy-main-window.c:409
+#: ../src/empathy-main-window.c:519
msgid "Certificate expired"
msgstr "התעודה לא תקפה"
-#: ../src/empathy-main-window.c:412
+#: ../src/empathy-main-window.c:522
msgid "Certificate not activated"
msgstr ""
-#: ../src/empathy-main-window.c:415
+#: ../src/empathy-main-window.c:525
msgid "Certificate hostname mismatch"
msgstr ""
-#: ../src/empathy-main-window.c:418
+#: ../src/empathy-main-window.c:528
msgid "Certificate fingerprint mismatch"
msgstr ""
-#: ../src/empathy-main-window.c:421
+#: ../src/empathy-main-window.c:531
msgid "Certificate self-signed"
msgstr ""
-#: ../src/empathy-main-window.c:424
+#: ../src/empathy-main-window.c:534
msgid "Certificate error"
-msgstr "שגיטת תעודה"
+msgstr "שגיאת תעודה"
-#: ../src/empathy-main-window.c:427
+#: ../src/empathy-main-window.c:537
msgid "Unknown error"
msgstr "שגיאה לא ידועה"
-#: ../src/empathy-main-window.c:585
-msgid "Show and edit accounts"
-msgstr "הצג וערוך חשבונות"
-
-#: ../src/empathy-main-window.c:957
+#: ../src/empathy-main-window.c:888
msgid "Contact"
msgstr "איש קשר"
-#: ../src/empathy-main-window.c:1159
-msgid "_Edit account"
-msgstr "_ערוך חשבון"
+#: ../src/empathy-main-window.c:1220
+msgid "Show and edit accounts"
+msgstr "הצג וערוך חשבונות"
-#: ../src/empathy-main-window.glade.h:1
+#: ../src/empathy-main-window.ui.h:1
msgid "Contact List"
msgstr "רשימת אנשי קשר"
-#: ../src/empathy-main-window.glade.h:2
+#: ../src/empathy-main-window.ui.h:2
+msgid "Contacts on a _Map"
+msgstr ""
+
+#: ../src/empathy-main-window.ui.h:3
msgid "Context"
msgstr "הקשר"
-#: ../src/empathy-main-window.glade.h:3
+#: ../src/empathy-main-window.ui.h:4
msgid "Join _Favorites"
-msgstr ""
-
-#: ../src/empathy-main-window.glade.h:4
-msgid "Join _New..."
-msgstr ""
+msgstr "_צירוף למועדפים"
-#: ../src/empathy-main-window.glade.h:5
+#: ../src/empathy-main-window.ui.h:5
msgid "Manage Favorites"
msgstr "נהל מועדפים"
-#: ../src/empathy-main-window.glade.h:6
-msgid "Show _Offline Contacts"
-msgstr "הצג אנשי קשר _מנותקים"
-
-#: ../src/empathy-main-window.glade.h:7
+#: ../src/empathy-main-window.ui.h:6
msgid "_Accounts"
msgstr "_חשבונות"
-#: ../src/empathy-main-window.glade.h:8
+#: ../src/empathy-main-window.ui.h:7
msgid "_Add Contact..."
msgstr "_הוסף איש קשר..."
-#: ../src/empathy-main-window.glade.h:13 ../src/empathy-status-icon.glade.h:2
+#: ../src/empathy-main-window.ui.h:9
+msgid "_Contents"
+msgstr "_תכנים"
+
+#: ../src/empathy-main-window.ui.h:10
+msgid "_Debug"
+msgstr "_ניפוי שגיאות"
+
+#: ../src/empathy-main-window.ui.h:12
+msgid "_File Transfers"
+msgstr "העברות _קבצים"
+
+#: ../src/empathy-main-window.ui.h:13
+msgid "_Help"
+msgstr "_עזרה"
+
+#: ../src/empathy-main-window.ui.h:14
+msgid "_Join..."
+msgstr "_הצטרף..."
+
+#: ../src/empathy-main-window.ui.h:15
+#: ../src/empathy-status-icon.ui.h:2
msgid "_New Conversation..."
msgstr "_שיחה חדשה..."
-#: ../src/empathy-main-window.glade.h:14
+#: ../src/empathy-main-window.ui.h:16
+msgid "_Offline Contacts"
+msgstr "אנשי קשר _לא מחוברים"
+
+#: ../src/empathy-main-window.ui.h:17
msgid "_Personal Information"
msgstr "מידע _אישי"
-#: ../src/empathy-main-window.glade.h:16
+#: ../src/empathy-main-window.ui.h:19
+msgid "_Previous Conversations"
+msgstr "שיחות _קודמות"
+
+#: ../src/empathy-main-window.ui.h:20
msgid "_Room"
msgstr "_חדר"
-#: ../src/empathy-new-chatroom-dialog.c:291
-msgid "Chat Rooms"
-msgstr "חדרי שיחה"
+#: ../src/empathy-new-chatroom-dialog.c:332
+msgid "Chat Room"
+msgstr "חדר שיחה"
-#: ../src/empathy-new-chatroom-dialog.glade.h:2
-msgid "Browse:"
-msgstr "עיין:"
+#: ../src/empathy-new-chatroom-dialog.c:348
+msgid "Members"
+msgstr "חברים"
-#: ../src/empathy-new-chatroom-dialog.glade.h:3
+#: ../src/empathy-new-chatroom-dialog.c:492
+#, c-format
+msgctxt "Room/Join's roomlist tooltip. Parametersare a channel name, yes/no, yes/no and a number."
msgid ""
-"Enter the room name to join here or click on one or more rooms in the list."
+"<b>%s</b>\n"
+"Invite required: %s\n"
+"Password required: %s\n"
+"Members: %s"
msgstr ""
+"<b>%s</b>\n"
+"נדרשת הזמנה: %s\n"
+"נדרשת סיסמה: %s\n"
+"חברים: %s"
-#: ../src/empathy-new-chatroom-dialog.glade.h:4
-msgid ""
-"Enter the server which hosts the room, or leave it empty if the room is on "
-"the current account's server"
+#: ../src/empathy-new-chatroom-dialog.c:494
+#: ../src/empathy-new-chatroom-dialog.c:495
+msgid "Yes"
+msgstr "כן"
+
+#: ../src/empathy-new-chatroom-dialog.c:494
+#: ../src/empathy-new-chatroom-dialog.c:495
+msgid "No"
+msgstr "לא"
+
+#: ../src/empathy-new-chatroom-dialog.c:522
+msgid "Could not start room listing"
msgstr ""
-#: ../src/empathy-new-chatroom-dialog.glade.h:5
-msgid "Join"
+#: ../src/empathy-new-chatroom-dialog.c:532
+msgid "Could not stop room listing"
msgstr ""
-#: ../src/empathy-new-chatroom-dialog.glade.h:6
-msgid "Join New"
+#: ../src/empathy-new-chatroom-dialog.ui.h:2
+msgid "Couldn't load room list"
msgstr ""
-#: ../src/empathy-new-chatroom-dialog.glade.h:7
-msgid "Re_fresh"
-msgstr "רע_נן"
+#: ../src/empathy-new-chatroom-dialog.ui.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
+msgstr ""
-#: ../src/empathy-new-chatroom-dialog.glade.h:8
-msgid ""
-"This list represents all chat rooms hosted on the server you have entered."
+#: ../src/empathy-new-chatroom-dialog.ui.h:4
+msgid "Enter the server which hosts the room, or leave it empty if the room is on the current account's server"
msgstr ""
-#: ../src/empathy-preferences.c:153
+#: ../src/empathy-new-chatroom-dialog.ui.h:5
+msgid "Join Room"
+msgstr "הצטרף לחדר"
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:6
+msgid "Room List"
+msgstr "רשימת חדרים"
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:8
+msgid "_Room:"
+msgstr "_חדר:"
+
+#: ../src/empathy-preferences.c:158
msgid "Message received"
msgstr "התקבלה הודעה"
-#: ../src/empathy-preferences.c:154
-#, fuzzy
-#| msgid ""
-#| "\n"
-#| "Message: %s"
+#: ../src/empathy-preferences.c:159
msgid "Message sent"
-msgstr ""
-"\n"
-"הודעה: %s"
+msgstr "הודעה שנשלחה"
-#: ../src/empathy-preferences.c:155
-#, fuzzy
-#| msgid "New Conversation"
+#: ../src/empathy-preferences.c:160
msgid "New conversation"
msgstr "שיחה חדשה"
-#: ../src/empathy-preferences.c:156
-#, fuzzy
+#: ../src/empathy-preferences.c:161
msgid "Contact goes online"
-msgstr "Contact list sort criterium"
+msgstr "איש קשר מתחבר"
-#: ../src/empathy-preferences.c:157
-#, fuzzy
+#: ../src/empathy-preferences.c:162
msgid "Contact goes offline"
-msgstr "Contact list sort criterium"
+msgstr "איש קשר מתנתק"
-#: ../src/empathy-preferences.c:158
-#, fuzzy
-#| msgid "Disconnected"
+#: ../src/empathy-preferences.c:163
msgid "Account connected"
-msgstr "מנותק"
+msgstr "חשבון מחובר"
-#: ../src/empathy-preferences.c:159
-#, fuzzy
-#| msgid "Disconnected"
+#: ../src/empathy-preferences.c:164
msgid "Account disconnected"
-msgstr "מנותק"
+msgstr "חשבון התנתק"
-#: ../src/empathy-preferences.c:376
+#: ../src/empathy-preferences.c:427
msgid "Language"
msgstr "שפה"
-#: ../src/empathy-preferences.glade.h:1
+#: ../src/empathy-preferences.ui.h:1
msgid "<b>Appearance</b>"
msgstr "<b>מראה</b>"
-#: ../src/empathy-preferences.glade.h:2
-msgid "<b>Behaviour</b>"
+#: ../src/empathy-preferences.ui.h:2
+msgid "<b>Behavior</b>"
msgstr "<b>התנהגות</b>"
-#: ../src/empathy-preferences.glade.h:3
+#: ../src/empathy-preferences.ui.h:3
msgid "<b>Contact List</b>"
msgstr "<b>רשימת אנשי קשר</b>"
-#: ../src/empathy-preferences.glade.h:4
+#: ../src/empathy-preferences.ui.h:4
msgid "<b>Enable spell checking for languages:</b>"
msgstr "<b>הפעל בדיקת איות עבור השפות:</b>"
-#: ../src/empathy-preferences.glade.h:5
+#: ../src/empathy-preferences.ui.h:5
+msgid "<b>Geoclue Settings</b>"
+msgstr "<b>הגדרות Geoclue</b>"
+
+#: ../src/empathy-preferences.ui.h:6
msgid "<b>Play sound for events</b>"
-msgstr ""
+msgstr "<b>השמע צליל עבור אירועים</b>"
-#: ../src/empathy-preferences.glade.h:6
-msgid ""
-"<small>The list of languages reflects only the languages for which you have "
-"a dictionary installed.</small>"
+#: ../src/empathy-preferences.ui.h:7
+msgid "<b>Privacy</b>"
+msgstr "<b>פרטיות</b>"
+
+#: ../src/empathy-preferences.ui.h:8
+msgid "<small>Reduced location accuracy means that nothing more precise than your city, state and country will be published. GPS coordinates will have a random value added (&#xB1;0.25&#xB0;).</small>"
+msgstr "<small>הפחתת רמת הדיוק של המיקום אומרת שהמידע המדויק ביותר שיפורסם הוא העיר, המדינה והארץ שלך. לנקודות ציון מ־GPS יתווסף ערך אקראי ‏(&#xB1;0.25&#xB0;). </small>"
+
+#: ../src/empathy-preferences.ui.h:9
+msgid "<small>The list of languages reflects only the languages for which you have a dictionary installed.</small>"
msgstr "<small>ברשימת השפות מוצגות שפות שעבורן מותקנים אצלך מילונים.</small>"
-#: ../src/empathy-preferences.glade.h:7
-msgid "Automatically _connect on startup "
+#: ../src/empathy-preferences.ui.h:10
+msgid "<span foreground=\"red\">Not a valid adium theme</span>"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:11
+msgid "Adium theme to use:"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:12
+msgid "Allow _GPS usage"
+msgstr "לאפשר שימוש ב־_GPS"
+
+#: ../src/empathy-preferences.ui.h:13
+msgid "Allow _cellphone usage"
msgstr ""
-#: ../src/empathy-preferences.glade.h:8
+#: ../src/empathy-preferences.ui.h:14
+msgid "Allow _network usage"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:15
+msgid "Automatically _connect on startup "
+msgstr "_התחבר אוטומטי על ההפעלה"
+
+#: ../src/empathy-preferences.ui.h:16
msgid "Avatars are user chosen images shown in the contact list"
msgstr ""
-#: ../src/empathy-preferences.glade.h:9
+#: ../src/empathy-preferences.ui.h:17
msgid "Chat Th_eme:"
msgstr "ער_כת נושא לשיחה:"
-#: ../src/empathy-preferences.glade.h:10
-#, fuzzy
-#| msgid "Enable sound when away"
+#: ../src/empathy-preferences.ui.h:18
+msgid "Disable notifications when _away or busy"
+msgstr "בטל התרעות בזמן מצב _מרוחק או עסוק"
+
+#: ../src/empathy-preferences.ui.h:19
msgid "Disable sounds when _away or busy"
-msgstr "Enable sound when away"
+msgstr "בטל צלילים בזמן מצב _מרוחק או עסוק"
+
+#: ../src/empathy-preferences.ui.h:20
+msgid "Enable notifications when the _chat is not focused"
+msgstr ""
-#: ../src/empathy-preferences.glade.h:11
+#: ../src/empathy-preferences.ui.h:21
msgid "General"
msgstr "כללי"
-#: ../src/empathy-preferences.glade.h:12
+#: ../src/empathy-preferences.ui.h:22
+msgid "Location"
+msgstr "מיקום"
+
+#: ../src/empathy-preferences.ui.h:23
+msgid "Notifications"
+msgstr "התרעות"
+
+#: ../src/empathy-preferences.ui.h:24
msgid "Preferences"
msgstr "העדפות"
-#: ../src/empathy-preferences.glade.h:13
+#: ../src/empathy-preferences.ui.h:25
msgid "Show _avatars"
msgstr "הצג _תמנות אישיות"
-#: ../src/empathy-preferences.glade.h:14
+#: ../src/empathy-preferences.ui.h:26
msgid "Show _smileys as images"
-msgstr ""
+msgstr "הצד _סמיילים כתמונות"
-#: ../src/empathy-preferences.glade.h:15
+#: ../src/empathy-preferences.ui.h:27
msgid "Show co_mpact contact list"
-msgstr ""
+msgstr "הצג רשימת אנשי קשר מ_צומצמת"
-#: ../src/empathy-preferences.glade.h:16
+#: ../src/empathy-preferences.ui.h:28
msgid "Sort by _name"
msgstr "מיין לפי _שם"
-#: ../src/empathy-preferences.glade.h:17
+#: ../src/empathy-preferences.ui.h:29
msgid "Sort by s_tate"
msgstr "מיין לפי מצ_ב"
-#: ../src/empathy-preferences.glade.h:18
+#: ../src/empathy-preferences.ui.h:30
msgid "Sounds"
-msgstr ""
+msgstr "צלילים"
-#: ../src/empathy-preferences.glade.h:19
+#: ../src/empathy-preferences.ui.h:31
msgid "Spell Checking"
msgstr "בדיקת איות"
-#: ../src/empathy-preferences.glade.h:20
+#: ../src/empathy-preferences.ui.h:32
+msgid "Sélectionner un dossier"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:33
msgid "Themes"
msgstr "ערכות נושא"
-#: ../src/empathy-preferences.glade.h:21
-#, fuzzy
-#| msgid "Enable sound when away"
+#: ../src/empathy-preferences.ui.h:34
+msgid "_Enable bubble notifications"
+msgstr "_הפעל התרעות בתוך בועה"
+
+#: ../src/empathy-preferences.ui.h:35
msgid "_Enable sound notifications"
-msgstr "Enable sound when away"
+msgstr "_הפעל התרעות קול"
-#: ../src/empathy-preferences.glade.h:22
+#: ../src/empathy-preferences.ui.h:36
msgid "_Open new chats in separate windows"
msgstr "_פתח שיחות חדשות בחלונות נפרדים"
-#: ../src/empathy-status-icon.glade.h:1
+#: ../src/empathy-preferences.ui.h:37
+msgid "_Publish location to my contacts"
+msgstr "_פרסם את המיקום שלי לאנשי הקשר שלי"
+
+#: ../src/empathy-preferences.ui.h:38
+msgid "_Reduce location accuracy"
+msgstr "_הפחת את דיוק המיקום"
+
+#: ../src/empathy-status-icon.ui.h:1
msgid "Status"
msgstr "מצב"
-#: ../src/empathy-status-icon.glade.h:3
+#: ../src/empathy-status-icon.ui.h:3
msgid "_Quit"
msgstr "יצי_אה"
-#: ../src/empathy-status-icon.glade.h:4
+#: ../src/empathy-status-icon.ui.h:4
msgid "_Show Contact List"
msgstr "_הצג רשימת אנשי קשר"
-#: ../src/empathy-tube-dispatch.c:356
+#: ../src/empathy-tube-dispatch.c:375
#, c-format
msgid "Unable to start application for service %s: %s"
msgstr ""
-#: ../src/empathy-tube-dispatch.c:427
+#: ../src/empathy-tube-dispatch.c:446
#, c-format
-msgid ""
-"An invitation was offered for service %s, but you don't have the needed "
-"application to handle it"
+msgid "An invitation was offered for service %s, but you don't have the needed application to handle it"
msgstr ""
+#: ../src/empathy-call-window-fullscreen.ui.h:1
+msgid "gtk-leave-fullscreen"
+msgstr "gtk-leave-fullscreen"
+
+#: ../src/empathy-map-view.ui.h:1
+#, fuzzy
+msgid "Contact Map View"
+msgstr "רשימת אנשי קשר"
+
+#: ../src/empathy-debug-dialog.c:111
+#: ../src/empathy-debug-dialog.c:1075
+msgid "Error"
+msgstr "שגיאה"
+
+#: ../src/empathy-debug-dialog.c:114
+#: ../src/empathy-debug-dialog.c:1069
+msgid "Critical"
+msgstr "קריטי"
+
+#: ../src/empathy-debug-dialog.c:117
+#: ../src/empathy-debug-dialog.c:1063
+msgid "Warning"
+msgstr "אזהרה"
+
+#: ../src/empathy-debug-dialog.c:120
+#: ../src/empathy-debug-dialog.c:1057
+#: ../src/empathy-debug-dialog.c:1105
+msgid "Message"
+msgstr "הודעה"
+
+#: ../src/empathy-debug-dialog.c:123
+#: ../src/empathy-debug-dialog.c:1051
+msgid "Info"
+msgstr "מידע"
+
+#: ../src/empathy-debug-dialog.c:126
+#: ../src/empathy-debug-dialog.c:1045
+msgid "Debug"
+msgstr "ניפוי שגיאות"
+
+#: ../src/empathy-debug-dialog.c:837
+msgid "Save"
+msgstr "שמור"
+
+#: ../src/empathy-debug-dialog.c:940
+msgid "Debug Window"
+msgstr "חלון ניפוי שגיאות"
+
+#: ../src/empathy-debug-dialog.c:1013
+msgid "Pause"
+msgstr "עצור"
+
+#: ../src/empathy-debug-dialog.c:1025
+msgid "Level "
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:1094
+msgid "Time"
+msgstr "זמן"
+
+#: ../src/empathy-debug-dialog.c:1096
+msgid "Domain"
+msgstr "תחום"
+
+#: ../src/empathy-debug-dialog.c:1098
+msgid "Category"
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:1100
+msgid "Level"
+msgstr ""
+
+#: ../src/empathy-debug-dialog.c:1132
+msgid "The selected connection manager does not support the remote debugging extension."
+msgstr ""
+
+#~ msgid "Enable popup when contact is available"
+#~ msgstr "Enable popup when contact is available"
+#~ msgid "Whether or not to show a popup when a contact becomes available."
+#~ msgstr "Whether or not to show a popup when a contact becomes available."
+#~ msgid "Edit the selected IRC network"
+#~ msgstr "ערוך רשת IRC מסומנת"
+#~ msgid "Remove the selected IRC network"
+#~ msgstr "הסר רשת IRC מסומנת"
+#~ msgid "_Check Word Spelling..."
+#~ msgstr "ב_דוק איות..."
+#~ msgid "Contact Information"
+#~ msgstr "מידע איש קשר"
+#~ msgid "I would like to add you to my contact list."
+#~ msgstr "הייתי רוצה להוסיף אותך לרשימת אנשי הקשר שלי."
+#~ msgid "Sorry, I don't want you in my contact list anymore."
+#~ msgstr "מצטער, אני יותר לא רוצה אותך ברשימת אנשי הקשר שלי."
+#~ msgid "Contact information"
+#~ msgstr "נתוני איש קשר"
+#~ msgid "Word"
+#~ msgstr "מילה"
+#~ msgid "Suggestions for the word"
+#~ msgstr "הצעות עבור המילה"
+#~ msgid "Spell Checker"
+#~ msgstr "בודק איות"
+#~ msgid "Suggestions for the word:"
+#~ msgstr "הצעות עבור המילה:"
+#~ msgid "Closed"
+#~ msgstr "סגור"
+#~ msgid "End this call?"
+#~ msgstr "לסיים את השיחה?"
+#~ msgid "Empathy Call"
+#~ msgstr "שיחת Empathy"
+#~ msgid "Ringing"
+#~ msgstr "מצלצל"
+#~ msgid "#"
+#~ msgstr "#"
+#~ msgid "*"
+#~ msgstr "*"
+#~ msgid "0"
+#~ msgstr "0"
+#~ msgid "1"
+#~ msgstr "1"
+#~ msgid "2"
+#~ msgstr "2"
+#~ msgid "3"
+#~ msgstr "3"
+#~ msgid "4"
+#~ msgstr "4"
+#~ msgid "5"
+#~ msgstr "5"
+#~ msgid "6"
+#~ msgstr "6"
+#~ msgid "7"
+#~ msgstr "7"
+#~ msgid "8"
+#~ msgstr "8"
+#~ msgid "9"
+#~ msgstr "9"
+#~ msgid "<b>Keypad</b>"
+#~ msgstr "<b>לוח מקשים</b>"
+#~ msgid "C_lear"
+#~ msgstr "נ_קה"
+#~ msgid "Chat"
+#~ msgstr "שיחה"
+#~ msgid "Insert _Smiley"
+#~ msgstr "הכנס _סמיילי"
+#~ msgid "Invitation _message:"
+#~ msgstr "הודעת הזמ_נה:"
+#~ msgid "Invite"
+#~ msgstr "הזמן"
+#~ msgid "Move Tab _Left"
+#~ msgstr "הזז לשונית _שמאלה"
+#~ msgid "Move Tab _Right"
+#~ msgstr "הזז לשונית _ימינה"
+#~ msgid "_Contact"
+#~ msgstr "_איש קשר"
+#~ msgid "_Conversation"
+#~ msgstr "_שיחה"
+#~ msgid "_Detach Tab"
+#~ msgstr "_נתק לשונית"
+
+#~| msgid "_Invite to Chat Room"
+#~ msgid "_Favorite Chatroom"
+#~ msgstr "_הזמן לחדר שיחה"
+#~ msgid "_Next Tab"
+#~ msgstr "_לשונית הבאה"
+#~ msgid "_Previous Tab"
+#~ msgstr "_לשונית קודמת"
+#~ msgid "_Tabs"
+#~ msgstr "_לשוניות"
+#~ msgid "Edit Favorite Room"
+#~ msgstr "ערוך חדר מועדף"
+#~ msgid "N_ame:"
+#~ msgstr "ש_ם:"
+#~ msgid "S_erver:"
+#~ msgstr "ש_רת:"
+#~| msgid "unknown"
+#~ msgctxt "file size"
+#~ msgid "Unknown"
+#~ msgstr "לא ידוע"
+#~| msgid "unknown"
+#~ msgctxt "remaining time"
+#~ msgid "Unknown"
+#~ msgstr "לא ידוע"
+#~| msgid "_Send File..."
+#~ msgid "Save file as..."
+#~ msgstr "_שלח קובץ..."
+#~| msgid "unknown"
+#~ msgid "unknown size"
+#~ msgstr "גודל לא ידוע"
+#~| msgid "I would like to add you to my contact list."
+#~ msgid "%s would like to send you a file"
+#~ msgstr "הייתי רוצה להוסיף אותך לרשימת אנשי הקשר שלי."
+#~| msgid "_Accounts"
+#~ msgid "_Accept"
+#~ msgstr "_חשבונות"
+#~ msgid "gtk-cancel"
+#~ msgstr "gtk-cancel"
+#~ msgid "Browse:"
+#~ msgstr "עיין:"
+#~ msgid "Re_fresh"
+#~ msgstr "רע_נן"
#~ msgid "Enable sound when busy"
#~ msgstr "Enable sound when busy"
-
#~ msgid "Configure Telepathy account settings"
#~ msgstr "הגדרות חשבון Telepathy"
-
#~ msgid "<b>No Accounts Configured</b>"
#~ msgstr "<b>לא הוגדרו חשבונות</b>"
-
#~ msgid "Invitation Error"
#~ msgstr "שגיאת הזמנה"
-
#~ msgid "<b>Audio</b>"
#~ msgstr "<b>צליל</b>"
-
#~ msgid "<b>Visual</b>"
#~ msgstr "<b>חזותי</b>"
-
-#~ msgid "Notifications"
-#~ msgstr "התרעות"
-
#~ msgid "J_apan server:"
#~ msgstr "שרת _יפן:"
-
#~ msgid "Invalid account"
#~ msgstr "חשבון לא תקין"
-
#, fuzzy
#~ msgid "Presence failure"
#~ msgstr "Presence"
-
#~ msgid "Unknown error code"
#~ msgstr "מספר שגיאה לא ידוע"
-
#~ msgid "jabber account settings"
#~ msgstr "הגדרות חשבון jabber"
-
#~ msgid "msn account settings"
#~ msgstr "הגדרות חשבון msn"
-
#~ msgid "salut account settings"
#~ msgstr "הגדרות חשבון salut"
-
#~ msgid "Input"
#~ msgstr "קלט"
-
#~ msgid "Mute"
#~ msgstr "השתק"
-
#~ msgid "Output"
#~ msgstr "פלט"
-
#~ msgid "Cu_t"
#~ msgstr "ג_זור"
-
#~ msgid "In_vite..."
#~ msgstr "הז_מן..."
-
#~ msgid "_Add To Favorites"
#~ msgstr "_הוסף למועדפים"
-
#~ msgid "_Copy"
#~ msgstr "_העתק"
-
-#~ msgid "_Paste"
-#~ msgstr "_הדבק"
-
#~ msgid "_Show Contacts"
#~ msgstr "_הצג אנשי קשר"
-
#~ msgid "Re_name"
#~ msgstr "שנה _שם"
-
#~ msgid "Rename"
#~ msgstr "שנה שם"
-
#~ msgid "Start a voice or video conversation with this contact"
#~ msgstr "התחל שיחת קול או וידאו עם איש קשר הזה"
-
-#~ msgid "<b>Options</b>"
-#~ msgstr "<b>אפשרויות</b>"
-
#~ msgid "_Use for chat rooms"
#~ msgstr "_שימוש בחדרי שיחה"
-
#~ msgid "%s went offline"
#~ msgstr "‏%s התנתק"
-
#~ msgid "%s has come online"
#~ msgstr "‏%s התחבר"
+
diff --git a/po/nb.po b/po/nb.po
index fdd8056a4..bf3f4247e 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: empathy 0.24.x\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-06 15:15+0100\n"
-"PO-Revision-Date: 2009-02-06 15:17+0100\n"
+"POT-Creation-Date: 2009-06-10 10:03+0200\n"
+"PO-Revision-Date: 2009-06-10 10:13+0200\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n"
"MIME-Version: 1.0\n"
@@ -59,252 +59,305 @@ msgid "Default directory to select an avatar image from"
msgstr "Forvalgt mappe for personbilde"
#: ../data/empathy.schemas.in.h:8
-#, fuzzy
msgid "Disable popup notifications when away"
-msgstr "Slå av lyder når du er borte"
+msgstr "Slå av varsling når du er borte"
#: ../data/empathy.schemas.in.h:9
msgid "Disable sounds when away"
msgstr "Slå av lyder når du er borte"
#: ../data/empathy.schemas.in.h:10
+msgid "Empathy can publish the user's location"
+msgstr "Empathy kan publisere brukers lokasjon"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Empathy can use the GPS to guess the location"
+msgstr "Empathy kan bruke GPS til å gjette lokasjonen"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Empathy can use the cellular network to guess the location"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Empathy can use the network to guess the location"
+msgstr ""
+
+#: ../data/empathy.schemas.in.h:14
msgid "Empathy default download folder"
msgstr "Forvalgt nedlastingsmappe for Empathy"
-#: ../data/empathy.schemas.in.h:11
+#: ../data/empathy.schemas.in.h:15
msgid "Empathy has asked about importing accounts"
msgstr "Empathy har spurt om import av kontoer"
-#: ../data/empathy.schemas.in.h:12
+#: ../data/empathy.schemas.in.h:16
msgid "Empathy should auto-connect on startup"
msgstr "Empathy skal koble til automatisk ved oppstart"
-#: ../data/empathy.schemas.in.h:13
+#: ../data/empathy.schemas.in.h:17
+#, fuzzy
+msgid "Empathy should reduce the location's accuracy"
+msgstr "Empathy skal koble til automatisk ved oppstart"
+
+#: ../data/empathy.schemas.in.h:18
msgid "Empathy should use the avatar of the contact as the chat window icon"
msgstr ""
"Empathy skal bruke personbildet for kontakten som ikon for pratevinduet"
-#: ../data/empathy.schemas.in.h:14
+#: ../data/empathy.schemas.in.h:19
#, fuzzy
msgid "Enable popup notifications for new messages"
msgstr "_Aktiver varsling med lyder"
-#: ../data/empathy.schemas.in.h:15
+#: ../data/empathy.schemas.in.h:20
msgid "Enable spell checker"
msgstr "Bruk stavekontroll"
-#: ../data/empathy.schemas.in.h:16
+#: ../data/empathy.schemas.in.h:21
msgid "Hide main window"
msgstr "Skjul hovedvinduet"
-#: ../data/empathy.schemas.in.h:17
+#: ../data/empathy.schemas.in.h:22
msgid "Hide the main window."
msgstr "Skjul hovedvinduet."
-#: ../data/empathy.schemas.in.h:18
+#: ../data/empathy.schemas.in.h:23
msgid "NetworkManager should be used"
msgstr "NetworkManager skal brukes"
-#: ../data/empathy.schemas.in.h:19
+#: ../data/empathy.schemas.in.h:24
msgid "Nick completed character"
msgstr "Tegn for fullføring av kallenavn"
-#: ../data/empathy.schemas.in.h:20
+#: ../data/empathy.schemas.in.h:25
msgid "Open new chats in separate windows"
msgstr "Åpne nye samtaler i egne vinduer"
-#: ../data/empathy.schemas.in.h:21
+#: ../data/empathy.schemas.in.h:26
msgid "Play a sound for incoming messages"
msgstr "Spill av lyd når meldinger kommer inn"
-#: ../data/empathy.schemas.in.h:22
+#: ../data/empathy.schemas.in.h:27
msgid "Play a sound for new conversations"
msgstr "Spill av lyd ved nye samtaler"
-#: ../data/empathy.schemas.in.h:23
+#: ../data/empathy.schemas.in.h:28
msgid "Play a sound for outgoing messages"
msgstr "Spill av lyd for utgående meldinger"
-#: ../data/empathy.schemas.in.h:24
+#: ../data/empathy.schemas.in.h:29
msgid "Play a sound when a contact logs in"
msgstr "Spill av lyd når kontakter logger inn"
-#: ../data/empathy.schemas.in.h:25
+#: ../data/empathy.schemas.in.h:30
msgid "Play a sound when a contact logs out"
msgstr "Spill av lyd når kontakter logger ut"
-#: ../data/empathy.schemas.in.h:26
+#: ../data/empathy.schemas.in.h:31
msgid "Play a sound when we log in"
msgstr "Spill av lyd når du logger inn"
-#: ../data/empathy.schemas.in.h:27
+#: ../data/empathy.schemas.in.h:32
msgid "Play a sound when we log out"
msgstr "Spill av lyd når du logger ut"
-#: ../data/empathy.schemas.in.h:28
+#: ../data/empathy.schemas.in.h:33
msgid "Popup notifications if the chat isn't focused"
msgstr ""
-#: ../data/empathy.schemas.in.h:29
+#: ../data/empathy.schemas.in.h:34
msgid "Salut account is created"
msgstr "Salut-konto er opprettet"
-#: ../data/empathy.schemas.in.h:30
+#: ../data/empathy.schemas.in.h:35
msgid "Show avatars"
msgstr "Vis personbilder"
-#: ../data/empathy.schemas.in.h:31
+#: ../data/empathy.schemas.in.h:36
msgid "Show hint about closing the main window"
msgstr "Vis hint om lukking av hovedvinduet"
-#: ../data/empathy.schemas.in.h:32
+#: ../data/empathy.schemas.in.h:37
msgid "Show offline contacts"
msgstr "Vis frakoblede kontakter"
-#: ../data/empathy.schemas.in.h:33
+#: ../data/empathy.schemas.in.h:38
msgid "Spell checking languages"
msgstr "Stavekontrollspråk"
-#: ../data/empathy.schemas.in.h:34
+#: ../data/empathy.schemas.in.h:39
msgid "The default folder to save file transfers in."
msgstr "Forvalgt mappe for lagring av filoverføringer."
-#: ../data/empathy.schemas.in.h:35
+#: ../data/empathy.schemas.in.h:40
msgid "The last directory that an avatar image was chosen from."
msgstr "Den forrige mappen et personbilde ble valgt fra."
-#: ../data/empathy.schemas.in.h:36
+#: ../data/empathy.schemas.in.h:41
msgid "The theme that is used to display the conversation in chat windows."
msgstr "Temaet som brukes til å vise samtaler."
-#: ../data/empathy.schemas.in.h:37
+#: ../data/empathy.schemas.in.h:42
msgid "Use graphical smileys"
msgstr "Vis smilefjes grafisk"
-#: ../data/empathy.schemas.in.h:38
+#: ../data/empathy.schemas.in.h:43
msgid "Use notification sounds"
msgstr "Bruk varslingslyder"
-#: ../data/empathy.schemas.in.h:39
+#: ../data/empathy.schemas.in.h:44
msgid "Use theme for chat rooms"
msgstr "Bruk tema for samtalerom"
-#: ../data/empathy.schemas.in.h:40
+#: ../data/empathy.schemas.in.h:45
+#, fuzzy
+msgid "Whether or not Empathy can publish the user's location to his contacts."
+msgstr "Om kontakter som er frakoblet skal vises i kontaktlisten."
+
+#: ../data/empathy.schemas.in.h:46
+#, fuzzy
+msgid "Whether or not Empathy can use the GPS to guess the location."
+msgstr ""
+"Om Empathy skal bruke personbilde for kontakten som ikon for pratevinduet."
+
+#: ../data/empathy.schemas.in.h:47
+#, fuzzy
+msgid ""
+"Whether or not Empathy can use the cellular network to guess the location."
+msgstr ""
+"Om Empathy skal bruke personbilde for kontakten som ikon for pratevinduet."
+
+#: ../data/empathy.schemas.in.h:48
+#, fuzzy
+msgid "Whether or not Empathy can use the network to guess the location."
+msgstr ""
+"Om Empathy skal bruke personbilde for kontakten som ikon for pratevinduet."
+
+#: ../data/empathy.schemas.in.h:49
msgid ""
"Whether or not Empathy has asked about importing accounts from other "
"programs."
msgstr "Om Empathy har spurt om import av kontoer fra andre programmer."
-#: ../data/empathy.schemas.in.h:41
+#: ../data/empathy.schemas.in.h:50
msgid ""
"Whether or not Empathy should automatically log in to your accounts on "
"startup."
msgstr "Om Empathy skal logge inn til dine kontoer automatisk ved oppstart."
-#: ../data/empathy.schemas.in.h:42
+#: ../data/empathy.schemas.in.h:51
+#, fuzzy
+msgid ""
+"Whether or not Empathy should reduce the location's accuracy for privacy "
+"reasons."
+msgstr ""
+"Om Empathy skal bruke personbilde for kontakten som ikon for pratevinduet."
+
+#: ../data/empathy.schemas.in.h:52
msgid ""
"Whether or not Empathy should use the avatar of the contact as the chat "
"window icon."
msgstr ""
"Om Empathy skal bruke personbilde for kontakten som ikon for pratevinduet."
-#: ../data/empathy.schemas.in.h:43
+#: ../data/empathy.schemas.in.h:53
msgid ""
"Whether or not the Salut account has been created on the first Empathy run."
msgstr "Om Salut-konto ble opprettet første gang Empathy ble kjørt."
-#: ../data/empathy.schemas.in.h:44
+#: ../data/empathy.schemas.in.h:54
msgid ""
"Whether or not the network manager should be used to automatically "
"disconnect/reconnect."
msgstr "Om NetworkManager skal brukes til å koble til/fra automatisk."
-#: ../data/empathy.schemas.in.h:45
+#: ../data/empathy.schemas.in.h:55
msgid ""
"Whether or not to check words typed against the languages you want to check "
"with."
msgstr "Om stavekontroll skal sjekke ord mot de språkene du ønsker å bruke."
-#: ../data/empathy.schemas.in.h:46
+#: ../data/empathy.schemas.in.h:56
msgid ""
"Whether or not to convert smileys into graphical images in conversations."
msgstr "Om smilefjes skal konverteres til grafikk i samtaler."
-#: ../data/empathy.schemas.in.h:47
-msgid "Whether or not to play a sound notifications when away or busy."
-msgstr "Om lyder skal spilles av når du er borte eller opptatt."
-
-#: ../data/empathy.schemas.in.h:48
+#: ../data/empathy.schemas.in.h:57
#, fuzzy
msgid ""
"Whether or not to play a sound to notify for contacts logging in the network."
msgstr "Om bilder av kontakter skal vises i kontaktlisten og samtalevinduer."
-#: ../data/empathy.schemas.in.h:49
+#: ../data/empathy.schemas.in.h:58
#, fuzzy
msgid ""
"Whether or not to play a sound to notify for contacts logging off the "
"network."
msgstr "Om bilder av kontakter skal vises i kontaktlisten og samtalevinduer."
-#: ../data/empathy.schemas.in.h:50
+#: ../data/empathy.schemas.in.h:59
#, fuzzy
msgid "Whether or not to play a sound to notify for events."
msgstr "Om lyder skal spilles av når opptatt."
-#: ../data/empathy.schemas.in.h:51
+#: ../data/empathy.schemas.in.h:60
#, fuzzy
msgid "Whether or not to play a sound to notify for incoming messages."
msgstr "Om lyder skal spilles av når meldinger kommer inn."
-#: ../data/empathy.schemas.in.h:52
+#: ../data/empathy.schemas.in.h:61
#, fuzzy
msgid "Whether or not to play a sound to notify for new conversations."
msgstr "Om lyder skal spilles av når meldinger kommer inn."
-#: ../data/empathy.schemas.in.h:53
+#: ../data/empathy.schemas.in.h:62
#, fuzzy
msgid "Whether or not to play a sound to notify for outgoing messages."
msgstr "Om lyder skal spilles av når meldinger kommer inn."
-#: ../data/empathy.schemas.in.h:54
+#: ../data/empathy.schemas.in.h:63
#, fuzzy
msgid "Whether or not to play a sound when logging in a network."
msgstr "Om lyder skal spilles av når borte."
-#: ../data/empathy.schemas.in.h:55
+#: ../data/empathy.schemas.in.h:64
#, fuzzy
msgid "Whether or not to play a sound when logging off a network."
msgstr "Om lyder skal spilles av når borte."
-#: ../data/empathy.schemas.in.h:56
+#: ../data/empathy.schemas.in.h:65
+#, fuzzy
+msgid "Whether or not to play sound notifications when away or busy."
+msgstr "Om lyder skal spilles av når du er borte eller opptatt."
+
+#: ../data/empathy.schemas.in.h:66
msgid ""
"Whether or not to show a popup notification when receiving a new message "
"even if the chat is already opened, but not focused."
msgstr ""
-#: ../data/empathy.schemas.in.h:57
+#: ../data/empathy.schemas.in.h:67
#, fuzzy
msgid ""
"Whether or not to show a popup notification when receiving a new message."
msgstr "Om lyder skal spilles av når du er borte eller opptatt."
-#: ../data/empathy.schemas.in.h:58
+#: ../data/empathy.schemas.in.h:68
msgid ""
"Whether or not to show avatars for contacts in the contact list and chat "
"windows."
msgstr "Om bilder av kontakter skal vises i kontaktlisten og samtalevinduer."
-#: ../data/empathy.schemas.in.h:59
+#: ../data/empathy.schemas.in.h:69
msgid "Whether or not to show contacts that are offline in the contact list."
msgstr "Om kontakter som er frakoblet skal vises i kontaktlisten."
-#: ../data/empathy.schemas.in.h:60
+#: ../data/empathy.schemas.in.h:70
#, fuzzy
msgid "Whether or not to show popup notifications when away or busy."
msgstr "Om lyder skal spilles av når du er borte eller opptatt."
-#: ../data/empathy.schemas.in.h:61
+#: ../data/empathy.schemas.in.h:71
msgid ""
"Whether or not to show the message dialog about closing the main window with "
"the 'x' button in the title bar."
@@ -312,15 +365,15 @@ msgstr ""
"Om meldingsdialog om lukking av vinduet med «x»-knappen i tittelfeltet skal "
"vises."
-#: ../data/empathy.schemas.in.h:62
+#: ../data/empathy.schemas.in.h:72
msgid "Whether to show the contact list in compact mode or not."
msgstr "Om kontaktlisten skal vises i kompakt modus."
-#: ../data/empathy.schemas.in.h:63
+#: ../data/empathy.schemas.in.h:73
msgid "Whether to use the theme for chat rooms or not."
msgstr "Om tema skal brukes for praterom eller ikke."
-#: ../data/empathy.schemas.in.h:64
+#: ../data/empathy.schemas.in.h:74
msgid ""
"Which criterium to use when sorting the contact list. Default is to use sort "
"by the contact's name with the value \"name\". A value of \"state\" will "
@@ -330,541 +383,704 @@ msgstr ""
"å sortere kontakter etter verdien «name». Hvis man bruker «state» vil "
"kontaktlisten sorteres etter kontaktens tilstand."
-#: ../libempathy/empathy-tp-contact-list.c:731 ../src/empathy.c:269
+#: ../libempathy/empathy-ft-handler.c:838
+msgid "The hash of the received file and the sent one do not match"
+msgstr ""
+
+#: ../libempathy/empathy-ft-handler.c:1098
+msgid "File transfer not supported by remote contact"
+msgstr ""
+
+#: ../libempathy/empathy-tp-contact-list.c:757 ../src/empathy.c:286
msgid "People nearby"
msgstr "Personer i nærheten"
-#: ../libempathy/empathy-utils.c:252
+#: ../libempathy/empathy-tp-file.c:300
+msgid "No reason was specified"
+msgstr "Ingen årsak oppgitt"
+
+#: ../libempathy/empathy-tp-file.c:303
+msgid "The change in state was requested"
+msgstr "Tilstandsendring ble etterspurt"
+
+#: ../libempathy/empathy-tp-file.c:306
+msgid "You canceled the file transfer"
+msgstr "Du avbrøt filoverføringen"
+
+#: ../libempathy/empathy-tp-file.c:309
+msgid "The other participant canceled the file transfer"
+msgstr "Avsender avbrøt filoverføringen"
+
+#: ../libempathy/empathy-tp-file.c:312
+msgid "Error while trying to transfer the file"
+msgstr "Feil under overføring av filen"
+
+#: ../libempathy/empathy-tp-file.c:315
+msgid "The other participant is unable to transfer the file"
+msgstr "Avsender kan ikke overføre filen"
+
+#: ../libempathy/empathy-tp-file.c:318
+msgid "Unknown reason"
+msgstr "Ukjent årsak"
+
+#: ../libempathy/empathy-utils.c:274
msgid "Available"
msgstr "Tilgjengelig"
-#: ../libempathy/empathy-utils.c:254
+#: ../libempathy/empathy-utils.c:276
msgid "Busy"
msgstr "Opptatt"
-#: ../libempathy/empathy-utils.c:257
+#: ../libempathy/empathy-utils.c:279
msgid "Away"
msgstr "Borte"
-#: ../libempathy/empathy-utils.c:259
+#: ../libempathy/empathy-utils.c:281
msgid "Hidden"
msgstr "Skjult"
-#: ../libempathy/empathy-utils.c:262
+#: ../libempathy/empathy-utils.c:283
msgid "Offline"
msgstr "Frakoblet"
-#: ../libempathy-gtk/empathy-account-chooser.c:326
+#: ../libempathy/empathy-time.c:137
+#, c-format
+msgid "%d second ago"
+msgid_plural "%d seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:142
+#, c-format
+msgid "%d minute ago"
+msgid_plural "%d minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:147
+#, c-format
+msgid "%d hour ago"
+msgid_plural "%d hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:152
+#, c-format
+msgid "%d day ago"
+msgid_plural "%d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:157
+#, c-format
+msgid "%d month ago"
+msgid_plural "%d months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../libempathy/empathy-time.c:162
+msgid "in the future"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-account-chooser.c:419
msgid "All"
msgstr "Alle"
#: ../libempathy-gtk/empathy-account-widget.c:302
-#: ../libempathy-gtk/empathy-account-widget.c:347
+#: ../libempathy-gtk/empathy-account-widget.c:354
#, c-format
msgid "%s:"
msgstr "%s:"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-generic.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:1
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-generic.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:1
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:1
msgid "<b>Advanced</b>"
msgstr "<b>Avansert</b>"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:3
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:2
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:2
-msgid "Forget password and clear the entry."
-msgstr "Glem passord og tøm oppføringen."
-
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:3
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:2
msgid "Pass_word:"
msgstr "_Passord:"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:3
msgid "Screen _Name:"
msgstr "Skjerm_navn:"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:11
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:10
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:7
msgid "_Port:"
msgstr "_Port:"
-#: ../libempathy-gtk/empathy-account-widget-aim.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:7
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:12
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:6
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:10
-#: ../src/empathy-new-chatroom-dialog.glade.h:10
+#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:6
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:11
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
+#: ../src/empathy-new-chatroom-dialog.ui.h:9
msgid "_Server:"
msgstr "_Tjener:"
-#: ../libempathy-gtk/empathy-account-widget-groupwise.glade.h:3
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:4
-#: ../libempathy-gtk/empathy-account-widget-msn.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:2
msgid "Login I_D:"
msgstr "InnloggingsI_D:"
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:2
msgid "ICQ _UIN:"
msgstr "ICQ _UIN:"
-#: ../libempathy-gtk/empathy-account-widget-icq.glade.h:5
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-icq.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:5
msgid "_Charset:"
msgstr "_Tegnsett:"
-#: ../libempathy-gtk/empathy-account-widget-irc.c:245
+#: ../libempathy-gtk/empathy-account-widget-irc.c:241
msgid "New Network"
msgstr "Nytt nettverk"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:1
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1
msgid "<b>Network</b>"
msgstr "<b>Nettverk</b>"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
msgid "<b>Servers</b>"
msgstr "<b>Tjenere</b>"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
msgid "Charset:"
msgstr "Tegnsett:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:4
-msgid "Create a new IRC network"
-msgstr "Opprett et nytt IRC-nettverk"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:5
-msgid "Edit the selected IRC network"
-msgstr "Rediger valgt IRC-nettverk"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
msgid "Network"
msgstr "Nettverk"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
msgid "Network:"
msgstr "Nettverk:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
msgid "Nickname:"
msgstr "Kallenavn:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
msgid "Password:"
msgstr "Passord:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:10
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
msgid "Quit message:"
msgstr "Melding ved frakobling:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:11
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
msgid "Real name:"
msgstr "Virkelig navn:"
-#: ../libempathy-gtk/empathy-account-widget-irc.glade.h:12
-msgid "Remove the selected IRC network"
-msgstr "Fjern valgt IRC-nettverk"
-
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:2
msgid "<b>Override server settings</b>"
msgstr "<b>Overstyr innstillinger for tjener</b>"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:5
msgid "Pri_ority:"
msgstr "Pri_oritet:"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:6
msgid "Reso_urce:"
msgstr "_Ressurs:"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:7
msgid "Use old SS_L"
msgstr "Bruk gammel SS_L"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:8
msgid "_Encryption required (TLS/SSL)"
msgstr "Krypt_ering kreves (TLS/SSL)"
-#: ../libempathy-gtk/empathy-account-widget-jabber.glade.h:10
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:9
msgid "_Ignore SSL certificate errors"
msgstr "_Ignorer feil med SSL-sertifikater"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:2
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:2
msgid "_Email:"
msgstr "_E-post:"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:3
msgid "_First Name:"
msgstr "_Fornavn:"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:4
msgid "_Jabber ID:"
msgstr "_Jabber-ID:"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:5
msgid "_Last Name:"
msgstr "_Etternavn:"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:6
-#: ../src/empathy-chatrooms-window.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:6
msgid "_Nickname:"
msgstr "Kalle_navn:"
-#: ../libempathy-gtk/empathy-account-widget-salut.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:7
msgid "_Published Name:"
msgstr "_Publisert navn:"
#. look up the DNS SRV record at the service's domain for the host name of a STUN server.
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:3
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:3
msgid "Discover STUN"
msgstr "Søk etter STUN"
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:6
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:5
msgid "STUN Server:"
msgstr "STUN-tjener:"
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:6
msgid "STUN port:"
msgstr "STUN-port:"
-#: ../libempathy-gtk/empathy-account-widget-sip.glade.h:8
+#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:7
msgid "_Username:"
msgstr "Br_ukernavn:"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:4
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:3
msgid "Use _Yahoo Japan"
msgstr "Bruk _Yahoo Japan"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:5
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:4
msgid "Yahoo I_D:"
msgstr "Yahoo-I_D:"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:7
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:6
msgid "_Ignore conference and chatroom invitations"
msgstr "_Ignorer invitasjoner til konferanser og praterom"
-#: ../libempathy-gtk/empathy-account-widget-yahoo.glade.h:9
+#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:8
msgid "_Room List locale:"
msgstr "Locale for _romliste:"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:462
-#: ../libempathy-gtk/empathy-avatar-chooser.c:537
+#: ../libempathy-gtk/empathy-avatar-chooser.c:449
+#: ../libempathy-gtk/empathy-avatar-chooser.c:525
msgid "Couldn't convert image"
msgstr "Kunne ikke konvertere bilde"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:463
+#: ../libempathy-gtk/empathy-avatar-chooser.c:450
msgid "None of the accepted image formats is supported on your system"
msgstr "Ingen av de godkjente bildeformatene støttes av ditt system"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:956
+#: ../libempathy-gtk/empathy-avatar-chooser.c:933
msgid "Select Your Avatar Image"
msgstr "Velg personbilde"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:959
+#: ../libempathy-gtk/empathy-avatar-chooser.c:936
msgid "No Image"
msgstr "Ingen bilde"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:1021
+#: ../libempathy-gtk/empathy-avatar-chooser.c:998
msgid "Images"
msgstr "Bilder"
-#: ../libempathy-gtk/empathy-avatar-chooser.c:1025
+#: ../libempathy-gtk/empathy-avatar-chooser.c:1002
msgid "All Files"
msgstr "Alle filer"
-#: ../libempathy-gtk/empathy-avatar-image.c:294
+#: ../libempathy-gtk/empathy-avatar-image.c:324
msgid "Click to enlarge"
msgstr "Klikk for å forstørre"
-#: ../libempathy-gtk/empathy-chat.c:507
+#: ../libempathy-gtk/empathy-chat.c:178
+msgid "Failed to reconnect this chat"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:396
+msgid "Unsupported command"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:531
msgid "offline"
msgstr "frakoblet"
-#: ../libempathy-gtk/empathy-chat.c:510
+#: ../libempathy-gtk/empathy-chat.c:534
msgid "invalid contact"
msgstr "ugyldig kontakt"
-#: ../libempathy-gtk/empathy-chat.c:513
+#: ../libempathy-gtk/empathy-chat.c:537
msgid "permission denied"
msgstr "tilgang nektet"
-#: ../libempathy-gtk/empathy-chat.c:516
+#: ../libempathy-gtk/empathy-chat.c:540
msgid "too long message"
msgstr "meldingen er for lang"
-#: ../libempathy-gtk/empathy-chat.c:519
+#: ../libempathy-gtk/empathy-chat.c:543
msgid "not implemented"
msgstr "ikke implementert"
-#: ../libempathy-gtk/empathy-chat.c:522
+#: ../libempathy-gtk/empathy-chat.c:546
msgid "unknown"
msgstr "ukjent"
-#: ../libempathy-gtk/empathy-chat.c:526
+#: ../libempathy-gtk/empathy-chat.c:550
#, c-format
msgid "Error sending message '%s': %s"
msgstr "Feil ved sending av melding «%s»: %s"
-#: ../libempathy-gtk/empathy-chat.c:556
+#: ../libempathy-gtk/empathy-chat.c:580
#, c-format
msgid "Topic set to: %s"
msgstr "Emnet er satt til: %s"
-#: ../libempathy-gtk/empathy-chat.c:558
+#: ../libempathy-gtk/empathy-chat.c:582
msgid "No topic defined"
msgstr "Emne ikke definert"
-#: ../libempathy-gtk/empathy-chat.c:973
+#: ../libempathy-gtk/empathy-chat.c:951
+msgid "(No Suggestions)"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-chat.c:1005
msgid "Insert Smiley"
msgstr "Sett inn smilefjes"
#. send button
-#: ../libempathy-gtk/empathy-chat.c:991
-#: ../libempathy-gtk/empathy-ui-utils.c:1538
+#: ../libempathy-gtk/empathy-chat.c:1023
+#: ../libempathy-gtk/empathy-ui-utils.c:1453
msgid "_Send"
msgstr "_Send"
-#: ../libempathy-gtk/empathy-chat.c:1025
-msgid "_Check Word Spelling..."
-msgstr "_Stavekontroll ..."
+#: ../libempathy-gtk/empathy-chat.c:1057
+msgid "_Spelling Suggestions"
+msgstr ""
-#: ../libempathy-gtk/empathy-chat.c:1131
+#: ../libempathy-gtk/empathy-chat.c:1171
#, c-format
msgid "%s has joined the room"
msgstr "%s har blitt med i rommet"
-#: ../libempathy-gtk/empathy-chat.c:1134
+#: ../libempathy-gtk/empathy-chat.c:1174
#, c-format
msgid "%s has left the room"
msgstr "%s har forlatt rommet"
-#: ../libempathy-gtk/empathy-chat.c:1248 ../src/empathy-call-window.c:466
+#: ../libempathy-gtk/empathy-chat.c:1289 ../src/empathy-call-window.c:1108
msgid "Disconnected"
msgstr "Koblet fra"
-#: ../libempathy-gtk/empathy-chat.c:1644
+#: ../libempathy-gtk/empathy-chat.c:1700
msgid "Connected"
msgstr "Koblet til"
-#: ../libempathy-gtk/empathy-chat.c:1694
-#: ../libempathy-gtk/empathy-log-window.c:505
+#: ../libempathy-gtk/empathy-chat.c:1750
+#: ../libempathy-gtk/empathy-log-window.c:501
msgid "Conversation"
msgstr "Samtale"
-#: ../libempathy-gtk/empathy-chat.glade.h:1
+#: ../libempathy-gtk/empathy-chat.ui.h:1
msgid "<b>Topic:</b>"
msgstr "<b>Emne:</b>"
-#: ../libempathy-gtk/empathy-chat.glade.h:2
-msgid "Group Chat"
-msgstr "Gruppesamtale"
-
-#: ../libempathy-gtk/empathy-chat-text-view.c:333
+#: ../libempathy-gtk/empathy-chat-text-view.c:323
msgid "_Copy Link Address"
msgstr "_Kopier lenkens adresse"
-#: ../libempathy-gtk/empathy-chat-text-view.c:341
+#: ../libempathy-gtk/empathy-chat-text-view.c:331
msgid "_Open Link"
msgstr "_Åpne lenke"
-#: ../libempathy-gtk/empathy-chat-text-view.c:432
-msgid "%A %d %B %Y"
+#. Translators: timestamp displayed between conversations in
+#. * chat windows (strftime format string)
+#: ../libempathy-gtk/empathy-chat-text-view.c:424
+msgid "%A %B %d %Y"
msgstr "%A %d %B %Y"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:180
-msgid "Personal Information"
-msgstr "Personlig informasjon"
-
-#: ../libempathy-gtk/empathy-contact-dialogs.c:183
+#: ../libempathy-gtk/empathy-contact-dialogs.c:179
+#: ../libempathy-gtk/empathy-contact-dialogs.c:238
msgid "Edit Contact Information"
msgstr "Endre kontaktinformasjon"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:186
-msgid "Contact Information"
-msgstr "Kontaktinformasjon"
-
-#: ../libempathy-gtk/empathy-contact-dialogs.c:266
-msgid "I would like to add you to my contact list."
-msgstr "Jeg ønsker å legge deg til i min kontaktliste."
+#: ../libempathy-gtk/empathy-contact-dialogs.c:289
+msgid "Personal Information"
+msgstr "Personlig informasjon"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:290
+#: ../libempathy-gtk/empathy-contact-dialogs.c:392
msgid "New Contact"
msgstr "Ny kontakt"
-#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:1
+#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:1
msgid "Decide _Later"
msgstr "A_vgjør senere"
-#: ../libempathy-gtk/empathy-contact-dialogs.glade.h:2
+#: ../libempathy-gtk/empathy-contact-dialogs.ui.h:2
msgid "Subscription Request"
msgstr "Abonnementsforespørsel"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1249
+#: ../libempathy-gtk/empathy-contact-list-view.c:1378
#, c-format
msgid "Do you really want to remove the group '%s'?"
msgstr "Vil du virkelig fjerne gruppen «%s»?"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1251
+#: ../libempathy-gtk/empathy-contact-list-view.c:1380
msgid "Removing group"
msgstr "Fjerner gruppe"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1298
-#: ../libempathy-gtk/empathy-contact-list-view.c:1377
+#: ../libempathy-gtk/empathy-contact-list-view.c:1427
+#: ../libempathy-gtk/empathy-contact-list-view.c:1505
msgid "_Remove"
msgstr "Fje_rn"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1328
+#: ../libempathy-gtk/empathy-contact-list-view.c:1457
#, c-format
msgid "Do you really want to remove the contact '%s'?"
msgstr "Vil du virkelig fjerne kontakten «%s»?"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1330
+#: ../libempathy-gtk/empathy-contact-list-view.c:1459
msgid "Removing contact"
msgstr "Fjerner kontakt"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1335
-msgid "Sorry, I don't want you in my contact list anymore."
-msgstr "Beklager, men jeg vil ikke ha deg på kontaktlisten min lenger."
-
-#: ../libempathy-gtk/empathy-contact-menu.c:122
-#: ../src/empathy-main-window.glade.h:9
+#: ../libempathy-gtk/empathy-contact-menu.c:135
+#: ../src/empathy-main-window.ui.h:8
msgid "_Chat"
msgstr "_Prat"
-#: ../libempathy-gtk/empathy-contact-menu.c:153
-#: ../src/empathy-call-window.glade.h:5
-msgid "_Call"
-msgstr "_Ring"
+#: ../libempathy-gtk/empathy-contact-menu.c:166
+msgctxt "menu item"
+msgid "_Audio Call"
+msgstr "_Lydsamtale"
+
+#: ../libempathy-gtk/empathy-contact-menu.c:198
+msgctxt "menu item"
+msgid "_Video Call"
+msgstr "_Videosamtale"
-#: ../libempathy-gtk/empathy-contact-menu.c:192
-#: ../src/empathy-main-window.glade.h:17
+#: ../libempathy-gtk/empathy-contact-menu.c:237
msgid "_View Previous Conversations"
msgstr "_Vis tidligere samtaler"
-#: ../libempathy-gtk/empathy-contact-menu.c:214
+#: ../libempathy-gtk/empathy-contact-menu.c:259
msgid "Send file"
msgstr "Send fil"
-#: ../libempathy-gtk/empathy-contact-menu.c:242
+#: ../libempathy-gtk/empathy-contact-menu.c:287
msgid "Infor_mation"
msgstr "Infor_masjon"
-#: ../libempathy-gtk/empathy-contact-menu.c:269
-#: ../src/empathy-chat-window.glade.h:14 ../src/empathy-main-window.glade.h:11
+#: ../libempathy-gtk/empathy-contact-menu.c:314
+#: ../src/empathy-main-window.ui.h:11
msgid "_Edit"
msgstr "_Rediger"
-#: ../libempathy-gtk/empathy-contact-menu.c:328
+#: ../libempathy-gtk/empathy-contact-menu.c:372
msgid "Inviting to this room"
msgstr "Inviterer til dette rommet"
-#: ../libempathy-gtk/empathy-contact-menu.c:361
+#: ../libempathy-gtk/empathy-contact-menu.c:403
msgid "_Invite to chatroom"
msgstr "_Inviter til praterom"
-#: ../libempathy-gtk/empathy-contact-selector.c:111
+#: ../libempathy-gtk/empathy-contact-selector.c:129
msgid "Select a contact"
msgstr "Velg en kontakt"
-#: ../libempathy-gtk/empathy-contact-widget.c:358
+#: ../libempathy-gtk/empathy-contact-widget.c:440
msgid "Save Avatar"
msgstr "Lagre personbilder"
-#: ../libempathy-gtk/empathy-contact-widget.c:414
+#: ../libempathy-gtk/empathy-contact-widget.c:496
msgid "Unable to save avatar"
msgstr "Kan ikke lagre personbilde"
-#: ../libempathy-gtk/empathy-contact-widget.c:895
+#: ../libempathy-gtk/empathy-contact-widget.c:979
msgid "Select"
msgstr "Velg"
-#: ../libempathy-gtk/empathy-contact-widget.c:904
-#: ../src/empathy-main-window.c:991
+#: ../libempathy-gtk/empathy-contact-widget.c:988
+#: ../src/empathy-main-window.c:905
msgid "Group"
msgstr "Gruppe"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.c:1239
+msgid "Country ISO Code:"
+msgstr "ISO-kode for land:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1241
+msgid "Country:"
+msgstr "Land:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1243
+msgid "State:"
+msgstr "Tilstand:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1245
+msgid "City:"
+msgstr "By:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1247
+msgid "Area:"
+msgstr "Område:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1249
+msgid "Postal Code:"
+msgstr "Postkode:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1251
+msgid "Street:"
+msgstr "Gate:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1253
+msgid "Building:"
+msgstr "Bygning:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1255
+msgid "Floor:"
+msgstr "Etasje:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1257
+msgid "Room:"
+msgstr "Rom:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1259
+msgid "Text:"
+msgstr "Tekst:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1261
+msgid "Description:"
+msgstr "Beskrivelse:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1263
+msgid "URI:"
+msgstr "URI:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1265
+msgid "Accuracy Level:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1267
+msgid "Error:"
+msgstr "Feil:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1269
+msgid "Vertical Error (meters):"
+msgstr "Vertikal feil (meter):"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1271
+msgid "Horizontal Error (meters):"
+msgstr "Horisontal feil (meter):"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1273
+msgid "Speed:"
+msgstr "Hastighet:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1275
+msgid "Bearing:"
+msgstr "Retning:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1277
+msgid "Climb Speed:"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1279
+msgid "Last Updated on:"
+msgstr "Sist oppdatert:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1281
+msgid "Longitude:"
+msgstr "Lengdegrad:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1283
+msgid "Latitude:"
+msgstr "Breddegrad:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1285
+msgid "Altitude:"
+msgstr "Høyde:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1332
+msgid "<b>Location</b>"
+msgstr "<b>Lokasjon</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1345
+msgid "<b>Location</b>, "
+msgstr "<b>Lokasjon</b>, "
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1395
+msgid "%B %e, %Y at %R UTC"
+msgstr "%B %e, %Y, %R UTC"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:1
msgid "<b>Client Information</b>"
msgstr "<b>Klientinformasjon</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:2
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
msgid "<b>Contact Details</b>"
msgstr "<b>Kontaktdetaljer</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:3
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:3
msgid "<b>Contact</b>"
msgstr "<b>Kontakt</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:4
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:4
msgid "<b>Groups</b>"
msgstr "<b>Grupper</b>"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:5
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:1
-#: ../src/empathy-chatrooms-window.glade.h:1
-#: ../src/empathy-new-chatroom-dialog.glade.h:1
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:5
+msgid "<b>Location</b> at (date)\t"
+msgstr "<b>Lokasjon</b> (dato)\t"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:6
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:1
+#: ../src/empathy-chatrooms-window.ui.h:1
+#: ../src/empathy-new-chatroom-dialog.ui.h:1
msgid "Account:"
msgstr "Konto:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:6
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:7
msgid "Alias:"
msgstr "Alias:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:7
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:8
msgid "Birthday:"
msgstr "Fødselsdag:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:8
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:9
msgid "Client:"
msgstr "Klient:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:9
-msgid "Contact information"
-msgstr "Kontaktinformasjon"
-
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:10
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:10
msgid "Email:"
msgstr "E-post:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:11
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:11
msgid "Fullname:"
msgstr "Fullt navn:"
#. Identifier to connect to Instant Messaging network
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:13
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:13
msgid "Identifier:"
msgstr "Identifikator:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:14
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:14
msgid "Information requested..."
msgstr "Informasjon forespurt ..."
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:15
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:15
msgid "OS:"
msgstr "OS:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:16
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:16
msgid ""
"Select the groups you want this contact to appear in. Note that you can "
"select more than one group or no groups."
@@ -872,114 +1088,134 @@ msgstr ""
"Velg gruppene du ønsker at denne kontakten skal vises i. Du kan velge flere "
"eller ingen."
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:17
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:17
msgid "Version:"
msgstr "Versjon:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:18
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:18
msgid "Web site:"
msgstr "Nettsted:"
-#: ../libempathy-gtk/empathy-contact-widget.glade.h:19
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:19
msgid "_Add Group"
msgstr "_Legg til gruppe"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:284
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:283
msgid "new server"
msgstr "ny tjener"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:513
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:510
msgid "Server"
msgstr "Tjener"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:528
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:525
msgid "Port"
msgstr "Port"
-#: ../libempathy-gtk/empathy-irc-network-dialog.c:541
+#: ../libempathy-gtk/empathy-irc-network-dialog.c:538
msgid "SSL"
msgstr "SSL"
-#: ../libempathy-gtk/empathy-log-window.c:498
-#: ../src/empathy-import-dialog.c:276
+#: ../libempathy-gtk/empathy-log-window.c:494
+#: ../src/empathy-import-dialog.c:281
msgid "Account"
msgstr "Konto"
-#: ../libempathy-gtk/empathy-log-window.c:515
+#: ../libempathy-gtk/empathy-log-window.c:511
msgid "Date"
msgstr "Dato"
-#. Tab Label
-#: ../libempathy-gtk/empathy-log-window.glade.h:2
+#: ../libempathy-gtk/empathy-log-window.ui.h:1
msgid "Conversations"
msgstr "Samtaler"
-#: ../libempathy-gtk/empathy-log-window.glade.h:3
+#: ../libempathy-gtk/empathy-log-window.ui.h:2
msgid "Previous Conversations"
msgstr "Tidligere samtaler"
-#. Tab Label
-#: ../libempathy-gtk/empathy-log-window.glade.h:5
+#: ../libempathy-gtk/empathy-log-window.ui.h:3
msgid "Search"
msgstr "Søk"
-#. Searching *for* something
-#: ../libempathy-gtk/empathy-log-window.glade.h:7
+#: ../libempathy-gtk/empathy-log-window.ui.h:4
msgid "_For:"
msgstr "_For:"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:2
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:2
msgid "C_all"
msgstr "Ri_ng"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:3
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:3
msgid "C_hat"
msgstr "_Prat"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:4
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:4
msgid "Contact ID:"
msgstr "KontaktID:"
-#: ../libempathy-gtk/empathy-new-message-dialog.glade.h:5
+#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:5
msgid "New Conversation"
msgstr "Ny samtale"
+#. COL_STATE_ICON_NAME
+#. COL_STATE
+#. COL_STATUS_TEXT
+#. COL_DISPLAY_MARKUP
+#. COL_STATUS_CUSTOMISABLE
+#. COL_TYPE
+#: ../libempathy-gtk/empathy-presence-chooser.c:172
+msgid "Custom Message..."
+msgstr "Egendefinert melding..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:227
+msgid "Edit Custom Messages..."
+msgstr "Rediger egendefinerte meldinger..."
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:326
+msgid "Click to remove this status as a favorite"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:335
+msgid "Click to make this status a favorite"
+msgstr ""
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:369
+msgid "Set status"
+msgstr "Sett status"
+
+#: ../libempathy-gtk/empathy-presence-chooser.c:778
+msgid "Set your presence and current status"
+msgstr ""
+
#. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:685
+#: ../libempathy-gtk/empathy-presence-chooser.c:1013
msgid "Custom messages..."
msgstr "Egendefinerte meldinger ..."
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:1
-msgid "Custom message"
-msgstr "Egendefinert melding"
-
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:2
-msgid "Message:"
-msgstr "Melding:"
-
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:3
-msgid "Save message"
-msgstr "Lagre melding"
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:362
+msgid "Enter Custom Message"
+msgstr "Oppgi egendefinert melding"
-#: ../libempathy-gtk/empathy-presence-chooser.glade.h:4
-msgid "Status:"
-msgstr "Status:"
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:521
+msgid "Edit Custom Messages"
+msgstr "Rediger egendefinerte meldinger"
-#: ../libempathy-gtk/empathy-spell-dialog.c:82
-msgid "Word"
-msgstr "Ord"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:1
+msgid "Add _New Preset"
+msgstr ""
-#: ../libempathy-gtk/empathy-spell-dialog.c:259
-msgid "Suggestions for the word"
-msgstr "Forslag for ordet"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:2
+#, fuzzy
+msgid "Saved Presets"
+msgstr "Lagre melding"
-#: ../libempathy-gtk/empathy-spell-dialog.glade.h:1
-msgid "Spell Checker"
-msgstr "Stavekontroll"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:3
+msgid "gtk-add"
+msgstr ""
-#: ../libempathy-gtk/empathy-spell-dialog.glade.h:2
-msgid "Suggestions for the word:"
-msgstr "Forslag for ordet:"
+#: ../libempathy-gtk/empathy-status-preset-dialog.ui.h:4
+msgid "gtk-remove"
+msgstr ""
#: ../libempathy-gtk/empathy-theme-manager.c:60
msgid "Classic"
@@ -997,51 +1233,55 @@ msgstr "Tøm"
msgid "Blue"
msgstr "Blå"
-#: ../libempathy-gtk/empathy-ui-utils.c:1385
+#: ../libempathy-gtk/empathy-ui-utils.c:1355
msgid "Unable to open URI"
msgstr "Kan ikke åpne URI"
-#: ../libempathy-gtk/empathy-ui-utils.c:1530
+#: ../libempathy-gtk/empathy-ui-utils.c:1445
msgid "Select a file"
msgstr "Velg en fil"
-#: ../libempathy-gtk/empathy-ui-utils.c:1566
+#: ../libempathy-gtk/empathy-ui-utils.c:1503
+msgid "Select a destination"
+msgstr "Velg en destinasjon"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1532
msgid "Received an instant message"
msgstr "Mottok en lynmelding"
-#: ../libempathy-gtk/empathy-ui-utils.c:1568
+#: ../libempathy-gtk/empathy-ui-utils.c:1534
msgid "Sent an instant message"
msgstr "Send en lynmelding"
-#: ../libempathy-gtk/empathy-ui-utils.c:1570
+#: ../libempathy-gtk/empathy-ui-utils.c:1536
msgid "Incoming chat request"
msgstr "Innkommende samtaleforespørsel"
-#: ../libempathy-gtk/empathy-ui-utils.c:1572
+#: ../libempathy-gtk/empathy-ui-utils.c:1538
msgid "Contact connected"
msgstr "Kontakt koblet til"
-#: ../libempathy-gtk/empathy-ui-utils.c:1574
+#: ../libempathy-gtk/empathy-ui-utils.c:1540
msgid "Contact disconnected"
msgstr "Kontakt koblet fra"
-#: ../libempathy-gtk/empathy-ui-utils.c:1576
+#: ../libempathy-gtk/empathy-ui-utils.c:1542
msgid "Connected to server"
msgstr "Koblet til tjener"
-#: ../libempathy-gtk/empathy-ui-utils.c:1578
+#: ../libempathy-gtk/empathy-ui-utils.c:1544
msgid "Disconnected from server"
msgstr "Koblet fra tjener"
-#: ../libempathy-gtk/empathy-ui-utils.c:1580
+#: ../libempathy-gtk/empathy-ui-utils.c:1546
msgid "Incoming voice call"
msgstr "Innkommende samtale"
-#: ../libempathy-gtk/empathy-ui-utils.c:1582
+#: ../libempathy-gtk/empathy-ui-utils.c:1548
msgid "Outgoing voice call"
msgstr "Utgående samtale"
-#: ../libempathy-gtk/empathy-ui-utils.c:1584
+#: ../libempathy-gtk/empathy-ui-utils.c:1550
msgid "Voice call ended"
msgstr "Samtale avsluttet"
@@ -1230,7 +1470,7 @@ msgid "Megaphone"
msgstr "Megafon"
#: ../megaphone/data/GNOME_Megaphone_Applet.server.in.in.h:2
-#: ../megaphone/src/megaphone-applet.c:417
+#: ../megaphone/src/megaphone-applet.c:527
msgid "Talk!"
msgstr "Snakk!"
@@ -1244,15 +1484,15 @@ msgid "_Information"
msgstr "_Informasjon"
#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
-#: ../src/empathy-main-window.glade.h:15
+#: ../src/empathy-main-window.ui.h:18
msgid "_Preferences"
msgstr "_Brukervalg"
-#: ../megaphone/src/megaphone-applet.c:255
+#: ../megaphone/src/megaphone-applet.c:168
msgid "Please configure a contact."
msgstr "Vennligst konfigurer en kontakt."
-#: ../megaphone/src/megaphone-applet.c:348
+#: ../megaphone/src/megaphone-applet.c:258
msgid "Select contact..."
msgstr "Velg kontakt ..."
@@ -1265,19 +1505,19 @@ msgstr "Tilstedeværelse"
msgid "Set your own presence"
msgstr "Velg din egen tilstedeværelse"
-#: ../src/empathy.c:426
+#: ../src/empathy.c:476
msgid "Don't connect on startup"
msgstr "Ikke koble til ved oppstart"
-#: ../src/empathy.c:430
+#: ../src/empathy.c:480
msgid "Don't show the contact list on startup"
msgstr "Ikke vis kontaktlisten ved oppstart"
-#: ../src/empathy.c:434
+#: ../src/empathy.c:484
msgid "Show the accounts dialog"
msgstr "Vis kontovinduet"
-#: ../src/empathy.c:446
+#: ../src/empathy.c:496
msgid "- Empathy Instant Messenger"
msgstr "- Empathy lynmeldingsprogram"
@@ -1325,22 +1565,21 @@ msgstr ""
"Sigurd Gartmann\n"
"Espen Stefansen"
-#: ../src/empathy-accounts-dialog.c:391
+#: ../src/empathy-accounts-dialog.c:392
msgid "Enabled"
msgstr "Aktivert"
-#: ../src/empathy-accounts-dialog.c:401
-#: ../src/empathy-accounts-dialog.glade.h:4
+#: ../src/empathy-accounts-dialog.c:402 ../src/empathy-accounts-dialog.ui.h:4
msgid "Accounts"
msgstr "Kontoer"
#. To translator: %s is the protocol name
-#: ../src/empathy-accounts-dialog.c:833
+#: ../src/empathy-accounts-dialog.c:836
#, c-format
msgid "New %s account"
msgstr "Ny %s-konto"
-#: ../src/empathy-accounts-dialog.c:943
+#: ../src/empathy-accounts-dialog.c:947
#, c-format
msgid ""
"You are about to remove your %s account!\n"
@@ -1349,7 +1588,7 @@ msgstr ""
"Du holder på å fjerne din %s-konto!\n"
"Er du sikker på at du vil dette?"
-#: ../src/empathy-accounts-dialog.c:949
+#: ../src/empathy-accounts-dialog.c:953
msgid ""
"Any associated conversations and chat rooms will NOT be removed if you "
"decide to proceed.\n"
@@ -1362,31 +1601,31 @@ msgstr ""
"\n"
"Skulle du velge å legge til kontoen senere, vil de bli tilgjengelige igjen."
-#: ../src/empathy-accounts-dialog.glade.h:1
+#: ../src/empathy-accounts-dialog.ui.h:1
msgid "<b>New Account</b>"
msgstr "<b>Ny konto</b>"
-#: ../src/empathy-accounts-dialog.glade.h:2
+#: ../src/empathy-accounts-dialog.ui.h:2
msgid "<b>No protocol installed</b>"
msgstr "<b>Ingen protokoll installert</b>"
-#: ../src/empathy-accounts-dialog.glade.h:3
+#: ../src/empathy-accounts-dialog.ui.h:3
msgid "<b>Settings</b>"
msgstr "<b>Innstillinger</b>"
-#: ../src/empathy-accounts-dialog.glade.h:5
+#: ../src/empathy-accounts-dialog.ui.h:5
msgid "Cr_eate"
msgstr "Oppr_ett"
-#: ../src/empathy-accounts-dialog.glade.h:6
+#: ../src/empathy-accounts-dialog.ui.h:6
msgid "I already have an account I want to use"
msgstr "Jeg har allerede en konto jeg vil bruke"
-#: ../src/empathy-accounts-dialog.glade.h:7
+#: ../src/empathy-accounts-dialog.ui.h:7
msgid "Import Accounts..."
msgstr "Importer kontoer..."
-#: ../src/empathy-accounts-dialog.glade.h:8
+#: ../src/empathy-accounts-dialog.ui.h:8
msgid ""
"To add a new account, you first have to install a backend for each protocol "
"you want to use."
@@ -1394,261 +1633,196 @@ msgstr ""
"Du må installere en motor for hver protokoll du ønsker å bruke før du legger "
"til en ny konto."
-#: ../src/empathy-accounts-dialog.glade.h:9
+#: ../src/empathy-accounts-dialog.ui.h:9
msgid "Type:"
msgstr "Type:"
-#: ../src/empathy-call-window.c:180
+#: ../src/empathy-accounts-dialog.ui.h:10
+msgid "_Add..."
+msgstr "_Legg til..."
+
+#: ../src/empathy-call-window.c:63
+msgid "Connecting..."
+msgstr "Kobler til..."
+
+#: ../src/empathy-call-window.c:405
msgid "Contrast"
msgstr "Kontrast"
-#: ../src/empathy-call-window.c:180
+#: ../src/empathy-call-window.c:408
msgid "Brightness"
msgstr "Lysstyrke"
-#: ../src/empathy-call-window.c:180
+#: ../src/empathy-call-window.c:411
msgid "Gamma"
msgstr "Gamma"
-#: ../src/empathy-call-window.c:212
+#: ../src/empathy-call-window.c:516
msgid "Volume"
msgstr "Volum"
-#: ../src/empathy-call-window.c:287
+#: ../src/empathy-call-window.c:697
msgid "_Sidebar"
msgstr "_Sidelinje"
-#: ../src/empathy-call-window.c:305
+#: ../src/empathy-call-window.c:716
msgid "Dialpad"
msgstr "Nummertavle"
-#: ../src/empathy-call-window.c:309
+#: ../src/empathy-call-window.c:722
msgid "Audio input"
msgstr ""
-#: ../src/empathy-call-window.c:313
+#: ../src/empathy-call-window.c:726
msgid "Video input"
msgstr ""
-#: ../src/empathy-call-window.c:326
-msgid "Connecting..."
-msgstr "Kobler til..."
+#: ../src/empathy-call-window.c:789
+#, c-format
+msgid "Call with %s"
+msgstr "Samtale med %s"
-#: ../src/empathy-call-window.c:489
+#: ../src/empathy-call-window.c:860
+msgid "Call"
+msgstr "Ring"
+
+#. Translators: number of minutes:seconds the caller has been connected
+#: ../src/empathy-call-window.c:1204
#, c-format
-msgid "Connected -- %d:%02dm"
+msgid "Connected — %d:%02dm"
msgstr "Koblet til - %d:%02dm"
-#: ../src/empathy-call-window.glade.h:1
+#: ../src/empathy-call-window.ui.h:1
msgid "Hang up"
msgstr "Legg på"
-#: ../src/empathy-call-window.glade.h:2
-msgid "Send Video"
-msgstr "Send video"
+#: ../src/empathy-call-window.ui.h:2
+msgid "Redial"
+msgstr ""
-#: ../src/empathy-call-window.glade.h:3
+#: ../src/empathy-call-window.ui.h:3
+msgid "Send Audio"
+msgstr "Send lyd"
+
+#: ../src/empathy-call-window.ui.h:4
msgid "Send video"
msgstr "Send video"
-#: ../src/empathy-call-window.glade.h:4
+#: ../src/empathy-call-window.ui.h:5
msgid "Video preview"
msgstr "Forhåndsvis video"
-#: ../src/empathy-call-window.glade.h:6
+#: ../src/empathy-call-window.ui.h:6
+msgid "_Call"
+msgstr "_Ring"
+
+#: ../src/empathy-call-window.ui.h:7 ../src/empathy-main-window.ui.h:21
msgid "_View"
msgstr "_Vis"
-#: ../src/empathy-call-window.glade.h:7
-msgid "menuitem2"
-msgstr ""
-
-#: ../src/empathy-chat-window.c:313
+#: ../src/empathy-chat-window.c:342
#, c-format
msgid "Conversations (%d)"
msgstr "Samtaler (%d)"
-#: ../src/empathy-chat-window.c:418
+#: ../src/empathy-chat-window.c:470
msgid "Topic:"
msgstr "Emne:"
-#: ../src/empathy-chat-window.c:423
+#: ../src/empathy-chat-window.c:474
msgid "Typing a message."
msgstr "Skriver en melding"
-#: ../src/empathy-chat-window.c:892 ../src/empathy-event-manager.c:424
-#, fuzzy, c-format
+#: ../src/empathy-chat-window.c:935 ../src/empathy-event-manager.c:429
+#, c-format
msgid "New message from %s"
-msgstr ""
-"Ny melding fra %s:\n"
-"%s"
-
-#: ../src/empathy-chat-window.glade.h:1
-msgid "C_lear"
-msgstr "T_øm"
-
-#: ../src/empathy-chat-window.glade.h:2
-msgid "Chat"
-msgstr "Prat"
-
-#: ../src/empathy-chat-window.glade.h:3
-msgid "Insert _Smiley"
-msgstr "Sett inn _smilefjes"
-
-#: ../src/empathy-chat-window.glade.h:4
-msgid "Invitation _message:"
-msgstr "Invitasjons_melding:"
-
-#: ../src/empathy-chat-window.glade.h:5
-msgid "Invite"
-msgstr "Inviter"
-
-#: ../src/empathy-chat-window.glade.h:6
-msgid "Move Tab _Left"
-msgstr "Flytt fane til _venstre"
-
-#: ../src/empathy-chat-window.glade.h:7
-msgid "Move Tab _Right"
-msgstr "Flytt fane til _høyre"
-
-#: ../src/empathy-chat-window.glade.h:8
-msgid "Select who would you like to invite:"
-msgstr "Velg de du vil invitere:"
-
-#: ../src/empathy-chat-window.glade.h:9
-msgid "You have been invited to join a chat conference."
-msgstr "Du er invitert til en konferansesamtale."
-
-#: ../src/empathy-chat-window.glade.h:10
-msgid "_Contact"
-msgstr "_Kontakt"
-
-#: ../src/empathy-chat-window.glade.h:11 ../src/empathy-main-window.glade.h:10
-msgid "_Contents"
-msgstr "_Innhold"
-
-#: ../src/empathy-chat-window.glade.h:12
-msgid "_Conversation"
-msgstr "_Samtale"
-
-#: ../src/empathy-chat-window.glade.h:13
-msgid "_Detach Tab"
-msgstr "_Løsne fane"
-
-#: ../src/empathy-chat-window.glade.h:15
-msgid "_Favorite Chatroom"
-msgstr "_Favorittrom"
-
-#: ../src/empathy-chat-window.glade.h:16 ../src/empathy-main-window.glade.h:12
-msgid "_Help"
-msgstr "_Hjelp"
-
-#: ../src/empathy-chat-window.glade.h:17
-msgid "_Next Tab"
-msgstr "_Neste fane"
-
-#: ../src/empathy-chat-window.glade.h:18
-msgid "_Previous Tab"
-msgstr "_Forrige fane"
+msgstr "Ny melding fra %s"
-#: ../src/empathy-chat-window.glade.h:19
-msgid "_Tabs"
-msgstr "_Faner"
-
-#: ../src/empathy-chatrooms-window.c:262
+#: ../src/empathy-chatrooms-window.c:258
msgid "Name"
msgstr "Navn"
-#: ../src/empathy-chatrooms-window.c:280
+#: ../src/empathy-chatrooms-window.c:276
msgid "Room"
msgstr "Rom"
-#: ../src/empathy-chatrooms-window.c:289
+#: ../src/empathy-chatrooms-window.c:285
msgid "Auto-Connect"
msgstr "Koble til automatisk"
-#: ../src/empathy-chatrooms-window.glade.h:2
-msgid "Edit Favorite Room"
-msgstr "Endre favorittrom"
-
-#: ../src/empathy-chatrooms-window.glade.h:3
-msgid "Join room on start_up"
-msgstr "Bli med i rom ved oppstart"
-
-#: ../src/empathy-chatrooms-window.glade.h:4
-msgid "Join this chat room when Empathy starts and you are connected"
-msgstr ""
-"Bli med i dette samtalerommet når Empathy starter opp og du blir koblet til"
-
-#: ../src/empathy-chatrooms-window.glade.h:5
+#: ../src/empathy-chatrooms-window.ui.h:2
msgid "Manage Favorite Rooms"
msgstr "Håndter favorittrom"
-#: ../src/empathy-chatrooms-window.glade.h:6
-msgid "N_ame:"
-msgstr "_Navn:"
-
-#: ../src/empathy-chatrooms-window.glade.h:7
-msgid "S_erver:"
-msgstr "_Tjener:"
-
-#: ../src/empathy-chatrooms-window.glade.h:9
-#: ../src/empathy-new-chatroom-dialog.glade.h:9
-msgid "_Room:"
-msgstr "_Rom:"
-
-#: ../src/empathy-event-manager.c:372
+#: ../src/empathy-event-manager.c:377
msgid "Incoming call"
msgstr "Innkommende samtale"
-#: ../src/empathy-event-manager.c:375
+#: ../src/empathy-event-manager.c:380
#, c-format
msgid "%s is calling you, do you want to answer?"
msgstr "%s ringer deg. Vil du svare?"
-#: ../src/empathy-event-manager.c:382
+#: ../src/empathy-event-manager.c:387
msgid "_Reject"
msgstr "Av_vis"
-#: ../src/empathy-event-manager.c:388
+#: ../src/empathy-event-manager.c:393
msgid "_Answer"
msgstr "Sv_ar"
-#: ../src/empathy-event-manager.c:511
+#: ../src/empathy-event-manager.c:507
#, c-format
msgid "Incoming call from %s"
msgstr "Innkommende samtale fra %s"
-#: ../src/empathy-event-manager.c:559
+#: ../src/empathy-event-manager.c:547
#, c-format
msgid "%s is offering you an invitation"
msgstr "%s tilbyr deg en invitasjon"
-#: ../src/empathy-event-manager.c:565
-#, fuzzy
+#: ../src/empathy-event-manager.c:553
msgid "An external application will be started to handle it."
-msgstr ""
-"%s sender deg en invitasjon. Et eksternt program vil bli startet for å "
-"håndtere den."
+msgstr "Et eksternt program vil bli startet for å håndtere den."
-#: ../src/empathy-event-manager.c:570
-#, fuzzy
+#: ../src/empathy-event-manager.c:558
msgid "You don't have the needed external application to handle it."
+msgstr "Du har ikke nødvendig eksternt program som kan håndtere dette."
+
+#: ../src/empathy-event-manager.c:685
+msgid "Room invitation"
+msgstr "Invitasjon til rom"
+
+#: ../src/empathy-event-manager.c:688
+#, c-format
+msgid "%s is inviting you to join %s"
+msgstr ""
+
+#: ../src/empathy-event-manager.c:696
+msgid "_Decline"
+msgstr "_Avslå"
+
+#: ../src/empathy-event-manager.c:701
+#: ../src/empathy-new-chatroom-dialog.ui.h:7
+msgid "_Join"
+msgstr "_Bli med"
+
+#: ../src/empathy-event-manager.c:740
+#, c-format
+msgid "%s invited you to join %s"
msgstr ""
-"%s sender deg en invitasjon, men du har ikke nødvendig eksternt program som "
-"kan håndtere dette."
-#: ../src/empathy-event-manager.c:706
+#: ../src/empathy-event-manager.c:766
#, c-format
msgid "Incoming file transfer from %s"
msgstr "Innkommende filoverføring fra %s"
-#: ../src/empathy-event-manager.c:800
+#: ../src/empathy-event-manager.c:946
#, c-format
msgid "Subscription requested by %s"
msgstr "Abonnement forespurt av %s"
-#: ../src/empathy-event-manager.c:804
+#: ../src/empathy-event-manager.c:950
#, c-format
msgid ""
"\n"
@@ -1657,313 +1831,327 @@ msgstr ""
"\n"
"Melding: %s"
-#: ../src/empathy-ft-manager.c:113
+#. Translators: time left, when it is more than one hour
+#: ../src/empathy-ft-manager.c:101
#, c-format
msgid "%u:%02u.%02u"
msgstr "%u:%02u.%02u"
-#: ../src/empathy-ft-manager.c:115
+#. Translators: time left, when is is less than one hour
+#: ../src/empathy-ft-manager.c:104
#, c-format
msgid "%02u.%02u"
msgstr "%02u.%02u"
-#: ../src/empathy-ft-manager.c:164
-msgid "No reason was specified"
-msgstr "Ingen årsak oppgitt"
-
-#: ../src/empathy-ft-manager.c:166
-msgid "The change in state was requested"
-msgstr "Tilstandsendring ble etterspurt"
-
-#: ../src/empathy-ft-manager.c:168
-msgid "You canceled the file transfer"
-msgstr "Du avbrøt filoverføringen"
-
-#: ../src/empathy-ft-manager.c:170
-msgid "The other participant canceled the file transfer"
-msgstr "Avsender avbrøt filoverføringen"
-
-#: ../src/empathy-ft-manager.c:172
-msgid "Error while trying to transfer the file"
-msgstr "Feil under overføring av filen"
+#: ../src/empathy-ft-manager.c:180
+msgctxt "file transfer percent"
+msgid "Unknown"
+msgstr "Ukjent"
-#: ../src/empathy-ft-manager.c:174
-msgid "The other participant is unable to transfer the file"
-msgstr "Avsender kan ikke overføre filen"
+#: ../src/empathy-ft-manager.c:275
+#, c-format
+msgid "%s of %s at %s/s"
+msgstr "%s av %s med %s/s"
-#: ../src/empathy-ft-manager.c:176
-msgid "Unknown reason"
-msgstr "Ukjent årsak"
+#: ../src/empathy-ft-manager.c:276
+#, c-format
+msgid "%s of %s"
+msgstr "%s av %s"
#. translators: first %s is filename, second %s is the contact name
-#: ../src/empathy-ft-manager.c:224
+#: ../src/empathy-ft-manager.c:307
#, c-format
msgid "Receiving \"%s\" from %s"
msgstr "Mottar «%s» fra %s"
#. translators: first %s is filename, second %s is the contact name
-#: ../src/empathy-ft-manager.c:227
+#: ../src/empathy-ft-manager.c:310
#, c-format
msgid "Sending \"%s\" to %s"
msgstr "Sender «%s» til %s"
-#: ../src/empathy-ft-manager.c:237
-msgctxt "file size"
-msgid "Unknown"
-msgstr "Ukjent"
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:340
+#, c-format
+msgid "Error receiving \"%s\" from %s"
+msgstr "Feil ved mottak av «%s» fra %s"
+
+#: ../src/empathy-ft-manager.c:343
+msgid "Error receiving a file"
+msgstr "Feil ved mottak av en fil"
-#. translators: first %s is the transferred size, second %s is
-#. * the total file size
-#: ../src/empathy-ft-manager.c:245
+#: ../src/empathy-ft-manager.c:348
#, c-format
-msgid "%s of %s"
-msgstr "%s av %s"
+msgid "Error sending \"%s\" to %s"
+msgstr "Feil ved sending av «%s» til %s"
-#: ../src/empathy-ft-manager.c:252
-msgid "Waiting the other participant's response"
-msgstr "Venter på svar fra motparten"
+#: ../src/empathy-ft-manager.c:351
+msgid "Error sending a file"
+msgstr "Feil ved sending av en fil"
-#: ../src/empathy-ft-manager.c:262
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:490
#, c-format
msgid "\"%s\" received from %s"
msgstr "«%s» mottatt fra %s"
-#: ../src/empathy-ft-manager.c:268
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:495
#, c-format
msgid "\"%s\" sent to %s"
msgstr "«%s» sendt til %s"
-#: ../src/empathy-ft-manager.c:271
+#: ../src/empathy-ft-manager.c:498
msgid "File transfer completed"
msgstr "Filoverføring fullført"
-#: ../src/empathy-ft-manager.c:280
-#, c-format
-msgid "\"%s\" receiving from %s"
-msgstr "«%s» mottas fra %s"
+#: ../src/empathy-ft-manager.c:617 ../src/empathy-ft-manager.c:784
+msgid "Waiting for the other participant's response"
+msgstr "Venter på svar fra motparten"
-#: ../src/empathy-ft-manager.c:286
+#: ../src/empathy-ft-manager.c:643 ../src/empathy-ft-manager.c:681
#, c-format
-msgid "\"%s\" sending to %s"
-msgstr "«%s» sendes til %s"
+msgid "Checking integrity of \"%s\""
+msgstr "Sjekker integriteten for «%s»"
-#: ../src/empathy-ft-manager.c:289
+#: ../src/empathy-ft-manager.c:646 ../src/empathy-ft-manager.c:684
#, c-format
-msgid "File transfer canceled: %s"
-msgstr "Filoverføring avbrutt: %s"
-
-#: ../src/empathy-ft-manager.c:304
-msgctxt "remaining time"
-msgid "Unknown"
-msgstr "Ukjent"
-
-#: ../src/empathy-ft-manager.c:364
-msgctxt "file transfer percent"
-msgid "Unknown"
-msgstr "Ukjent"
+msgid "Hashing \"%s\""
+msgstr ""
-#: ../src/empathy-ft-manager.c:700
+#: ../src/empathy-ft-manager.c:1024
msgid "%"
msgstr "%"
-#: ../src/empathy-ft-manager.c:712
+#: ../src/empathy-ft-manager.c:1036
msgid "File"
msgstr "Fil"
-#: ../src/empathy-ft-manager.c:734
+#: ../src/empathy-ft-manager.c:1058
msgid "Remaining"
msgstr "Gjenstår"
-#: ../src/empathy-ft-manager.c:885
-msgid "Cannot save file to this location"
-msgstr "Kan ikke lagre filen til denne lokasjonen"
-
-#: ../src/empathy-ft-manager.c:931
-msgid "Save file as..."
-msgstr "Lagre fil som..."
-
-#: ../src/empathy-ft-manager.c:1001
-msgid "unknown size"
-msgstr "ukjent størrelse"
-
-#: ../src/empathy-ft-manager.c:1007
-#, c-format
-msgid "%s would like to send you a file"
-msgstr "%s ønsker å sende deg en fil"
-
-#: ../src/empathy-ft-manager.c:1012
-#, c-format
-msgid "Do you want to accept the file \"%s\" (%s)?"
-msgstr "Vil du motta filen «%s» (%s)?"
-
-#. Decline button
-#: ../src/empathy-ft-manager.c:1021
-msgid "_Decline"
-msgstr "_Avslå"
-
-#. Accept button
-#: ../src/empathy-ft-manager.c:1030
-msgid "_Accept"
-msgstr "Godt_a"
-
-#: ../src/empathy-ft-manager.glade.h:1
+#: ../src/empathy-ft-manager.ui.h:1
msgid "File transfers"
msgstr "Filoverføringer"
-#: ../src/empathy-ft-manager.glade.h:2
+#: ../src/empathy-ft-manager.ui.h:2
msgid "Remove completed, canceled and failed file transfers from the list"
msgstr "Fjerning fullført. Filoverføringer fra listen er avbrutt og feilet"
-#: ../src/empathy-import-dialog.c:254
+#. Translators: this is the header of a treeview column
+#: ../src/empathy-import-dialog.c:259
msgid "Import"
msgstr "Importer"
-#: ../src/empathy-import-dialog.c:263
+#: ../src/empathy-import-dialog.c:268
msgid "Protocol"
msgstr "Protokoll"
-#: ../src/empathy-import-dialog.c:289
+#: ../src/empathy-import-dialog.c:294
msgid "Source"
msgstr "Kilde"
-#: ../src/empathy-import-dialog.c:377
+#: ../src/empathy-import-dialog.c:388
msgid ""
"No accounts to import could be found. Empathy currently only supports "
"importing accounts from Pidgin."
msgstr "Fant ingen kontoer å importere. Empathy støtter kun import fra Pidgin."
-#: ../src/empathy-import-dialog.glade.h:1
+#: ../src/empathy-import-dialog.ui.h:1
msgid "Import Accounts"
msgstr "Importer kontoer"
-#: ../src/empathy-main-window.c:391
+#: ../src/empathy-main-window.c:395
+msgid "_Edit account"
+msgstr "R_ediger konto"
+
+#: ../src/empathy-main-window.c:498
msgid "No error specified"
msgstr "Ingen feil oppgitt"
-#: ../src/empathy-main-window.c:394
+#: ../src/empathy-main-window.c:501
msgid "Network error"
msgstr "Nettverksfeil"
-#: ../src/empathy-main-window.c:397
+#: ../src/empathy-main-window.c:504
msgid "Authentication failed"
msgstr "Autentiseringen feilet"
-#: ../src/empathy-main-window.c:400
+#: ../src/empathy-main-window.c:507
msgid "Encryption error"
msgstr "Krypteringsfeil"
-#: ../src/empathy-main-window.c:403
+#: ../src/empathy-main-window.c:510
msgid "Name in use"
msgstr "Navn i bruk"
-#: ../src/empathy-main-window.c:406
+#: ../src/empathy-main-window.c:513
msgid "Certificate not provided"
msgstr "Sertifikat ikke oppgitt"
-#: ../src/empathy-main-window.c:409
+#: ../src/empathy-main-window.c:516
msgid "Certificate untrusted"
msgstr "Stoler ikke på sertifikat"
-#: ../src/empathy-main-window.c:412
+#: ../src/empathy-main-window.c:519
msgid "Certificate expired"
msgstr "Sertifikat utgått"
-#: ../src/empathy-main-window.c:415
+#: ../src/empathy-main-window.c:522
msgid "Certificate not activated"
msgstr "Sertifikat ikke aktivert"
-#: ../src/empathy-main-window.c:418
+#: ../src/empathy-main-window.c:525
msgid "Certificate hostname mismatch"
msgstr "Feil vertsnavn i forhold til sertifikat"
-#: ../src/empathy-main-window.c:421
+#: ../src/empathy-main-window.c:528
msgid "Certificate fingerprint mismatch"
msgstr "Fingeravtrykk stemmer ikke for sertifikat"
-#: ../src/empathy-main-window.c:424
+#: ../src/empathy-main-window.c:531
msgid "Certificate self-signed"
msgstr "Selvsignert sertifikat"
-#: ../src/empathy-main-window.c:427
+#: ../src/empathy-main-window.c:534
msgid "Certificate error"
msgstr "Sertifikatsfeil"
-#: ../src/empathy-main-window.c:430
+#: ../src/empathy-main-window.c:537
msgid "Unknown error"
msgstr "Ukjent feil"
-#: ../src/empathy-main-window.c:594
-msgid "Show and edit accounts"
-msgstr "Vis og rediger kontoer"
-
-#: ../src/empathy-main-window.c:974
+#: ../src/empathy-main-window.c:888
msgid "Contact"
msgstr "Kontakt"
-#: ../src/empathy-main-window.c:1176
-msgid "_Edit account"
-msgstr "R_ediger konto"
+#: ../src/empathy-main-window.c:1220
+msgid "Show and edit accounts"
+msgstr "Vis og rediger kontoer"
-#: ../src/empathy-main-window.glade.h:1
+#: ../src/empathy-main-window.ui.h:1
msgid "Contact List"
msgstr "Kontaktliste"
-#: ../src/empathy-main-window.glade.h:2
+#: ../src/empathy-main-window.ui.h:2
+msgid "Contacts on a _Map"
+msgstr "Kontakter på et _kart"
+
+#: ../src/empathy-main-window.ui.h:3
msgid "Context"
msgstr "Sammenheng"
-#: ../src/empathy-main-window.glade.h:3
+#: ../src/empathy-main-window.ui.h:4
msgid "Join _Favorites"
msgstr "Bli med i _favoritter"
-#: ../src/empathy-main-window.glade.h:4
-msgid "Join _New..."
-msgstr "Bli med i _ny ..."
-
-#: ../src/empathy-main-window.glade.h:5
+#: ../src/empathy-main-window.ui.h:5
msgid "Manage Favorites"
msgstr "Håndter favoritter"
-#: ../src/empathy-main-window.glade.h:6
-msgid "Show _Offline Contacts"
-msgstr "Vis frak_oblede kontakter"
-
-#: ../src/empathy-main-window.glade.h:7
+#: ../src/empathy-main-window.ui.h:6
msgid "_Accounts"
msgstr "_Kontoer"
-#: ../src/empathy-main-window.glade.h:8
+#: ../src/empathy-main-window.ui.h:7
msgid "_Add Contact..."
msgstr "_Legg til kontakt ..."
-#: ../src/empathy-main-window.glade.h:13 ../src/empathy-status-icon.glade.h:2
+#: ../src/empathy-main-window.ui.h:9
+msgid "_Contents"
+msgstr "_Innhold"
+
+#: ../src/empathy-main-window.ui.h:10
+msgid "_Debug"
+msgstr "_Feilsøk"
+
+#: ../src/empathy-main-window.ui.h:12
+msgid "_File Transfers"
+msgstr "_Filoverføringer"
+
+#: ../src/empathy-main-window.ui.h:13
+msgid "_Help"
+msgstr "_Hjelp"
+
+#: ../src/empathy-main-window.ui.h:14
+#, fuzzy
+msgid "_Join..."
+msgstr "Bli med i _ny ..."
+
+#: ../src/empathy-main-window.ui.h:15 ../src/empathy-status-icon.ui.h:2
msgid "_New Conversation..."
msgstr "_Ny samtale..."
-#: ../src/empathy-main-window.glade.h:14
+#: ../src/empathy-main-window.ui.h:16
+msgid "_Offline Contacts"
+msgstr "Frak_oblede kontakter"
+
+#: ../src/empathy-main-window.ui.h:17
msgid "_Personal Information"
msgstr "Personlig _informasjon"
-#: ../src/empathy-main-window.glade.h:16
+#: ../src/empathy-main-window.ui.h:19
+msgid "_Previous Conversations"
+msgstr "_Tidligere samtaler"
+
+#: ../src/empathy-main-window.ui.h:20
msgid "_Room"
msgstr "_Rom"
-#: ../src/empathy-new-chatroom-dialog.c:291
-msgid "Chat Rooms"
+#: ../src/empathy-new-chatroom-dialog.c:332
+msgid "Chat Room"
msgstr "Samtalerom"
-#: ../src/empathy-new-chatroom-dialog.glade.h:2
-msgid "Browse:"
-msgstr "Bla gjennom:"
+#: ../src/empathy-new-chatroom-dialog.c:348
+msgid "Members"
+msgstr "Medlemmer"
+
+#: ../src/empathy-new-chatroom-dialog.c:492
+#, c-format
+msgctxt ""
+"Room/Join's roomlist tooltip. Parametersare a channel name, yes/no, yes/no "
+"and a number."
+msgid ""
+"<b>%s</b>\n"
+"Invite required: %s\n"
+"Password required: %s\n"
+"Members: %s"
+msgstr ""
+
+#: ../src/empathy-new-chatroom-dialog.c:494
+#: ../src/empathy-new-chatroom-dialog.c:495
+msgid "Yes"
+msgstr "Ja"
+
+#: ../src/empathy-new-chatroom-dialog.c:494
+#: ../src/empathy-new-chatroom-dialog.c:495
+msgid "No"
+msgstr "Nei"
+
+#: ../src/empathy-new-chatroom-dialog.c:522
+msgid "Could not start room listing"
+msgstr ""
+
+#: ../src/empathy-new-chatroom-dialog.c:532
+msgid "Could not stop room listing"
+msgstr ""
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:2
+msgid "Couldn't load room list"
+msgstr ""
-#: ../src/empathy-new-chatroom-dialog.glade.h:3
+#: ../src/empathy-new-chatroom-dialog.ui.h:3
msgid ""
"Enter the room name to join here or click on one or more rooms in the list."
msgstr ""
"Oppgi navn på rom du vil bli med i eller klikk på ett eller flere rom på "
"listen."
-#: ../src/empathy-new-chatroom-dialog.glade.h:4
+#: ../src/empathy-new-chatroom-dialog.ui.h:4
msgid ""
"Enter the server which hosts the room, or leave it empty if the room is on "
"the current account's server"
@@ -1971,78 +2159,91 @@ msgstr ""
"Oppgi tjener som er vert for rommet, eller la stå tom hvis rommet er på "
"aktiv kontos tjener"
-#: ../src/empathy-new-chatroom-dialog.glade.h:5
-msgid "Join"
-msgstr "Bli med"
-
-#: ../src/empathy-new-chatroom-dialog.glade.h:6
-msgid "Join New"
-msgstr "Bli med i ny"
+#: ../src/empathy-new-chatroom-dialog.ui.h:5
+#, fuzzy
+msgid "Join Room"
+msgstr "Rom"
-#: ../src/empathy-new-chatroom-dialog.glade.h:7
-msgid "Re_fresh"
-msgstr "Opp_dater"
+#: ../src/empathy-new-chatroom-dialog.ui.h:6
+#, fuzzy
+msgid "Room List"
+msgstr "Locale for _romliste:"
-#: ../src/empathy-new-chatroom-dialog.glade.h:8
-msgid ""
-"This list represents all chat rooms hosted on the server you have entered."
-msgstr ""
-"Denne listen representerer alle praterom som finnes på tjeneren du har "
-"oppgitt."
+#: ../src/empathy-new-chatroom-dialog.ui.h:8
+msgid "_Room:"
+msgstr "_Rom:"
-#: ../src/empathy-preferences.c:157
+#: ../src/empathy-preferences.c:162
msgid "Message received"
msgstr "Melding mottatt"
-#: ../src/empathy-preferences.c:158
+#: ../src/empathy-preferences.c:163
msgid "Message sent"
msgstr "Melding sendt"
-#: ../src/empathy-preferences.c:159
+#: ../src/empathy-preferences.c:164
msgid "New conversation"
msgstr "Ny samtale"
-#: ../src/empathy-preferences.c:160
+#: ../src/empathy-preferences.c:165
msgid "Contact goes online"
msgstr "Kontakt kobler til"
-#: ../src/empathy-preferences.c:161
+#: ../src/empathy-preferences.c:166
msgid "Contact goes offline"
msgstr "Kontakt kobler fra"
-#: ../src/empathy-preferences.c:162
+#: ../src/empathy-preferences.c:167
msgid "Account connected"
msgstr "Konto koblet til"
-#: ../src/empathy-preferences.c:163
+#: ../src/empathy-preferences.c:168
msgid "Account disconnected"
msgstr "Konto koblet fra"
-#: ../src/empathy-preferences.c:397
+#: ../src/empathy-preferences.c:435
msgid "Language"
msgstr "Språk"
-#: ../src/empathy-preferences.glade.h:1
+#: ../src/empathy-preferences.ui.h:1
msgid "<b>Appearance</b>"
msgstr "<b>Utseende</b>"
-#: ../src/empathy-preferences.glade.h:2
-msgid "<b>Behaviour</b>"
+#: ../src/empathy-preferences.ui.h:2
+#, fuzzy
+msgid "<b>Behavior</b>"
msgstr "<b>Oppførsel</b>"
-#: ../src/empathy-preferences.glade.h:3
+#: ../src/empathy-preferences.ui.h:3
msgid "<b>Contact List</b>"
msgstr "<b>Kontaktliste</b>"
-#: ../src/empathy-preferences.glade.h:4
+#: ../src/empathy-preferences.ui.h:4
msgid "<b>Enable spell checking for languages:</b>"
msgstr "<b>Slå på stavekontroll for språkene:</b>"
-#: ../src/empathy-preferences.glade.h:5
+#: ../src/empathy-preferences.ui.h:5
+#, fuzzy
+msgid "<b>Geoclue Settings</b>"
+msgstr "<b>Innstillinger</b>"
+
+#: ../src/empathy-preferences.ui.h:6
msgid "<b>Play sound for events</b>"
msgstr "<b>Spill av lyd for hendelser</b>"
-#: ../src/empathy-preferences.glade.h:6
+#: ../src/empathy-preferences.ui.h:7
+#, fuzzy
+msgid "<b>Privacy</b>"
+msgstr "<b>Avansert</b>"
+
+#: ../src/empathy-preferences.ui.h:8
+msgid ""
+"<small>Reduced location accuracy means that nothing more precise than your "
+"city, state and country will be published. GPS coordinates will have a "
+"random value added (&#xB1;0.25&#xB0;).</small>"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:9
msgid ""
"<small>The list of languages reflects only the languages for which you have "
"a dictionary installed.</small>"
@@ -2050,106 +2251,131 @@ msgstr ""
"<small>Denne listen listen viser bare de språkene det er installert ordliste "
"for."
-#: ../src/empathy-preferences.glade.h:7
+#: ../src/empathy-preferences.ui.h:10
+msgid "Allow _GPS usage"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:11
+msgid "Allow _cellphone usage"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:12
+msgid "Allow _network usage"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:13
msgid "Automatically _connect on startup "
msgstr "_Koble til automatisk ved oppstart "
-#: ../src/empathy-preferences.glade.h:8
+#: ../src/empathy-preferences.ui.h:14
msgid "Avatars are user chosen images shown in the contact list"
msgstr "Personbilder er valgt av brukerne for å vise i kontaktlisten"
-#: ../src/empathy-preferences.glade.h:9
+#: ../src/empathy-preferences.ui.h:15
msgid "Chat Th_eme:"
msgstr "Samtale_tema:"
-#: ../src/empathy-preferences.glade.h:10
+#: ../src/empathy-preferences.ui.h:16
#, fuzzy
msgid "Disable notifications when _away or busy"
msgstr "Slå av lyder når du er b_orte eller opptatt"
-#: ../src/empathy-preferences.glade.h:11
+#: ../src/empathy-preferences.ui.h:17
msgid "Disable sounds when _away or busy"
msgstr "Slå av lyder når du er b_orte eller opptatt"
-#: ../src/empathy-preferences.glade.h:12
+#: ../src/empathy-preferences.ui.h:18
msgid "Enable notifications when the _chat is not focused"
msgstr ""
-#: ../src/empathy-preferences.glade.h:13
+#: ../src/empathy-preferences.ui.h:19
msgid "General"
msgstr "Generelt"
-#: ../src/empathy-preferences.glade.h:14
+#: ../src/empathy-preferences.ui.h:20
+#, fuzzy
+msgid "Location"
+msgstr "Varsling"
+
+#: ../src/empathy-preferences.ui.h:21
msgid "Notifications"
msgstr "Varsling"
-#: ../src/empathy-preferences.glade.h:15
+#: ../src/empathy-preferences.ui.h:22
msgid "Preferences"
msgstr "Brukervalg"
-#: ../src/empathy-preferences.glade.h:16
+#: ../src/empathy-preferences.ui.h:23
msgid "Show _avatars"
msgstr "Vis person_bilder"
-#: ../src/empathy-preferences.glade.h:17
+#: ../src/empathy-preferences.ui.h:24
msgid "Show _smileys as images"
msgstr "Vis _smilefjes som bilder"
-#: ../src/empathy-preferences.glade.h:18
+#: ../src/empathy-preferences.ui.h:25
msgid "Show co_mpact contact list"
msgstr "Vis ko_mpakt kontaktliste"
-#: ../src/empathy-preferences.glade.h:19
+#: ../src/empathy-preferences.ui.h:26
msgid "Sort by _name"
msgstr "Sorter på _navn"
-#: ../src/empathy-preferences.glade.h:20
+#: ../src/empathy-preferences.ui.h:27
msgid "Sort by s_tate"
msgstr "Sorter på s_tatus"
-#: ../src/empathy-preferences.glade.h:21
+#: ../src/empathy-preferences.ui.h:28
msgid "Sounds"
msgstr "Lyder"
-#: ../src/empathy-preferences.glade.h:22
+#: ../src/empathy-preferences.ui.h:29
msgid "Spell Checking"
msgstr "Stavekontroll"
-#: ../src/empathy-preferences.glade.h:23
+#: ../src/empathy-preferences.ui.h:30
msgid "Themes"
msgstr "Temaer"
-#: ../src/empathy-preferences.glade.h:24
+#: ../src/empathy-preferences.ui.h:31
#, fuzzy
msgid "_Enable bubble notifications"
msgstr "_Aktiver varsling med lyder"
-#: ../src/empathy-preferences.glade.h:25
+#: ../src/empathy-preferences.ui.h:32
msgid "_Enable sound notifications"
msgstr "_Aktiver varsling med lyder"
-#: ../src/empathy-preferences.glade.h:26
+#: ../src/empathy-preferences.ui.h:33
msgid "_Open new chats in separate windows"
msgstr "_Åpne nye samtaler i egne vinduer"
-#: ../src/empathy-status-icon.glade.h:1
+#: ../src/empathy-preferences.ui.h:34
+msgid "_Publish location to my contacts"
+msgstr ""
+
+#: ../src/empathy-preferences.ui.h:35
+msgid "_Reduce location accuracy"
+msgstr ""
+
+#: ../src/empathy-status-icon.ui.h:1
msgid "Status"
msgstr "Status"
-#: ../src/empathy-status-icon.glade.h:3
+#: ../src/empathy-status-icon.ui.h:3
msgid "_Quit"
msgstr "_Avslutt"
-#: ../src/empathy-status-icon.glade.h:4
+#: ../src/empathy-status-icon.ui.h:4
msgid "_Show Contact List"
msgstr "Vi_s kontaktliste"
-#: ../src/empathy-tube-dispatch.c:356
+#: ../src/empathy-tube-dispatch.c:375
#, c-format
msgid "Unable to start application for service %s: %s"
msgstr "Kan ikke starte program for tjeneste %s: %s"
-#: ../src/empathy-tube-dispatch.c:427
+#: ../src/empathy-tube-dispatch.c:446
#, c-format
msgid ""
"An invitation was offered for service %s, but you don't have the needed "
@@ -2157,3 +2383,75 @@ msgid ""
msgstr ""
"En invitasjon ble sendt for tjeneste %s, men du har ikke programmet som "
"kreves for denne."
+
+#: ../src/empathy-call-window-fullscreen.ui.h:1
+msgid "gtk-leave-fullscreen"
+msgstr ""
+
+#: ../src/empathy-map-view.ui.h:1
+#, fuzzy
+msgid "Contact Map View"
+msgstr "Kontaktliste"
+
+#: ../src/empathy-debug-dialog.c:111 ../src/empathy-debug-dialog.c:1075
+msgid "Error"
+msgstr "Feil"
+
+#: ../src/empathy-debug-dialog.c:114 ../src/empathy-debug-dialog.c:1069
+msgid "Critical"
+msgstr "Kritisk"
+
+#: ../src/empathy-debug-dialog.c:117 ../src/empathy-debug-dialog.c:1063
+msgid "Warning"
+msgstr "Advarsel"
+
+#: ../src/empathy-debug-dialog.c:120 ../src/empathy-debug-dialog.c:1057
+#: ../src/empathy-debug-dialog.c:1105
+msgid "Message"
+msgstr "Melding"
+
+#: ../src/empathy-debug-dialog.c:123 ../src/empathy-debug-dialog.c:1051
+msgid "Info"
+msgstr "Info"
+
+#: ../src/empathy-debug-dialog.c:126 ../src/empathy-debug-dialog.c:1045
+msgid "Debug"
+msgstr "Feilsøk"
+
+#: ../src/empathy-debug-dialog.c:837
+msgid "Save"
+msgstr "Lagre"
+
+#: ../src/empathy-debug-dialog.c:940
+msgid "Debug Window"
+msgstr "Feilsøkingsvindu"
+
+#: ../src/empathy-debug-dialog.c:1013
+msgid "Pause"
+msgstr "Pause"
+
+#: ../src/empathy-debug-dialog.c:1025
+msgid "Level "
+msgstr "Nivå "
+
+#: ../src/empathy-debug-dialog.c:1094
+msgid "Time"
+msgstr "Tid"
+
+#: ../src/empathy-debug-dialog.c:1096
+msgid "Domain"
+msgstr "Domene"
+
+#: ../src/empathy-debug-dialog.c:1098
+msgid "Category"
+msgstr "Kategori"
+
+#: ../src/empathy-debug-dialog.c:1100
+msgid "Level"
+msgstr "Nivå"
+
+#: ../src/empathy-debug-dialog.c:1132
+msgid ""
+"The selected connection manager does not support the remote debugging "
+"extension."
+msgstr ""
diff --git a/po/ta.po b/po/ta.po
index 97719da85..d070d0bd6 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -1,20 +1,22 @@
-# translation of empathy.master.po to Tamil
+# translation of ta.po to
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Dr.T.vasudevan <agnihot3@gmail.com>, 2009.
+# Dr.T.Vasudevan <agnihot3@gmail.com>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: empathy.master\n"
+"Project-Id-Version: ta\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-20 13:57+0530\n"
-"PO-Revision-Date: 2009-05-07 21:34+0530\n"
-"Last-Translator: Dr.T.vasudevan <agnihot3@gmail.com>\n"
+"POT-Creation-Date: 2009-06-19 05:47+0530\n"
+"PO-Revision-Date: 2009-06-20 14:19+0530\n"
+"Last-Translator: Dr.T.Vasudevan <agnihot3@gmail.com>\n"
"Language-Team: Tamil <Ubuntu-l10n-tam@lists.ubuntu.com>\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"
+"X-Generator: Lokalize 0.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../data/empathy.desktop.in.in.h:1
msgid "Empathy Instant Messenger"
@@ -39,10 +41,8 @@ msgid "Chat window theme"
msgstr "அரட்டை சாளர கருத்து"
#: ../data/empathy.schemas.in.h:4
-msgid ""
-"Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
-msgstr ""
-"சொல் திருத்தி மொழிகளை பயன்படுத்த காற் புள்ளியால் பிரித்த பட்டியல் (எ-டு. en, fr, nl)"
+msgid "Comma separated list of spell checker languages to use (e.g. en, fr, nl)."
+msgstr "சொல் திருத்தி மொழிகளை பயன்படுத்த காற் புள்ளியால் பிரித்த பட்டியல் (எ-டு. en, fr, nl)"
#: ../data/empathy.schemas.in.h:5
msgid "Compact contact list"
@@ -65,151 +65,202 @@ msgid "Disable sounds when away"
msgstr "வெளியே உள்ள போது ஒலியை செயல் நீக்குக"
#: ../data/empathy.schemas.in.h:10
+msgid "Empathy can publish the user's location"
+msgstr "பயனரின் இடத்தை தொடர்புகளுக்கு எம்பதியால் காட்ட இயலும்"
+
+#: ../data/empathy.schemas.in.h:11
+msgid "Empathy can use the GPS to guess the location"
+msgstr "எம்பதியால் பயனரின் இடத்தை ஊகிக்க ஜிபிஎஸ் ஐ பயன்படுத்த இயலும்"
+
+#: ../data/empathy.schemas.in.h:12
+msgid "Empathy can use the cellular network to guess the location"
+msgstr "எம்பதியால் பயனரின் இடத்தை ஊகிக்க அலைபேசி வலையை பயன்படுத்த இயலும்"
+
+#: ../data/empathy.schemas.in.h:13
+msgid "Empathy can use the network to guess the location"
+msgstr "எம்பதியால் பயனரின் இடத்தை ஊகிக்க வலையை பயன்படுத்த இயலும்"
+
+#: ../data/empathy.schemas.in.h:14
msgid "Empathy default download folder"
msgstr "எம்பதி முன்னிருப்பு தரவிறக்க அடைவு"
-#: ../data/empathy.schemas.in.h:11
+#: ../data/empathy.schemas.in.h:15
msgid "Empathy has asked about importing accounts"
msgstr "எம்பதி கணக்குகளை இறக்குமதி செய்ய கேட்கிறது"
-#: ../data/empathy.schemas.in.h:12
+#: ../data/empathy.schemas.in.h:16
msgid "Empathy should auto-connect on startup"
msgstr "துவங்கும் போது எம்பதி தானியங்கியாக இணைக்க வேண்டும்."
-#: ../data/empathy.schemas.in.h:13
+#: ../data/empathy.schemas.in.h:17
+msgid "Empathy should reduce the location's accuracy"
+msgstr "துவங்கும் போது எம்பதி இடததின் குறிப்பை குறைக்க வேண்டும்."
+
+#: ../data/empathy.schemas.in.h:18
msgid "Empathy should use the avatar of the contact as the chat window icon"
-msgstr ""
-"துவங்கும் போது எம்பதி அரட்டை சாரளத்தில் சின்னமாக தொடர்பின் அவதாரத்தை காட்ட வேண்டும்."
+msgstr "துவங்கும் போது எம்பதி அரட்டை சாரளத்தில் சின்னமாக தொடர்பின் அவதாரத்தை காட்ட வேண்டும்."
-#: ../data/empathy.schemas.in.h:14
+#: ../data/empathy.schemas.in.h:19
msgid "Enable popup notifications for new messages"
msgstr "புதிய செய்திகளுக்கு துள்ளு அறிவிப்புகளை செயல்படுத்து "
-#: ../data/empathy.schemas.in.h:15
+#: ../data/empathy.schemas.in.h:20
msgid "Enable spell checker"
msgstr "சொல் திருத்தியை செயல்படுத்து"
-#: ../data/empathy.schemas.in.h:16
+#: ../data/empathy.schemas.in.h:21
msgid "Hide main window"
msgstr "முதன்மை சாளரத்தை மறை "
-#: ../data/empathy.schemas.in.h:17
+#: ../data/empathy.schemas.in.h:22
msgid "Hide the main window."
msgstr "முதன்மை சாளரத்தை மறை "
-#: ../data/empathy.schemas.in.h:18
+#: ../data/empathy.schemas.in.h:23
msgid "NetworkManager should be used"
msgstr "வலைப்பின்னல் மேலாளரை பயன்படுத்த வேண்டும்"
-#: ../data/empathy.schemas.in.h:19
+#: ../data/empathy.schemas.in.h:24
msgid "Nick completed character"
msgstr "செல்லப்பெயரை பூர்த்தி செய்யும் எழுத்துரு"
-#: ../data/empathy.schemas.in.h:20
+#: ../data/empathy.schemas.in.h:25
msgid "Open new chats in separate windows"
msgstr "புதிய அரட்டைகளை தனி சாளரத்தில் திற"
-#: ../data/empathy.schemas.in.h:21
+#: ../data/empathy.schemas.in.h:26
+msgid "Path of the adium theme to use"
+msgstr "பயன்படுத்த வேண்டிய ஏடியம் கருத்துக்கு பாதை"
+
+#: ../data/empathy.schemas.in.h:27
+msgid "Path of the adium theme to use if the theme used for chat is adium."
+msgstr "அரட்டை அறைகளில் எடியம் கருத்தை பயன்படுத்த வேண்டுமானால் அதன் பாதை"
+
+#: ../data/empathy.schemas.in.h:28
msgid "Play a sound for incoming messages"
msgstr "உள்வரும் செய்திகளுக்கு ஒலி எழுப்பு"
-#: ../data/empathy.schemas.in.h:22
+#: ../data/empathy.schemas.in.h:29
msgid "Play a sound for new conversations"
msgstr "உள்வரும் உரையாடல்களுக்கு ஒலி எழுப்பு"
-#: ../data/empathy.schemas.in.h:23
+#: ../data/empathy.schemas.in.h:30
msgid "Play a sound for outgoing messages"
msgstr "வெளிச்செல்லும் செய்திகளுக்கு ஒலி எழுப்பு"
-#: ../data/empathy.schemas.in.h:24
+#: ../data/empathy.schemas.in.h:31
msgid "Play a sound when a contact logs in"
msgstr "தொடர்பு உள் நுழைகையில் ஒலி எழுப்பு"
-#: ../data/empathy.schemas.in.h:25
+#: ../data/empathy.schemas.in.h:32
msgid "Play a sound when a contact logs out"
msgstr "தொடர்பு வெளி செல்கையில் ஒலி எழுப்பு"
-#: ../data/empathy.schemas.in.h:26
+#: ../data/empathy.schemas.in.h:33
msgid "Play a sound when we log in"
msgstr "நாம் உள் நுழைகையில் ஒலி எழுப்பு"
-#: ../data/empathy.schemas.in.h:27
+#: ../data/empathy.schemas.in.h:34
msgid "Play a sound when we log out"
msgstr "நாம் வெளி செல்கையில் ஒலி எழுப்பு"
-#: ../data/empathy.schemas.in.h:28
+#: ../data/empathy.schemas.in.h:35
msgid "Popup notifications if the chat isn't focused"
msgstr "அரட்டை குவிப்பில் இல்லையானால் வெளித்துள்ளல் மூலம் அறிவி"
-#: ../data/empathy.schemas.in.h:29
+#: ../data/empathy.schemas.in.h:36
msgid "Salut account is created"
msgstr "சாலுட் கணக்கு துவக்கப்பட்டது "
-#: ../data/empathy.schemas.in.h:30
+#: ../data/empathy.schemas.in.h:37
msgid "Show avatars"
msgstr "அவதாரங்களை காட்டு"
-#: ../data/empathy.schemas.in.h:31
+#: ../data/empathy.schemas.in.h:38
+msgid "Show contact list in rooms"
+msgstr "தொடர்பு பட்டியல் ஐ அறைகளில் காட்டு "
+
+#: ../data/empathy.schemas.in.h:39
msgid "Show hint about closing the main window"
msgstr "முதன்மை சாளரத்தை மூடிவது குறித்து குறிப்பு காட்டு "
-#: ../data/empathy.schemas.in.h:32
+#: ../data/empathy.schemas.in.h:40
msgid "Show offline contacts"
msgstr " வலை தொடர்பில்லாத தொடர்புகளை காட்டு"
-#: ../data/empathy.schemas.in.h:33
+#: ../data/empathy.schemas.in.h:41
msgid "Spell checking languages"
msgstr "எழுத்துப்பிழை திருத்த மொழி"
-#: ../data/empathy.schemas.in.h:34
+#: ../data/empathy.schemas.in.h:42
msgid "The default folder to save file transfers in."
msgstr "இடமாற்றிய கோப்புகளை சேமிக்க முன்னிருப்பு அடைவு"
-#: ../data/empathy.schemas.in.h:35
+#: ../data/empathy.schemas.in.h:43
msgid "The last directory that an avatar image was chosen from."
msgstr "அவதாரம் படம் தேர்ந்தெடுத்த கடைசி அடைவு "
-#: ../data/empathy.schemas.in.h:36
+#: ../data/empathy.schemas.in.h:44
msgid "The theme that is used to display the conversation in chat windows."
msgstr "அரட்டை சாளரங்களில் உரையாடல்களை காட்ட பயன்படும் கருத்து"
-#: ../data/empathy.schemas.in.h:37
+#: ../data/empathy.schemas.in.h:45
msgid "Use graphical smileys"
msgstr "வரைகலை சிரிப்பான்களை பயன்படுத்துக"
-#: ../data/empathy.schemas.in.h:38
+#: ../data/empathy.schemas.in.h:46
msgid "Use notification sounds"
msgstr "அறிவிப்பு ஒலிகளை பயன்படுத்துக"
-#: ../data/empathy.schemas.in.h:39
+#: ../data/empathy.schemas.in.h:47
msgid "Use theme for chat rooms"
msgstr "அரட்டை அறைகளுக்கு கருத்துக்களை பயன்படுத்துக"
-#: ../data/empathy.schemas.in.h:40
+#: ../data/empathy.schemas.in.h:48
+msgid "Whether or not Empathy can publish the user's location to his contacts."
+msgstr "பயனரின் இடத்தை தொடர்புகளுக்கு எம்பதி காட்ட வேண்டுமா இல்லையா?"
+
+#: ../data/empathy.schemas.in.h:49
+msgid "Whether or not Empathy can use the GPS to guess the location."
+msgstr "எம்பதி பயனரின் இடத்தை ஊகிக்க ஜிபிஎஸ் ஐ பயன்படுத்தலாமா இல்லையா."
+
+#: ../data/empathy.schemas.in.h:50
+msgid "Whether or not Empathy can use the cellular network to guess the location."
+msgstr "எம்பதி பயனரின் இடத்தை ஊகிக்க அலைபேசி வலையை பயன்படுத்தலாமா இல்லையா."
+
+#: ../data/empathy.schemas.in.h:51
+msgid "Whether or not Empathy can use the network to guess the location."
+msgstr "எம்பதி பயனரின் இடத்தை ஊகிக்க வலையை பயன்படுத்தலாமா இல்லையா."
+
+#: ../data/empathy.schemas.in.h:52
msgid ""
"Whether or not Empathy has asked about importing accounts from other "
"programs."
-msgstr ""
-"எம்பதி மற்ற நிரல்களில் இருந்து கணக்குகளை இறக்குமதி செய்வது குறித்து வினவியதா இல்லையா."
+msgstr "எம்பதி மற்ற நிரல்களில் இருந்து கணக்குகளை இறக்குமதி செய்வது குறித்து வினவியதா இல்லையா."
-#: ../data/empathy.schemas.in.h:41
+#: ../data/empathy.schemas.in.h:53
msgid ""
"Whether or not Empathy should automatically log in to your accounts on "
"startup."
msgstr "எம்பதி துவங்கும்போது கணக்குகளில் தானியங்கியாக உள்நுழைய வேண்டுமா இல்லையா."
-#: ../data/empathy.schemas.in.h:42
+#: ../data/empathy.schemas.in.h:54
+msgid ""
+"Whether or not Empathy should reduce the location's accuracy for privacy "
+"reasons."
+msgstr "அந்தரங்கத்தை காப்பாற்ற துவங்கும் போது எம்பதி இடத்தின் குறிப்பை குறைக்க வேண்டுமா இல்லையா"
+
+#: ../data/empathy.schemas.in.h:55
msgid ""
"Whether or not Empathy should use the avatar of the contact as the chat "
"window icon."
msgstr "எம்பதி தொடர்பின் அவதாரத்தை அரட்டை அறை சின்னமாக பயன்படுத்த வேண்டுமா இல்லையா."
-#: ../data/empathy.schemas.in.h:43
-msgid ""
-"Whether or not the Salut account has been created on the first Empathy run."
+#: ../data/empathy.schemas.in.h:56
+msgid "Whether or not the Salut account has been created on the first Empathy run."
msgstr "முதல் ஓட்டத்தில் எம்பதி சலூட் கணக்கை உருவாக்கியதா இல்லையா."
-#: ../data/empathy.schemas.in.h:44
+#: ../data/empathy.schemas.in.h:57
msgid ""
"Whether or not the network manager should be used to automatically "
"disconnect/reconnect."
@@ -217,57 +268,55 @@ msgstr ""
"வலைப்பின்னல் மேலாளர் ஐ தானியங்கியாக இணைக்கவும் இணைப்பு விலகவும் பயன்படுத்த வேண்டுமா "
"இல்லையா"
-#: ../data/empathy.schemas.in.h:45
+#: ../data/empathy.schemas.in.h:58
msgid ""
"Whether or not to check words typed against the languages you want to check "
"with."
msgstr "நீங்கள் விரும்பிய மொழிகளில் உள்ளிட்ட சொற்களை சோதிக்க வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:46
-msgid ""
-"Whether or not to convert smileys into graphical images in conversations."
+#: ../data/empathy.schemas.in.h:59
+msgid "Whether or not to convert smileys into graphical images in conversations."
msgstr "உரையாடல்களில் சிரிப்பான்களை வரைகலை படங்களாக மாற்ற வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:47
-msgid ""
-"Whether or not to play a sound to notify for contacts logging in the network."
+#: ../data/empathy.schemas.in.h:60
+msgid "Whether or not to play a sound to notify for contacts logging in the network."
msgstr "வலைப்பின்னலில் தொடர்புகள் உள்நுழையும் போது ஒலியை எழுப்ப வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:48
+#: ../data/empathy.schemas.in.h:61
msgid ""
"Whether or not to play a sound to notify for contacts logging off the "
"network."
msgstr "வலைப்பின்னலில் தொடர்புகள் வெளிச்செல்லும் போது ஒலியை எழுப்ப வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:49
+#: ../data/empathy.schemas.in.h:62
msgid "Whether or not to play a sound to notify for events."
msgstr "நிகழ்வுகள் போது ஒலியை எழுப்ப வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:50
+#: ../data/empathy.schemas.in.h:63
msgid "Whether or not to play a sound to notify for incoming messages."
msgstr "செய்திகள் உள்வரும் போது ஒலியை எழுப்ப வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:51
+#: ../data/empathy.schemas.in.h:64
msgid "Whether or not to play a sound to notify for new conversations."
msgstr "புதிய உரையாடல்கள் போது ஒலியை எழுப்ப வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:52
+#: ../data/empathy.schemas.in.h:65
msgid "Whether or not to play a sound to notify for outgoing messages."
msgstr "செய்திகள் வெளிச்செல்லும் போது ஒலியை எழுப்ப வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:53
+#: ../data/empathy.schemas.in.h:66
msgid "Whether or not to play a sound when logging in a network."
msgstr "வலைப்பின்னலில் உள்நுழையும் போது ஒலி இயக்க வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:54
+#: ../data/empathy.schemas.in.h:67
msgid "Whether or not to play a sound when logging off a network."
msgstr "வலைப்பின்னலில் வெளிச்செல்லும் போது ஒலி இயக்க வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:55
+#: ../data/empathy.schemas.in.h:68
msgid "Whether or not to play sound notifications when away or busy."
msgstr "வெளியே அல்லது வேலையாக உள்ள போது ஒலி அறிக்கைகளை இயக்க வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:56
+#: ../data/empathy.schemas.in.h:69
msgid ""
"Whether or not to show a popup notification when receiving a new message "
"even if the chat is already opened, but not focused."
@@ -275,26 +324,29 @@ msgstr ""
"புதிய செய்தி ஒன்று வரும்போது அரட்டை திறந்து இருந்து குவிப்பில் இல்லாவிட்டாலும் துள்ளு "
"அறிக்கையை காட்ட வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:57
-msgid ""
-"Whether or not to show a popup notification when receiving a new message."
+#: ../data/empathy.schemas.in.h:70
+msgid "Whether or not to show a popup notification when receiving a new message."
msgstr "புதிய செய்தி ஒன்று வரும்போது துள்ளு அறிக்கையை காட்ட வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:58
+#: ../data/empathy.schemas.in.h:71
msgid ""
"Whether or not to show avatars for contacts in the contact list and chat "
"windows."
msgstr "அரட்டை பட்டியலிலும் தொடர்பு பட்டியலிலும் அவதாரங்களை காட்ட வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:59
+#: ../data/empathy.schemas.in.h:72
msgid "Whether or not to show contacts that are offline in the contact list."
msgstr "தொடர்பு பட்டியலிலும் இணைப்பில் இல்லாத தொடர்புகளை காட்ட வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:60
+#: ../data/empathy.schemas.in.h:73
msgid "Whether or not to show popup notifications when away or busy."
msgstr "வெளியே அல்லது வேலையாக உள்ள போது துள்ளு அறிக்கைகளை காட்ட வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:61
+#: ../data/empathy.schemas.in.h:74
+msgid "Whether or not to show the contact list in chat rooms."
+msgstr "அரட்டை அறையில் தொடர்பு பட்டியலை காட்ட வேண்டுமா இல்லையா?"
+
+#: ../data/empathy.schemas.in.h:75
msgid ""
"Whether or not to show the message dialog about closing the main window with "
"the 'x' button in the title bar."
@@ -302,15 +354,15 @@ msgstr ""
"தலைப்பு பட்டியில் x பொத்தானால் முதன்மை சாளரத்தை மூடுவதை குறித்த உரையாடலை காட்ட "
"வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:62
+#: ../data/empathy.schemas.in.h:76
msgid "Whether to show the contact list in compact mode or not."
msgstr "அடக்கப்பாங்கில் தொடர்பு பட்டியலை காட்ட வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:63
+#: ../data/empathy.schemas.in.h:77
msgid "Whether to use the theme for chat rooms or not."
msgstr "அரட்டை அறைகளில் கருத்துக்களை பயன்படுத்த வேண்டுமா இல்லையா?"
-#: ../data/empathy.schemas.in.h:64
+#: ../data/empathy.schemas.in.h:78
msgid ""
"Which criterium to use when sorting the contact list. Default is to use sort "
"by the contact's name with the value \"name\". A value of \"state\" will "
@@ -320,36 +372,130 @@ msgstr ""
"பெயர் மதிப்பு \"பெயர்\". \"நிலை\" என்ற மதிப்பு தொடர்பை நிலையை பொருத்து "
"வரிசைப்படுத்தும்."
-#: ../libempathy/empathy-tp-contact-list.c:727 ../src/empathy.c:278
+#: ../libempathy/empathy-ft-handler.c:838
+msgid "The hash of the received file and the sent one do not match"
+msgstr "பெற்ற கோப்பின் ஹாஷ் உம் அனுப்பியகோப்பின் ஹாஷ் உம் இசையவில்லை."
+
+#: ../libempathy/empathy-ft-handler.c:1098
+msgid "File transfer not supported by remote contact"
+msgstr "கோப்பு பறிமாற்றத்துக்கு தொலை தொலைதொடர்பில் ஆதரவில்லை"
+
+#: ../libempathy/empathy-ft-handler.c:1156
+msgid "The selected file is not a regular file"
+msgstr "தேர்ந்தெடுத்த கோப்பு வழக்கமான கோப்பு அல்ல"
+
+#: ../libempathy/empathy-ft-handler.c:1165
+msgid "The selected file is empty"
+msgstr "தேர்ந்தெடுத்த கோப்பு காலியாக உள்ளது"
+
+#: ../libempathy/empathy-tp-contact-list.c:757 ../src/empathy.c:287
msgid "People nearby"
msgstr "அருகில் உள்ள மக்கள்"
-#: ../libempathy/empathy-utils.c:251
+#: ../libempathy/empathy-tp-file.c:279
+msgid "Socket type not supported"
+msgstr "சொருகி வாய் வகை க்கு ஆதரவில்லை"
+
+#: ../libempathy/empathy-tp-file.c:398
+msgid "No reason was specified"
+msgstr "காரணம் குறிப்பிடவில்லை"
+
+#: ../libempathy/empathy-tp-file.c:401
+msgid "The change in state was requested"
+msgstr "நிலையில் மாற்றம் வேண்டப்பட்டது"
+
+#: ../libempathy/empathy-tp-file.c:404
+msgid "You canceled the file transfer"
+msgstr "நீங்கள் கோப்பு பரி மாற்றத்தை ரத்து செய்தீர்கள்"
+
+#: ../libempathy/empathy-tp-file.c:407
+msgid "The other participant canceled the file transfer"
+msgstr "மற்ற பங்குதாரர் கோப்பு பரி மாற்றத்தை ரத்து செய்தார்."
+
+#: ../libempathy/empathy-tp-file.c:410
+msgid "Error while trying to transfer the file"
+msgstr "கோப்பு பரி மாற்றத்தில் பிழை "
+
+#: ../libempathy/empathy-tp-file.c:413
+msgid "The other participant is unable to transfer the file"
+msgstr "மற்ற பங்குதாரர் கோப்பு பரி மாற்றத்தை செய்ய முடியவில்லை."
+
+#: ../libempathy/empathy-tp-file.c:416
+msgid "Unknown reason"
+msgstr "தெரியாத காரணம்"
+
+#: ../libempathy/empathy-utils.c:274
msgid "Available"
msgstr "இருப்பவை"
-#: ../libempathy/empathy-utils.c:253
+#: ../libempathy/empathy-utils.c:276
msgid "Busy"
msgstr "வேலையில்"
-#: ../libempathy/empathy-utils.c:256
+#: ../libempathy/empathy-utils.c:279
msgid "Away"
msgstr "வெளியில்"
-#: ../libempathy/empathy-utils.c:258
+#: ../libempathy/empathy-utils.c:281
msgid "Hidden"
msgstr "மறைந்துள்ள"
-#: ../libempathy/empathy-utils.c:261
+#: ../libempathy/empathy-utils.c:283
msgid "Offline"
msgstr "இணைப்பு விலகி"
+#: ../libempathy/empathy-time.c:137
+#, c-format
+msgid "%d second ago"
+msgid_plural "%d seconds ago"
+msgstr[0] "%d வினாடி முன்"
+msgstr[1] "%d வினாடிகள் முன்"
+
+#: ../libempathy/empathy-time.c:142
+#, c-format
+msgid "%d minute ago"
+msgid_plural "%d minutes ago"
+msgstr[0] "%d நிமிடம் முன்"
+msgstr[1] "%d நிமிடங்கள் முன்"
+
+#: ../libempathy/empathy-time.c:147
+#, c-format
+msgid "%d hour ago"
+msgid_plural "%d hours ago"
+msgstr[0] "%d மணி முன்"
+msgstr[1] "%d மணிகள் முன்"
+
+#: ../libempathy/empathy-time.c:152
+#, c-format
+msgid "%d day ago"
+msgid_plural "%d days ago"
+msgstr[0] "%d நாள் முன்"
+msgstr[1] "%d நாட்கள் முன்"
+
+#: ../libempathy/empathy-time.c:157
+#, c-format
+msgid "%d week ago"
+msgid_plural "%d weeks ago"
+msgstr[0] "%d வாரம் முன்"
+msgstr[1] "%d வாரங்கள் முன்"
+
+#: ../libempathy/empathy-time.c:162
+#, c-format
+msgid "%d month ago"
+msgid_plural "%d months ago"
+msgstr[0] "%d மாதம் முன்"
+msgstr[1] "%d மாதங்கள் முன்"
+
+#: ../libempathy/empathy-time.c:167
+msgid "in the future"
+msgstr "எதிர்காலத்தில்"
+
#: ../libempathy-gtk/empathy-account-chooser.c:419
msgid "All"
msgstr "அனைத்து"
#: ../libempathy-gtk/empathy-account-widget.c:302
-#: ../libempathy-gtk/empathy-account-widget.c:349
+#: ../libempathy-gtk/empathy-account-widget.c:354
#, c-format
msgid "%s:"
msgstr "%s:"
@@ -363,8 +509,8 @@ msgstr "%s:"
#: ../libempathy-gtk/empathy-account-widget-salut.ui.h:1
#: ../libempathy-gtk/empathy-account-widget-sip.ui.h:1
#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:1
-msgid "<b>Advanced</b>"
-msgstr "<b> மேம்பட்ட</b>"
+msgid "Advanced"
+msgstr "மேம்பட்ட"
#: ../libempathy-gtk/empathy-account-widget-aim.ui.h:2
#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:3
@@ -395,12 +541,12 @@ msgstr "_P துறை:"
#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:11
#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:5
#: ../libempathy-gtk/empathy-account-widget-yahoo.ui.h:9
-#: ../src/empathy-new-chatroom-dialog.ui.h:8
+#: ../src/empathy-new-chatroom-dialog.ui.h:9
msgid "_Server:"
msgstr "(_S) சேவையகம்:"
#: ../libempathy-gtk/empathy-account-widget-groupwise.ui.h:2
-#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:2
#: ../libempathy-gtk/empathy-account-widget-msn.ui.h:2
msgid "Login I_D:"
msgstr "உள்நுழை அடையாளம் (_D):"
@@ -419,44 +565,40 @@ msgid "New Network"
msgstr "புதிய வலையமைப்பு"
#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:1
-msgid "<b>Network</b>"
-msgstr "<b>பிணையம்</b>"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
-msgid "<b>Servers</b>"
-msgstr "<b> சேவையகங்கள்</b>"
-
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
msgid "Charset:"
msgstr "எழுத்துருதொகுதி:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:2
msgid "Network"
msgstr "வலையமைப்பு"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:3
msgid "Network:"
msgstr "பிணையம்:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:4
msgid "Nickname:"
msgstr "புனைப்பெயர்:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:5
msgid "Password:"
msgstr "கடவுச்சொல்:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:6
msgid "Quit message:"
msgstr "வெளிச்செல் செய்திகள்:"
-#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:9
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:7
msgid "Real name:"
msgstr "உண்மையான பெயர்:"
-#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:2
-msgid "<b>Override server settings</b>"
-msgstr "<b>சேவையக அமைப்பை உதாசீனம் செய்</b>"
+#: ../libempathy-gtk/empathy-account-widget-irc.ui.h:8
+msgid "Servers"
+msgstr "சேவையகங்கள்"
+
+#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:3
+msgid "Override server settings"
+msgstr "சேவையக அமைப்பை உதாசீனம் செய்"
#: ../libempathy-gtk/empathy-account-widget-jabber.ui.h:5
msgid "Pri_ority:"
@@ -564,124 +706,120 @@ msgstr "அனைத்து கோப்புகள்"
msgid "Click to enlarge"
msgstr "பெரியதாக்க சொடுக்குக"
-#: ../libempathy-gtk/empathy-chat.c:178
+#: ../libempathy-gtk/empathy-chat.c:186
msgid "Failed to reconnect this chat"
msgstr "இந்த அரட்டைக்கு மீள் இணைப்பு தோற்றது "
-#: ../libempathy-gtk/empathy-chat.c:396
+#: ../libempathy-gtk/empathy-chat.c:404
msgid "Unsupported command"
msgstr "ஆதரவில்லாத கட்டளை"
-#: ../libempathy-gtk/empathy-chat.c:531
+#: ../libempathy-gtk/empathy-chat.c:539
msgid "offline"
msgstr "இணைப்பு விலகி "
-#: ../libempathy-gtk/empathy-chat.c:534
+#: ../libempathy-gtk/empathy-chat.c:542
msgid "invalid contact"
msgstr "செல்லுபடியாகாத தொடர்பு"
-#: ../libempathy-gtk/empathy-chat.c:537
+#: ../libempathy-gtk/empathy-chat.c:545
msgid "permission denied"
msgstr "அனுமதி மறுக்கப்பட்டது"
-#: ../libempathy-gtk/empathy-chat.c:540
+#: ../libempathy-gtk/empathy-chat.c:548
msgid "too long message"
msgstr "மிக நீள செய்தி"
-#: ../libempathy-gtk/empathy-chat.c:543
+#: ../libempathy-gtk/empathy-chat.c:551
msgid "not implemented"
msgstr "அமுலாக்கவில்லை"
-#: ../libempathy-gtk/empathy-chat.c:546
+#: ../libempathy-gtk/empathy-chat.c:554
msgid "unknown"
msgstr "தெரியாத"
-#: ../libempathy-gtk/empathy-chat.c:550
+#: ../libempathy-gtk/empathy-chat.c:558
#, c-format
msgid "Error sending message '%s': %s"
msgstr "செய்தி '%s' அனுப்புவதில் பிழை: %s"
-#: ../libempathy-gtk/empathy-chat.c:580
+#: ../libempathy-gtk/empathy-chat.c:588
#, c-format
msgid "Topic set to: %s"
msgstr "தலைப்பு இதற்கு அமை: %s"
-#: ../libempathy-gtk/empathy-chat.c:582
+#: ../libempathy-gtk/empathy-chat.c:590
msgid "No topic defined"
msgstr "தலைப்பு ஏதும் வரையறுக்கப்படவில்லை"
-#: ../libempathy-gtk/empathy-chat.c:951
+#: ../libempathy-gtk/empathy-chat.c:959
msgid "(No Suggestions)"
msgstr "(பரிந்துரைகள் இல்லை )"
-#: ../libempathy-gtk/empathy-chat.c:1005
+#: ../libempathy-gtk/empathy-chat.c:1013
msgid "Insert Smiley"
msgstr "சிரிப்பானை சொருகு"
#. send button
-#: ../libempathy-gtk/empathy-chat.c:1023
-#: ../libempathy-gtk/empathy-ui-utils.c:1507
+#: ../libempathy-gtk/empathy-chat.c:1031
+#: ../libempathy-gtk/empathy-ui-utils.c:1476
msgid "_Send"
msgstr "அனுப்பு (_S)"
-#: ../libempathy-gtk/empathy-chat.c:1057
+#: ../libempathy-gtk/empathy-chat.c:1065
msgid "_Spelling Suggestions"
msgstr "_S எழுத்தாக்க பரிந்துரைகள் "
-#: ../libempathy-gtk/empathy-chat.c:1171
+#: ../libempathy-gtk/empathy-chat.c:1179
#, c-format
msgid "%s has joined the room"
msgstr "%s அறையில் சேர்ந்தார்"
-#: ../libempathy-gtk/empathy-chat.c:1174
+#: ../libempathy-gtk/empathy-chat.c:1182
#, c-format
msgid "%s has left the room"
msgstr "%s அறையில் இருந்து வெளியேறினார்"
-#: ../libempathy-gtk/empathy-chat.c:1289 ../src/empathy-call-window.c:889
+#: ../libempathy-gtk/empathy-chat.c:1313 ../src/empathy-call-window.c:1199
msgid "Disconnected"
msgstr "துண்டிக்கபட்டது"
-#: ../libempathy-gtk/empathy-chat.c:1700
+#: ../libempathy-gtk/empathy-chat.c:1742
msgid "Connected"
msgstr "இணைக்கப்பட்டது"
-#: ../libempathy-gtk/empathy-chat.c:1750
+#: ../libempathy-gtk/empathy-chat.c:1792
#: ../libempathy-gtk/empathy-log-window.c:501
msgid "Conversation"
msgstr "உரையாடல்"
-#: ../libempathy-gtk/empathy-chat.ui.h:1
-msgid "<b>Topic:</b>"
-msgstr "<b> தலைப்பு</b>"
+#: ../libempathy-gtk/empathy-chat.ui.h:1 ../src/empathy-chat-window.c:471
+msgid "Topic:"
+msgstr "தலைப்பு:"
-#: ../libempathy-gtk/empathy-chat-text-view.c:323
+#: ../libempathy-gtk/empathy-chat-text-view.c:316
msgid "_Copy Link Address"
msgstr "இணைப்பு முகவரியை நகலெடு (_C)"
-#: ../libempathy-gtk/empathy-chat-text-view.c:331
+#: ../libempathy-gtk/empathy-chat-text-view.c:323
msgid "_Open Link"
msgstr "இணைப்பினை திற (_O)"
#. Translators: timestamp displayed between conversations in
#. * chat windows (strftime format string)
-#: ../libempathy-gtk/empathy-chat-text-view.c:424
+#: ../libempathy-gtk/empathy-chat-text-view.c:415
msgid "%A %B %d %Y"
msgstr "%A %B %d %Y"
#: ../libempathy-gtk/empathy-contact-dialogs.c:179
-#: ../libempathy-gtk/empathy-contact-dialogs.c:237
+#: ../libempathy-gtk/empathy-contact-dialogs.c:238
msgid "Edit Contact Information"
msgstr "தொடர்பின் தகவல் ஐ திருத்து"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:288
+#: ../libempathy-gtk/empathy-contact-dialogs.c:289
msgid "Personal Information"
msgstr "தனிப்பட்ட தகவல்"
-#: ../libempathy-gtk/empathy-contact-dialogs.c:368
-msgid "I would like to add you to my contact list."
-msgstr "உங்களை என் தொடர்பு பட்டியலில் சேர்க்க விரும்புகிறேன்."
-
#: ../libempathy-gtk/empathy-contact-dialogs.c:392
msgid "New Contact"
msgstr "புதிய தொடர்பு"
@@ -694,52 +832,45 @@ msgstr "(_L) பிறகு முடிவு எடுக்கலாம்"
msgid "Subscription Request"
msgstr "சந்தா வேண்டுதல்"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1377
+#: ../libempathy-gtk/empathy-contact-list-view.c:1378
#, c-format
msgid "Do you really want to remove the group '%s'?"
msgstr "நீங்கள் நிச்சயம் குழு '%s' ஐ நீக்க விரும்புகிறீர்களா?"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1379
+#: ../libempathy-gtk/empathy-contact-list-view.c:1380
msgid "Removing group"
msgstr "குழுவை நீக்குதல்"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1426
+#: ../libempathy-gtk/empathy-contact-list-view.c:1427
#: ../libempathy-gtk/empathy-contact-list-view.c:1505
msgid "_Remove"
msgstr "நீக்கவும் (_R)"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1456
+#: ../libempathy-gtk/empathy-contact-list-view.c:1457
#, c-format
msgid "Do you really want to remove the contact '%s'?"
msgstr "நீங்கள் நிச்சயம் தொடர்பு '%s' ஐ நீக்க விரும்புகிறீர்களா?"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1458
+#: ../libempathy-gtk/empathy-contact-list-view.c:1459
msgid "Removing contact"
msgstr "தொடர்பு ஐ நீக்குதல்"
-#: ../libempathy-gtk/empathy-contact-list-view.c:1463
-msgid "Sorry, I don't want you in my contact list anymore."
-msgstr "மன்னிக்கவும். மேலும் நீங்கள் தொடர்பு பட்டியலில் இருக்க வேண்டாம்."
-
#: ../libempathy-gtk/empathy-contact-menu.c:135
-#: ../src/empathy-main-window.ui.h:9
+#: ../src/empathy-main-window.ui.h:8
msgid "_Chat"
msgstr "_C அரட்டை"
#: ../libempathy-gtk/empathy-contact-menu.c:166
-
msgctxt "menu item"
msgid "_Audio Call"
msgstr "(_A) ஒலி அழைப்பு"
#: ../libempathy-gtk/empathy-contact-menu.c:198
-
msgctxt "menu item"
msgid "_Video Call"
msgstr "(_V) விடியோ அழைப்பு"
#: ../libempathy-gtk/empathy-contact-menu.c:237
-#: ../src/empathy-main-window.ui.h:18
msgid "_View Previous Conversations"
msgstr "(_V) முந்தைய உரையாடல்கள் ஐ காண்"
@@ -768,58 +899,167 @@ msgstr "(_I) அரட்டை அறைக்கு அழைப்பு"
msgid "Select a contact"
msgstr "ஒரு தொடர்பு ஐ தேர்வு செய்க"
-#: ../libempathy-gtk/empathy-contact-widget.c:413
+#: ../libempathy-gtk/empathy-contact-widget.c:440
msgid "Save Avatar"
msgstr "அவதாரத்தை சேமி"
-#: ../libempathy-gtk/empathy-contact-widget.c:469
+#: ../libempathy-gtk/empathy-contact-widget.c:496
msgid "Unable to save avatar"
msgstr "அவதாரத்தை சேமிக்க முடியவில்லை"
-#: ../libempathy-gtk/empathy-contact-widget.c:952
+#: ../libempathy-gtk/empathy-contact-widget.c:979
msgid "Select"
msgstr "தேர்வு"
-#: ../libempathy-gtk/empathy-contact-widget.c:961
-#: ../src/empathy-main-window.c:894
+#: ../libempathy-gtk/empathy-contact-widget.c:988
+#: ../src/empathy-main-window.c:905
msgid "Group"
msgstr "குழு"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:1
-msgid "<b>Client Information</b>"
-msgstr "<b> சார்ந்தோன் தகவல்</b>"
+#: ../libempathy-gtk/empathy-contact-widget.c:1239
+msgid "Country ISO Code:"
+msgstr "நாட்டின் ஐஎஸ்ஓ குறி:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
-msgid "<b>Contact Details</b>"
-msgstr "<b>சார்ந்தோன் தொடர்பு விவரங்கள்</b>"
+#: ../libempathy-gtk/empathy-contact-widget.c:1241
+msgid "Country:"
+msgstr "நாடு:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:3
-msgid "<b>Contact</b>"
-msgstr "<b>தொடர்பு</b>"
+#: ../libempathy-gtk/empathy-contact-widget.c:1243
+msgid "State:"
+msgstr "மாநிலம்:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:4
-msgid "<b>Groups</b>"
-msgstr "<b>குழுக்கள்</b>"
+#: ../libempathy-gtk/empathy-contact-widget.c:1245
+msgid "City:"
+msgstr "மாநகரம்:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:5
+#: ../libempathy-gtk/empathy-contact-widget.c:1247
+msgid "Area:"
+msgstr "வட்டாரம்"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1249
+msgid "Postal Code:"
+msgstr "அஞ்சல் குறி:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1251
+msgid "Street:"
+msgstr "தெரு:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1253
+msgid "Building:"
+msgstr "கட்டிடம்:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1255
+msgid "Floor:"
+msgstr "தளம்:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1257
+msgid "Room:"
+msgstr "அறை:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1259
+msgid "Text:"
+msgstr "உரை:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1261
+msgid "Description:"
+msgstr "விவரணம்:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1263
+msgid "URI:"
+msgstr "யூஆர்ஐ:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1265
+msgid "Accuracy Level:"
+msgstr "பிழையின்மை மட்டம்:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1267
+msgid "Error:"
+msgstr " பிழை:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1269
+msgid "Vertical Error (meters):"
+msgstr "செங்குத்து பிழை (மீட்டர்கள்):"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1271
+msgid "Horizontal Error (meters):"
+msgstr "கிடைமட்ட பிழை (மீட்டர்கள்):"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1273
+msgid "Speed:"
+msgstr "வேகம்:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1275
+msgid "Bearing:"
+msgstr "திசை கோணம்:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1277
+msgid "Climb Speed:"
+msgstr "ஏறும் வேகம்:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1279
+msgid "Last Updated on:"
+msgstr "கடைசியாக இற்றைப்படுத்தியது:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1281
+msgid "Longitude:"
+msgstr "தீர்கரேகை:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1283
+msgid "Latitude:"
+msgstr "அட்சரேகை:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1285
+msgid "Altitude:"
+msgstr "குத்துயரம்:"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1332
+msgid "<b>Location</b>"
+msgstr "<b>இடம்</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1345
+msgid "<b>Location</b>, "
+msgstr "<b>இடம்</b>"
+
+#: ../libempathy-gtk/empathy-contact-widget.c:1395
+msgid "%B %e, %Y at %R UTC"
+msgstr "%B %e, %Y %R யூடுசி (UTC) இல்"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:1
+msgid "<b>Location</b> at (date)\t"
+msgstr "<b>இடம்</b> (date) போது\t"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:2
#: ../libempathy-gtk/empathy-new-message-dialog.ui.h:1
#: ../src/empathy-chatrooms-window.ui.h:1
#: ../src/empathy-new-chatroom-dialog.ui.h:1
msgid "Account:"
msgstr "கணக்கு:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:6
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:3
msgid "Alias:"
msgstr "புனைப்பெயர்:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:7
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:4
msgid "Birthday:"
msgstr "பிறந்தநாள்:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:8
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:5
+msgid "Client Information"
+msgstr "சார்ந்தோன் தகவல்"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:6
msgid "Client:"
msgstr "சார்ந்தோன்:"
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:7
+#: ../src/empathy-main-window.c:888
+msgid "Contact"
+msgstr "தொடர்பு"
+
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:8
+msgid "Contact Details"
+msgstr "தொடர்பு விவரங்கள்"
+
#: ../libempathy-gtk/empathy-contact-widget.ui.h:9
msgid "Email:"
msgstr "மின்னஞ்சல்:"
@@ -828,20 +1068,24 @@ msgstr "மின்னஞ்சல்:"
msgid "Fullname:"
msgstr "முழுப்பெயர்:"
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:11
+msgid "Groups"
+msgstr "குழுக்கள்"
+
#. Identifier to connect to Instant Messaging network
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:12
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:13
msgid "Identifier:"
msgstr "இனங்காட்டி:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:13
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:14
msgid "Information requested..."
msgstr "தகவல் வேண்டுதல்..."
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:14
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:15
msgid "OS:"
msgstr "OS:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:15
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:16
msgid ""
"Select the groups you want this contact to appear in. Note that you can "
"select more than one group or no groups."
@@ -849,15 +1093,15 @@ msgstr ""
"இந்த தொடர்பு வர வேன்டிய குழுவை தேர்வு செய்க. நீங்கள் ஒன்றுக்கு மேற்பட்ட குழுக்களை தேர்வு "
"செய்யலாம் அல்லது ஒன்றையும் தேர்வு செய்யாதிருக்கலாம்."
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:16
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:17
msgid "Version:"
msgstr "பதிப்பு:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:17
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:18
msgid "Web site:"
msgstr "வலைத்தளம்:"
-#: ../libempathy-gtk/empathy-contact-widget.ui.h:18
+#: ../libempathy-gtk/empathy-contact-widget.ui.h:19
msgid "_Add Group"
msgstr "குழுவை சேர் (_A)"
@@ -924,40 +1168,40 @@ msgstr "புதிய உரையாடல்"
#. COL_DISPLAY_MARKUP
#. COL_STATUS_CUSTOMISABLE
#. COL_TYPE
-#: ../libempathy-gtk/empathy-presence-chooser.c:169
+#: ../libempathy-gtk/empathy-presence-chooser.c:172
msgid "Custom Message..."
msgstr "தனிப்பயன் செய்தி..."
-#: ../libempathy-gtk/empathy-presence-chooser.c:225
+#: ../libempathy-gtk/empathy-presence-chooser.c:227
msgid "Edit Custom Messages..."
msgstr "திருத்து- தனிப்பயன் செய்திகள்..."
-#: ../libempathy-gtk/empathy-presence-chooser.c:324
+#: ../libempathy-gtk/empathy-presence-chooser.c:326
msgid "Click to remove this status as a favorite"
msgstr "இந்த நிலை பிடித்த நிலையாக இருப்பதை நீக்க சொடுக்கவும் "
-#: ../libempathy-gtk/empathy-presence-chooser.c:333
+#: ../libempathy-gtk/empathy-presence-chooser.c:335
msgid "Click to make this status a favorite"
msgstr "இந்த நிலை பிடித்த நிலையாக ஆக்க சொடுக்கவும் "
-#: ../libempathy-gtk/empathy-presence-chooser.c:367
+#: ../libempathy-gtk/empathy-presence-chooser.c:369
msgid "Set status"
msgstr "நிலையை அமை"
-#: ../libempathy-gtk/empathy-presence-chooser.c:776
+#: ../libempathy-gtk/empathy-presence-chooser.c:782
msgid "Set your presence and current status"
msgstr "உங்கள் நடப்பு நிலையையும் இருப்பையௌம் அமை "
#. Custom messages
-#: ../libempathy-gtk/empathy-presence-chooser.c:1011
+#: ../libempathy-gtk/empathy-presence-chooser.c:1017
msgid "Custom messages..."
msgstr "தனிப்பயன் செய்திகள்..."
-#: ../libempathy-gtk/empathy-status-preset-dialog.c:360
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:362
msgid "Enter Custom Message"
msgstr "தனிப்பயன் செய்தியை உள்ளிடுக"
-#: ../libempathy-gtk/empathy-status-preset-dialog.c:482
+#: ../libempathy-gtk/empathy-status-preset-dialog.c:521
msgid "Edit Custom Messages"
msgstr "தனிப்பயன் செய்திகளை திருத்துக"
@@ -977,67 +1221,75 @@ msgstr "ஜிடிகே-சேர்"
msgid "gtk-remove"
msgstr "ஜிடிகே-நீக்கு"
-#: ../libempathy-gtk/empathy-theme-manager.c:60
+#: ../libempathy-gtk/empathy-theme-manager.c:66
msgid "Classic"
msgstr "தொன்மையான"
-#: ../libempathy-gtk/empathy-theme-manager.c:61
+#: ../libempathy-gtk/empathy-theme-manager.c:67
msgid "Simple"
msgstr "எளிய"
-#: ../libempathy-gtk/empathy-theme-manager.c:62
+#: ../libempathy-gtk/empathy-theme-manager.c:68
msgid "Clean"
msgstr "சுத்தமான"
-#: ../libempathy-gtk/empathy-theme-manager.c:63
+#: ../libempathy-gtk/empathy-theme-manager.c:69
msgid "Blue"
msgstr "நீலம்"
-#: ../libempathy-gtk/empathy-ui-utils.c:1354
+#: ../libempathy-gtk/empathy-theme-manager.c:71
+msgid "Adium"
+msgstr "ஏடியம்"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1378
msgid "Unable to open URI"
msgstr "யூஆர்ஐ ஐ திறக்க முடியவில்லை"
-#: ../libempathy-gtk/empathy-ui-utils.c:1499
+#: ../libempathy-gtk/empathy-ui-utils.c:1468
msgid "Select a file"
msgstr "கோப்பை தேர்வு செய்"
-#: ../libempathy-gtk/empathy-ui-utils.c:1535
+#: ../libempathy-gtk/empathy-ui-utils.c:1526
+msgid "Select a destination"
+msgstr "ஒரு இலக்கிடம் தேர்வு செய்க"
+
+#: ../libempathy-gtk/empathy-ui-utils.c:1555
msgid "Received an instant message"
msgstr "ஒரு உடனடி செய்தி கிடைக்கப்பெற்றது"
-#: ../libempathy-gtk/empathy-ui-utils.c:1537
+#: ../libempathy-gtk/empathy-ui-utils.c:1557
msgid "Sent an instant message"
msgstr "ஒரு உடனடி செய்தி அனுப்பு"
-#: ../libempathy-gtk/empathy-ui-utils.c:1539
+#: ../libempathy-gtk/empathy-ui-utils.c:1559
msgid "Incoming chat request"
msgstr "உள்வரும் அரட்டை வேண்டுதல்"
-#: ../libempathy-gtk/empathy-ui-utils.c:1541
+#: ../libempathy-gtk/empathy-ui-utils.c:1561
msgid "Contact connected"
msgstr "தொடர்பு இணைக்கப்பட்டது"
-#: ../libempathy-gtk/empathy-ui-utils.c:1543
+#: ../libempathy-gtk/empathy-ui-utils.c:1563
msgid "Contact disconnected"
msgstr "தொடர்பு துண்டிக்கப்பட்டது"
-#: ../libempathy-gtk/empathy-ui-utils.c:1545
+#: ../libempathy-gtk/empathy-ui-utils.c:1565
msgid "Connected to server"
msgstr "சேவையகத்துக்கு இணைக்கப்பட்டது"
-#: ../libempathy-gtk/empathy-ui-utils.c:1547
+#: ../libempathy-gtk/empathy-ui-utils.c:1567
msgid "Disconnected from server"
msgstr "சேவையகத்துக்கு இணைப்பு துண்டிக்கபட்டது"
-#: ../libempathy-gtk/empathy-ui-utils.c:1549
+#: ../libempathy-gtk/empathy-ui-utils.c:1569
msgid "Incoming voice call"
msgstr "உள்வரும் குரல் அழைப்பு"
-#: ../libempathy-gtk/empathy-ui-utils.c:1551
+#: ../libempathy-gtk/empathy-ui-utils.c:1571
msgid "Outgoing voice call"
msgstr "வெளி செல்லும் குரல் அழைப்பு"
-#: ../libempathy-gtk/empathy-ui-utils.c:1553
+#: ../libempathy-gtk/empathy-ui-utils.c:1573
msgid "Voice call ended"
msgstr "குரல் அழைப்பு முடிந்தது"
@@ -1212,8 +1464,7 @@ msgstr "வியட்னாம்"
#. * vim: sw=2 ts=8 cindent noai bs=2
#.
#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:1
-msgid ""
-"The contact to display in the applet. Empty means no contact is displayed."
+msgid "The contact to display in the applet. Empty means no contact is displayed."
msgstr "சிறுநிரலில் காட்ட வேண்டிய தொடர்பு. காலி எனில் காட்ட தொடர்பு இல்லை"
#: ../megaphone/data/GNOME_Megaphone_Applet.schemas.in.h:2
@@ -1239,7 +1490,7 @@ msgid "_Information"
msgstr "(_I) தகவல்"
#: ../megaphone/data/GNOME_Megaphone_Applet.xml.h:3
-#: ../src/empathy-main-window.ui.h:16
+#: ../src/empathy-main-window.ui.h:18
msgid "_Preferences"
msgstr "முன்னுரிமைகள் (_P)"
@@ -1260,19 +1511,19 @@ msgstr "இருப்பு"
msgid "Set your own presence"
msgstr "உங்கள் இருப்பை அமைக்கவும்"
-#: ../src/empathy.c:437
+#: ../src/empathy.c:478
msgid "Don't connect on startup"
msgstr "துவங்கும்போது இணைக்க வேண்டாம்"
-#: ../src/empathy.c:441
+#: ../src/empathy.c:482
msgid "Don't show the contact list on startup"
msgstr "துவங்கும்போது தொடர்பு பட்டியல் ஐ காட்ட வேண்டாம்"
-#: ../src/empathy.c:445
+#: ../src/empathy.c:486
msgid "Show the accounts dialog"
msgstr "கணக்குகள் உரையாடல் ஐ காட்டு "
-#: ../src/empathy.c:457
+#: ../src/empathy.c:498
msgid "- Empathy Instant Messenger"
msgstr "- எம்பதி உடனடி செய்தியாளர்"
@@ -1316,21 +1567,21 @@ msgstr "க்னோமுக்கு ஒரு உடனடி செய்த
msgid "translator-credits"
msgstr "மொழிபெயர்ப்பாளர்-நன்றி அறிதல் "
-#: ../src/empathy-accounts-dialog.c:391
+#: ../src/empathy-accounts-dialog.c:393
msgid "Enabled"
msgstr "செயலாக்கப்பட்டது"
-#: ../src/empathy-accounts-dialog.c:401 ../src/empathy-accounts-dialog.ui.h:4
+#: ../src/empathy-accounts-dialog.c:403 ../src/empathy-accounts-dialog.ui.h:1
msgid "Accounts"
msgstr "கணக்குகள்"
#. To translator: %s is the protocol name
-#: ../src/empathy-accounts-dialog.c:834
+#: ../src/empathy-accounts-dialog.c:837
#, c-format
msgid "New %s account"
msgstr "புதிய %s கணக்கு"
-#: ../src/empathy-accounts-dialog.c:944
+#: ../src/empathy-accounts-dialog.c:950
#, c-format
msgid ""
"You are about to remove your %s account!\n"
@@ -1339,7 +1590,7 @@ msgstr ""
"நீங்கள் உங்கள் %s கணக்கை நீக்கப்போகிறீர்கள்!\n"
"நிச்சயம் தொடர வேண்டுமா?"
-#: ../src/empathy-accounts-dialog.c:950
+#: ../src/empathy-accounts-dialog.c:956
msgid ""
"Any associated conversations and chat rooms will NOT be removed if you "
"decide to proceed.\n"
@@ -1352,30 +1603,30 @@ msgstr ""
"\n"
"ஒரு வேளை பின்னொரு சமயம் கணக்கை புதுப்பிக்க எண்ணினால் அவை கிடைக்கும்."
-#: ../src/empathy-accounts-dialog.ui.h:1
-msgid "<b>New Account</b>"
-msgstr "<b> புதிய கணக்கு</b>"
-
#: ../src/empathy-accounts-dialog.ui.h:2
-msgid "<b>No protocol installed</b>"
-msgstr "<b>நெறிமுறைகள் ஏதும் நிறுவவில்லை</b>"
+msgid "Add Account"
+msgstr "கணக்கு சேர்"
#: ../src/empathy-accounts-dialog.ui.h:3
-msgid "<b>Settings</b>"
-msgstr "<b> அமைப்புகள்</b>"
-
-#: ../src/empathy-accounts-dialog.ui.h:5
msgid "Cr_eate"
msgstr "(_e) உருவாக்கு"
-#: ../src/empathy-accounts-dialog.ui.h:6
-msgid "I already have an account I want to use"
-msgstr "நான் பயன்படுத்த ஏற்கெனெவே ஒரு கணக்கு உள்ளது"
+#: ../src/empathy-accounts-dialog.ui.h:4
+msgid "Gmail"
+msgstr "ஜிமெய்ல்"
-#: ../src/empathy-accounts-dialog.ui.h:7
+#: ../src/empathy-accounts-dialog.ui.h:5
msgid "Import Accounts..."
msgstr "கணக்குகளை இறக்குமதி செய்க..."
+#: ../src/empathy-accounts-dialog.ui.h:6
+msgid "No protocol installed"
+msgstr "நெறிமுறைகள் ஏதும் நிறுவவில்லை"
+
+#: ../src/empathy-accounts-dialog.ui.h:7
+msgid "Settings"
+msgstr "அமைப்புகள்"
+
#: ../src/empathy-accounts-dialog.ui.h:8
msgid ""
"To add a new account, you first have to install a backend for each protocol "
@@ -1392,53 +1643,61 @@ msgstr "வகை:"
msgid "_Add..."
msgstr "சேர்... (_A)"
-#: ../src/empathy-call-window.c:370
+#: ../src/empathy-accounts-dialog.ui.h:11
+msgid "_Create a new account"
+msgstr "(_C) ஒரு புதிய கணக்கை துவக்கு"
+
+#: ../src/empathy-accounts-dialog.ui.h:12
+msgid "_Reuse an existing account"
+msgstr "(_R) இருக்கும் ஒரு கணக்கை மறு உபயோகம் செய்க"
+
+#: ../src/empathy-call-window.c:63
+msgid "Connecting..."
+msgstr "இணைக்கிறது...."
+
+#: ../src/empathy-call-window.c:415
msgid "Contrast"
msgstr "வேறுபாடு"
-#: ../src/empathy-call-window.c:373
+#: ../src/empathy-call-window.c:418
msgid "Brightness"
msgstr "வெளிச்சம்"
-#: ../src/empathy-call-window.c:376
+#: ../src/empathy-call-window.c:421
msgid "Gamma"
msgstr "காமா"
-#: ../src/empathy-call-window.c:480
+#: ../src/empathy-call-window.c:526
msgid "Volume"
msgstr "ஒலி அளவு"
-#: ../src/empathy-call-window.c:592
+#: ../src/empathy-call-window.c:728
msgid "_Sidebar"
msgstr "பக்கப்பட்டை(_S)"
-#: ../src/empathy-call-window.c:611
+#: ../src/empathy-call-window.c:747
msgid "Dialpad"
msgstr "டயல் அட்டை"
-#: ../src/empathy-call-window.c:617
+#: ../src/empathy-call-window.c:753
msgid "Audio input"
msgstr "ஒலி உள்ளீடு"
-#: ../src/empathy-call-window.c:621
+#: ../src/empathy-call-window.c:757
msgid "Video input"
msgstr "வீடியோ உள்ளீடு"
-#: ../src/empathy-call-window.c:645
-msgid "Connecting..."
-msgstr "இணைக்கிறது...."
-
-#: ../src/empathy-call-window.c:660
+#: ../src/empathy-call-window.c:820
#, c-format
msgid "Call with %s"
msgstr "%s ஆல் அழை "
-#: ../src/empathy-call-window.c:694
+#: ../src/empathy-call-window.c:889
msgid "Call"
msgstr "அழை"
#. Translators: number of minutes:seconds the caller has been connected
-#: ../src/empathy-call-window.c:971
+#: ../src/empathy-call-window.c:1308
#, c-format
msgid "Connected — %d:%02dm"
msgstr "இணைக்கப்பட்டது — %d:%02dm"
@@ -1448,43 +1707,38 @@ msgid "Hang up"
msgstr "துண்டி"
#: ../src/empathy-call-window.ui.h:2
+msgid "Redial"
+msgstr "மறு முயற்சி"
+
+#: ../src/empathy-call-window.ui.h:3
msgid "Send Audio"
msgstr "ஒலி அனுப்பு "
-#: ../src/empathy-call-window.ui.h:3
+#: ../src/empathy-call-window.ui.h:4
msgid "Send video"
msgstr "விடியோ அனுப்பு"
-#: ../src/empathy-call-window.ui.h:4
+#: ../src/empathy-call-window.ui.h:5
msgid "Video preview"
msgstr "ஒளித்தோற்ற முன்னோட்டம்"
-#: ../src/empathy-call-window.ui.h:5
+#: ../src/empathy-call-window.ui.h:6
msgid "_Call"
msgstr "(_C) அழை"
-#: ../src/empathy-call-window.ui.h:6
+#: ../src/empathy-call-window.ui.h:7 ../src/empathy-main-window.ui.h:21
msgid "_View"
msgstr "பார்வை (_V)"
-#: ../src/empathy-chat-window.c:308
+#: ../src/empathy-chat-window.c:343
#, c-format
msgid "Conversations (%d)"
msgstr "உரையாடல்கள் (%d)"
-#: ../src/empathy-chat-window.c:413
-msgid "Topic:"
-msgstr "தலைப்பு:"
-
-#: ../src/empathy-chat-window.c:418
+#: ../src/empathy-chat-window.c:475
msgid "Typing a message."
msgstr "செய்திகள் தட்டச்சிடல்"
-#: ../src/empathy-chat-window.c:889 ../src/empathy-event-manager.c:429
-#, c-format
-msgid "New message from %s"
-msgstr "%s இடமிருந்து புதிய செய்திகள்"
-
#: ../src/empathy-chatrooms-window.c:258
msgid "Name"
msgstr "பெயர்"
@@ -1518,59 +1772,58 @@ msgstr "(_R) ஏற்காதே"
msgid "_Answer"
msgstr "(_A) பதிலளி"
-#: ../src/empathy-event-manager.c:507
+#: ../src/empathy-event-manager.c:505
#, c-format
msgid "Incoming call from %s"
msgstr "%s இடமிருந்து உள்வரும் அழைப்பு"
-#: ../src/empathy-event-manager.c:547
+#: ../src/empathy-event-manager.c:545
#, c-format
msgid "%s is offering you an invitation"
msgstr "%s உங்களுக்கு ஒரு அழைப்பு வேண்டுதல் விடுக்கிறார்"
-#: ../src/empathy-event-manager.c:553
+#: ../src/empathy-event-manager.c:551
msgid "An external application will be started to handle it."
msgstr "இதை கையாள ஒரு வெளி பயன்பாடு துவக்கப்படும்."
-#: ../src/empathy-event-manager.c:558
+#: ../src/empathy-event-manager.c:556
msgid "You don't have the needed external application to handle it."
msgstr "இதை கையாள தேவையான ஒரு வெளி பயன்பாடு உங்கள் கணினியில் இல்லை."
-#: ../src/empathy-event-manager.c:685
+#: ../src/empathy-event-manager.c:683
msgid "Room invitation"
msgstr "அறை அழைப்பு"
-#: ../src/empathy-event-manager.c:688
+#: ../src/empathy-event-manager.c:686
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s உங்களை %s உடன் சேர அழைக்கிறார்."
-#. Decline button
-#: ../src/empathy-event-manager.c:696 ../src/empathy-ft-manager.c:1037
+#: ../src/empathy-event-manager.c:694
msgid "_Decline"
msgstr "நிராகரி (_D)"
-#: ../src/empathy-event-manager.c:701
-#: ../src/empathy-new-chatroom-dialog.ui.h:6
+#: ../src/empathy-event-manager.c:699
+#: ../src/empathy-new-chatroom-dialog.ui.h:7
msgid "_Join"
msgstr "(_J) இணை"
-#: ../src/empathy-event-manager.c:740
+#: ../src/empathy-event-manager.c:738
#, c-format
msgid "%s invited you to join %s"
msgstr "%s %s இல் சேர உங்களை அழைத்துள்ளார்"
-#: ../src/empathy-event-manager.c:848
+#: ../src/empathy-event-manager.c:764
#, c-format
msgid "Incoming file transfer from %s"
msgstr "%s இடமிருந்து உள்வரும் கோப்பு பரிமாற்றம்."
-#: ../src/empathy-event-manager.c:923
+#: ../src/empathy-event-manager.c:944
#, c-format
msgid "Subscription requested by %s"
msgstr "%s இன் சந்தா வேண்டுதல்"
-#: ../src/empathy-event-manager.c:927
+#: ../src/empathy-event-manager.c:948
#, c-format
msgid ""
"\n"
@@ -1580,159 +1833,110 @@ msgstr ""
"செய்தி: %s"
#. Translators: time left, when it is more than one hour
-#: ../src/empathy-ft-manager.c:114
+#: ../src/empathy-ft-manager.c:101
#, c-format
msgid "%u:%02u.%02u"
msgstr "%u:%02u.%02u"
#. Translators: time left, when is is less than one hour
-#: ../src/empathy-ft-manager.c:117
+#: ../src/empathy-ft-manager.c:104
#, c-format
msgid "%02u.%02u"
msgstr "%02u.%02u"
-#: ../src/empathy-ft-manager.c:166
-msgid "No reason was specified"
-msgstr "காரணம் குறிப்பிடவில்லை"
-
-#: ../src/empathy-ft-manager.c:168
-msgid "The change in state was requested"
-msgstr "நிலையில் மாற்றம் வேண்டப்பட்டது"
-
-#: ../src/empathy-ft-manager.c:170
-msgid "You canceled the file transfer"
-msgstr "நீங்கள் கோப்பு பரி மாற்றத்தை ரத்து செய்தீர்கள்"
-
-#: ../src/empathy-ft-manager.c:172
-msgid "The other participant canceled the file transfer"
-msgstr "மற்ற பங்குதாரர் கோப்பு பரி மாற்றத்தை ரத்து செய்தார்."
-
-#: ../src/empathy-ft-manager.c:174
-msgid "Error while trying to transfer the file"
-msgstr "கோப்பு பரி மாற்றத்தில் பிழை "
+#: ../src/empathy-ft-manager.c:180
+msgctxt "file transfer percent"
+msgid "Unknown"
+msgstr "தெரியாத"
-#: ../src/empathy-ft-manager.c:176
-msgid "The other participant is unable to transfer the file"
-msgstr "மற்ற பங்குதாரர் கோப்பு பரி மாற்றத்தை செய்ய முடியவில்லை."
+#: ../src/empathy-ft-manager.c:275
+#, c-format
+msgid "%s of %s at %s/s"
+msgstr "%s %sல் %s/s இல்"
-#: ../src/empathy-ft-manager.c:178
-msgid "Unknown reason"
-msgstr "தெரியாத காரணம்"
+#: ../src/empathy-ft-manager.c:276
+#, c-format
+msgid "%s of %s"
+msgstr "%s %sல் "
#. translators: first %s is filename, second %s is the contact name
-#: ../src/empathy-ft-manager.c:228
+#: ../src/empathy-ft-manager.c:307
#, c-format
msgid "Receiving \"%s\" from %s"
msgstr " \"%s\" ஐ %s இடமிருந்து பெறுகிறது"
#. translators: first %s is filename, second %s is the contact name
-#: ../src/empathy-ft-manager.c:231
+#: ../src/empathy-ft-manager.c:310
#, c-format
msgid "Sending \"%s\" to %s"
msgstr "\"%s\" ஐ %s க்கு அனுப்புகிறது"
-#: ../src/empathy-ft-manager.c:242
-msgctxt "file size"
-msgid "Unknown"
-msgstr "தெரியாத"
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:340
+#, c-format
+msgid "Error receiving \"%s\" from %s"
+msgstr " \"%s\" ஐ %s இடமிருந்து பெறுகையில் பிழை"
-#. translators: first %s is the transferred size, second %s is
-#. * the total file size
-#: ../src/empathy-ft-manager.c:251
+#: ../src/empathy-ft-manager.c:343
+msgid "Error receiving a file"
+msgstr "கோப்பு பெறுகையில் பிழை"
+
+#: ../src/empathy-ft-manager.c:348
#, c-format
-msgid "%s of %s at %s/s"
-msgstr "%s %sல் %s/s இல்"
+msgid "Error sending \"%s\" to %s"
+msgstr "\"%s\" ஐ %s க்கு அனுப்புகையில் பிழை"
-#: ../src/empathy-ft-manager.c:259
-msgid "Waiting for the other participant's response"
-msgstr "மற்ற பங்கேற்பாளரின் பதிலுக்கு காத்திருத்தல்"
+#: ../src/empathy-ft-manager.c:351
+msgid "Error sending a file"
+msgstr "கோப்பு அனுப்புவதில் பிழை"
-#: ../src/empathy-ft-manager.c:269
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:490
#, c-format
msgid "\"%s\" received from %s"
msgstr "\"%s\" %s இடமிருந்து கிடைத்தது"
-#: ../src/empathy-ft-manager.c:275
+#. translators: first %s is filename, second %s
+#. * is the contact name
+#: ../src/empathy-ft-manager.c:495
#, c-format
msgid "\"%s\" sent to %s"
msgstr "\"%s\" %s க்கு அனுப்பப்பட்டது"
-#: ../src/empathy-ft-manager.c:278
+#: ../src/empathy-ft-manager.c:498
msgid "File transfer completed"
msgstr "கோப்பு பறிமாற்றம் முடிந்தது"
-#: ../src/empathy-ft-manager.c:287
-#, c-format
-msgid "\"%s\" receiving from %s"
-msgstr "\"%s\" %s இடமிருந்து பெறப்படுகிறது"
+#: ../src/empathy-ft-manager.c:617 ../src/empathy-ft-manager.c:784
+msgid "Waiting for the other participant's response"
+msgstr "மற்ற பங்கேற்பாளரின் பதிலுக்கு காத்திருத்தல்"
-#: ../src/empathy-ft-manager.c:293
+#: ../src/empathy-ft-manager.c:643 ../src/empathy-ft-manager.c:681
#, c-format
-msgid "\"%s\" sending to %s"
-msgstr "\"%s\" %s க்கு அனுப்பப்படுகிறது"
+msgid "Checking integrity of \"%s\""
+msgstr " \"%s\" இன் நம்பகத்தன்மையை சோதிக்கிறது"
-#: ../src/empathy-ft-manager.c:296
+#: ../src/empathy-ft-manager.c:646 ../src/empathy-ft-manager.c:684
#, c-format
-msgid "File transfer canceled: %s"
-msgstr "கோப்பு பறிமாற்றம் ரத்து செய்யப்பட்டது.: %s"
-
-#: ../src/empathy-ft-manager.c:310
-msgctxt "remaining time"
-msgid "Stalled"
-msgstr "Stalled"
-
-#: ../src/empathy-ft-manager.c:313
-msgctxt "remaining time"
-msgid "Unknown"
-msgstr "தெரியாத"
-
-#: ../src/empathy-ft-manager.c:372
-msgctxt "file transfer percent"
-msgid "Unknown"
-msgstr "தெரியாத"
+msgid "Hashing \"%s\""
+msgstr " \"%s\" இன் ஹாஷ் மதிப்பை கணக்கிடுகிறது"
-#: ../src/empathy-ft-manager.c:668
+#: ../src/empathy-ft-manager.c:1024
msgid "%"
msgstr "%"
-#: ../src/empathy-ft-manager.c:680
+#: ../src/empathy-ft-manager.c:1036
msgid "File"
msgstr "கோப்பு"
-#: ../src/empathy-ft-manager.c:702
+#: ../src/empathy-ft-manager.c:1058
msgid "Remaining"
msgstr "மீதமுள்ளவை"
-#: ../src/empathy-ft-manager.c:900
-msgid "Cannot save file to this location"
-msgstr "இந்த இடத்தில் கோப்பை சேமிக்க முடியவில்லை"
-
-#: ../src/empathy-ft-manager.c:946
-msgid "Save file as..."
-msgstr "கோப்பை இவ்வாறு சேமி..."
-
-#: ../src/empathy-ft-manager.c:1016
-msgid "unknown size"
-msgstr "தெரியாத அளவு"
-
-#: ../src/empathy-ft-manager.c:1022
-#, c-format
-msgid "%s would like to send you a file"
-msgstr " %s உங்களுக்கு ஒரு கோப்பை அனுப்ப விழைகிறார்."
-
-#. Translators: the first %s is the file name, the second %s is the file size
-#: ../src/empathy-ft-manager.c:1028
-#, c-format
-msgid "Do you want to accept the file \"%s\" (%s)?"
-msgstr "கோப்பு \"%s\" (%s) ஐ ஏற்க விருப்பமா?"
-
-#. Accept button
-#: ../src/empathy-ft-manager.c:1046
-msgid "_Accept"
-msgstr "ஏற்றுக்கொள் (_A)"
-
#: ../src/empathy-ft-manager.ui.h:1
-msgid "File transfers"
+msgid "File Transfers"
msgstr "கோப்பு பறிமாற்றங்கள் "
#: ../src/empathy-ft-manager.ui.h:2
@@ -1766,139 +1970,147 @@ msgstr ""
msgid "Import Accounts"
msgstr "இறக்குமதி செய் கணக்குகள்"
-#: ../src/empathy-main-window.c:393
+#: ../src/empathy-main-window.c:395
msgid "_Edit account"
msgstr "(_E) கணக்குகளை திருத்துக"
-#: ../src/empathy-main-window.c:496
+#: ../src/empathy-main-window.c:498
msgid "No error specified"
msgstr "பிழை ஏதும் குறிப்பிடவில்லை"
-#: ../src/empathy-main-window.c:499
+#: ../src/empathy-main-window.c:501
msgid "Network error"
msgstr "வலையமைப்பு பிழை"
-#: ../src/empathy-main-window.c:502
+#: ../src/empathy-main-window.c:504
msgid "Authentication failed"
msgstr "உறுதி செய்தல் தோல்வி"
-#: ../src/empathy-main-window.c:505
+#: ../src/empathy-main-window.c:507
msgid "Encryption error"
msgstr "மறையாக்க பிழை"
-#: ../src/empathy-main-window.c:508
+#: ../src/empathy-main-window.c:510
msgid "Name in use"
msgstr "பயனில் உள்ள பெயர் "
-#: ../src/empathy-main-window.c:511
+#: ../src/empathy-main-window.c:513
msgid "Certificate not provided"
msgstr "சான்றிதழ் தரப்படவில்லை"
-#: ../src/empathy-main-window.c:514
+#: ../src/empathy-main-window.c:516
msgid "Certificate untrusted"
msgstr "சான்றிதழில் நம்பக தன்மை இல்லை"
-#: ../src/empathy-main-window.c:517
+#: ../src/empathy-main-window.c:519
msgid "Certificate expired"
msgstr "சான்றிதழ் காலாவதியானது"
-#: ../src/empathy-main-window.c:520
+#: ../src/empathy-main-window.c:522
msgid "Certificate not activated"
msgstr "சான்றிதழ் செயல்படுத்தப்படவில்லை"
-#: ../src/empathy-main-window.c:523
+#: ../src/empathy-main-window.c:525
msgid "Certificate hostname mismatch"
msgstr "சான்றிதழ் புரவலன் பெயர் ஒத்திசையவில்லை"
-#: ../src/empathy-main-window.c:526
+#: ../src/empathy-main-window.c:528
msgid "Certificate fingerprint mismatch"
msgstr "சான்றிதழ் அடையாளம் ஒத்திசையவில்லை"
-#: ../src/empathy-main-window.c:529
+#: ../src/empathy-main-window.c:531
msgid "Certificate self-signed"
msgstr "சான்றிதழ் தானே கையெழுத்திட்டது"
-#: ../src/empathy-main-window.c:532
+#: ../src/empathy-main-window.c:534
msgid "Certificate error"
msgstr "சான்றிதழ் பிழை"
-#: ../src/empathy-main-window.c:535
+#: ../src/empathy-main-window.c:537
msgid "Unknown error"
msgstr "தெரியாத பிழை"
-#: ../src/empathy-main-window.c:877
-msgid "Contact"
-msgstr "தொடர்பு"
-
-#: ../src/empathy-main-window.c:1194
+#: ../src/empathy-main-window.c:1220
msgid "Show and edit accounts"
msgstr "கணக்குகளை காட்டவும் மற்றும் திருத்தவும் "
-#: ../src/empathy-main-window.ui.h:1
+#: ../src/empathy-main-window.ui.h:1 ../src/empathy-preferences.ui.h:10
msgid "Contact List"
msgstr "தொடர்பு பட்டியல்"
#: ../src/empathy-main-window.ui.h:2
+msgid "Contacts on a _Map"
+msgstr "(_M) தொடர்புகளை படத்தில் காட்டு "
+
+#: ../src/empathy-main-window.ui.h:3
msgid "Context"
msgstr "சூழல்"
-#: ../src/empathy-main-window.ui.h:3
+#: ../src/empathy-main-window.ui.h:4
msgid "Join _Favorites"
msgstr "(_F) விருப்பங்கள் சேர் "
-#: ../src/empathy-main-window.ui.h:4
+#: ../src/empathy-main-window.ui.h:5
msgid "Manage Favorites"
msgstr "விருப்பங்களை மேலாளுக"
-#: ../src/empathy-main-window.ui.h:5
-msgid "Show _File Transfers"
-msgstr "(_F) கோப்பு பறிமாற்றங்களை காட்டுக"
-
#: ../src/empathy-main-window.ui.h:6
-msgid "Show _Offline Contacts"
-msgstr "(_O) இணைப்பு விலகி உள்ள தொடர்புகள் ஐ காட்டுக"
-
-#: ../src/empathy-main-window.ui.h:7
msgid "_Accounts"
msgstr "கணக்குகள் (_A)"
-#: ../src/empathy-main-window.ui.h:8
+#: ../src/empathy-main-window.ui.h:7
msgid "_Add Contact..."
msgstr "(_A) தொடர்பை சேர்..."
-#: ../src/empathy-main-window.ui.h:10
+#: ../src/empathy-main-window.ui.h:9
msgid "_Contents"
msgstr "உள்ளடக்கங்கள் (_C)"
+#: ../src/empathy-main-window.ui.h:10
+msgid "_Debug"
+msgstr "(_D) வழு நீக்கு"
+
#: ../src/empathy-main-window.ui.h:12
+msgid "_File Transfers"
+msgstr "(_F) கோப்பு பறிமாற்றங்கள் "
+
+#: ../src/empathy-main-window.ui.h:13
msgid "_Help"
msgstr "உதவி (_H)"
-#: ../src/empathy-main-window.ui.h:13
+#: ../src/empathy-main-window.ui.h:14
msgid "_Join..."
msgstr "(_J) சேர்..."
-#: ../src/empathy-main-window.ui.h:14 ../src/empathy-status-icon.ui.h:2
+#: ../src/empathy-main-window.ui.h:15 ../src/empathy-status-icon.ui.h:2
msgid "_New Conversation..."
msgstr "(_N) புதிய உரையாடல்..."
-#: ../src/empathy-main-window.ui.h:15
+#: ../src/empathy-main-window.ui.h:16
+msgid "_Offline Contacts"
+msgstr "(_O) இணைப்பு விலகி உள்ள தொடர்புகள்"
+
+#: ../src/empathy-main-window.ui.h:17
msgid "_Personal Information"
msgstr "(_P) தனிப்பட்ட தகவல்"
-#: ../src/empathy-main-window.ui.h:17
+#: ../src/empathy-main-window.ui.h:19
+msgid "_Previous Conversations"
+msgstr "(_P) முந்தைய உரையாடல்கள்"
+
+#: ../src/empathy-main-window.ui.h:20
msgid "_Room"
msgstr "(_R) அறை"
-#: ../src/empathy-new-chatroom-dialog.c:319
+#: ../src/empathy-new-chatroom-dialog.c:332
msgid "Chat Room"
msgstr "அரட்டை அறை"
-#: ../src/empathy-new-chatroom-dialog.c:335
+#: ../src/empathy-new-chatroom-dialog.c:348
msgid "Members"
msgstr "உறுப்பினர்கள்"
-#: ../src/empathy-new-chatroom-dialog.c:464
+#: ../src/empathy-new-chatroom-dialog.c:492
#, c-format
msgctxt ""
"Room/Join's roomlist tooltip. Parametersare a channel name, yes/no, yes/no "
@@ -1910,28 +2122,39 @@ msgid ""
"Members: %s"
msgstr ""
"<b>%s</b>\n"
-"Invite required: %s\n"
-"Password required: %s\n"
-"Members: %s"
+"அழைப்பு தேவை: %s\n"
+"கடவுச்சொல் தேவை: %s\n"
+"உறுப்பினர்கள்: %s"
-#: ../src/empathy-new-chatroom-dialog.c:466
-#: ../src/empathy-new-chatroom-dialog.c:467
+#: ../src/empathy-new-chatroom-dialog.c:494
+#: ../src/empathy-new-chatroom-dialog.c:495
msgid "Yes"
msgstr "ஆம்"
-#: ../src/empathy-new-chatroom-dialog.c:466
-#: ../src/empathy-new-chatroom-dialog.c:467
+#: ../src/empathy-new-chatroom-dialog.c:494
+#: ../src/empathy-new-chatroom-dialog.c:495
msgid "No"
msgstr "இல்லை"
+#: ../src/empathy-new-chatroom-dialog.c:522
+msgid "Could not start room listing"
+msgstr "அறை பட்டியலை எடுப்பதை துவக்க முடியவில்லை"
+
+#: ../src/empathy-new-chatroom-dialog.c:532
+msgid "Could not stop room listing"
+msgstr "அறை பட்டியலை எடுப்பதை நிறுத்த முடியவில்லை"
+
#: ../src/empathy-new-chatroom-dialog.ui.h:2
-msgid ""
-"Enter the room name to join here or click on one or more rooms in the list."
+msgid "Couldn't load room list"
+msgstr "அறை பட்டியலை ஏற்ற முடியவில்லை"
+
+#: ../src/empathy-new-chatroom-dialog.ui.h:3
+msgid "Enter the room name to join here or click on one or more rooms in the list."
msgstr ""
"சேருவதற்கான அறை பெயரை இங்கு உள்ளிடுக. அல்லது பட்டியலில் உள்ள ஒன்றோ மேற்பட்ட பெயர்களையோ "
"சொடுக்குக."
-#: ../src/empathy-new-chatroom-dialog.ui.h:3
+#: ../src/empathy-new-chatroom-dialog.ui.h:4
msgid ""
"Enter the server which hosts the room, or leave it empty if the room is on "
"the current account's server"
@@ -1939,158 +2162,206 @@ msgstr ""
"அறையை தரும் சேவையகத்தின் பெயரை இங்கு உள்ளிடுக. அல்லது அது நடப்பு சேவையகத்தில் இருந்தால் "
"வெற்றாக விடவும்."
-#: ../src/empathy-new-chatroom-dialog.ui.h:4
+#: ../src/empathy-new-chatroom-dialog.ui.h:5
msgid "Join Room"
msgstr "அறை இல் சேர் "
-#: ../src/empathy-new-chatroom-dialog.ui.h:5
+#: ../src/empathy-new-chatroom-dialog.ui.h:6
msgid "Room List"
msgstr "அறை பட்டியல்"
-#: ../src/empathy-new-chatroom-dialog.ui.h:7
+#: ../src/empathy-new-chatroom-dialog.ui.h:8
msgid "_Room:"
msgstr "(_R) அறை:"
-#: ../src/empathy-preferences.c:156
+#: ../src/empathy-preferences.c:159
msgid "Message received"
msgstr "தகவல் பெறப்பட்டது"
-#: ../src/empathy-preferences.c:157
+#: ../src/empathy-preferences.c:160
msgid "Message sent"
msgstr "தகவல் அனுப்பப்பட்டது"
-#: ../src/empathy-preferences.c:158
+#: ../src/empathy-preferences.c:161
msgid "New conversation"
msgstr "புதிய உரையாடல்"
-#: ../src/empathy-preferences.c:159
+#: ../src/empathy-preferences.c:162
msgid "Contact goes online"
msgstr "தொடர்பு இணைபில் வருகிறார்"
-#: ../src/empathy-preferences.c:160
+#: ../src/empathy-preferences.c:163
msgid "Contact goes offline"
msgstr "தொடர்பு இணைப்பு விலகி செல்கிறார்"
-#: ../src/empathy-preferences.c:161
+#: ../src/empathy-preferences.c:164
msgid "Account connected"
msgstr "கணக்கு இணைக்கப்பட்டது"
-#: ../src/empathy-preferences.c:162
+#: ../src/empathy-preferences.c:165
msgid "Account disconnected"
msgstr "கணக்கு இணைப்பு நீக்கப்பட்டது"
-#: ../src/empathy-preferences.c:397
+#: ../src/empathy-preferences.c:432
msgid "Language"
msgstr "மொழி"
#: ../src/empathy-preferences.ui.h:1
-msgid "<b>Appearance</b>"
-msgstr "<b>தோற்றம்</b>"
+msgid "Adium theme to use:"
+msgstr "பயன்படுத்த வேண்டிய ஏடியம் கருத்து:"
#: ../src/empathy-preferences.ui.h:2
-msgid "<b>Behavior</b>"
-msgstr "<b>நடத்தை</b>"
+msgid "Allow _GPS usage"
+msgstr "(_G) ஜிபிஎஸ் பயனை அனுமதி"
#: ../src/empathy-preferences.ui.h:3
-msgid "<b>Contact List</b>"
-msgstr "<b> தொடர்பு பட்டியல்</b>"
+msgid "Allow _cellphone usage"
+msgstr "(_c) அலைபேசி பயனை அனுமதி"
#: ../src/empathy-preferences.ui.h:4
-msgid "<b>Enable spell checking for languages:</b>"
-msgstr "<b>மொழிகளுக்கு எழுத்து பிழை திருத்தத்தை செயல்படுத்து</b>"
+msgid "Allow _network usage"
+msgstr "(_n) வலைப்பின்னல் பயனை அனுமதி"
#: ../src/empathy-preferences.ui.h:5
-msgid "<b>Play sound for events</b>"
-msgstr "<b>நிகழ்வுகளுக்கு ஒலியை இயக்கு</b>"
+msgid "Appearance"
+msgstr "தோற்றம்"
#: ../src/empathy-preferences.ui.h:6
-msgid ""
-"<small>The list of languages reflects only the languages for which you have "
-"a dictionary installed.</small>"
-msgstr ""
-"<small>இந்த பட்டியல் நீங்கள் எந்த மொழிகளுக்கு அகராதி நிறுவி இருக்கிறீர்களோ அவற்றை மட்டுமே "
-"காட்டுகிறது</small>"
-
-#: ../src/empathy-preferences.ui.h:7
msgid "Automatically _connect on startup "
msgstr "(_c) துவங்கும்போது தானியங்கியாக இணை"
-#: ../src/empathy-preferences.ui.h:8
+#: ../src/empathy-preferences.ui.h:7
msgid "Avatars are user chosen images shown in the contact list"
msgstr "அவதாரங்கள் என்பது தொடர்பு பட்டியலில் காணப்படும் பயனர் தேர்ந்தெடுத்த பிம்பங்கள்"
+#: ../src/empathy-preferences.ui.h:8
+msgid "Behavior"
+msgstr "நடத்தை"
+
#: ../src/empathy-preferences.ui.h:9
msgid "Chat Th_eme:"
msgstr "(_e) அரட்டை கருத்து:"
-#: ../src/empathy-preferences.ui.h:10
+#: ../src/empathy-preferences.ui.h:11
msgid "Disable notifications when _away or busy"
msgstr "(_a) வெளியே அல்லது வேலையில் உள்ளபோது அறிவிப்புகளை செயல் நீக்கு"
-#: ../src/empathy-preferences.ui.h:11
+#: ../src/empathy-preferences.ui.h:12
msgid "Disable sounds when _away or busy"
msgstr "(_a) வெளியே அல்லது வேலையில் உள்ளபோது ஒலிகளை செயல் நீக்கு"
-#: ../src/empathy-preferences.ui.h:12
+#: ../src/empathy-preferences.ui.h:13
msgid "Enable notifications when the _chat is not focused"
msgstr "(_c) அரட்டை குவிப்பில் இல்லாத போது அறிவிப்புகளை செயல்படுத்து"
-#: ../src/empathy-preferences.ui.h:13
+#: ../src/empathy-preferences.ui.h:14
+msgid "Enable spell checking for languages:"
+msgstr "மொழிகளுக்கு எழுத்து பிழை திருத்தத்தை செயல்படுத்து:"
+
+#: ../src/empathy-preferences.ui.h:15
msgid "General"
msgstr "பொது"
-#: ../src/empathy-preferences.ui.h:14
+#: ../src/empathy-preferences.ui.h:16
+msgid "Geoclue Settings"
+msgstr "ஜியோ க்ளூ அமைப்புகள்"
+
+#: ../src/empathy-preferences.ui.h:17
+msgid "Location"
+msgstr "இடம்"
+
+#: ../src/empathy-preferences.ui.h:18
+msgid "Not a valid adium theme"
+msgstr "செல்லுபடியாகும் ஏடியம் கருத்து அல்ல"
+
+#: ../src/empathy-preferences.ui.h:19
msgid "Notifications"
msgstr "அறிவிப்புகள்"
-#: ../src/empathy-preferences.ui.h:15
+#: ../src/empathy-preferences.ui.h:20
+msgid "Play sound for events"
+msgstr "நிகழ்வுகளுக்கு ஒலியை இயக்கு"
+
+#: ../src/empathy-preferences.ui.h:21
msgid "Preferences"
msgstr "விருப்பங்கள்"
-#: ../src/empathy-preferences.ui.h:16
+#: ../src/empathy-preferences.ui.h:22
+msgid "Privacy"
+msgstr "அந்தரங்கம்"
+
+#: ../src/empathy-preferences.ui.h:23
+msgid ""
+"Reduced location accuracy means that nothing more precise than your city, "
+"state and country will be published. GPS coordinates will have a random "
+"value added (&#xB1;0.25&#xB0;)."
+msgstr ""
+"குறைத்த இட குறிப்பு எனில் உங்கள் மாநகரம், மாநிலம், நாடு தவிர ஒன்றும் "
+"வெளியிடப்படாது. ஜிபிஎஸ் ஆயத்தொலைவுகளுக்கு தற்போக்கு மதிப்பு சேர்க்கப்படும் "
+"(&#xB1;0.25&#xB0;)."
+
+#: ../src/empathy-preferences.ui.h:24
msgid "Show _avatars"
msgstr "(_a) அவதாரங்களை காட்டு"
-#: ../src/empathy-preferences.ui.h:17
+#: ../src/empathy-preferences.ui.h:25
msgid "Show _smileys as images"
msgstr "(_s) சிரிப்பான்களை பிம்பங்களாக காட்டு"
-#: ../src/empathy-preferences.ui.h:18
+#: ../src/empathy-preferences.ui.h:26
msgid "Show co_mpact contact list"
msgstr "(_m) அடக்கமான தொடர்பு பட்டியல் ஐ காட்டு "
-#: ../src/empathy-preferences.ui.h:19
+#: ../src/empathy-preferences.ui.h:27
+msgid "Show contact _list in rooms"
+msgstr "(_l) அறைகளில் தொடர்பு பட்டியல் ஐ காட்டு "
+
+#: ../src/empathy-preferences.ui.h:28
msgid "Sort by _name"
msgstr "(_n) பெயர் ஆல் வரிசைப்படுத்து"
-#: ../src/empathy-preferences.ui.h:20
+#: ../src/empathy-preferences.ui.h:29
msgid "Sort by s_tate"
msgstr "(_t) நிலை வாரியாக வரிசைப்படுத்து"
-#: ../src/empathy-preferences.ui.h:21
+#: ../src/empathy-preferences.ui.h:30
msgid "Sounds"
msgstr "ஒலிகள்"
-#: ../src/empathy-preferences.ui.h:22
+#: ../src/empathy-preferences.ui.h:31
msgid "Spell Checking"
msgstr "எழுத்து பிழை திருத்தம்"
-#: ../src/empathy-preferences.ui.h:23
+#: ../src/empathy-preferences.ui.h:32
+msgid ""
+"The list of languages reflects only the languages for which you have a "
+"dictionary installed."
+msgstr "இந்த பட்டியல் நீங்கள் எந்த மொழிகளுக்கு அகராதி நிறுவி இருக்கிறீர்களோ அவற்றை மட்டுமே காட்டுகிறது"
+
+#: ../src/empathy-preferences.ui.h:33
msgid "Themes"
msgstr "கருத்துகள்"
-#: ../src/empathy-preferences.ui.h:24
+#: ../src/empathy-preferences.ui.h:34
msgid "_Enable bubble notifications"
msgstr "(_E) பலூனில் அறிவிப்புகளை செயல்படுத்து"
-#: ../src/empathy-preferences.ui.h:25
+#: ../src/empathy-preferences.ui.h:35
msgid "_Enable sound notifications"
msgstr "(_E) ஒலி அறிவிப்புகளை செயல்படுத்து"
-#: ../src/empathy-preferences.ui.h:26
+#: ../src/empathy-preferences.ui.h:36
msgid "_Open new chats in separate windows"
msgstr "(_O) புதிய அரட்டைகளை தனி சாளரங்களில் திற"
+#: ../src/empathy-preferences.ui.h:37
+msgid "_Publish location to my contacts"
+msgstr "(_P) என் தொடர்புகளுக்கு இடத்தை வெளியிடு"
+
+#: ../src/empathy-preferences.ui.h:38
+msgid "_Reduce location accuracy"
+msgstr "(_R) இடத்தின் குறிப்பை குறை"
+
#: ../src/empathy-status-icon.ui.h:1
msgid "Status"
msgstr "நிலை"
@@ -2114,9 +2385,78 @@ msgid ""
"An invitation was offered for service %s, but you don't have the needed "
"application to handle it"
msgstr ""
-" %s சேவைக்கு அழைப்பு கொடுக்கப்பட்டது ஆனால் அதை கையாள உங்கள் கணினியில் தேவையான பயன்பாடு "
+" %s சேவைக்கு அழைப்பு கொடுக்கப்பட்டது. ஆனால் அதை கையாள உங்கள் கணினியில் தேவையான பயன்பாடு "
"இல்லை"
#: ../src/empathy-call-window-fullscreen.ui.h:1
msgid "gtk-leave-fullscreen"
msgstr "ஜிடிகே முழுத்திரையை விட்டுவிலகு"
+
+#: ../src/empathy-map-view.ui.h:1
+msgid "Contact Map View"
+msgstr "தொடர்புகள் படக்காட்சி"
+
+#: ../src/empathy-debug-dialog.c:111 ../src/empathy-debug-dialog.c:1075
+msgid "Error"
+msgstr " பிழை"
+
+#: ../src/empathy-debug-dialog.c:114 ../src/empathy-debug-dialog.c:1069
+msgid "Critical"
+msgstr "ஆபத்தானன்"
+
+#: ../src/empathy-debug-dialog.c:117 ../src/empathy-debug-dialog.c:1063
+msgid "Warning"
+msgstr "எச்சரிக்கை"
+
+#: ../src/empathy-debug-dialog.c:120 ../src/empathy-debug-dialog.c:1057
+#: ../src/empathy-debug-dialog.c:1105
+msgid "Message"
+msgstr "செய்தி"
+
+#: ../src/empathy-debug-dialog.c:123 ../src/empathy-debug-dialog.c:1051
+msgid "Info"
+msgstr "தகவல்"
+
+#: ../src/empathy-debug-dialog.c:126 ../src/empathy-debug-dialog.c:1045
+msgid "Debug"
+msgstr "வழுநீக்கு"
+
+#: ../src/empathy-debug-dialog.c:837
+msgid "Save"
+msgstr "சேமி"
+
+#: ../src/empathy-debug-dialog.c:940
+msgid "Debug Window"
+msgstr "வழு நீக்கு சாளரம்"
+
+#: ../src/empathy-debug-dialog.c:1013
+msgid "Pause"
+msgstr "தாமதி"
+
+#: ../src/empathy-debug-dialog.c:1025
+msgid "Level "
+msgstr "மட்டம்"
+
+#: ../src/empathy-debug-dialog.c:1094
+msgid "Time"
+msgstr "நேரம்"
+
+#: ../src/empathy-debug-dialog.c:1096
+msgid "Domain"
+msgstr "களம்"
+
+#: ../src/empathy-debug-dialog.c:1098
+msgid "Category"
+msgstr "வகை"
+
+#: ../src/empathy-debug-dialog.c:1100
+msgid "Level"
+msgstr "மட்டம்"
+
+#: ../src/empathy-debug-dialog.c:1132
+msgid ""
+"The selected connection manager does not support the remote debugging "
+"extension."
+msgstr "தேர்ந்தெடுத்த இணைப்பு மேலாளர் தொலை வழு நீக்கத்தை ஆதரிக்கவில்லை"
+
+
diff --git a/python/pyempathy/pyempathy.defs b/python/pyempathy/pyempathy.defs
index 02c8dad19..ed19c7a96 100644
--- a/python/pyempathy/pyempathy.defs
+++ b/python/pyempathy/pyempathy.defs
@@ -183,13 +183,6 @@
(gtype-id "EMPATHY_TYPE_TP_ROOMLIST")
)
-(define-object TpTube
- (in-module "Empathy")
- (parent "GObject")
- (c-name "EmpathyTpTube")
- (gtype-id "EMPATHY_TYPE_TP_TUBE")
-)
-
(define-object TubeHandler
(in-module "Empathy")
(parent "GObject")
@@ -938,6 +931,7 @@
'("gsize" "len")
'("gchar*" "format")
'("gchar*" "token")
+ '("gchar*" "filename")
)
)
@@ -2691,60 +2685,6 @@
-;; From empathy-tp-tube.h
-
-(define-function tp_tube_get_type
- (c-name "empathy_tp_tube_get_type")
- (return-type "GType")
-)
-
-(define-function tp_tube_new
- (c-name "empathy_tp_tube_new")
- (is-constructor-of "EmpathyTpTube")
- (return-type "EmpathyTpTube*")
- (parameters
- '("TpChannel*" "channel")
- )
-)
-
-(define-function tp_tube_new_stream_tube
- (c-name "empathy_tp_tube_new_stream_tube")
- (return-type "EmpathyTpTube*")
- (parameters
- '("EmpathyContact*" "contact")
- '("TpSocketAddressType" "type")
- '("const-gchar*" "hostname")
- '("guint" "port")
- '("const-gchar*" "service")
- '("GHashTable*" "parameters")
- )
-)
-
-(define-method accept_stream_tube
- (of-object "EmpathyTpTube")
- (c-name "empathy_tp_tube_accept_stream_tube")
- (return-type "none")
- (parameters
- '("TpSocketAddressType" "type")
- '("EmpathyTpTubeAcceptStreamTubeCb*" "callback")
- '("gpointer" "user_data")
- )
-)
-
-(define-method call_when_ready
- (of-object "EmpathyTpTube")
- (c-name "empathy_tp_tube_call_when_ready")
- (return-type "none")
- (parameters
- '("EmpathyTpTubeReadyCb*" "callback")
- '("gpointer" "user_data")
- '("GDestroyNotify" "destroy")
- '("GObject*" "weak_object")
- )
-)
-
-
-
;; From empathy-tube-handler.h
(define-function tube_handler_get_type
diff --git a/python/pyempathy/pyempathy.override b/python/pyempathy/pyempathy.override
index c985be7b6..6f46405a3 100644
--- a/python/pyempathy/pyempathy.override
+++ b/python/pyempathy/pyempathy.override
@@ -31,7 +31,6 @@ headers
#include "empathy-tp-contact-list.h"
#include "empathy-tp-file.h"
#include "empathy-tp-roomlist.h"
-#include "empathy-tp-tube.h"
#include "empathy-tube-handler.h"
#include "empathy-utils.h"
diff --git a/python/pyempathygtk/pyempathygtk.defs b/python/pyempathygtk/pyempathygtk.defs
index f174a6887..cf85c7853 100644
--- a/python/pyempathygtk/pyempathygtk.defs
+++ b/python/pyempathygtk/pyempathygtk.defs
@@ -1618,17 +1618,6 @@
(varargs #t)
)
-(define-method add_from_pixbuf
- (of-object "EmpathySmileyManager")
- (c-name "empathy_smiley_manager_add_from_pixbuf")
- (return-type "none")
- (parameters
- '("GdkPixbuf*" "smiley")
- '("const-gchar*" "first_str")
- )
- (varargs #t)
-)
-
(define-method get_all
(of-object "EmpathySmileyManager")
(c-name "empathy_smiley_manager_get_all")
@@ -1904,6 +1893,15 @@
)
)
+(define-function filename_from_icon_name
+ (c-name "empathy_filename_from_icon_name")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "icon_name")
+ '("GtkIconSize" "icon_size")
+ )
+)
+
(define-function text_iter_forward_search
(c-name "empathy_text_iter_forward_search")
(return-type "gboolean")
diff --git a/python/update-binding.sh b/python/update-binding.sh
index 1f6e4ae78..854c33159 100755
--- a/python/update-binding.sh
+++ b/python/update-binding.sh
@@ -36,7 +36,6 @@ python /usr/share/pygobject/2.0/codegen/h2def.py \
empathy-tp-contact-list.h \
empathy-tp-file.h \
empathy-tp-roomlist.h \
- empathy-tp-tube.h \
empathy-tube-handler.h \
empathy-types.h \
empathy-utils.h \
diff --git a/release.py b/release.py
index 9d20d1ab6..c7b773363 100755
--- a/release.py
+++ b/release.py
@@ -161,6 +161,16 @@ class Project:
translations += format % (lang, authors)
return translations
+ def get_bug_author(self, bug_number):
+ cmd = 'git log %s.. | grep -B 20 -E "(bug %s|#%s)"' \
+ ' | tac | grep ^Author: | head -1' \
+ % (self.last_tag, bug_number, bug_number)
+ line = self.exec_cmd (cmd)
+ p1 = line.find(" ")
+ p2 = line.find("<")
+
+ return line[p1:p2].strip()
+
def get_bugs(self):
commit_str = self.exec_cmd('git show %s' % (self.last_tag))
for line in commit_str.splitlines():
@@ -196,7 +206,11 @@ class Project:
for row in reader:
bug_number = row[col_bug_id]
description = row[col_description]
- bugs += ' - Fixed #%s, %s\n' % (bug_number, description)
+ author = self.get_bug_author(bug_number)
+ bugs += ' - Fixed #%s, %s' % (bug_number, description)
+ if author != '':
+ bugs += ' (%s)' % (author)
+ bugs += '\n'
return bugs
def generate_news(self):
diff --git a/src/Makefile.am b/src/Makefile.am
index db2117986..42485b7d1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,10 +3,12 @@ include $(top_srcdir)/tools/flymake.mk
AM_CPPFLAGS = \
-I$(top_srcdir) \
+ -DG_LOG_DOMAIN=\"empathy\" \
$(EMPATHY_CFLAGS) \
$(LIBNOTIFY_CFLAGS) \
$(LIBCHAMPLAIN_CFLAGS) \
- $(DISABLE_DEPRECATED)
+ $(DISABLE_DEPRECATED) \
+ $(WEBKIT_CFLAGS) \
$(WARN_CFLAGS)
LDADD = \
@@ -15,7 +17,8 @@ LDADD = \
$(top_builddir)/extensions/libemp-extensions.la \
$(LIBNOTIFY_LIBS) \
$(EMPATHY_LIBS) \
- $(LIBCHAMPLAIN_LIBS)
+ $(LIBCHAMPLAIN_LIBS) \
+ $(WEBKIT_LIBS)
bin_PROGRAMS = \
empathy \
@@ -75,12 +78,22 @@ ui_DATA = \
empathy-preferences.ui \
empathy-status-icon.ui
+EXTRA_DIST = \
+ $(autostart_DATA) \
+ $(ui_DATA)
+
if HAVE_LIBCHAMPLAIN
-empathy_SOURCES += \
- empathy-map-view.c empathy-map-view.h
+empathy_handwritten_source += \
+ empathy-map-view.c \
+ empathy-map-view.h
ui_DATA += \
empathy-map-view.ui
+else
+EXTRA_DIST += \
+ empathy-map-view.c \
+ empathy-map-view.h \
+ empathy-map-view.ui
endif
dist_man_MANS = \
@@ -104,9 +117,5 @@ dist_man_MANS = \
--vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \
$< > $@
-EXTRA_DIST = \
- $(autostart_DATA) \
- $(ui_DATA)
-
CLEANFILES = $(BUILT_SOURCES)
diff --git a/src/empathy-about-dialog.c b/src/empathy-about-dialog.c
index 62c545864..dd30e3aed 100644
--- a/src/empathy-about-dialog.c
+++ b/src/empathy-about-dialog.c
@@ -25,8 +25,7 @@
#include <config.h>
#include <glib/gi18n.h>
-#include <gtk/gtkaboutdialog.h>
-#include <gtk/gtksizegroup.h>
+#include <gtk/gtk.h>
#include <libempathy-gtk/empathy-ui-utils.h>
diff --git a/src/empathy-about-dialog.h b/src/empathy-about-dialog.h
index 3e8f40531..a290b3243 100644
--- a/src/empathy-about-dialog.h
+++ b/src/empathy-about-dialog.h
@@ -25,7 +25,7 @@
#ifndef __EMPATHY_ABOUT_DIALOG_H__
#define __EMPATHY_ABOUT_DIALOG_H__
-#include <gtk/gtkwindow.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index dcf6bcc96..4cf391108 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -72,7 +72,8 @@ typedef struct {
GtkWidget *hbox_type;
GtkWidget *button_create;
GtkWidget *button_back;
- GtkWidget *checkbutton_register;
+ GtkWidget *radiobutton_reuse;
+ GtkWidget *radiobutton_register;
GtkWidget *image_type;
GtkWidget *label_name;
@@ -396,7 +397,7 @@ accounts_dialog_model_add_columns (EmpathyAccountsDialog *dialog)
g_signal_connect (cell, "toggled",
G_CALLBACK (accounts_dialog_enable_toggled_cb),
dialog);
-
+
/* Account column */
column = gtk_tree_view_column_new ();
gtk_tree_view_column_set_title (column, _("Accounts"));
@@ -416,6 +417,7 @@ accounts_dialog_model_add_columns (EmpathyAccountsDialog *dialog)
cell = gtk_cell_renderer_text_new ();
g_object_set (cell,
"ellipsize", PANGO_ELLIPSIZE_END,
+ "width-chars", 25,
"editable", TRUE,
NULL);
gtk_tree_view_column_pack_start (column, cell, TRUE);
@@ -439,7 +441,7 @@ accounts_dialog_model_select_first (EmpathyAccountsDialog *dialog)
/* select first */
view = GTK_TREE_VIEW (dialog->treeview);
model = gtk_tree_view_get_model (view);
-
+
if (gtk_tree_model_get_iter_first (model, &iter)) {
selection = gtk_tree_view_get_selection (view);
gtk_tree_selection_select_iter (selection, &iter);
@@ -509,7 +511,7 @@ accounts_dialog_get_account_iter (EmpathyAccountsDialog *dialog,
GtkTreeSelection *selection;
GtkTreeModel *model;
gboolean ok;
-
+
/* Update the status in the model */
view = GTK_TREE_VIEW (dialog->treeview);
selection = gtk_tree_view_get_selection (view);
@@ -729,7 +731,7 @@ accounts_dialog_connection_changed_cb (EmpathyAccountManager *manager,
GtkTreeModel *model;
GtkTreeIter iter;
gboolean found;
-
+
/* Update the status in the model */
model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview));
@@ -842,8 +844,8 @@ accounts_dialog_button_create_clicked_cb (GtkWidget *button,
if (cap & MC_PROFILE_CAPABILITY_REGISTRATION_UI) {
gboolean active;
- active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->checkbutton_register));
- if (!active) {
+ active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->radiobutton_register));
+ if (active) {
mc_account_set_param_boolean (account, "register", TRUE);
}
}
@@ -877,9 +879,11 @@ accounts_dialog_profile_changed_cb (GtkWidget *widget,
cap = mc_profile_get_capabilities (profile);
if (cap & MC_PROFILE_CAPABILITY_REGISTRATION_UI) {
- gtk_widget_show (dialog->checkbutton_register);
+ gtk_widget_show (dialog->radiobutton_register);
+ gtk_widget_show (dialog->radiobutton_reuse);
} else {
- gtk_widget_hide (dialog->checkbutton_register);
+ gtk_widget_hide (dialog->radiobutton_register);
+ gtk_widget_hide (dialog->radiobutton_reuse);
}
g_object_unref (profile);
}
@@ -910,8 +914,8 @@ accounts_dialog_button_add_clicked_cb (GtkWidget *button,
gtk_widget_hide (dialog->button_back);
}
- accounts_dialog_profile_changed_cb (dialog->checkbutton_register, dialog);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->checkbutton_register),
+ accounts_dialog_profile_changed_cb (dialog->radiobutton_register, dialog);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->radiobutton_reuse),
TRUE);
gtk_combo_box_set_active (GTK_COMBO_BOX (dialog->combobox_profile), 0);
gtk_widget_grab_focus (dialog->combobox_profile);
@@ -1038,7 +1042,7 @@ accounts_dialog_destroy_cb (GtkWidget *widget,
g_object_unref (dialog->account_manager);
g_object_unref (dialog->mc);
-
+
g_free (dialog);
}
@@ -1071,7 +1075,8 @@ empathy_accounts_dialog_show (GtkWindow *parent,
"hbox_type", &dialog->hbox_type,
"button_create", &dialog->button_create,
"button_back", &dialog->button_back,
- "checkbutton_register", &dialog->checkbutton_register,
+ "radiobutton_reuse", &dialog->radiobutton_reuse,
+ "radiobutton_register", &dialog->radiobutton_register,
"image_type", &dialog->image_type,
"label_name", &dialog->label_name,
"button_add", &dialog->button_add,
diff --git a/src/empathy-accounts-dialog.h b/src/empathy-accounts-dialog.h
index 40ea24f3e..b8c3d3691 100644
--- a/src/empathy-accounts-dialog.h
+++ b/src/empathy-accounts-dialog.h
@@ -25,7 +25,7 @@
#ifndef __EMPATHY_ACCOUNTS_DIALOG_H__
#define __EMPATHY_ACCOUNTS_DIALOG_H__
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
#include <libmissioncontrol/mc-account.h>
diff --git a/src/empathy-accounts-dialog.ui b/src/empathy-accounts-dialog.ui
index 49862d853..cf1b23ef4 100644
--- a/src/empathy-accounts-dialog.ui
+++ b/src/empathy-accounts-dialog.ui
@@ -23,15 +23,14 @@
<property name="spacing">6</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow17">
+ <property name="height_request">200</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hscrollbar_policy">automatic</property>
+ <property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="treeview">
- <property name="width_request">250</property>
- <property name="height_request">200</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="enable_search">False</property>
@@ -143,7 +142,6 @@
</child>
<child>
<object class="GtkVBox" id="vbox214">
- <property name="width_request">415</property>
<property name="visible">True</property>
<property name="spacing">18</property>
<child>
@@ -158,8 +156,11 @@
<object class="GtkLabel" id="label_name">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label">&lt;big&gt;&lt;b&gt;Gmail&lt;/b&gt;&lt;/big&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Gmail</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
<property name="selectable">True</property>
</object>
<packing>
@@ -204,8 +205,10 @@
<child type="label">
<object class="GtkLabel" id="label599">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Settings&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Settings</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -255,14 +258,38 @@
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="checkbutton_register">
- <property name="label" translatable="yes">I already have an account I want to use</property>
+ <object class="GtkVBox" id="vbox2">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="active">True</property>
- <property name="draw_indicator">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton_reuse">
+ <property name="label" translatable="yes">_Reuse an existing account</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton_register">
+ <property name="label" translatable="yes">_Create a new account</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radiobutton_reuse</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="position">2</property>
@@ -273,6 +300,21 @@
<property name="visible">True</property>
<property name="spacing">6</property>
<child>
+ <object class="GtkButton" id="button_back">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkButton" id="button_create">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -318,21 +360,6 @@
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_back">
- <property name="label">gtk-cancel</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
@@ -351,8 +378,10 @@
<child type="label">
<object class="GtkLabel" id="label643">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;New Account&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Add Account</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -382,8 +411,10 @@
<child type="label">
<object class="GtkLabel" id="label_no_protocol">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;No protocol installed&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">No protocol installed</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index 08c0e7ea2..a71e9c8be 100644
--- a/src/empathy-call-window.c
+++ b/src/empathy-call-window.c
@@ -32,6 +32,7 @@
#include <telepathy-farsight/channel.h>
#include <libempathy/empathy-tp-contact-factory.h>
+#include <libempathy/empathy-call-factory.h>
#include <libempathy/empathy-utils.h>
#include <libempathy-gtk/empathy-avatar-image.h>
#include <libempathy-gtk/empathy-video-widget.h>
@@ -39,9 +40,9 @@
#include <libempathy-gtk/empathy-audio-sink.h>
#include <libempathy-gtk/empathy-video-src.h>
#include <libempathy-gtk/empathy-ui-utils.h>
+#include <libempathy-gtk/empathy-sound.h>
#include "empathy-call-window.h"
-
#include "empathy-call-window-fullscreen.h"
#include "empathy-sidebar.h"
@@ -59,6 +60,12 @@
#define REMOTE_CONTACT_AVATAR_DEFAULT_WIDTH EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT
#define REMOTE_CONTACT_AVATAR_DEFAULT_HEIGHT EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT
+/* If an video input error occurs, the error message will start with "v4l" */
+#define VIDEO_INPUT_ERROR_PREFIX "v4l"
+
+/* The time interval in milliseconds between 2 outgoing rings */
+#define MS_BETWEEN_RING 500
+
G_DEFINE_TYPE(EmpathyCallWindow, empathy_call_window, GTK_TYPE_WINDOW)
/* signal enum */
@@ -75,6 +82,13 @@ enum {
PROP_CALL_HANDLER = 1,
};
+typedef enum {
+ CONNECTING,
+ CONNECTED,
+ DISCONNECTED,
+ REDIALING
+} CallState;
+
/* private structure */
typedef struct _EmpathyCallWindowPriv EmpathyCallWindowPriv;
@@ -84,7 +98,8 @@ struct _EmpathyCallWindowPriv
EmpathyCallHandler *handler;
EmpathyContact *contact;
- gboolean connected;
+ guint call_state;
+ gboolean outgoing;
GtkUIManager *ui_manager;
GtkWidget *video_output;
@@ -95,24 +110,36 @@ struct _EmpathyCallWindowPriv
GtkWidget *sidebar_button;
GtkWidget *statusbar;
GtkWidget *volume_button;
+ GtkWidget *redial_button;
GtkWidget *mic_button;
GtkWidget *camera_button;
GtkWidget *toolbar;
GtkWidget *pane;
+ GtkAction *show_preview;
GtkAction *send_video;
+ GtkAction *redial;
GtkAction *menu_fullscreen;
+ /* The frames and boxes that contain self and remote avatar and video
+ input/output. When we redial, we destroy and re-create the boxes */
+ GtkWidget *remote_user_output_frame;
+ GtkWidget *self_user_output_frame;
+ GtkWidget *remote_user_output_hbox;
+ GtkWidget *self_user_output_hbox;
+
/* We keep a reference on the hbox which contains the main content so we can
easilly repack everything when toggling fullscreen */
GtkWidget *content_hbox;
- /* This vbox is contained in the content_hbox. When toggling fullscreen,
+ /* This vbox is contained in the content_hbox and it contains the
+ self_user_output_frame and the sidebar button. When toggling fullscreen,
it needs to be repacked. We keep a reference on it for easier access. */
GtkWidget *vbox;
gulong video_output_motion_handler_id;
gdouble volume;
+ GtkWidget *volume_progress_bar;
GtkAdjustment *audio_input_adj;
GtkWidget *dtmf_panel;
@@ -168,6 +195,9 @@ static void empathy_call_window_sidebar_toggled_cb (GtkToggleButton *toggle,
static void empathy_call_window_camera_toggled_cb (GtkToggleToolButton *toggle,
EmpathyCallWindow *window);
+static void empathy_call_window_set_send_video (EmpathyCallWindow *window,
+ gboolean send);
+
static void empathy_call_window_send_video_toggled_cb (GtkToggleAction *toggle,
EmpathyCallWindow *window);
@@ -203,9 +233,17 @@ static gboolean empathy_call_window_video_output_motion_notify (GtkWidget *widge
static void empathy_call_window_video_menu_popup (EmpathyCallWindow *window,
guint button);
+static void empathy_call_window_redial_cb (gpointer object,
+ EmpathyCallWindow *window);
+
+static void empathy_call_window_restart_call (EmpathyCallWindow *window);
+
static void empathy_call_window_status_message (EmpathyCallWindow *window,
gchar *message);
+static void empathy_call_window_update_avatars_visibility (EmpathyTpCall *call,
+ EmpathyCallWindow *window);
+
static gboolean empathy_call_window_bus_message (GstBus *bus,
GstMessage *message, gpointer user_data);
@@ -455,7 +493,7 @@ empathy_call_window_mic_volume_changed_cb (GtkAdjustment *adj,
priv->volume = volume;
/* Ensure that the toggle button is active if the volume is > 0 and inactive
- * if it's smaller then 0 */
+ * if it's smaller than 0 */
if ((volume > 0) != gtk_toggle_tool_button_get_active (
GTK_TOGGLE_TOOL_BUTTON (priv->mic_button)))
gtk_toggle_tool_button_set_active (
@@ -467,19 +505,20 @@ empathy_call_window_mic_volume_changed_cb (GtkAdjustment *adj,
static void
empathy_call_window_audio_input_level_changed_cb (EmpathyGstAudioSrc *src,
- gdouble level, GtkProgressBar *bar)
+ gdouble level, EmpathyCallWindow *window)
{
gdouble value;
+ EmpathyCallWindowPriv *priv = GET_PRIV (window);
value = CLAMP (pow (10, level / 20), 0.0, 1.0);
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (bar), value);
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->volume_progress_bar), value);
}
static GtkWidget *
empathy_call_window_create_audio_input (EmpathyCallWindow *self)
{
EmpathyCallWindowPriv *priv = GET_PRIV (self);
- GtkWidget *hbox, *vbox, *scale, *progress, *label;
+ GtkWidget *hbox, *vbox, *scale, *label;
GtkAdjustment *adj;
hbox = gtk_hbox_new (TRUE, 3);
@@ -502,17 +541,130 @@ empathy_call_window_create_audio_input (EmpathyCallWindow *self)
gtk_box_pack_start (GTK_BOX (vbox), scale, TRUE, TRUE, 3);
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 3);
- progress = gtk_progress_bar_new ();
- gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (progress),
- GTK_PROGRESS_BOTTOM_TO_TOP);
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress), 0);
+ priv->volume_progress_bar = gtk_progress_bar_new ();
+ gtk_progress_bar_set_orientation (
+ GTK_PROGRESS_BAR (priv->volume_progress_bar), GTK_PROGRESS_BOTTOM_TO_TOP);
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->volume_progress_bar),
+ 0);
+
+ gtk_box_pack_start (GTK_BOX (hbox), priv->volume_progress_bar, FALSE, FALSE,
+ 3);
+
+ return hbox;
+}
+
+static void
+empathy_call_window_setup_remote_frame (GstBus *bus, EmpathyCallWindow *self)
+{
+ EmpathyCallWindowPriv *priv = GET_PRIV (self);
+
+ /* Initializing all the content (UI and output gst elements) related to the
+ remote contact */
+ priv->remote_user_output_hbox = gtk_hbox_new (FALSE, 0);
+
+ priv->remote_user_avatar_widget = gtk_image_new ();
+ gtk_box_pack_start (GTK_BOX (priv->remote_user_output_hbox),
+ priv->remote_user_avatar_widget, TRUE, TRUE, 0);
+
+ priv->video_output = empathy_video_widget_new (bus);
+ gtk_box_pack_start (GTK_BOX (priv->remote_user_output_hbox),
+ priv->video_output, TRUE, TRUE, 0);
+
+ gtk_widget_add_events (priv->video_output,
+ GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK);
+ g_signal_connect (G_OBJECT (priv->video_output), "button-press-event",
+ G_CALLBACK (empathy_call_window_video_button_press_cb), self);
+
+ gtk_container_add (GTK_CONTAINER (priv->remote_user_output_frame),
+ priv->remote_user_output_hbox);
+
+ priv->audio_output = empathy_audio_sink_new ();
+ gst_object_ref (priv->audio_output);
+ gst_object_sink (priv->audio_output);
+}
+
+static void
+empathy_call_window_setup_self_frame (GstBus *bus, EmpathyCallWindow *self)
+{
+ EmpathyCallWindowPriv *priv = GET_PRIV (self);
+
+ /* Initializing all the content (UI and input gst elements) related to the
+ self contact, except for the video preview widget. This widget is only
+ initialized when the "show video preview" option is activated */
+ priv->self_user_output_hbox = gtk_hbox_new (FALSE, 0);
+
+ priv->self_user_avatar_widget = gtk_image_new ();
+ gtk_box_pack_start (GTK_BOX (priv->self_user_output_hbox),
+ priv->self_user_avatar_widget, TRUE, TRUE, 0);
+
+ gtk_container_add (GTK_CONTAINER (priv->self_user_output_frame),
+ priv->self_user_output_hbox);
+
+ priv->video_input = empathy_video_src_new ();
+ gst_object_ref (priv->video_input);
+ gst_object_sink (priv->video_input);
+
+ priv->audio_input = empathy_audio_src_new ();
+ gst_object_ref (priv->audio_input);
+ gst_object_sink (priv->audio_input);
g_signal_connect (priv->audio_input, "peak-level-changed",
- G_CALLBACK (empathy_call_window_audio_input_level_changed_cb), progress);
+ G_CALLBACK (empathy_call_window_audio_input_level_changed_cb), self);
+}
+
+static void
+empathy_call_window_setup_video_preview (EmpathyCallWindow *window)
+{
+ EmpathyCallWindowPriv *priv = GET_PRIV (window);
+ GstElement *preview;
+ GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (priv->pipeline));
- gtk_box_pack_start (GTK_BOX (hbox), progress, FALSE, FALSE, 3);
+ if (priv->video_preview != NULL)
+ {
+ /* Since the video preview and the video tee are initialized and freed
+ at the same time, if one is initialized, then the other one should
+ be too. */
+ g_assert (priv->video_tee != NULL);
+ return;
+ }
- return hbox;
+ g_assert (priv->video_tee == NULL);
+
+ priv->video_tee = gst_element_factory_make ("tee", NULL);
+ gst_object_ref (priv->video_tee);
+ gst_object_sink (priv->video_tee);
+
+ priv->video_preview = empathy_video_widget_new_with_size (bus,
+ SELF_VIDEO_SECTION_WIDTH, SELF_VIDEO_SECTION_HEIGTH);
+ g_object_set (priv->video_preview, "sync", FALSE, "async", TRUE, NULL);
+ gtk_box_pack_start (GTK_BOX (priv->self_user_output_hbox),
+ priv->video_preview, TRUE, TRUE, 0);
+
+ preview = empathy_video_widget_get_element (
+ EMPATHY_VIDEO_WIDGET (priv->video_preview));
+ gst_bin_add_many (GST_BIN (priv->pipeline), priv->video_input,
+ priv->video_tee, preview, NULL);
+ gst_element_link_many (priv->video_input, priv->video_tee,
+ preview, NULL);
+
+ g_object_unref (bus);
+
+ gst_element_set_state (preview, GST_STATE_PLAYING);
+ gst_element_set_state (priv->video_input, GST_STATE_PLAYING);
+ gst_element_set_state (priv->video_tee, GST_STATE_PLAYING);
+}
+
+static void
+empathy_call_window_set_state_connecting (EmpathyCallWindow *window)
+{
+ EmpathyCallWindowPriv *priv = GET_PRIV (window);
+
+ empathy_call_window_status_message (window, _("Connecting..."));
+ priv->call_state = CONNECTING;
+
+ if (priv->outgoing)
+ empathy_sound_start_playing (GTK_WIDGET (window),
+ EMPATHY_SOUND_PHONE_OUTGOING, MS_BETWEEN_RING);
}
static void
@@ -524,8 +676,6 @@ empathy_call_window_init (EmpathyCallWindow *self)
GtkWidget *h;
GtkWidget *arrow;
GtkWidget *page;
- GtkWidget *remote_user_output_frame, *self_user_output_frame;
- GtkWidget *remote_user_output_hbox, *self_user_output_hbox;
GstBus *bus;
gchar *filename;
@@ -534,10 +684,13 @@ empathy_call_window_init (EmpathyCallWindow *self)
"call_window_vbox", &top_vbox,
"pane", &priv->pane,
"statusbar", &priv->statusbar,
+ "redial", &priv->redial_button,
"microphone", &priv->mic_button,
"camera", &priv->camera_button,
"toolbar", &priv->toolbar,
"send_video", &priv->send_video,
+ "menuredial", &priv->redial,
+ "show_preview", &priv->show_preview,
"ui_manager", &priv->ui_manager,
"menufullscreen", &priv->menu_fullscreen,
NULL);
@@ -545,6 +698,8 @@ empathy_call_window_init (EmpathyCallWindow *self)
empathy_builder_connect (gui, self,
"menuhangup", "activate", empathy_call_window_hangup_cb,
"hangup", "clicked", empathy_call_window_hangup_cb,
+ "menuredial", "activate", empathy_call_window_redial_cb,
+ "redial", "clicked", empathy_call_window_redial_cb,
"microphone", "toggled", empathy_call_window_mic_toggled_cb,
"camera", "toggled", empathy_call_window_camera_toggled_cb,
"send_video", "toggled", empathy_call_window_send_video_toggled_cb,
@@ -558,80 +713,33 @@ empathy_call_window_init (EmpathyCallWindow *self)
empathy_call_window_setup_toolbar (self);
- priv->pipeline = gst_pipeline_new (NULL);
-
priv->content_hbox = gtk_hbox_new (FALSE, CONTENT_HBOX_SPACING);
gtk_container_set_border_width (GTK_CONTAINER (priv->content_hbox),
CONTENT_HBOX_BORDER_WIDTH);
gtk_paned_pack1 (GTK_PANED (priv->pane), priv->content_hbox, TRUE, FALSE);
+ priv->pipeline = gst_pipeline_new (NULL);
bus = gst_pipeline_get_bus (GST_PIPELINE (priv->pipeline));
-
gst_bus_add_watch (bus, empathy_call_window_bus_message, self);
- remote_user_output_frame = gtk_frame_new (NULL);
- gtk_widget_set_size_request (remote_user_output_frame,
+ priv->remote_user_output_frame = gtk_frame_new (NULL);
+ gtk_widget_set_size_request (priv->remote_user_output_frame,
EMPATHY_VIDEO_WIDGET_DEFAULT_WIDTH, EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT);
- remote_user_output_hbox = gtk_hbox_new (FALSE, 0);
-
- priv->remote_user_avatar_widget = gtk_image_new ();
- gtk_box_pack_start (GTK_BOX (remote_user_output_hbox),
- priv->remote_user_avatar_widget, TRUE, TRUE, 0);
-
- priv->video_output = empathy_video_widget_new (bus);
- gtk_box_pack_start (GTK_BOX (remote_user_output_hbox),
- priv->video_output, TRUE, TRUE, 0);
-
- gtk_container_add (GTK_CONTAINER (remote_user_output_frame),
- remote_user_output_hbox);
-
- gtk_widget_add_events (priv->video_output,
- GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK);
- g_signal_connect (G_OBJECT (priv->video_output), "button-press-event",
- G_CALLBACK (empathy_call_window_video_button_press_cb), self);
- gtk_box_pack_start (GTK_BOX (priv->content_hbox), remote_user_output_frame,
- TRUE, TRUE, CONTENT_HBOX_CHILDREN_PACKING_PADDING);
+ gtk_box_pack_start (GTK_BOX (priv->content_hbox),
+ priv->remote_user_output_frame, TRUE, TRUE,
+ CONTENT_HBOX_CHILDREN_PACKING_PADDING);
+ empathy_call_window_setup_remote_frame (bus, self);
- priv->video_tee = gst_element_factory_make ("tee", NULL);
- gst_object_ref (priv->video_tee);
- gst_object_sink (priv->video_tee);
+ priv->self_user_output_frame = gtk_frame_new (NULL);
+ gtk_widget_set_size_request (priv->self_user_output_frame,
+ SELF_VIDEO_SECTION_WIDTH, SELF_VIDEO_SECTION_HEIGTH);
priv->vbox = gtk_vbox_new (FALSE, 3);
gtk_box_pack_start (GTK_BOX (priv->content_hbox), priv->vbox,
- FALSE, FALSE, CONTENT_HBOX_CHILDREN_PACKING_PADDING);
-
- self_user_output_frame = gtk_frame_new (NULL);
- gtk_widget_set_size_request (self_user_output_frame, SELF_VIDEO_SECTION_WIDTH,
- SELF_VIDEO_SECTION_HEIGTH);
- self_user_output_hbox = gtk_hbox_new (FALSE, 0);
-
- priv->self_user_avatar_widget = gtk_image_new ();
- gtk_box_pack_start (GTK_BOX (self_user_output_hbox),
- priv->self_user_avatar_widget, TRUE, TRUE, 0);
-
- priv->video_preview = empathy_video_widget_new_with_size (bus,
- SELF_VIDEO_SECTION_WIDTH, SELF_VIDEO_SECTION_HEIGTH);
- g_object_set (priv->video_preview, "sync", FALSE, "async", TRUE, NULL);
- gtk_box_pack_start (GTK_BOX (self_user_output_hbox), priv->video_preview,
- TRUE, TRUE, 0);
-
- gtk_container_add (GTK_CONTAINER (self_user_output_frame),
- self_user_output_hbox);
-
- gtk_box_pack_start (GTK_BOX (priv->vbox), self_user_output_frame, FALSE,
+ FALSE, FALSE, CONTENT_HBOX_CHILDREN_PACKING_PADDING);
+ gtk_box_pack_start (GTK_BOX (priv->vbox), priv->self_user_output_frame, FALSE,
FALSE, 0);
-
- priv->video_input = empathy_video_src_new ();
- gst_object_ref (priv->video_input);
- gst_object_sink (priv->video_input);
-
- priv->audio_input = empathy_audio_src_new ();
- gst_object_ref (priv->audio_input);
- gst_object_sink (priv->audio_input);
-
- priv->audio_output = empathy_audio_sink_new ();
- gst_object_ref (priv->audio_output);
- gst_object_sink (priv->audio_output);
+ empathy_call_window_setup_self_frame (bus, self);
g_object_unref (bus);
@@ -688,8 +796,6 @@ empathy_call_window_init (EmpathyCallWindow *self)
g_signal_connect (G_OBJECT (self), "key-press-event",
G_CALLBACK (empathy_call_window_key_press_cb), self);
- empathy_call_window_status_message (self, _("Connecting..."));
-
priv->timer = g_timer_new ();
g_object_ref (priv->ui_manager);
@@ -764,14 +870,12 @@ empathy_call_window_got_self_contact_cb (EmpathyTpContactFactory *factory,
}
static void
-empathy_call_window_constructed (GObject *object)
+empathy_call_window_setup_avatars (EmpathyCallWindow *self,
+ EmpathyCallHandler *handler)
{
- EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (object);
EmpathyCallWindowPriv *priv = GET_PRIV (self);
- g_assert (priv->handler != NULL);
-
- g_object_get (priv->handler, "contact", &(priv->contact), NULL);
+ g_object_get (handler, "contact", &(priv->contact), NULL);
if (priv->contact != NULL)
{
@@ -811,15 +915,42 @@ empathy_call_window_constructed (GObject *object)
priv->remote_user_avatar_widget, MIN (REMOTE_CONTACT_AVATAR_DEFAULT_WIDTH,
REMOTE_CONTACT_AVATAR_DEFAULT_HEIGHT));
- /* We hide the self avatar. It will be shown if a problem is
- encountered when we try to send video. As for the remote avatar, it
- is shown by default and will be hidden when we receive video from
- the remote side. */
- gtk_widget_hide (priv->self_user_avatar_widget);
+ /* The remote avatar is shown by default and will be hidden when we receive
+ video from the remote side. */
gtk_widget_hide (priv->video_output);
gtk_widget_show (priv->remote_user_avatar_widget);
}
+static void
+empathy_call_window_setup_video_preview_visibility (EmpathyCallWindow *self,
+ EmpathyCallHandler *handler)
+{
+ EmpathyCallWindowPriv *priv = GET_PRIV (self);
+ gboolean initial_video = empathy_call_handler_has_initial_video (priv->handler);
+
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->show_preview),
+ initial_video);
+}
+
+static void
+empathy_call_window_constructed (GObject *object)
+{
+ EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (object);
+ EmpathyCallWindowPriv *priv = GET_PRIV (self);
+ EmpathyTpCall *call;
+
+ g_assert (priv->handler != NULL);
+
+ g_object_get (priv->handler, "tp-call", &call, NULL);
+ priv->outgoing = (call == NULL);
+ if (call != NULL)
+ g_object_unref (call);
+
+ empathy_call_window_setup_avatars (self, priv->handler);
+ empathy_call_window_setup_video_preview_visibility (self, priv->handler);
+ empathy_call_window_set_state_connecting (self);
+}
+
static void empathy_call_window_dispose (GObject *object);
static void empathy_call_window_finalize (GObject *object);
@@ -878,12 +1009,19 @@ empathy_call_window_class_init (
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (object_class,
PROP_CALL_HANDLER, param_spec);
+}
+static void
+empathy_call_window_video_stream_changed_cb (EmpathyTpCall *call,
+ GParamSpec *property, EmpathyCallWindow *self)
+{
+ empathy_call_window_update_avatars_visibility (call, self);
}
void
empathy_call_window_dispose (GObject *object)
{
+ EmpathyTpCall *call;
EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (object);
EmpathyCallWindowPriv *priv = GET_PRIV (self);
@@ -892,6 +1030,16 @@ empathy_call_window_dispose (GObject *object)
priv->dispose_has_run = TRUE;
+ g_object_get (priv->handler, "tp-call", &call, NULL);
+
+ if (call != NULL)
+ {
+ g_signal_handlers_disconnect_by_func (call,
+ empathy_call_window_video_stream_changed_cb, object);
+ }
+
+ g_object_unref (call);
+
if (priv->handler != NULL)
g_object_unref (priv->handler);
@@ -996,26 +1144,116 @@ empathy_call_window_request_resource_cb (EmpathyCallHandler *handler,
return priv->video_input != NULL;
}
-static void
+static gboolean
+empathy_call_window_reset_pipeline (EmpathyCallWindow *self)
+{
+ GstStateChangeReturn state_change_return;
+ EmpathyCallWindowPriv *priv = GET_PRIV (self);
+
+ if (priv->pipeline == NULL)
+ return TRUE;
+
+ state_change_return = gst_element_set_state (priv->pipeline, GST_STATE_NULL);
+
+ if (state_change_return == GST_STATE_CHANGE_SUCCESS ||
+ state_change_return == GST_STATE_CHANGE_NO_PREROLL)
+ {
+ if (priv->pipeline != NULL)
+ g_object_unref (priv->pipeline);
+ priv->pipeline = NULL;
+
+ if (priv->video_input != NULL)
+ g_object_unref (priv->video_input);
+ priv->video_input = NULL;
+
+ if (priv->audio_input != NULL)
+ g_object_unref (priv->audio_input);
+ priv->audio_input = NULL;
+
+ if (priv->audio_output != NULL)
+ g_object_unref (priv->audio_output);
+ priv->audio_output = NULL;
+
+ if (priv->video_tee != NULL)
+ g_object_unref (priv->video_tee);
+ priv->video_tee = NULL;
+
+ if (priv->video_preview != NULL)
+ gtk_widget_destroy (priv->video_preview);
+ priv->video_preview = NULL;
+
+ priv->liveadder = NULL;
+ priv->funnel = NULL;
+
+ return TRUE;
+ }
+ else
+ {
+ g_message ("Error: could not destroy pipeline. Closing call window");
+ gtk_widget_destroy (GTK_WIDGET (self));
+
+ return FALSE;
+ }
+}
+
+static gboolean
empathy_call_window_disconnected (EmpathyCallWindow *self)
{
+ gboolean could_disconnect = FALSE;
EmpathyCallWindowPriv *priv = GET_PRIV (self);
+ gboolean could_reset_pipeline = empathy_call_window_reset_pipeline (self);
- g_mutex_lock (priv->lock);
+ if (priv->call_state == CONNECTING)
+ empathy_sound_stop (EMPATHY_SOUND_PHONE_OUTGOING);
- g_timer_stop (priv->timer);
+ if (priv->call_state != REDIALING)
+ priv->call_state = DISCONNECTED;
- if (priv->timer_id != 0)
- g_source_remove (priv->timer_id);
- priv->timer_id = 0;
+ if (could_reset_pipeline)
+ {
+ gboolean initial_video = empathy_call_handler_has_initial_video (
+ priv->handler);
+ g_mutex_lock (priv->lock);
- g_mutex_unlock (priv->lock);
+ g_timer_stop (priv->timer);
- empathy_call_window_status_message (self, _("Disconnected"));
+ if (priv->timer_id != 0)
+ g_source_remove (priv->timer_id);
+ priv->timer_id = 0;
- gtk_widget_set_sensitive (priv->camera_button, FALSE);
- gtk_action_set_sensitive (priv->send_video, FALSE);
- priv->sending_video = FALSE;
+ g_mutex_unlock (priv->lock);
+
+ empathy_call_window_status_message (self, _("Disconnected"));
+
+ gtk_action_set_sensitive (priv->redial, TRUE);
+ gtk_widget_set_sensitive (priv->redial_button, TRUE);
+
+ /* Reseting the send_video, camera_buton and mic_button to their
+ initial state */
+ gtk_widget_set_sensitive (priv->camera_button, FALSE);
+ gtk_widget_set_sensitive (priv->mic_button, FALSE);
+ gtk_action_set_sensitive (priv->send_video, FALSE);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->send_video),
+ initial_video);
+ gtk_toggle_tool_button_set_active (
+ GTK_TOGGLE_TOOL_BUTTON (priv->camera_button), initial_video);
+ gtk_toggle_tool_button_set_active (
+ GTK_TOGGLE_TOOL_BUTTON (priv->mic_button), TRUE);
+
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->show_preview),
+ FALSE);
+ gtk_action_set_sensitive (priv->show_preview, FALSE);
+
+ gtk_widget_hide (priv->video_output);
+ gtk_widget_show (priv->remote_user_avatar_widget);
+
+ priv->sending_video = FALSE;
+ priv->call_started = FALSE;
+
+ could_disconnect = TRUE;
+ }
+
+ return could_disconnect;
}
@@ -1023,8 +1261,10 @@ static void
empathy_call_window_channel_closed_cb (TfChannel *channel, gpointer user_data)
{
EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (user_data);
+ EmpathyCallWindowPriv *priv = GET_PRIV (self);
- empathy_call_window_disconnected (self);
+ if (empathy_call_window_disconnected (self) && priv->call_state == REDIALING)
+ empathy_call_window_restart_call (self);
}
/* Called with global lock held */
@@ -1110,14 +1350,35 @@ empathy_call_window_connected (gpointer user_data)
g_object_get (priv->handler, "tp-call", &call, NULL);
+ g_signal_connect (call, "notify::video-stream",
+ G_CALLBACK (empathy_call_window_video_stream_changed_cb), self);
+
if (empathy_tp_call_has_dtmf (call))
gtk_widget_set_sensitive (priv->dtmf_panel, TRUE);
- if (priv->video_input != NULL)
- {
- gtk_widget_set_sensitive (priv->camera_button, TRUE);
- gtk_action_set_sensitive (priv->send_video, TRUE);
- }
+ if (priv->video_input == NULL)
+ empathy_call_window_set_send_video (self, FALSE);
+
+ priv->sending_video = empathy_tp_call_is_sending_video (call);
+
+ gtk_action_set_sensitive (priv->show_preview, TRUE);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->show_preview),
+ priv->sending_video
+ || gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (priv->show_preview)));
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->send_video),
+ priv->sending_video && priv->video_input != NULL);
+ gtk_toggle_tool_button_set_active (
+ GTK_TOGGLE_TOOL_BUTTON (priv->camera_button),
+ priv->sending_video && priv->video_input != NULL);
+ gtk_widget_set_sensitive (priv->camera_button, priv->video_input != NULL);
+ gtk_action_set_sensitive (priv->send_video, priv->video_input != NULL);
+
+ gtk_action_set_sensitive (priv->redial, FALSE);
+ gtk_widget_set_sensitive (priv->redial_button, FALSE);
+
+ gtk_widget_set_sensitive (priv->mic_button, TRUE);
+
+ empathy_call_window_update_avatars_visibility (call, self);
g_object_unref (call);
@@ -1146,11 +1407,12 @@ empathy_call_window_src_added_cb (EmpathyCallHandler *handler,
g_mutex_lock (priv->lock);
- if (priv->connected == FALSE)
+ if (priv->call_state != CONNECTED)
{
g_timer_start (priv->timer);
priv->timer_id = g_idle_add (empathy_call_window_connected, self);
- priv->connected = TRUE;
+ priv->call_state = CONNECTED;
+ empathy_sound_stop (EMPATHY_SOUND_PHONE_OUTGOING);
}
switch (media_type)
@@ -1195,53 +1457,34 @@ empathy_call_window_sink_added_cb (EmpathyCallHandler *handler,
case TP_MEDIA_STREAM_TYPE_VIDEO:
if (priv->video_input != NULL)
{
- pad = gst_element_get_request_pad (priv->video_tee, "src%d");
- gst_pad_link (pad, sink);
- }
- break;
- default:
- g_assert_not_reached ();
- }
+ EmpathyTpCall *call;
+ g_object_get (priv->handler, "tp-call", &call, NULL);
-}
+ if (empathy_tp_call_is_sending_video (call))
+ {
+ empathy_call_window_setup_video_preview (self);
-static gboolean
-empathy_gst_bin_has_child (GstBin *bin, GstElement *element)
-{
- GstIterator *it;
- gboolean ret = FALSE;
- GstElement *item;
+ gtk_toggle_action_set_active (
+ GTK_TOGGLE_ACTION (priv->show_preview), TRUE);
- it = gst_bin_iterate_recurse (bin);
+ if (priv->video_preview != NULL)
+ gtk_widget_show (priv->video_preview);
+ gtk_widget_hide (priv->self_user_avatar_widget);
+ }
- for (;;)
- {
- switch (gst_iterator_next (it, (gpointer *)&item))
- {
- case GST_ITERATOR_OK:
- if (item == element)
- {
- gst_object_unref (GST_OBJECT (item));
- ret = TRUE;
- goto out;
- }
- gst_object_unref (GST_OBJECT (item));
- break;
- case GST_ITERATOR_RESYNC:
- gst_iterator_resync (it);
- break;
- case GST_ITERATOR_ERROR:
- g_assert_not_reached ();
- /* fallthrough */
- case GST_ITERATOR_DONE:
- goto out;
- break;
- }
+ g_object_unref (call);
+
+ if (priv->video_tee != NULL)
+ {
+ pad = gst_element_get_request_pad (priv->video_tee, "src%d");
+ gst_pad_link (pad, sink);
+ }
+ }
+ break;
+ default:
+ g_assert_not_reached ();
}
- gst_iterator_free (it);
-out:
- return ret;
}
static void
@@ -1264,8 +1507,15 @@ empathy_call_window_remove_video_input (EmpathyCallWindow *self)
priv->video_input = NULL;
g_object_unref (priv->video_tee);
priv->video_tee = NULL;
+ gtk_widget_destroy (priv->video_preview);
+ priv->video_preview = NULL;
+
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->send_video), FALSE);
+ gtk_toggle_tool_button_set_active (
+ GTK_TOGGLE_TOOL_BUTTON (priv->camera_button), FALSE);
+ gtk_widget_set_sensitive (priv->camera_button, FALSE);
+ gtk_action_set_sensitive (priv->send_video, FALSE);
- gtk_widget_hide (priv->video_preview);
gtk_widget_show (priv->self_user_avatar_widget);
}
@@ -1304,23 +1554,24 @@ empathy_call_window_bus_message (GstBus *bus, GstMessage *message,
case GST_MESSAGE_ERROR:
{
GError *error = NULL;
+ GstElement *gst_error;
gchar *debug;
gst_message_parse_error (message, &error, &debug);
+ gst_error = GST_ELEMENT (GST_MESSAGE_SRC (message));
g_message ("Element error: %s -- %s\n", error->message, debug);
- if (priv->video_input != NULL &&
- empathy_gst_bin_has_child (GST_BIN (priv->video_input),
- GST_ELEMENT (GST_MESSAGE_SRC (message))))
+ if (g_str_has_prefix (gst_element_get_name (gst_error),
+ VIDEO_INPUT_ERROR_PREFIX))
{
/* Remove the video input and continue */
- empathy_call_window_remove_video_input (self);
- gst_element_set_state (priv->pipeline, GST_STATE_PAUSED);
+ if (priv->video_input != NULL)
+ empathy_call_window_remove_video_input (self);
+ gst_element_set_state (priv->pipeline, GST_STATE_PLAYING);
}
else
{
- gst_element_set_state (priv->pipeline, GST_STATE_NULL);
empathy_call_window_disconnected (self);
}
g_error_free (error);
@@ -1334,10 +1585,51 @@ empathy_call_window_bus_message (GstBus *bus, GstMessage *message,
}
static void
+empathy_call_window_update_self_avatar_visibility (EmpathyCallWindow *window)
+{
+ EmpathyCallWindowPriv *priv = GET_PRIV (window);
+
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (priv->show_preview)))
+ {
+ if (priv->video_preview != NULL)
+ {
+ gtk_widget_hide (priv->self_user_avatar_widget);
+ gtk_widget_show (priv->video_preview);
+ }
+ else
+ {
+ if (priv->video_preview != NULL)
+ gtk_widget_hide (priv->video_preview);
+
+ gtk_widget_show (priv->self_user_avatar_widget);
+ }
+ }
+}
+
+static void
+empathy_call_window_update_avatars_visibility (EmpathyTpCall *call,
+ EmpathyCallWindow *window)
+{
+ EmpathyCallWindowPriv *priv = GET_PRIV (window);
+
+ if (empathy_tp_call_is_receiving_video (call))
+ {
+ gtk_widget_hide (priv->remote_user_avatar_widget);
+ gtk_widget_show (priv->video_output);
+ }
+ else
+ {
+ gtk_widget_hide (priv->video_output);
+ gtk_widget_show (priv->remote_user_avatar_widget);
+ }
+
+ empathy_call_window_update_self_avatar_visibility (window);
+}
+
+static void
empathy_call_window_realized_cb (GtkWidget *widget, EmpathyCallWindow *window)
{
EmpathyCallWindowPriv *priv = GET_PRIV (window);
- GstElement *preview;
g_signal_connect (priv->handler, "conference-added",
G_CALLBACK (empathy_call_window_conference_added_cb), window);
@@ -1350,15 +1642,6 @@ empathy_call_window_realized_cb (GtkWidget *widget, EmpathyCallWindow *window)
g_signal_connect (priv->handler, "sink-pad-added",
G_CALLBACK (empathy_call_window_sink_added_cb), window);
-
- preview = empathy_video_widget_get_element (
- EMPATHY_VIDEO_WIDGET (priv->video_preview));
-
- gst_bin_add_many (GST_BIN (priv->pipeline), priv->video_input,
- priv->video_tee, preview, NULL);
- gst_element_link_many (priv->video_input, priv->video_tee,
- preview, NULL);
-
gst_element_set_state (priv->pipeline, GST_STATE_PAUSED);
}
@@ -1368,7 +1651,11 @@ empathy_call_window_delete_cb (GtkWidget *widget, GdkEvent*event,
{
EmpathyCallWindowPriv *priv = GET_PRIV (window);
- gst_element_set_state (priv->pipeline, GST_STATE_NULL);
+ if (priv->pipeline != NULL)
+ gst_element_set_state (priv->pipeline, GST_STATE_NULL);
+
+ if (priv->call_state == CONNECTING)
+ empathy_sound_stop (EMPATHY_SOUND_PHONE_OUTGOING);
return FALSE;
}
@@ -1514,6 +1801,17 @@ empathy_call_window_set_send_video (EmpathyCallWindow *window,
EmpathyCallWindowPriv *priv = GET_PRIV (window);
EmpathyTpCall *call;
+ priv->sending_video = send;
+
+ /* When we start sending video, we want to show the video preview by
+ default. */
+ if (send)
+ {
+ empathy_call_window_setup_video_preview (window);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->show_preview),
+ TRUE);
+ }
+
g_object_get (priv->handler, "tp-call", &call, NULL);
empathy_tp_call_request_video_stream_direction (call, send);
g_object_unref (call);
@@ -1526,11 +1824,13 @@ empathy_call_window_camera_toggled_cb (GtkToggleToolButton *toggle,
EmpathyCallWindowPriv *priv = GET_PRIV (window);
gboolean active;
+ if (priv->call_state != CONNECTED)
+ return;
+
active = (gtk_toggle_tool_button_get_active (toggle));
if (priv->sending_video == active)
return;
- priv->sending_video = active;
empathy_call_window_set_send_video (window, active);
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->send_video), active);
@@ -1543,11 +1843,13 @@ empathy_call_window_send_video_toggled_cb (GtkToggleAction *toggle,
EmpathyCallWindowPriv *priv = GET_PRIV (window);
gboolean active;
+ if (priv->call_state != CONNECTED)
+ return;
+
active = (gtk_toggle_action_get_active (toggle));
if (priv->sending_video == active)
return;
- priv->sending_video = active;
empathy_call_window_set_send_video (window, active);
gtk_toggle_tool_button_set_active (
@@ -1558,7 +1860,21 @@ static void
empathy_call_window_show_preview_toggled_cb (GtkToggleAction *toggle,
EmpathyCallWindow *window)
{
- /* FIXME: Not implemented */
+ gboolean show_preview_toggled;
+ EmpathyCallWindowPriv *priv = GET_PRIV (window);
+
+ show_preview_toggled = gtk_toggle_action_get_active (toggle);
+
+ if (show_preview_toggled)
+ {
+ empathy_call_window_setup_video_preview (window);
+ gtk_widget_show (priv->self_user_output_frame);
+ empathy_call_window_update_self_avatar_visibility (window);
+ }
+ else
+ {
+ gtk_widget_hide (priv->self_user_output_frame);
+ }
}
static void
@@ -1568,6 +1884,9 @@ empathy_call_window_mic_toggled_cb (GtkToggleToolButton *toggle,
EmpathyCallWindowPriv *priv = GET_PRIV (window);
gboolean active;
+ if (priv->audio_input == NULL)
+ return;
+
active = (gtk_toggle_tool_button_get_active (toggle));
if (active)
@@ -1613,10 +1932,58 @@ static void
empathy_call_window_hangup_cb (gpointer object,
EmpathyCallWindow *window)
{
+ if (empathy_call_window_disconnected (window))
+ gtk_widget_destroy (GTK_WIDGET (window));
+}
+
+static void
+empathy_call_window_restart_call (EmpathyCallWindow *window)
+{
+ GstBus *bus;
+ EmpathyCallWindowPriv *priv = GET_PRIV (window);
+
+ gtk_widget_destroy (priv->remote_user_output_hbox);
+ gtk_widget_destroy (priv->self_user_output_hbox);
+
+ priv->pipeline = gst_pipeline_new (NULL);
+ bus = gst_pipeline_get_bus (GST_PIPELINE (priv->pipeline));
+ gst_bus_add_watch (bus, empathy_call_window_bus_message, window);
+
+ empathy_call_window_setup_remote_frame (bus, window);
+ empathy_call_window_setup_self_frame (bus, window);
+
+ g_object_unref (bus);
+
+ gtk_widget_show_all (priv->content_hbox);
+
+ if (!empathy_call_handler_has_initial_video (priv->handler))
+ gtk_widget_hide (priv->self_user_output_frame);
+
+ priv->outgoing = TRUE;
+ empathy_call_window_set_state_connecting (window);
+
+ priv->call_started = TRUE;
+ empathy_call_handler_start_call (priv->handler);
+ empathy_call_window_setup_avatars (window, priv->handler);
+ gst_element_set_state (priv->pipeline, GST_STATE_PLAYING);
+
+ gtk_action_set_sensitive (priv->redial, FALSE);
+ gtk_widget_set_sensitive (priv->redial_button, FALSE);
+}
+
+static void
+empathy_call_window_redial_cb (gpointer object,
+ EmpathyCallWindow *window)
+{
EmpathyCallWindowPriv *priv = GET_PRIV (window);
- gst_element_set_state (priv->pipeline, GST_STATE_NULL);
- gtk_widget_destroy (GTK_WIDGET (window));
+ if (priv->call_state == CONNECTED)
+ priv->call_state = REDIALING;
+
+ empathy_call_handler_stop_call (priv->handler);
+
+ if (priv->call_state != CONNECTED)
+ empathy_call_window_restart_call (window);
}
static void
@@ -1678,7 +2045,6 @@ empathy_call_window_video_output_motion_notify (GtkWidget *widget,
empathy_call_window_fullscreen_show_popup (priv->fullscreen);
return TRUE;
}
-
return FALSE;
}
diff --git a/src/empathy-call-window.ui b/src/empathy-call-window.ui
index a0e1e1304..9e7c0962d 100644
--- a/src/empathy-call-window.ui
+++ b/src/empathy-call-window.ui
@@ -19,12 +19,20 @@
</child>
<child>
<object class="GtkAction" id="menuhangup">
- <property name="stock_id">gtk-cancel</property>
+ <property name="icon_name">call-stop</property>
<property name="name">menuhangup</property>
<property name="label" translatable="yes">Hang up</property>
</object>
</child>
<child>
+ <object class="GtkAction" id="menuredial">
+ <property name="stock_id">gtk-refresh</property>
+ <property name="name">menuredial</property>
+ <property name="label" translatable="yes">Redial</property>
+ <property name="sensitive">False</property>
+ </object>
+ </child>
+ <child>
<object class="GtkAction" id="view">
<property name="name">view</property>
<property name="label" translatable="yes">_View</property>
@@ -34,6 +42,7 @@
<object class="GtkToggleAction" id="show_preview">
<property name="name">show_preview</property>
<property name="label" translatable="yes">Video preview</property>
+ <property name="active">True</property>
</object>
</child>
<child>
@@ -50,6 +59,7 @@
<menu action="call">
<menuitem action="send_video"/>
<menuitem action="menuhangup"/>
+ <menuitem action="menuredial"/>
</menu>
<menu action="view">
<menuitem action="show_preview"/>
@@ -79,7 +89,19 @@
<property name="visible">True</property>
<property name="is_important">True</property>
<property name="label" translatable="yes">Hang up</property>
- <property name="stock_id">gtk-cancel</property>
+ <property name="icon_name">call-stop</property>
+ </object>
+ <packing>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="redial">
+ <property name="visible">True</property>
+ <property name="is_important">True</property>
+ <property name="label" translatable="yes">Redial</property>
+ <property name="stock_id">gtk-refresh</property>
+ <property name="sensitive">False</property>
</object>
<packing>
<property name="homogeneous">True</property>
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index 9c2dbc490..424d148ac 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -50,6 +50,7 @@
#include <libempathy-gtk/empathy-log-window.h>
#include <libempathy-gtk/empathy-geometry.h>
#include <libempathy-gtk/empathy-smiley-manager.h>
+#include <libempathy-gtk/empathy-sound.h>
#include <libempathy-gtk/empathy-ui-utils.h>
#include "empathy-chat-window.h"
@@ -77,6 +78,7 @@ typedef struct {
GtkUIManager *ui_manager;
GtkAction *menu_conv_insert_smiley;
GtkAction *menu_conv_favorite;
+ GtkAction *menu_conv_toggle_contacts;
GtkAction *menu_edit_cut;
GtkAction *menu_edit_copy;
@@ -547,6 +549,8 @@ chat_window_conv_activate_cb (GtkAction *action,
{
EmpathyChatWindowPriv *priv = GET_PRIV (window);
gboolean is_room;
+ gboolean active;
+ EmpathyContact *remote_contact = NULL;
/* Favorite room menu */
is_room = empathy_chat_is_room (priv->current_chat);
@@ -565,6 +569,22 @@ chat_window_conv_activate_cb (GtkAction *action,
GTK_TOGGLE_ACTION (priv->menu_conv_favorite), found);
}
gtk_action_set_visible (priv->menu_conv_favorite, is_room);
+
+ /* Show contacts menu */
+ g_object_get (priv->current_chat,
+ "remote-contact", &remote_contact,
+ "show-contacts", &active,
+ NULL);
+ if (remote_contact == NULL) {
+ gtk_toggle_action_set_active (
+ GTK_TOGGLE_ACTION (priv->menu_conv_toggle_contacts),
+ active);
+ }
+ gtk_action_set_visible (priv->menu_conv_toggle_contacts,
+ (remote_contact == NULL));
+ if (remote_contact != NULL) {
+ g_object_unref (remote_contact);
+ }
}
static void
@@ -602,12 +622,24 @@ chat_window_favorite_toggled_cb (GtkToggleAction *toggle_action,
g_object_unref (chatroom);
return;
}
-
+
if (!active && chatroom) {
empathy_chatroom_manager_remove (priv->chatroom_manager, chatroom);
}
}
+static void
+chat_window_contacts_toggled_cb (GtkToggleAction *toggle_action,
+ EmpathyChatWindow *window)
+{
+ EmpathyChatWindowPriv *priv = GET_PRIV (window);
+ gboolean active;
+
+ active = gtk_toggle_action_get_active (toggle_action);
+
+ empathy_chat_set_show_contacts (priv->current_chat, active);
+}
+
static const gchar *
chat_get_window_id_for_geometry (EmpathyChat *chat)
{
@@ -910,7 +942,8 @@ chat_window_show_or_update_notification (EmpathyChatWindow *window,
EmpathyChat *chat)
{
EmpathyContact *sender;
- char *header, *escaped;
+ const gchar *header;
+ char *escaped;
const char *body;
GdkPixbuf *pixbuf;
NotificationData *cb_data;
@@ -932,8 +965,7 @@ chat_window_show_or_update_notification (EmpathyChatWindow *window,
cb_data->window = window;
sender = empathy_message_get_sender (message);
- header = g_strdup_printf (_("New message from %s"),
- empathy_contact_get_name (sender));
+ header = empathy_contact_get_name (sender);
body = empathy_message_get_body (message);
escaped = g_markup_escape_text (body, -1);
@@ -955,7 +987,6 @@ chat_window_show_or_update_notification (EmpathyChatWindow *window,
notify_notification_show (priv->notification, NULL);
g_object_unref (pixbuf);
- g_free (header);
g_free (escaped);
}
@@ -1180,7 +1211,7 @@ chat_window_focus_in_event_cb (GtkWidget *widget,
priv->chats_new_msg = g_list_remove (priv->chats_new_msg, priv->current_chat);
chat_window_set_urgency_hint (window, FALSE);
-
+
/* Update the title, since we now mark all unread messages as read. */
chat_window_update_chat_tab (priv->current_chat);
@@ -1209,7 +1240,7 @@ chat_window_drag_data_received (GtkWidget *widget,
id = (const gchar*) selection->data;
DEBUG ("DND contact from roster with id:'%s'", id);
-
+
strv = g_strsplit (id, "/", 2);
account_id = strv[0];
contact_id = strv[1];
@@ -1237,18 +1268,18 @@ chat_window_drag_data_received (GtkWidget *widget,
g_object_unref (account);
g_strfreev (strv);
- old_window = chat_window_find_chat (chat);
+ old_window = chat_window_find_chat (chat);
if (old_window) {
if (old_window == window) {
gtk_drag_finish (context, TRUE, FALSE, time);
return;
}
-
+
empathy_chat_window_move_chat (old_window, window, chat);
} else {
empathy_chat_window_add_chat (window, chat);
}
-
+
/* Added to take care of any outstanding chat events */
empathy_chat_window_present_chat (chat);
@@ -1279,7 +1310,7 @@ chat_window_drag_data_received (GtkWidget *widget,
gtk_drag_finish (context, TRUE, FALSE, time);
return;
}
-
+
priv->dnd_same_window = FALSE;
}
@@ -1369,6 +1400,7 @@ empathy_chat_window_init (EmpathyChatWindow *window)
"ui_manager", &priv->ui_manager,
"menu_conv_insert_smiley", &priv->menu_conv_insert_smiley,
"menu_conv_favorite", &priv->menu_conv_favorite,
+ "menu_conv_toggle_contacts", &priv->menu_conv_toggle_contacts,
"menu_edit_cut", &priv->menu_edit_cut,
"menu_edit_copy", &priv->menu_edit_copy,
"menu_edit_paste", &priv->menu_edit_paste,
@@ -1385,6 +1417,7 @@ empathy_chat_window_init (EmpathyChatWindow *window)
"menu_conv", "activate", chat_window_conv_activate_cb,
"menu_conv_clear", "activate", chat_window_clear_activate_cb,
"menu_conv_favorite", "toggled", chat_window_favorite_toggled_cb,
+ "menu_conv_toggle_contacts", "toggled", chat_window_contacts_toggled_cb,
"menu_conv_close", "activate", chat_window_close_activate_cb,
"menu_edit", "activate", chat_window_edit_activate_cb,
"menu_edit_cut", "activate", chat_window_cut_activate_cb,
@@ -1566,14 +1599,14 @@ empathy_chat_window_add_chat (EmpathyChatWindow *window,
/* If this window has just been created, position it */
if (priv->chats == NULL) {
empathy_geometry_load (chat_get_window_id_for_geometry (chat), &x, &y, &w, &h);
-
+
if (x >= 0 && y >= 0) {
/* Let the window manager position it if we don't have
* good x, y coordinates.
*/
gtk_window_move (GTK_WINDOW (priv->dialog), x, y);
}
-
+
if (w > 0 && h > 0) {
/* Use the defaults from the ui file if we don't have
* good w, h geometry.
diff --git a/src/empathy-chat-window.h b/src/empathy-chat-window.h
index 835d67296..c46ef8fc4 100644
--- a/src/empathy-chat-window.h
+++ b/src/empathy-chat-window.h
@@ -29,7 +29,7 @@
#define __EMPATHY_CHAT_WINDOW_H__
#include <glib-object.h>
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
#include <libmissioncontrol/mc-account.h>
#include <libempathy-gtk/empathy-chat.h>
diff --git a/src/empathy-chat-window.ui b/src/empathy-chat-window.ui
index 0d5a83180..8c8ea7d00 100644
--- a/src/empathy-chat-window.ui
+++ b/src/empathy-chat-window.ui
@@ -32,6 +32,13 @@
</object>
</child>
<child>
+ <object class="GtkToggleAction" id="menu_conv_toggle_contacts">
+ <property name="name">menu_conv_toggle_contacts</property>
+ <property name="active">TRUE</property>
+ <property name="label" translatable="yes">_Show Contact List</property>
+ </object>
+ </child>
+ <child>
<object class="GtkAction" id="menu_conv_close">
<property name="stock_id">gtk-close</property>
<property name="name">menu_conv_close</property>
@@ -137,6 +144,7 @@
<menuitem action="menu_conv_clear"/>
<menuitem action="menu_conv_insert_smiley"/>
<menuitem action="menu_conv_favorite"/>
+ <menuitem action="menu_conv_toggle_contacts"/>
<separator/>
<menuitem action="menu_conv_close"/>
</menu>
diff --git a/src/empathy-debug-dialog.c b/src/empathy-debug-dialog.c
index f6fe6e8b2..cd0d925f9 100644
--- a/src/empathy-debug-dialog.c
+++ b/src/empathy-debug-dialog.c
@@ -430,8 +430,6 @@ debug_dialog_get_name_owner_cb (TpDBusDaemon *proxy,
COL_CM_NAME, data->cm_name,
COL_CM_UNIQUE_NAME, out,
-1);
-
- gtk_combo_box_set_active (GTK_COMBO_BOX (priv->cm_chooser), 0);
}
OUT:
@@ -568,6 +566,7 @@ debug_dialog_fill_cm_chooser (EmpathyDebugDialog *debug_dialog)
{
EmpathyDebugDialogPriv *priv = GET_PRIV (debug_dialog);
GError *error = NULL;
+ GtkTreeIter iter;
priv->dbus = tp_dbus_daemon_dup (&error);
@@ -578,6 +577,15 @@ debug_dialog_fill_cm_chooser (EmpathyDebugDialog *debug_dialog)
return;
}
+ /* Add empathy */
+ gtk_list_store_append (priv->cms, &iter);
+ gtk_list_store_set (priv->cms, &iter,
+ COL_CM_NAME, "empathy",
+ COL_CM_UNIQUE_NAME, "org.gnome.Empathy",
+ -1);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (priv->cm_chooser), 0);
+
+ /* Add CMs to list */
tp_list_connection_names (priv->dbus, debug_dialog_list_connection_names_cb,
debug_dialog, NULL, NULL);
diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c
index 81d98ef74..a80aad236 100644
--- a/src/empathy-event-manager.c
+++ b/src/empathy-event-manager.c
@@ -26,6 +26,7 @@
#include <telepathy-glib/util.h>
+#include <libempathy/empathy-account-manager.h>
#include <libempathy/empathy-dispatcher.h>
#include <libempathy/empathy-tp-contact-factory.h>
#include <libempathy/empathy-contact-manager.h>
@@ -37,9 +38,10 @@
#include <extensions/extensions.h>
+#include <libempathy-gtk/empathy-conf.h>
#include <libempathy-gtk/empathy-images.h>
#include <libempathy-gtk/empathy-contact-dialogs.h>
-#include <libempathy-gtk/empathy-ui-utils.h>
+#include <libempathy-gtk/empathy-sound.h>
#include "empathy-event-manager.h"
#include "empathy-main-window.h"
@@ -50,6 +52,11 @@
#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyEventManager)
+#define NOTIFICATION_TIMEOUT 2 /* seconds */
+
+/* The time interval in milliseconds between 2 incoming rings */
+#define MS_BETWEEN_RING 500
+
typedef struct {
EmpathyEventManager *manager;
EmpathyDispatchOperation *operation;
@@ -74,8 +81,6 @@ typedef struct {
/* Ongoing approvals */
GSList *approvals;
- /* voip ringing sound */
- guint voip_timeout;
gint ringing;
} EmpathyEventManagerPriv;
@@ -161,81 +166,6 @@ event_free (EventPriv *event)
g_slice_free (EventPriv, event);
}
-static void event_manager_ringing_finished_cb (ca_context *c, guint id,
- int error_code, gpointer user_data);
-
-static gboolean
-event_manager_ringing_timeout_cb (gpointer data)
-{
- EmpathyEventManager *manager = EMPATHY_EVENT_MANAGER (data);
- EmpathyEventManagerPriv *priv = GET_PRIV (manager);
-
- priv->voip_timeout = 0;
-
- empathy_sound_play_full (empathy_main_window_get (),
- EMPATHY_SOUND_PHONE_INCOMING, event_manager_ringing_finished_cb,
- manager);
-
- return FALSE;
-}
-
-static gboolean
-event_manager_ringing_idle_cb (gpointer data)
-{
- EmpathyEventManager *manager = EMPATHY_EVENT_MANAGER (data);
- EmpathyEventManagerPriv *priv = GET_PRIV (manager);
-
- if (priv->ringing > 0)
- priv->voip_timeout = g_timeout_add (500, event_manager_ringing_timeout_cb,
- data);
-
- return FALSE;
-}
-
-static void
-event_manager_ringing_finished_cb (ca_context *c, guint id, int error_code,
- gpointer user_data)
-{
- if (error_code == CA_ERROR_CANCELED)
- return;
-
- g_idle_add (event_manager_ringing_idle_cb, user_data);
-}
-
-static void
-event_manager_start_ringing (EmpathyEventManager *manager)
-{
- EmpathyEventManagerPriv *priv = GET_PRIV (manager);
-
- priv->ringing++;
-
- if (priv->ringing == 1)
- {
- empathy_sound_play_full (empathy_main_window_get (),
- EMPATHY_SOUND_PHONE_INCOMING, event_manager_ringing_finished_cb,
- manager);
- }
-}
-
-static void
-event_manager_stop_ringing (EmpathyEventManager *manager)
-{
- EmpathyEventManagerPriv *priv = GET_PRIV (manager);
-
- priv->ringing--;
-
- if (priv->ringing > 0)
- return;
-
- empathy_sound_stop (EMPATHY_SOUND_PHONE_INCOMING);
-
- if (priv->voip_timeout != 0)
- {
- g_source_remove (priv->voip_timeout);
- priv->voip_timeout = 0;
- }
-}
-
static void
event_remove (EventPriv *event)
{
@@ -247,6 +177,13 @@ event_remove (EventPriv *event)
event_free (event);
}
+static gboolean
+autoremove_event_timeout_cb (EventPriv *event)
+{
+ event_remove (event);
+ return FALSE;
+}
+
static void
event_manager_add (EmpathyEventManager *manager, EmpathyContact *contact,
const gchar *icon_name, const gchar *header, const gchar *message,
@@ -260,6 +197,7 @@ event_manager_add (EmpathyEventManager *manager, EmpathyContact *contact,
event->public.icon_name = g_strdup (icon_name);
event->public.header = g_strdup (header);
event->public.message = g_strdup (message);
+ event->public.must_ack = (func != NULL);
event->inhibit = FALSE;
event->func = func;
event->user_data = user_data;
@@ -269,6 +207,12 @@ event_manager_add (EmpathyEventManager *manager, EmpathyContact *contact,
DEBUG ("Adding event %p", event);
priv->events = g_slist_prepend (priv->events, event);
g_signal_emit (event->manager, signals[EVENT_ADDED], 0, event);
+
+ if (!event->public.must_ack)
+ {
+ g_timeout_add_seconds (NOTIFICATION_TIMEOUT,
+ (GSourceFunc) autoremove_event_timeout_cb, event);
+ }
}
static void
@@ -409,7 +353,7 @@ event_manager_chat_message_received_cb (EmpathyTpChat *tp_chat,
EmpathyMessage *message, EventManagerApproval *approval)
{
EmpathyContact *sender;
- gchar *header;
+ const gchar *header;
const gchar *msg;
TpChannel *channel;
EventPriv *event;
@@ -426,8 +370,7 @@ event_manager_chat_message_received_cb (EmpathyTpChat *tp_chat,
}
sender = empathy_message_get_sender (message);
- header = g_strdup_printf (_("New message from %s"),
- empathy_contact_get_name (sender));
+ header = empathy_contact_get_name (sender);
msg = empathy_message_get_body (message);
channel = empathy_tp_chat_get_channel (tp_chat);
@@ -438,7 +381,6 @@ event_manager_chat_message_received_cb (EmpathyTpChat *tp_chat,
event_manager_add (approval->manager, sender, EMPATHY_IMAGE_NEW_MESSAGE, header,
msg, approval, event_text_channel_process_func, NULL);
- g_free (header);
empathy_sound_play (empathy_main_window_get (),
EMPATHY_SOUND_CONVERSATION_NEW);
}
@@ -457,7 +399,9 @@ event_manager_approval_done (EventManagerApproval *approval)
approval->operation);
if (channel_type == TP_IFACE_QUARK_CHANNEL_TYPE_STREAMED_MEDIA)
{
- event_manager_stop_ringing (approval->manager);
+ priv->ringing--;
+ if (priv->ringing == 0)
+ empathy_sound_stop (EMPATHY_SOUND_PHONE_INCOMING);
}
}
@@ -502,6 +446,7 @@ event_manager_operation_invalidated_cb (EmpathyDispatchOperation *operation,
static void
event_manager_media_channel_got_contact (EventManagerApproval *approval)
{
+ EmpathyEventManagerPriv *priv = GET_PRIV (approval->manager);
gchar *header;
header = g_strdup_printf (_("Incoming call from %s"),
@@ -512,7 +457,11 @@ event_manager_media_channel_got_contact (EventManagerApproval *approval)
approval, event_channel_process_voip_func, NULL);
g_free (header);
- event_manager_start_ringing (approval->manager);
+
+ priv->ringing++;
+ if (priv->ringing == 1)
+ empathy_sound_start_playing (empathy_main_window_get (),
+ EMPATHY_SOUND_PHONE_INCOMING, MS_BETWEEN_RING);
}
static void
@@ -958,6 +907,65 @@ event_manager_pendings_changed_cb (EmpathyContactList *list,
g_free (header);
}
+static void
+event_manager_presence_changed_cb (EmpathyContactMonitor *monitor,
+ EmpathyContact *contact,
+ TpConnectionPresenceType current,
+ TpConnectionPresenceType previous,
+ EmpathyEventManager *manager)
+{
+ McAccount *account;
+ gboolean just_connected;
+ EmpathyAccountManager *account_manager;
+ gchar *header = NULL;
+ gboolean preference = FALSE;
+
+ account = empathy_contact_get_account (contact);
+ account_manager = empathy_account_manager_dup_singleton ();
+ just_connected = empathy_account_manager_is_account_just_connected (
+ account_manager, account);
+
+ g_object_unref (account_manager);
+ if (just_connected)
+ return;
+
+ if (tp_connection_presence_type_cmp_availability (previous,
+ TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
+ {
+ /* contact was online */
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT, &preference);
+ if (preference && tp_connection_presence_type_cmp_availability (current,
+ TP_CONNECTION_PRESENCE_TYPE_OFFLINE) <= 0)
+ {
+ /* someone is logging off */
+ header = g_strdup_printf (_("%s is now offline."),
+ empathy_contact_get_name (contact));
+
+ event_manager_add (manager, contact, GTK_STOCK_DIALOG_INFO, header,
+ NULL, NULL, NULL, NULL);
+ }
+ }
+ else
+ {
+ /* contact was offline */
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN, &preference);
+ if (preference && tp_connection_presence_type_cmp_availability (current,
+ TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
+ {
+ /* someone is logging in */
+ header = g_strdup_printf (_("%s is now online."),
+ empathy_contact_get_name (contact));
+
+ event_manager_add (manager, contact, GTK_STOCK_DIALOG_INFO, header,
+ NULL, NULL, NULL, NULL);
+ }
+ }
+ g_free (header);
+}
+
+
static GObject *
event_manager_constructor (GType type,
guint n_props,
@@ -983,6 +991,9 @@ event_manager_finalize (GObject *object)
{
EmpathyEventManagerPriv *priv = GET_PRIV (object);
+ if (priv->ringing > 0)
+ empathy_sound_stop (EMPATHY_SOUND_PHONE_INCOMING);
+
g_slist_foreach (priv->events, (GFunc) event_free, NULL);
g_slist_free (priv->events);
g_slist_foreach (priv->approvals, (GFunc) event_manager_approval_free, NULL);
@@ -1036,6 +1047,12 @@ empathy_event_manager_init (EmpathyEventManager *manager)
{
EmpathyEventManagerPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (manager,
EMPATHY_TYPE_EVENT_MANAGER, EmpathyEventManagerPriv);
+ EmpathyContactMonitor *monitor;
+ EmpathyContactList *list_iface;
+
+ list_iface = EMPATHY_CONTACT_LIST (empathy_contact_manager_dup_singleton ());
+ monitor = empathy_contact_list_get_monitor (list_iface);
+ g_object_unref (list_iface);
manager->priv = priv;
@@ -1045,6 +1062,8 @@ empathy_event_manager_init (EmpathyEventManager *manager)
G_CALLBACK (event_manager_approve_channel_cb), manager);
g_signal_connect (priv->contact_manager, "pendings-changed",
G_CALLBACK (event_manager_pendings_changed_cb), manager);
+ g_signal_connect (monitor, "contact-presence-changed",
+ G_CALLBACK (event_manager_presence_changed_cb), manager);
}
EmpathyEventManager *
@@ -1095,4 +1114,3 @@ empathy_event_inhibit_updates (EmpathyEvent *event_public)
event->inhibit = TRUE;
}
-
diff --git a/src/empathy-event-manager.h b/src/empathy-event-manager.h
index 42fd0c090..af73c8ea7 100644
--- a/src/empathy-event-manager.h
+++ b/src/empathy-event-manager.h
@@ -53,6 +53,7 @@ typedef struct {
gchar *icon_name;
gchar *header;
gchar *message;
+ gboolean must_ack;
} EmpathyEvent;
GType empathy_event_manager_get_type (void) G_GNUC_CONST;
diff --git a/src/empathy-ft-manager.ui b/src/empathy-ft-manager.ui
index 1e3c4af7d..fa72af949 100644
--- a/src/empathy-ft-manager.ui
+++ b/src/empathy-ft-manager.ui
@@ -5,7 +5,7 @@
<property name="width_request">620</property>
<property name="height_request">250</property>
<property name="border_width">5</property>
- <property name="title" translatable="yes">File transfers</property>
+ <property name="title" translatable="yes">File Transfers</property>
<property name="role">empathy-ft-manager</property>
<property name="icon_name">document-send</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index 5830d2b71..0da037beb 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -37,16 +37,17 @@
#include <libempathy/empathy-contact-manager.h>
#include <libempathy/empathy-status-presets.h>
+#include <libempathy-gtk/empathy-conf.h>
#include <libempathy-gtk/empathy-contact-dialogs.h>
#include <libempathy-gtk/empathy-contact-list-store.h>
#include <libempathy-gtk/empathy-contact-list-view.h>
-#include <libempathy-gtk/empathy-presence-chooser.h>
-#include <libempathy-gtk/empathy-ui-utils.h>
#include <libempathy-gtk/empathy-geometry.h>
-#include <libempathy-gtk/empathy-conf.h>
-#include <libempathy-gtk/empathy-log-window.h>
-#include <libempathy-gtk/empathy-new-message-dialog.h>
#include <libempathy-gtk/empathy-gtk-enum-types.h>
+#include <libempathy-gtk/empathy-new-message-dialog.h>
+#include <libempathy-gtk/empathy-log-window.h>
+#include <libempathy-gtk/empathy-presence-chooser.h>
+#include <libempathy-gtk/empathy-sound.h>
+#include <libempathy-gtk/empathy-ui-utils.h>
#include <libmissioncontrol/mission-control.h>
@@ -197,7 +198,7 @@ main_window_flash_cb (EmpathyMainWindow *window)
events = empathy_event_manager_get_events (window->event_manager);
for (l = events; l; l = l->next) {
data.event = l->data;
- if (!data.event->contact) {
+ if (!data.event->contact || !data.event->must_ack) {
continue;
}
diff --git a/src/empathy-main-window.h b/src/empathy-main-window.h
index 562fa12c6..3d34e6c6b 100644
--- a/src/empathy-main-window.h
+++ b/src/empathy-main-window.h
@@ -24,7 +24,7 @@
#ifndef __EMPATHY_MAIN_WINDOW_H__
#define __EMPATHY_MAIN_WINDOW_H__
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/src/empathy-map-view.c b/src/empathy-map-view.c
index b8a32885c..86e15bdff 100644
--- a/src/empathy-map-view.c
+++ b/src/empathy-map-view.c
@@ -40,6 +40,7 @@
#include <libempathy-gtk/empathy-ui-utils.h>
#include "empathy-map-view.h"
+#include "ephy-spinner.h"
#define DEBUG_FLAG EMPATHY_DEBUG_LOCATION
#include <libempathy/empathy-debug.h>
@@ -50,117 +51,23 @@ typedef struct {
GtkWidget *window;
GtkWidget *zoom_in;
GtkWidget *zoom_out;
+ GtkWidget *throbber;
ChamplainView *map_view;
ChamplainLayer *layer;
} EmpathyMapView;
-static void map_view_destroy_cb (GtkWidget *widget,
- EmpathyMapView *window);
-static gboolean map_view_contacts_foreach (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer user_data);
-static void map_view_zoom_in_cb (GtkWidget *widget,
- EmpathyMapView *window);
-static void map_view_zoom_out_cb (GtkWidget *widget,
- EmpathyMapView *window);
-static void map_view_contact_location_notify (GObject *gobject,
- GParamSpec *arg1,
- gpointer user_data);
-
-GtkWidget *
-empathy_map_view_show (void)
-{
- static EmpathyMapView *window = NULL;
- GtkBuilder *gui;
- GtkWidget *sw;
- GtkWidget *embed;
- gchar *filename;
- GtkTreeModel *model;
- EmpathyContactList *list_iface;
- EmpathyContactListStore *list_store;
-
- if (window)
- {
- empathy_window_present (GTK_WINDOW (window->window), TRUE);
- return window->window;
- }
-
- window = g_slice_new0 (EmpathyMapView);
-
- /* Set up interface */
- filename = empathy_file_lookup ("empathy-map-view.ui", "src");
- gui = empathy_builder_get_file (filename,
- "map_view", &window->window,
- "zoom_in", &window->zoom_in,
- "zoom_out", &window->zoom_out,
- "map_scrolledwindow", &sw,
- NULL);
- g_free (filename);
-
- empathy_builder_connect (gui, window,
- "map_view", "destroy", map_view_destroy_cb,
- "zoom_in", "clicked", map_view_zoom_in_cb,
- "zoom_out", "clicked", map_view_zoom_out_cb,
- NULL);
-
- g_object_unref (gui);
-
- /* Clear the static pointer to window if the dialog is destroyed */
- g_object_add_weak_pointer (G_OBJECT (window->window), (gpointer *) &window);
-
- list_iface = EMPATHY_CONTACT_LIST (empathy_contact_manager_dup_singleton ());
- list_store = empathy_contact_list_store_new (list_iface);
- empathy_contact_list_store_set_show_groups (list_store, FALSE);
- empathy_contact_list_store_set_show_avatars (list_store, TRUE);
- g_object_unref (list_iface);
-
- window->list_store = list_store;
-
- /* Set up map view */
- window->map_view = CHAMPLAIN_VIEW (champlain_view_new ());
- g_object_set (G_OBJECT (window->map_view), "zoom-level", 1,
- "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC, NULL);
- champlain_view_center_on (window->map_view, 36, 0);
-
- embed = champlain_view_embed_new (window->map_view);
- gtk_container_add (GTK_CONTAINER (sw),
- GTK_WIDGET (embed));
- gtk_widget_show_all (embed);
-
- window->layer = g_object_ref (champlain_layer_new ());
- champlain_view_add_layer (window->map_view, window->layer);
-
- /* Set up contact list. */
- model = GTK_TREE_MODEL (window->list_store);
- gtk_tree_model_foreach (model, map_view_contacts_foreach, window);
-
- empathy_window_present (GTK_WINDOW (window->window), TRUE);
- return window->window;
-}
-
static void
-map_view_destroy_cb (GtkWidget *widget,
+map_view_state_changed (ChamplainView *view,
+ GParamSpec *gobject,
EmpathyMapView *window)
{
- GList *item;
-
- item = clutter_container_get_children (window->layer);
- while (item != NULL)
- {
- EmpathyContact *contact;
- ChamplainMarker *marker;
+ ChamplainState state;
- marker = CHAMPLAIN_MARKER (item->data);
- contact = g_object_get_data (G_OBJECT (marker), "contact");
- g_signal_handlers_disconnect_by_func (contact, map_view_contact_location_notify, marker);
-
- item = g_list_next (item);
- }
-
- g_object_unref (window->list_store);
- g_object_unref (window->layer);
- g_slice_free (EmpathyMapView, window);
+ g_object_get (G_OBJECT (view), "state", &state, NULL);
+ if (state == CHAMPLAIN_STATE_LOADING)
+ ephy_spinner_start (EPHY_SPINNER (window->throbber));
+ else
+ ephy_spinner_stop (EPHY_SPINNER (window->throbber));
}
static void
@@ -201,22 +108,60 @@ map_view_marker_update_position (ChamplainMarker *marker,
}
static void
-map_view_contact_location_notify (GObject *gobject,
+map_view_contact_location_notify (EmpathyContact *contact,
GParamSpec *arg1,
- gpointer user_data)
+ ChamplainMarker *marker)
{
- ChamplainMarker *marker = CHAMPLAIN_MARKER (user_data);
- EmpathyContact *contact = EMPATHY_CONTACT (gobject);
map_view_marker_update_position (marker, contact);
}
+static void
+map_view_zoom_in_cb (GtkWidget *widget,
+ EmpathyMapView *window)
+{
+ champlain_view_zoom_in (window->map_view);
+}
+
+static void
+map_view_zoom_out_cb (GtkWidget *widget,
+ EmpathyMapView *window)
+{
+ champlain_view_zoom_out (window->map_view);
+}
+
+static gboolean
+marker_clicked_cb (ChamplainMarker *marker,
+ ClutterButtonEvent *event,
+ EmpathyContact *contact)
+{
+ GtkWidget *menu;
+
+ if (event->button != 3)
+ return FALSE;
+
+ menu = empathy_contact_menu_new (contact,
+ EMPATHY_CONTACT_FEATURE_CHAT |
+ EMPATHY_CONTACT_FEATURE_CALL |
+ EMPATHY_CONTACT_FEATURE_LOG |
+ EMPATHY_CONTACT_FEATURE_INFO);
+
+ if (menu == NULL)
+ return FALSE;
+
+ gtk_widget_show (menu);
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
+ event->button, event->time);
+
+ return FALSE;
+}
+
static gboolean
map_view_contacts_foreach (GtkTreeModel *model,
GtkTreePath *path,
GtkTreeIter *iter,
gpointer user_data)
{
- EmpathyMapView *window = (EmpathyMapView*) user_data;
+ EmpathyMapView *window = (EmpathyMapView *) user_data;
EmpathyContact *contact;
ClutterActor *marker;
ClutterActor *texture;
@@ -269,11 +214,16 @@ map_view_contacts_foreach (GtkTreeModel *model,
champlain_marker_set_text (CHAMPLAIN_MARKER (marker), label);
g_free (label);
+ clutter_actor_set_reactive (CLUTTER_ACTOR (marker), TRUE);
+ g_signal_connect (marker, "button-release-event",
+ G_CALLBACK (marker_clicked_cb), contact);
+
clutter_container_add (CLUTTER_CONTAINER (window->layer), marker, NULL);
g_signal_connect (contact, "notify::location",
G_CALLBACK (map_view_contact_location_notify), marker);
- g_object_set_data_full (G_OBJECT (marker), "contact", g_object_ref (contact), g_object_unref);
+ g_object_set_data_full (G_OBJECT (marker), "contact",
+ g_object_ref (contact), g_object_unref);
map_view_marker_update_position (CHAMPLAIN_MARKER (marker), contact);
@@ -282,15 +232,108 @@ map_view_contacts_foreach (GtkTreeModel *model,
}
static void
-map_view_zoom_in_cb (GtkWidget *widget,
+map_view_destroy_cb (GtkWidget *widget,
EmpathyMapView *window)
{
- champlain_view_zoom_in (window->map_view);
+ GList *item;
+
+ item = clutter_container_get_children (CLUTTER_CONTAINER (window->layer));
+ while (item != NULL)
+ {
+ EmpathyContact *contact;
+ ChamplainMarker *marker;
+
+ marker = CHAMPLAIN_MARKER (item->data);
+ contact = g_object_get_data (G_OBJECT (marker), "contact");
+ g_signal_handlers_disconnect_by_func (contact,
+ map_view_contact_location_notify, marker);
+
+ item = g_list_next (item);
+ }
+
+ g_object_unref (window->list_store);
+ g_object_unref (window->layer);
+ g_slice_free (EmpathyMapView, window);
}
-static void
-map_view_zoom_out_cb (GtkWidget *widget,
- EmpathyMapView *window)
+GtkWidget *
+empathy_map_view_show (void)
{
- champlain_view_zoom_out (window->map_view);
+ static EmpathyMapView *window = NULL;
+ GtkBuilder *gui;
+ GtkWidget *sw;
+ GtkWidget *embed;
+ GtkWidget *throbber_holder;
+ gchar *filename;
+ GtkTreeModel *model;
+ EmpathyContactList *list_iface;
+ EmpathyContactListStore *list_store;
+
+ if (window)
+ {
+ empathy_window_present (GTK_WINDOW (window->window), TRUE);
+ return window->window;
+ }
+
+ window = g_slice_new0 (EmpathyMapView);
+
+ /* Set up interface */
+ filename = empathy_file_lookup ("empathy-map-view.ui", "src");
+ gui = empathy_builder_get_file (filename,
+ "map_view", &window->window,
+ "zoom_in", &window->zoom_in,
+ "zoom_out", &window->zoom_out,
+ "map_scrolledwindow", &sw,
+ "throbber", &throbber_holder,
+ NULL);
+ g_free (filename);
+
+ empathy_builder_connect (gui, window,
+ "map_view", "destroy", map_view_destroy_cb,
+ "zoom_in", "clicked", map_view_zoom_in_cb,
+ "zoom_out", "clicked", map_view_zoom_out_cb,
+ NULL);
+
+ g_object_unref (gui);
+
+ /* Clear the static pointer to window if the dialog is destroyed */
+ g_object_add_weak_pointer (G_OBJECT (window->window), (gpointer *) &window);
+
+ list_iface = EMPATHY_CONTACT_LIST (empathy_contact_manager_dup_singleton ());
+ list_store = empathy_contact_list_store_new (list_iface);
+ empathy_contact_list_store_set_show_groups (list_store, FALSE);
+ empathy_contact_list_store_set_show_avatars (list_store, TRUE);
+ g_object_unref (list_iface);
+
+ window->throbber = ephy_spinner_new ();
+ ephy_spinner_set_size (EPHY_SPINNER (window->throbber),
+ GTK_ICON_SIZE_LARGE_TOOLBAR);
+ gtk_widget_show (window->throbber);
+ gtk_container_add (GTK_CONTAINER (throbber_holder), window->throbber);
+
+ window->list_store = list_store;
+
+ /* Set up map view */
+ embed = gtk_champlain_embed_new ();
+ window->map_view = gtk_champlain_embed_get_view (GTK_CHAMPLAIN_EMBED (embed));
+ g_object_set (G_OBJECT (window->map_view), "zoom-level", 1,
+ "scroll-mode", CHAMPLAIN_SCROLL_MODE_KINETIC, NULL);
+ champlain_view_center_on (window->map_view, 36, 0);
+
+ gtk_container_add (GTK_CONTAINER (sw), embed);
+ gtk_widget_show_all (embed);
+
+ window->layer = g_object_ref (champlain_layer_new ());
+ champlain_view_add_layer (window->map_view, window->layer);
+
+ g_signal_connect (window->map_view, "notify::state",
+ G_CALLBACK (map_view_state_changed), window);
+
+ /* Set up contact list. */
+ model = GTK_TREE_MODEL (window->list_store);
+ gtk_tree_model_foreach (model, map_view_contacts_foreach, window);
+
+ empathy_window_present (GTK_WINDOW (window->window), TRUE);
+ return window->window;
}
+
diff --git a/src/empathy-map-view.h b/src/empathy-map-view.h
index 80a05a129..6628f1e08 100644
--- a/src/empathy-map-view.h
+++ b/src/empathy-map-view.h
@@ -21,7 +21,7 @@
#ifndef __EMPATHY_MAP_VIEW_H__
#define __EMPATHY_MAP_VIEW_H__
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/src/empathy-map-view.ui b/src/empathy-map-view.ui
index f1140399b..545136d4d 100644
--- a/src/empathy-map-view.ui
+++ b/src/empathy-map-view.ui
@@ -34,6 +34,33 @@
<property name="homogeneous">True</property>
</packing>
</child>
+ <child>
+ <object class="GtkToolItem" id="toolbutton1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="throbber">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
diff --git a/src/empathy-new-chatroom-dialog.c b/src/empathy-new-chatroom-dialog.c
index 563665932..da90cbb49 100644
--- a/src/empathy-new-chatroom-dialog.c
+++ b/src/empathy-new-chatroom-dialog.c
@@ -362,7 +362,7 @@ new_chatroom_dialog_update_widgets (EmpathyNewChatroomDialog *dialog)
McProfile *profile;
const gchar *protocol;
const gchar *room;
-
+
account_chooser = EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser);
account = empathy_account_chooser_dup_account (account_chooser);
profile = mc_account_get_profile (account);
@@ -545,7 +545,7 @@ new_chatroom_dialog_listing_cb (EmpathyTpRoomlist *room_list,
/* Update the throbber */
if (listing) {
- ephy_spinner_start (EPHY_SPINNER (dialog->throbber));
+ ephy_spinner_start (EPHY_SPINNER (dialog->throbber));
} else {
ephy_spinner_stop (EPHY_SPINNER (dialog->throbber));
}
@@ -572,7 +572,7 @@ new_chatroom_dialog_model_row_activated_cb (GtkTreeView *tree_view,
static void
new_chatroom_dialog_model_selection_changed (GtkTreeSelection *selection,
EmpathyNewChatroomDialog *dialog)
-{
+{
GtkTreeModel *model;
GtkTreeIter iter;
gchar *room = NULL;
diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c
index 406db4c9f..0e2299cac 100644
--- a/src/empathy-preferences.c
+++ b/src/empathy-preferences.c
@@ -38,6 +38,10 @@
#include <libempathy-gtk/empathy-contact-list-store.h>
#include <libempathy-gtk/empathy-gtk-enum-types.h>
+#ifdef HAVE_WEBKIT
+#include <libempathy-gtk/empathy-theme-adium.h>
+#endif
+
#include "empathy-preferences.h"
typedef struct {
@@ -48,7 +52,11 @@ typedef struct {
GtkWidget *checkbutton_show_avatars;
GtkWidget *checkbutton_compact_contact_list;
GtkWidget *checkbutton_show_smileys;
+ GtkWidget *checkbutton_show_contacts_in_rooms;
GtkWidget *combobox_chat_theme;
+ GtkWidget *hbox_adium_theme;
+ GtkWidget *filechooserbutton_adium_theme;
+ GtkWidget *label_invalid_adium_theme;
GtkWidget *checkbutton_separate_chat_windows;
GtkWidget *checkbutton_autoconnect;
GtkWidget *radiobutton_contact_list_sort_by_name;
@@ -61,6 +69,8 @@ typedef struct {
GtkWidget *checkbutton_notifications_enabled;
GtkWidget *checkbutton_notifications_disabled_away;
GtkWidget *checkbutton_notifications_focus;
+ GtkWidget *checkbutton_notifications_contact_signin;
+ GtkWidget *checkbutton_notifications_contact_signout;
GtkWidget *treeview_spell_checker;
@@ -89,19 +99,13 @@ static gboolean preferences_languages_load_foreach (GtkTreeModel
static void preferences_languages_cell_toggled_cb (GtkCellRendererToggle *cell,
gchar *path_string,
EmpathyPreferences *preferences);
-static void preferences_themes_setup (EmpathyPreferences *preferences);
static void preferences_widget_sync_bool (const gchar *key,
GtkWidget *widget);
static void preferences_widget_sync_string (const gchar *key,
GtkWidget *widget);
-static void preferences_widget_sync_string_combo (const gchar *key,
- GtkWidget *widget);
static void preferences_notify_string_cb (EmpathyConf *conf,
const gchar *key,
gpointer user_data);
-static void preferences_notify_string_combo_cb (EmpathyConf *conf,
- const gchar *key,
- gpointer user_data);
static void preferences_notify_bool_cb (EmpathyConf *conf,
const gchar *key,
gpointer user_data);
@@ -114,9 +118,6 @@ static void preferences_hookup_toggle_button (EmpathyPreferences
static void preferences_hookup_radio_button (EmpathyPreferences *preferences,
const gchar *key,
GtkWidget *widget);
-static void preferences_hookup_string_combo (EmpathyPreferences *preferences,
- const gchar *key,
- GtkWidget *widget);
static void preferences_hookup_sensitivity (EmpathyPreferences *preferences,
const gchar *key,
GtkWidget *widget);
@@ -124,8 +125,6 @@ static void preferences_toggle_button_toggled_cb (GtkWidget
gpointer user_data);
static void preferences_radio_button_toggled_cb (GtkWidget *button,
gpointer user_data);
-static void preferences_string_combo_changed_cb (GtkWidget *button,
- gpointer user_data);
static void preferences_destroy_cb (GtkWidget *widget,
EmpathyPreferences *preferences);
static void preferences_response_cb (GtkWidget *widget,
@@ -203,6 +202,12 @@ preferences_setup_widgets (EmpathyPreferences *preferences)
preferences_hookup_toggle_button (preferences,
EMPATHY_PREFS_NOTIFICATIONS_FOCUS,
preferences->checkbutton_notifications_focus);
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN,
+ preferences->checkbutton_notifications_contact_signin);
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT,
+ preferences->checkbutton_notifications_contact_signout);
preferences_hookup_sensitivity (preferences,
EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
@@ -210,6 +215,12 @@ preferences_setup_widgets (EmpathyPreferences *preferences)
preferences_hookup_sensitivity (preferences,
EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
preferences->checkbutton_notifications_focus);
+ preferences_hookup_sensitivity (preferences,
+ EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
+ preferences->checkbutton_notifications_contact_signin);
+ preferences_hookup_sensitivity (preferences,
+ EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
+ preferences->checkbutton_notifications_contact_signout);
preferences_hookup_toggle_button (preferences,
EMPATHY_PREFS_SOUNDS_ENABLED,
@@ -241,9 +252,9 @@ preferences_setup_widgets (EmpathyPreferences *preferences)
EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
preferences->checkbutton_show_smileys);
- preferences_hookup_string_combo (preferences,
- EMPATHY_PREFS_CHAT_THEME,
- preferences->combobox_chat_theme);
+ preferences_hookup_toggle_button (preferences,
+ EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS,
+ preferences->checkbutton_show_contacts_in_rooms);
preferences_hookup_radio_button (preferences,
EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
@@ -465,7 +476,7 @@ preferences_languages_add (EmpathyPreferences *preferences)
codes != NULL);
if (!codes) {
gtk_widget_set_sensitive (preferences->treeview_spell_checker, FALSE);
- }
+ }
for (l = codes; l; l = l->next) {
GtkTreeIter iter;
@@ -639,43 +650,6 @@ preferences_languages_cell_toggled_cb (GtkCellRendererToggle *cell,
}
static void
-preferences_themes_setup (EmpathyPreferences *preferences)
-{
- GtkComboBox *combo;
- GtkCellLayout *cell_layout;
- GtkCellRenderer *renderer;
- GtkListStore *store;
- const gchar **themes;
- gint i;
-
- combo = GTK_COMBO_BOX (preferences->combobox_chat_theme);
- cell_layout = GTK_CELL_LAYOUT (combo);
-
- /* Create the model */
- store = gtk_list_store_new (COL_COMBO_COUNT,
- G_TYPE_STRING, /* Display name */
- G_TYPE_STRING); /* Theme name */
-
- /* Fill the model */
- themes = empathy_theme_manager_get_themes ();
- for (i = 0; themes[i]; i += 2) {
- gtk_list_store_insert_with_values (store, NULL, -1,
- COL_COMBO_VISIBLE_NAME, _(themes[i + 1]),
- COL_COMBO_NAME, themes[i],
- -1);
- }
-
- /* Add cell renderer */
- renderer = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (cell_layout, renderer, TRUE);
- gtk_cell_layout_set_attributes (cell_layout, renderer,
- "text", COL_COMBO_VISIBLE_NAME, NULL);
-
- gtk_combo_box_set_model (combo, GTK_TREE_MODEL (store));
- g_object_unref (store);
-}
-
-static void
preferences_widget_sync_bool (const gchar *key, GtkWidget *widget)
{
gboolean value;
@@ -700,12 +674,12 @@ preferences_widget_sync_string (const gchar *key, GtkWidget *widget)
GEnumValue *enum_value;
GSList *list;
GtkWidget *toggle_widget;
-
+
/* Get index from new string */
type = empathy_contact_list_store_sort_get_type ();
enum_class = G_ENUM_CLASS (g_type_class_peek (type));
enum_value = g_enum_get_value_by_nick (enum_class, value);
-
+
if (enum_value) {
list = gtk_radio_button_get_group (GTK_RADIO_BUTTON (widget));
toggle_widget = g_slist_nth_data (list, enum_value->value);
@@ -721,48 +695,6 @@ preferences_widget_sync_string (const gchar *key, GtkWidget *widget)
}
static void
-preferences_widget_sync_string_combo (const gchar *key, GtkWidget *widget)
-{
- gchar *value;
- GtkTreeModel *model;
- GtkTreeIter iter;
- gboolean found;
-
- if (!empathy_conf_get_string (empathy_conf_get (), key, &value)) {
- return;
- }
-
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
-
- found = FALSE;
- if (value && gtk_tree_model_get_iter_first (model, &iter)) {
-
- do {
- gchar *name;
- gtk_tree_model_get (model, &iter,
- COL_COMBO_NAME, &name,
- -1);
-
- if (strcmp (name, value) == 0) {
- found = TRUE;
- gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter);
- }
-
- g_free (name);
- } while (!found && gtk_tree_model_iter_next (model, &iter));
- }
-
- /* Fallback to the first one. */
- if (!found) {
- if (gtk_tree_model_get_iter_first (model, &iter)) {
- gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter);
- }
- }
-
- g_free (value);
-}
-
-static void
preferences_notify_string_cb (EmpathyConf *conf,
const gchar *key,
gpointer user_data)
@@ -770,13 +702,6 @@ preferences_notify_string_cb (EmpathyConf *conf,
preferences_widget_sync_string (key, user_data);
}
-static void
-preferences_notify_string_combo_cb (EmpathyConf *conf,
- const gchar *key,
- gpointer user_data)
-{
- preferences_widget_sync_string_combo (key, user_data);
-}
static void
preferences_notify_bool_cb (EmpathyConf *conf,
@@ -816,7 +741,7 @@ preferences_notify_int_cb (EmpathyConf *conf,
const gchar *key,
gpointer user_data)
{
- preferences_widget_sync_int (key, user_data);
+ preferences_widget_sync_int (key, user_data);
}
static void
@@ -955,32 +880,6 @@ preferences_hookup_radio_button (EmpathyPreferences *preferences,
}
static void
-preferences_hookup_string_combo (EmpathyPreferences *preferences,
- const gchar *key,
- GtkWidget *widget)
-{
- guint id;
-
- preferences_widget_sync_string_combo (key, widget);
-
- g_object_set_data_full (G_OBJECT (widget), "key",
- g_strdup (key), g_free);
-
- g_signal_connect (widget,
- "changed",
- G_CALLBACK (preferences_string_combo_changed_cb),
- NULL);
-
- id = empathy_conf_notify_add (empathy_conf_get (),
- key,
- preferences_notify_string_combo_cb,
- widget);
- if (id) {
- preferences_add_id (preferences, id);
- }
-}
-
-static void
preferences_hookup_sensitivity (EmpathyPreferences *preferences,
const gchar *key,
GtkWidget *widget)
@@ -1032,14 +931,14 @@ preferences_radio_button_toggled_cb (GtkWidget *button,
GType type;
GEnumClass *enum_class;
GEnumValue *enum_value;
-
+
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
-
+
/* Get string from index */
type = empathy_contact_list_store_sort_get_type ();
enum_class = G_ENUM_CLASS (g_type_class_peek (type));
enum_value = g_enum_get_value (enum_class, g_slist_index (group, button));
-
+
if (!enum_value) {
g_warning ("No GEnumValue for EmpathyContactListSort with GtkRadioButton index:%d",
g_slist_index (group, button));
@@ -1054,29 +953,216 @@ preferences_radio_button_toggled_cb (GtkWidget *button,
empathy_conf_set_string (empathy_conf_get (), key, value);
}
+
static void
-preferences_string_combo_changed_cb (GtkWidget *combo,
- gpointer user_data)
+preferences_theme_adium_update_visibility (EmpathyPreferences *preferences,
+ const gchar *name)
+{
+ if (name && strcmp (name, "adium") == 0) {
+ gtk_widget_show (preferences->hbox_adium_theme);
+ } else {
+ gtk_widget_hide (preferences->hbox_adium_theme);
+ gtk_widget_hide (preferences->label_invalid_adium_theme);
+ }
+}
+
+static void
+preferences_theme_adium_update_validity (EmpathyPreferences *preferences,
+ const gchar *path)
+{
+#ifdef HAVE_WEBKIT
+ if (empathy_adium_path_is_valid (path)) {
+ gtk_widget_hide (preferences->label_invalid_adium_theme);
+ } else {
+ gtk_widget_show (preferences->label_invalid_adium_theme);
+ }
+#endif
+}
+
+static void
+preferences_theme_adium_path_notify_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ EmpathyPreferences *preferences = user_data;
+ GtkFileChooser *chooser;
+ gchar *value;
+ const gchar *path;
+
+ if (!empathy_conf_get_string (conf, key, &value)) {
+ return;
+ }
+
+ if (EMP_STR_EMPTY (value)) {
+ path = g_get_home_dir ();
+ } else {
+ path = value;
+ }
+
+ chooser = GTK_FILE_CHOOSER (preferences->filechooserbutton_adium_theme);
+ gtk_file_chooser_set_current_folder (chooser, path);
+ preferences_theme_adium_update_validity (preferences, path);
+ g_free (value);
+}
+
+static void
+preferences_theme_adium_file_set_cb (GtkFileChooser *chooser,
+ EmpathyPreferences *preferences)
+{
+ gchar *path;
+
+ path = gtk_file_chooser_get_current_folder (chooser);
+ empathy_conf_set_string (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_ADIUM_PATH,
+ path);
+ preferences_theme_adium_update_validity (preferences, path);
+
+ g_free (path);
+}
+
+static void
+preferences_theme_notify_cb (EmpathyConf *conf,
+ const gchar *key,
+ gpointer user_data)
+{
+ EmpathyPreferences *preferences = user_data;
+ GtkComboBox *combo;
+ gchar *value;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gboolean found = FALSE;
+
+ if (!empathy_conf_get_string (conf, key, &value)) {
+ return;
+ }
+
+ preferences_theme_adium_update_visibility (preferences, value);
+
+ combo = GTK_COMBO_BOX (preferences->combobox_chat_theme);
+ model = gtk_combo_box_get_model (combo);
+ if (value && gtk_tree_model_get_iter_first (model, &iter)) {
+ gchar *name;
+
+ do {
+ gtk_tree_model_get (model, &iter,
+ COL_COMBO_NAME, &name,
+ -1);
+
+ if (strcmp (name, value) == 0) {
+ found = TRUE;
+ gtk_combo_box_set_active_iter (combo, &iter);
+ break;
+ }
+
+ g_free (name);
+ } while (gtk_tree_model_iter_next (model, &iter));
+ }
+
+ /* Fallback to the first one. */
+ if (!found) {
+ if (gtk_tree_model_get_iter_first (model, &iter)) {
+ gtk_combo_box_set_active_iter (combo, &iter);
+ }
+ }
+
+ g_free (value);
+}
+
+static void
+preferences_theme_changed_cb (GtkComboBox *combo,
+ EmpathyPreferences *preferences)
{
- const gchar *key;
GtkTreeModel *model;
GtkTreeIter iter;
gchar *name;
- key = g_object_get_data (G_OBJECT (combo), "key");
-
- if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo), &iter)) {
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
+ if (gtk_combo_box_get_active_iter (combo, &iter)) {
+ model = gtk_combo_box_get_model (combo);
gtk_tree_model_get (model, &iter,
COL_COMBO_NAME, &name,
-1);
- empathy_conf_set_string (empathy_conf_get (), key, name);
+
+ preferences_theme_adium_update_visibility (preferences, name);
+
+ empathy_conf_set_string (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_THEME,
+ name);
g_free (name);
}
}
static void
+preferences_themes_setup (EmpathyPreferences *preferences)
+{
+ GtkComboBox *combo;
+ GtkCellLayout *cell_layout;
+ GtkCellRenderer *renderer;
+ GtkListStore *store;
+ const gchar **themes;
+ gint i;
+ guint id;
+
+ combo = GTK_COMBO_BOX (preferences->combobox_chat_theme);
+ cell_layout = GTK_CELL_LAYOUT (combo);
+
+ /* Create the model */
+ store = gtk_list_store_new (COL_COMBO_COUNT,
+ G_TYPE_STRING, /* Display name */
+ G_TYPE_STRING); /* Theme name */
+
+ /* Fill the model */
+ themes = empathy_theme_manager_get_themes ();
+ for (i = 0; themes[i]; i += 2) {
+ gtk_list_store_insert_with_values (store, NULL, -1,
+ COL_COMBO_VISIBLE_NAME, _(themes[i + 1]),
+ COL_COMBO_NAME, themes[i],
+ -1);
+ }
+
+ /* Add cell renderer */
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (cell_layout, renderer, TRUE);
+ gtk_cell_layout_set_attributes (cell_layout, renderer,
+ "text", COL_COMBO_VISIBLE_NAME, NULL);
+
+ gtk_combo_box_set_model (combo, GTK_TREE_MODEL (store));
+ g_object_unref (store);
+
+ g_signal_connect (combo, "changed",
+ G_CALLBACK (preferences_theme_changed_cb),
+ preferences);
+
+ /* Select the theme from the gconf key and track changes */
+ preferences_theme_notify_cb (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_THEME,
+ preferences);
+ id = empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_THEME,
+ preferences_theme_notify_cb,
+ preferences);
+ if (id) {
+ preferences_add_id (preferences, id);
+ }
+
+ g_signal_connect (preferences->filechooserbutton_adium_theme,
+ "file-set",
+ G_CALLBACK (preferences_theme_adium_file_set_cb),
+ preferences);
+ /* Select the adium path from the gconf key and track changes */
+ preferences_theme_adium_path_notify_cb (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_ADIUM_PATH,
+ preferences);
+ id = empathy_conf_notify_add (empathy_conf_get (),
+ EMPATHY_PREFS_CHAT_ADIUM_PATH,
+ preferences_theme_adium_path_notify_cb,
+ preferences);
+ if (id) {
+ preferences_add_id (preferences, id);
+ }
+}
+
+static void
preferences_response_cb (GtkWidget *widget,
gint response,
EmpathyPreferences *preferences)
@@ -1123,7 +1209,11 @@ empathy_preferences_show (GtkWindow *parent)
"checkbutton_show_avatars", &preferences->checkbutton_show_avatars,
"checkbutton_compact_contact_list", &preferences->checkbutton_compact_contact_list,
"checkbutton_show_smileys", &preferences->checkbutton_show_smileys,
+ "checkbutton_show_contacts_in_rooms", &preferences->checkbutton_show_contacts_in_rooms,
"combobox_chat_theme", &preferences->combobox_chat_theme,
+ "hbox_adium_theme", &preferences->hbox_adium_theme,
+ "filechooserbutton_adium_theme", &preferences->filechooserbutton_adium_theme,
+ "label_invalid_adium_theme", &preferences->label_invalid_adium_theme,
"checkbutton_separate_chat_windows", &preferences->checkbutton_separate_chat_windows,
"checkbutton_autoconnect", &preferences->checkbutton_autoconnect,
"radiobutton_contact_list_sort_by_name", &preferences->radiobutton_contact_list_sort_by_name,
@@ -1131,6 +1221,8 @@ empathy_preferences_show (GtkWindow *parent)
"checkbutton_notifications_enabled", &preferences->checkbutton_notifications_enabled,
"checkbutton_notifications_disabled_away", &preferences->checkbutton_notifications_disabled_away,
"checkbutton_notifications_focus", &preferences->checkbutton_notifications_focus,
+ "checkbutton_notifications_contact_signin", &preferences->checkbutton_notifications_contact_signin,
+ "checkbutton_notifications_contact_signout", &preferences->checkbutton_notifications_contact_signout,
"checkbutton_sounds_enabled", &preferences->checkbutton_sounds_enabled,
"checkbutton_sounds_disabled_away", &preferences->checkbutton_sounds_disabled_away,
"treeview_sounds", &preferences->treeview_sounds,
diff --git a/src/empathy-preferences.h b/src/empathy-preferences.h
index 6cc86d1d6..aba58828e 100644
--- a/src/empathy-preferences.h
+++ b/src/empathy-preferences.h
@@ -25,7 +25,7 @@
#ifndef __EMPATHY_PREFERENCES_H__
#define __EMPATHY_PREFERENCES_H__
-#include <gtk/gtkwindow.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/src/empathy-preferences.ui b/src/empathy-preferences.ui
index d92fc8f88..38cfd3419 100644
--- a/src/empathy-preferences.ui
+++ b/src/empathy-preferences.ui
@@ -37,7 +37,6 @@
<child>
<object class="GtkVBox" id="vbox199">
<property name="visible">True</property>
- <property name="spacing">6</property>
<child>
<object class="GtkCheckButton" id="checkbutton_compact_contact_list">
<property name="label" translatable="yes">Show co_mpact contact list</property>
@@ -86,6 +85,22 @@
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton_show_contacts_in_rooms">
+ <property name="label" translatable="yes">Show contact _list in rooms</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
</child>
</object>
@@ -93,8 +108,10 @@
<child type="label">
<object class="GtkLabel" id="label611">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Appearance&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Appearance</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -153,8 +170,10 @@
<child type="label">
<object class="GtkLabel" id="label612">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Behavior&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Behavior</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -215,8 +234,10 @@
<child type="label">
<object class="GtkLabel" id="label644">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Contact List&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Contact List</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -289,6 +310,32 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton_notifications_contact_signin">
+ <property name="label" translatable="yes">Enable notifications when a contact comes online</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkbutton_notifications_contact_signout">
+ <property name="label" translatable="yes">Enable notifications when a contact goes offline</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
</child>
</object>
@@ -369,8 +416,10 @@
<object class="GtkLabel" id="label645">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;b&gt;Play sound for events&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Play sound for events</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
@@ -478,9 +527,11 @@
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;small&gt;Reduced location accuracy means that nothing more precise than your city, state and country will be published. GPS coordinates will have a random value added (&#xB1;0.25&#xB0;).&lt;/small&gt;</property>
- <property name="use_markup">True</property>
<property name="wrap">True</property>
+ <property name="label" translatable="yes">Reduced location accuracy means that nothing more precise than your city, state and country will be published. GPS coordinates will have a random value added (&#xB1;0.25&#xB0;).</property>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
</object>
<packing>
<property name="position">1</property>
@@ -515,8 +566,10 @@
<child type="label">
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Privacy&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Privacy</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -594,8 +647,10 @@
<child type="label">
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Geoclue Settings&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Geoclue Settings</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -693,9 +748,11 @@
<object class="GtkLabel" id="label616">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">&lt;small&gt;The list of languages reflects only the languages for which you have a dictionary installed.&lt;/small&gt;</property>
- <property name="use_markup">True</property>
<property name="wrap">True</property>
+ <property name="label" translatable="yes">The list of languages reflects only the languages for which you have a dictionary installed.</property>
+ <attributes>
+ <attribute name="scale" value="0.8"/>
+ </attributes>
</object>
<packing>
<property name="position">1</property>
@@ -714,8 +771,10 @@
<child type="label">
<object class="GtkLabel" id="label615">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Enable spell checking for languages:&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Enable spell checking for languages:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
@@ -792,6 +851,50 @@
<property name="position">0</property>
</packing>
</child>
+ <child>
+ <object class="GtkHBox" id="hbox_adium_theme">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label587">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Adium theme to use:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="filechooserbutton_adium_theme">
+ <property name="visible">True</property>
+ <property name="preview_widget_active">False</property>
+ <property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_invalid_adium_theme">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Not a valid adium theme</property>
+ <attributes>
+ <attribute name="foreground" value="red"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
</object>
</child>
</object>
@@ -799,8 +902,10 @@
<child type="label">
<object class="GtkLabel" id="label626">
<property name="visible">True</property>
- <property name="label" translatable="yes">&lt;b&gt;Appearance&lt;/b&gt;</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Appearance</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
</child>
</object>
diff --git a/src/empathy-sidebar.c b/src/empathy-sidebar.c
index caca6b5e3..7b70229e2 100644
--- a/src/empathy-sidebar.c
+++ b/src/empathy-sidebar.c
@@ -165,7 +165,7 @@ empathy_sidebar_set_property (GObject *object,
switch (prop_id)
{
case PROP_CURRENT_PAGE:
- empathy_sidebar_set_page (sidebar, g_value_get_object (value));
+ empathy_sidebar_set_page (sidebar, g_value_get_object (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c
index 9c2194880..d6520ff7c 100644
--- a/src/empathy-status-icon.c
+++ b/src/empathy-status-icon.c
@@ -229,13 +229,14 @@ status_icon_event_added_cb (EmpathyEventManager *manager,
DEBUG ("New event %p", event);
priv->event = event;
- priv->showing_event_icon = TRUE;
-
- status_icon_update_icon (icon);
- status_icon_update_tooltip (icon);
+ if (event->must_ack) {
+ priv->showing_event_icon = TRUE;
+ status_icon_update_icon (icon);
+ status_icon_update_tooltip (icon);
+ }
status_icon_update_notification (icon);
- if (!priv->blink_timeout) {
+ if (!priv->blink_timeout && priv->showing_event_icon) {
priv->blink_timeout = g_timeout_add (BLINK_TIMEOUT,
(GSourceFunc) status_icon_blink_timeout_cb,
icon);
@@ -260,7 +261,7 @@ status_icon_event_removed_cb (EmpathyEventManager *manager,
/* update notification anyway, as it's safe and we might have been
* changed presence in the meanwhile
- */
+ */
status_icon_update_notification (icon);
if (!priv->event && priv->blink_timeout) {
@@ -378,7 +379,7 @@ status_icon_key_press_event_cb (GtkWidget *window,
}
return FALSE;
}
-
+
static void
status_icon_activate_cb (GtkStatusIcon *status_icon,
EmpathyStatusIcon *icon)
diff --git a/src/empathy.c b/src/empathy.c
index d5be4df8d..85124d1e9 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -38,6 +38,7 @@
#include <libebook/e-book.h>
#include <libnotify/notify.h>
+#include <telepathy-glib/dbus.h>
#include <telepathy-glib/util.h>
#include <libmissioncontrol/mc-account.h>
#include <libmissioncontrol/mission-control.h>
@@ -47,6 +48,7 @@
#include <libempathy/empathy-call-factory.h>
#include <libempathy/empathy-chatroom-manager.h>
#include <libempathy/empathy-account-manager.h>
+#include <libempathy/empathy-debugger.h>
#include <libempathy/empathy-dispatcher.h>
#include <libempathy/empathy-dispatch-operation.h>
#include <libempathy/empathy-log-manager.h>
@@ -284,13 +286,13 @@ create_salut_account (void)
account = mc_account_create (profile);
mc_account_set_display_name (account, _("People nearby"));
-
+
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;
@@ -449,6 +451,31 @@ new_call_handler_cb (EmpathyCallFactory *factory, EmpathyCallHandler *handler,
gtk_widget_show (GTK_WIDGET (window));
}
+#ifdef ENABLE_DEBUG
+static void
+default_log_handler (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer user_data)
+{
+ g_log_default_handler (log_domain, log_level, message, NULL);
+
+ /* G_LOG_DOMAIN = "empathy". No need to send empathy messages to the
+ * debugger as they already have in empathy_debug. */
+ if (log_level != G_LOG_LEVEL_DEBUG
+ || tp_strdiff (log_domain, G_LOG_DOMAIN)) {
+ EmpathyDebugger *dbg;
+ GTimeVal now;
+
+ dbg = empathy_debugger_get_singleton ();
+ g_get_current_time (&now);
+
+ empathy_debugger_add_message (dbg, &now, log_domain,
+ log_level, message);
+ }
+}
+#endif /* ENABLE_DEBUG */
+
int
main (int argc, char *argv[])
{
@@ -470,6 +497,7 @@ main (int argc, char *argv[])
gboolean hide_contact_list = FALSE;
gboolean accounts_dialog = FALSE;
GError *error = NULL;
+ TpDBusDaemon *dbus_daemon;
GOptionEntry options[] = {
{ "no-connect", 'n',
0, G_OPTION_ARG_NONE, &no_connect,
@@ -512,6 +540,11 @@ main (int argc, char *argv[])
gtk_window_set_default_icon_name ("empathy");
textdomain (GETTEXT_PACKAGE);
+#ifdef ENABLE_DEBUG
+ /* Set up debugger */
+ g_log_set_default_handler (default_log_handler, NULL);
+#endif
+
/* Setting up the bacon connection */
startup_timestamp = get_startup_timestamp ();
connection = bacon_message_connection_new ("empathy");
@@ -547,6 +580,23 @@ main (int argc, char *argv[])
g_warning ("Cannot create the 'empathy' bacon connection.");
}
+ /* Take well-known name */
+ dbus_daemon = tp_dbus_daemon_dup (&error);
+ if (error == NULL) {
+ if (!tp_dbus_daemon_request_name (dbus_daemon,
+ "org.gnome.Empathy",
+ TRUE, &error)) {
+ DEBUG ("Failed to request well-known name: %s",
+ error ? error->message : "no message");
+ g_clear_error (&error);
+ }
+ g_object_unref (dbus_daemon);
+ } else {
+ DEBUG ("Failed to dup dbus daemon: %s",
+ error ? error->message : "no message");
+ g_clear_error (&error);
+ }
+
/* Setting up MC */
mc = empathy_mission_control_dup_singleton ();
g_signal_connect (mc, "ServiceEnded",
@@ -584,7 +634,7 @@ main (int argc, char *argv[])
(idle), TP_CONNECTION_PRESENCE_TYPE_OFFLINE) <= 0) {
empathy_idle_set_state (idle, MC_PRESENCE_AVAILABLE);
}
-
+
create_salut_account ();
/* Setting up UI */
diff --git a/src/ephy-spinner.c b/src/ephy-spinner.c
index be82ca71b..30ffa57c1 100644
--- a/src/ephy-spinner.c
+++ b/src/ephy-spinner.c
@@ -34,9 +34,7 @@
#define STOP_PROFILER(name)
#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gtk/gtkicontheme.h>
-#include <gtk/gtkiconfactory.h>
-#include <gtk/gtksettings.h>
+#include <gtk/gtk.h>
/* Spinner cache implementation */
diff --git a/src/ephy-spinner.h b/src/ephy-spinner.h
index 4435fe371..769d54a3d 100644
--- a/src/ephy-spinner.h
+++ b/src/ephy-spinner.h
@@ -25,8 +25,7 @@
#ifndef EPHY_SPINNER_H
#define EPHY_SPINNER_H
-#include <gtk/gtkwidget.h>
-#include <gtk/gtkenums.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
diff --git a/tools/check-whitespace.sh b/tools/check-whitespace.sh
index 84356f20b..489322f9c 100644
--- a/tools/check-whitespace.sh
+++ b/tools/check-whitespace.sh
@@ -8,6 +8,12 @@ then
fail=1
fi
+if grep -n ' $' "$@"
+then
+ echo "^^^ The above files contain unwanted trailing tabs"
+ fail=1
+fi
+
# TODO: enable tab checking once all Empathy switched to TP coding style
#if grep -n ' ' "$@"
#then