aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac29
-rw-r--r--data/Makefile.am11
-rw-r--r--data/Template.html159
-rw-r--r--data/empathy.schemas.in14
-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/libempathy-gtk-docs.sgml1
-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.am33
-rw-r--r--libempathy-gtk/empathy-avatar-chooser.c4
-rw-r--r--libempathy-gtk/empathy-chat-text-view.c28
-rw-r--r--libempathy-gtk/empathy-chat.c2
-rw-r--r--libempathy-gtk/empathy-conf.h1
-rw-r--r--libempathy-gtk/empathy-location-manager.c10
-rw-r--r--libempathy-gtk/empathy-profile-chooser.c425
-rw-r--r--libempathy-gtk/empathy-profile-chooser.h51
-rw-r--r--libempathy-gtk/empathy-smiley-manager.c83
-rw-r--r--libempathy-gtk/empathy-smiley-manager.h9
-rw-r--r--libempathy-gtk/empathy-theme-adium.c831
-rw-r--r--libempathy-gtk/empathy-theme-adium.h56
-rw-r--r--libempathy-gtk/empathy-theme-manager.c55
-rw-r--r--libempathy-gtk/empathy-theme.c408
-rw-r--r--libempathy-gtk/empathy-ui-utils.c23
-rw-r--r--libempathy-gtk/empathy-ui-utils.h9
-rw-r--r--libempathy/Makefile.am2
-rw-r--r--libempathy/empathy-call-handler.c21
-rw-r--r--libempathy/empathy-call-handler.h3
-rw-r--r--libempathy/empathy-chatroom-manager.c36
-rw-r--r--libempathy/empathy-contact.c33
-rw-r--r--libempathy/empathy-contact.h4
-rw-r--r--libempathy/empathy-dispatcher.c13
-rw-r--r--libempathy/empathy-tp-contact-list.c44
-rw-r--r--libempathy/empathy-tp-file.c5
-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--po/es.po110
-rw-r--r--po/he.po2417
-rw-r--r--po/nb.po1706
-rw-r--r--python/pyempathy/pyempathy.defs62
-rw-r--r--python/pyempathy/pyempathy.override1
-rw-r--r--python/pyempathygtk/pyempathygtk.defs44
-rwxr-xr-xpython/update-binding.sh1
-rwxr-xr-xrelease.py16
-rw-r--r--src/Makefile.am22
-rw-r--r--src/empathy-accounts-dialog.c29
-rw-r--r--src/empathy-accounts-dialog.ui70
-rw-r--r--src/empathy-call-window.c341
-rw-r--r--src/empathy-call-window.ui21
-rw-r--r--src/empathy-chat-window.c52
-rw-r--r--src/empathy-map-view.c29
-rw-r--r--src/empathy-map-view.ui27
-rw-r--r--src/empathy-preferences.c340
-rw-r--r--src/empathy-preferences.ui43
-rw-r--r--tests/.gitignore1
-rw-r--r--tests/Makefile.am4
-rw-r--r--tests/test-empathy-profile-chooser.c31
63 files changed, 5016 insertions, 3739 deletions
diff --git a/configure.ac b/configure.ac
index 8a85a7525..c921c40cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -39,6 +39,7 @@ LIBCHAMPLAIN_REQUIRED=0.3.0
LIBCHAMPLAIN_GTK_REQUIRED=0.3.0
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
@@ -156,6 +157,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 +453,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..81ea5e864 100644
--- a/data/empathy.schemas.in
+++ b/data/empathy.schemas.in
@@ -304,6 +304,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>
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/libempathy-gtk-docs.sgml b/docs/libempathy-gtk/libempathy-gtk-docs.sgml
index c7b630b14..71f8ed3b6 100644
--- a/docs/libempathy-gtk/libempathy-gtk-docs.sgml
+++ b/docs/libempathy-gtk/libempathy-gtk-docs.sgml
@@ -49,6 +49,7 @@
<xi:include href="xml/empathy-smiley-manager.xml"/>
<xi:include href="xml/empathy-spell.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 347cbba90..7672cc983 100644
--- a/docs/libempathy-gtk/libempathy-gtk.types
+++ b/docs/libempathy-gtk/libempathy-gtk.types
@@ -21,8 +21,10 @@ empathy_contact_widget_flags_get_type
empathy_gst_video_src_channel_get_type
empathy_sound_get_type
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..2a4438e57 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)
@@ -73,6 +74,7 @@ libempathy_gtk_la_LIBADD = \
$(ENCHANT_LIBS) \
$(LIBCHAMPLAIN_LIBS) \
$(GEOCLUE_LIBS) \
+ $(WEBKIT_LIBS) \
$(top_builddir)/libempathy/libempathy.la
libempathy_gtk_la_LDFLAGS = \
@@ -118,14 +120,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 +212,29 @@ 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-theme-adium.c
+libempathy_gtk_headers += \
+ empathy-theme-adium.h
+else
+EXTRA_DIST += \
+ empathy-theme-adium.c \
+ empathy-theme-adium.h
+endif
+
CLEANFILES = \
$(BUILT_SOURCES) \
stamp-empathy-gtk-enum-types.h
diff --git a/libempathy-gtk/empathy-avatar-chooser.c b/libempathy-gtk/empathy-avatar-chooser.c
index 0f4311e07..8c005a029 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);
}
diff --git a/libempathy-gtk/empathy-chat-text-view.c b/libempathy-gtk/empathy-chat-text-view.c
index 8874b7ace..95e67b714 100644
--- a/libempathy-gtk/empathy-chat-text-view.c
+++ b/libempathy-gtk/empathy-chat-text-view.c
@@ -231,12 +231,6 @@ chat_text_view_notify_system_font_cb (EmpathyConf *conf,
}
static void
-chat_text_view_clear_view_cb (GtkMenuItem *menuitem, EmpathyChatTextView *view)
-{
- empathy_chat_view_clear (EMPATHY_CHAT_VIEW (view));
-}
-
-static void
chat_text_view_open_address_cb (GtkMenuItem *menuitem, const gchar *url)
{
empathy_url_show (GTK_WIDGET (menuitem), url);
@@ -256,8 +250,8 @@ chat_text_view_copy_address_cb (GtkMenuItem *menuitem, const gchar *url)
static void
chat_text_view_populate_popup (EmpathyChatTextView *view,
- GtkMenu *menu,
- gpointer user_data)
+ GtkMenu *menu,
+ gpointer user_data)
{
EmpathyChatTextViewPriv *priv;
GtkTextTagTable *table;
@@ -271,7 +265,7 @@ chat_text_view_populate_popup (EmpathyChatTextView *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);
@@ -279,10 +273,9 @@ chat_text_view_populate_popup (EmpathyChatTextView *view,
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 */
@@ -316,21 +309,19 @@ chat_text_view_populate_popup (EmpathyChatTextView *view,
"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);
@@ -576,6 +567,7 @@ 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);
}
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index 248fd116d..0fb77f24c 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -1217,7 +1217,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 |
diff --git a/libempathy-gtk/empathy-conf.h b/libempathy-gtk/empathy-conf.h
index 07026df5c..47949139e 100644
--- a/libempathy-gtk/empathy-conf.h
+++ b/libempathy-gtk/empathy-conf.h
@@ -60,6 +60,7 @@ struct _EmpathyConfClass {
#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_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-location-manager.c b/libempathy-gtk/empathy-location-manager.c
index fb804315c..1b76e2e1d 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,8 +452,11 @@ update_resources (EmpathyLocationManager *location_manager)
DEBUG ("Updating resources %d", priv->resources);
+ /* 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");
diff --git a/libempathy-gtk/empathy-profile-chooser.c b/libempathy-gtk/empathy-profile-chooser.c
index 14965741c..b3cbf90d0 100644
--- a/libempathy-gtk/empathy-profile-chooser.c
+++ b/libempathy-gtk/empathy-profile-chooser.c
@@ -1,6 +1,6 @@
-/* -*- 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-2008 Collabora Ltd.
+ * Copyright (C) 2007-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
@@ -17,6 +17,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* Authors: Xavier Claessens <xclaesse@gmail.com>
+ * Jonny Lamb <jonny.lamb@collabora.co.uk>
*/
#include <config.h>
@@ -27,6 +28,8 @@
#include <libmissioncontrol/mc-profile.h>
#include <libmissioncontrol/mc-protocol.h>
+#include <libempathy/empathy-utils.h>
+
#include "empathy-profile-chooser.h"
#include "empathy-ui-utils.h"
@@ -34,112 +37,277 @@
* SECTION:empathy-profile-chooser
* @title: EmpathyProfileChooser
* @short_description: A widget used to choose from a list of profiles
- * @include: libempathy-gtk/empathy-account-chooser.h
+ * @include: libempathy-gtk/empathy-profile-chooser.h
*
- * #EmpathyProfileChooser is a widget which provides a chooser of available
+ * #EmpathyProfileChooser is a widget which extends #GtkComboBox to provides a
+ * chooser of available profiles.
+ */
+
+/**
+ * EmpathyProfileChooser:
+ * @parent: parent object
+ *
+ * Widget which extends #GtkComboBox to provide a chooser of available
* profiles.
*/
-enum {
- COL_ICON,
- COL_LABEL,
- COL_PROFILE,
- COL_COUNT
+#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyProfileChooser)
+typedef struct
+{
+ GtkListStore *store;
+ gboolean dispose_run;
+} EmpathyProfileChooserPriv;
+
+enum
+{
+ COL_ICON,
+ COL_LABEL,
+ COL_PROFILE,
+ COL_COUNT
};
+G_DEFINE_TYPE (EmpathyProfileChooser, empathy_profile_chooser,
+ GTK_TYPE_COMBO_BOX);
+
+static gint
+profile_chooser_sort_profile_value (McProfile *profile)
+{
+ guint i;
+ const gchar *profile_name;
+ const gchar *names[] = {
+ "jabber",
+ "salut",
+ "gtalk",
+ NULL
+ };
+
+ profile_name = mc_profile_get_unique_name (profile);
+
+ for (i = 0 ; names[i]; i++)
+ {
+ if (strcmp (profile_name, names[i]) == 0)
+ return i;
+ }
+
+ return i;
+}
+
+static gint
+profile_chooser_sort_func (GtkTreeModel *model,
+ GtkTreeIter *iter_a,
+ GtkTreeIter *iter_b,
+ gpointer user_data)
+{
+ McProfile *profile_a;
+ McProfile *profile_b;
+ gint cmp;
+
+ gtk_tree_model_get (model, iter_a,
+ COL_PROFILE, &profile_a,
+ -1);
+ gtk_tree_model_get (model, iter_b,
+ COL_PROFILE, &profile_b,
+ -1);
+
+ cmp = profile_chooser_sort_profile_value (profile_a);
+ cmp -= profile_chooser_sort_profile_value (profile_b);
+ if (cmp == 0)
+ {
+ cmp = strcmp (mc_profile_get_display_name (profile_a),
+ mc_profile_get_display_name (profile_b));
+ }
+
+ g_object_unref (profile_a);
+ g_object_unref (profile_b);
+
+ return cmp;
+}
+
+static void
+profile_chooser_constructed (GObject *object)
+{
+ EmpathyProfileChooser *profile_chooser;
+ EmpathyProfileChooserPriv *priv;
+
+ GList *profiles, *l, *seen;
+ GtkCellRenderer *renderer;
+ GtkTreeIter iter;
+ gboolean iter_set = FALSE;
+ McManager *btf_cm;
+
+ priv = GET_PRIV (object);
+ profile_chooser = EMPATHY_PROFILE_CHOOSER (object);
+
+ /* set up combo box with new store */
+ priv->store = gtk_list_store_new (COL_COUNT,
+ G_TYPE_STRING, /* Icon name */
+ G_TYPE_STRING, /* Label */
+ MC_TYPE_PROFILE); /* Profile */
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX (object),
+ GTK_TREE_MODEL (priv->store));
+
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (object), renderer, FALSE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (object), renderer,
+ "icon-name", COL_ICON,
+ NULL);
+ g_object_set (renderer, "stock-size", GTK_ICON_SIZE_BUTTON, NULL);
+
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (object), renderer, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (object), renderer,
+ "text", COL_LABEL,
+ NULL);
+
+ btf_cm = mc_manager_lookup ("butterfly");
+ profiles = mc_profiles_list ();
+ seen = NULL;
+ for (l = profiles; l; l = g_list_next (l))
+ {
+ McProfile *profile;
+ McProtocol *protocol;
+ const gchar *unique_name;
+
+ profile = l->data;
+
+ /* Check if the CM is installed, otherwise skip that profile.
+ * Workaround SF bug #1688779 */
+ protocol = mc_profile_get_protocol (profile);
+ if (!protocol)
+ continue;
+
+ g_object_unref (protocol);
+
+ /* Skip MSN-Haze if we have butterfly */
+ unique_name = mc_profile_get_unique_name (profile);
+ if (btf_cm && strcmp (unique_name, "msn-haze") == 0)
+ continue;
+
+ if (g_list_find_custom (seen, unique_name, (GCompareFunc) strcmp))
+ continue;
+
+ seen = g_list_append (seen, (char *) unique_name);
+
+ gtk_list_store_insert_with_values (priv->store, &iter, 0,
+ COL_ICON, mc_profile_get_icon_name (profile),
+ COL_LABEL, mc_profile_get_display_name (profile),
+ COL_PROFILE, profile,
+ -1);
+ iter_set = TRUE;
+ }
+
+ g_list_free (seen);
+
+ if (btf_cm)
+ g_object_unref (btf_cm);
+
+ /* Set the profile sort function */
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (priv->store),
+ COL_PROFILE,
+ profile_chooser_sort_func,
+ NULL, NULL);
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (priv->store),
+ COL_PROFILE,
+ GTK_SORT_ASCENDING);
+
+ if (iter_set)
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (object), &iter);
+
+ mc_profiles_free_list (profiles);
+
+ if (G_OBJECT_CLASS (empathy_profile_chooser_parent_class)->constructed)
+ G_OBJECT_CLASS (empathy_profile_chooser_parent_class)->constructed (object);
+}
+
+static void
+empathy_profile_chooser_init (EmpathyProfileChooser *profile_chooser)
+{
+ EmpathyProfileChooserPriv *priv =
+ G_TYPE_INSTANCE_GET_PRIVATE (profile_chooser,
+ EMPATHY_TYPE_PROFILE_CHOOSER, EmpathyProfileChooserPriv);
+
+ priv->dispose_run = FALSE;
+
+ profile_chooser->priv = priv;
+}
+
+static void
+profile_chooser_dispose (GObject *object)
+{
+ EmpathyProfileChooser *profile_chooser = EMPATHY_PROFILE_CHOOSER (object);
+ EmpathyProfileChooserPriv *priv = GET_PRIV (profile_chooser);
+
+ if (priv->dispose_run)
+ return;
+
+ priv->dispose_run = TRUE;
+
+ if (priv->store)
+ {
+ g_object_unref (priv->store);
+ priv->store = NULL;
+ }
+
+ (G_OBJECT_CLASS (empathy_profile_chooser_parent_class)->dispose) (object);
+}
+
+static void
+empathy_profile_chooser_class_init (EmpathyProfileChooserClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->constructed = profile_chooser_constructed;
+ object_class->dispose = profile_chooser_dispose;
+
+ g_type_class_add_private (object_class, sizeof (EmpathyProfileChooserPriv));
+}
+
/**
* empathy_profile_chooser_dup_selected:
- * @widget: an #EmpathyProfileChooser
+ * @profile_chooser: an #EmpathyProfileChooser
*
- * Returns a new reference to the selected #McProfile in @widget. The returned
- * #McProfile should be unrefed with g_object_unref() when finished with.
+ * Returns a new reference to the selected #McProfile in @profile_chooser. The
+ * returned #McProfile should be unrefed with g_object_unref() when finished
+ * with.
*
* Return value: a new reference to the selected #McProfile
*/
McProfile *
-empathy_profile_chooser_dup_selected (GtkWidget *widget)
+empathy_profile_chooser_dup_selected (EmpathyProfileChooser *profile_chooser)
{
- GtkTreeModel *model;
- GtkTreeIter iter;
- McProfile *profile = NULL;
-
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
- if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter)) {
- gtk_tree_model_get (model, &iter,
- COL_PROFILE, &profile,
- -1);
- }
-
- return profile;
+ EmpathyProfileChooserPriv *priv = GET_PRIV (profile_chooser);
+ GtkTreeIter iter;
+ McProfile *profile = NULL;
+
+ g_return_val_if_fail (EMPATHY_IS_PROFILE_CHOOSER (profile_chooser), NULL);
+
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (profile_chooser), &iter))
+ {
+ gtk_tree_model_get (GTK_TREE_MODEL (priv->store), &iter,
+ COL_PROFILE, &profile,
+ -1);
+ }
+
+ return profile;
}
/**
* empathy_profile_chooser_n_profiles:
- * @widget: an #EmpathyProfileChooser
+ * @profile_chooser: an #EmpathyProfileChooser
*
- * Returns the number of profiles in @widget.
+ * Returns the number of profiles in @profile_chooser.
*
- * Return value: the number of profiles in @widget
+ * Return value: the number of profiles in @profile_chooser
*/
gint
-empathy_profile_chooser_n_profiles (GtkWidget *widget)
+empathy_profile_chooser_n_profiles (EmpathyProfileChooser *profile_chooser)
{
- GtkTreeModel *model;
+ EmpathyProfileChooserPriv *priv = GET_PRIV (profile_chooser);
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
-
- return gtk_tree_model_iter_n_children (model, NULL);
-}
+ g_return_val_if_fail (EMPATHY_IS_PROFILE_CHOOSER (profile_chooser), 0);
-static gint
-profile_chooser_sort_profile_value (McProfile *profile)
-{
- guint i;
- const gchar *profile_name;
- const gchar *names[] = {"jabber",
- "salut",
- "gtalk",
- NULL};
-
- profile_name = mc_profile_get_unique_name (profile);
-
- for (i = 0 ; names[i]; i++) {
- if (strcmp (profile_name, names[i]) == 0) {
- return i;
- }
- }
-
- return i;
-}
-
-static gint
-profile_chooser_sort_func (GtkTreeModel *model,
- GtkTreeIter *iter_a,
- GtkTreeIter *iter_b,
- gpointer user_data)
-{
- McProfile *profile_a;
- McProfile *profile_b;
- gint cmp;
-
- gtk_tree_model_get (model, iter_a,
- COL_PROFILE, &profile_a,
- -1);
- gtk_tree_model_get (model, iter_b,
- COL_PROFILE, &profile_b,
- -1);
-
- cmp = profile_chooser_sort_profile_value (profile_a);
- cmp -= profile_chooser_sort_profile_value (profile_b);
- if (cmp == 0) {
- cmp = strcmp (mc_profile_get_display_name (profile_a),
- mc_profile_get_display_name (profile_b));
- }
-
- g_object_unref (profile_a);
- g_object_unref (profile_b);
-
- return cmp;
+ return gtk_tree_model_iter_n_children (GTK_TREE_MODEL (priv->store), NULL);
}
/**
@@ -152,94 +320,5 @@ profile_chooser_sort_func (GtkTreeModel *model,
GtkWidget *
empathy_profile_chooser_new (void)
{
- GList *profiles, *l, *seen;
- GtkListStore *store;
- GtkCellRenderer *renderer;
- GtkWidget *combo_box;
- GtkTreeIter iter;
- gboolean iter_set = FALSE;
- McManager *btf_cm;
-
- /* set up combo box with new store */
- store = gtk_list_store_new (COL_COUNT,
- G_TYPE_STRING, /* Icon name */
- G_TYPE_STRING, /* Label */
- MC_TYPE_PROFILE); /* Profile */
- combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
-
-
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, FALSE);
- gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
- "icon-name", COL_ICON,
- NULL);
- g_object_set (renderer, "stock-size", GTK_ICON_SIZE_BUTTON, NULL);
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE);
- gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
- "text", COL_LABEL,
- NULL);
-
- btf_cm = mc_manager_lookup ("butterfly");
- profiles = mc_profiles_list ();
- seen = NULL;
- for (l = profiles; l; l = l->next) {
- McProfile *profile;
- McProtocol *protocol;
- const gchar *unique_name;
-
- profile = l->data;
-
- /* Check if the CM is installed, otherwise skip that profile.
- * Workaround SF bug #1688779 */
- protocol = mc_profile_get_protocol (profile);
- if (!protocol) {
- continue;
- }
- g_object_unref (protocol);
-
- /* Skip MSN-Haze if we have butterfly */
- unique_name = mc_profile_get_unique_name (profile);
- if (btf_cm && strcmp (unique_name, "msn-haze") == 0) {
- continue;
- }
-
- if (g_list_find_custom (seen, unique_name, (GCompareFunc) strcmp)) {
- continue;
- }
- seen = g_list_append (seen, (char *) unique_name);
-
- gtk_list_store_insert_with_values (store, &iter, 0,
- COL_ICON, mc_profile_get_icon_name (profile),
- COL_LABEL, mc_profile_get_display_name (profile),
- COL_PROFILE, profile,
- -1);
- iter_set = TRUE;
- }
-
- g_list_free (seen);
-
- if (btf_cm) {
- g_object_unref (btf_cm);
- }
-
- /* Set the profile sort function */
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
- COL_PROFILE,
- profile_chooser_sort_func,
- NULL, NULL);
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
- COL_PROFILE,
- GTK_SORT_ASCENDING);
-
- if (iter_set) {
- gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_box), &iter);
- }
-
- mc_profiles_free_list (profiles);
- g_object_unref (store);
-
- return combo_box;
+ return GTK_WIDGET (g_object_new (EMPATHY_TYPE_PROFILE_CHOOSER, NULL));
}
-
diff --git a/libempathy-gtk/empathy-profile-chooser.h b/libempathy-gtk/empathy-profile-chooser.h
index 74c761cc4..37d7241a9 100644
--- a/libempathy-gtk/empathy-profile-chooser.h
+++ b/libempathy-gtk/empathy-profile-chooser.h
@@ -1,6 +1,6 @@
-/* -*- 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-2008 Collabora Ltd.
+ * Copyright (C) 2007-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
@@ -17,18 +17,53 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* Authors: Xavier Claessens <xclaesse@gmail.com>
+ * Jonny Lamb <jonny.lamb@collabora.co.uk
*/
-#ifndef __EMPATHY_PROTOCOL_CHOOSER_H__
-#define __EMPATHY_PROTOCOL_CHOOSER_H__
+#ifndef __EMPATHY_PROFILE_CHOOSER_H__
+#define __EMPATHY_PROFILE_CHOOSER_H__
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
#include <libmissioncontrol/mc-profile.h>
G_BEGIN_DECLS
-GtkWidget * empathy_profile_chooser_new (void);
-McProfile * empathy_profile_chooser_dup_selected (GtkWidget *widget);
-gint empathy_profile_chooser_n_profiles (GtkWidget *widget);
+#define EMPATHY_TYPE_PROFILE_CHOOSER (empathy_profile_chooser_get_type ())
+#define EMPATHY_PROFILE_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \
+ EMPATHY_TYPE_PROFILE_CHOOSER, EmpathyProfileChooser))
+#define EMPATHY_PROFILE_CHOOSER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), \
+ EMPATHY_TYPE_PROFILE_CHOOSER, EmpathyProfileChooserClass))
+#define EMPATHY_IS_PROFILE_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), \
+ EMPATHY_TYPE_PROFILE_CHOOSER))
+#define EMPATHY_IS_PROFILE_CHOOSER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), \
+ EMPATHY_TYPE_PROFILE_CHOOSER))
+#define EMPATHY_PROFILE_CHOOSER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \
+ EMPATHY_TYPE_PROFILE_CHOOSER, EmpathyProfileChooserClass))
+
+typedef struct _EmpathyProfileChooser EmpathyProfileChooser;
+typedef struct _EmpathyProfileChooserClass EmpathyProfileChooserClass;
+
+struct _EmpathyProfileChooser
+{
+ GtkComboBox parent;
+
+ /*<private>*/
+ gpointer priv;
+};
+
+struct _EmpathyProfileChooserClass
+{
+ GtkComboBoxClass parent_class;
+};
+
+GType empathy_profile_chooser_get_type (void) G_GNUC_CONST;
+GtkWidget * empathy_profile_chooser_new (void);
+McProfile * empathy_profile_chooser_dup_selected (
+ EmpathyProfileChooser *profile_chooser);
+gint empathy_profile_chooser_n_profiles (
+ EmpathyProfileChooser *profile_chooser);
G_END_DECLS
-#endif /* __EMPATHY_PROTOCOL_CHOOSER_H__ */
+#endif /* __EMPATHY_PROFILE_CHOOSER_H__ */
diff --git a/libempathy-gtk/empathy-smiley-manager.c b/libempathy-gtk/empathy-smiley-manager.c
index a729a2929..c504d4cdb 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));
@@ -320,7 +321,9 @@ empathy_smiley_manager_parse (EmpathySmileyManager *manager,
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-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c
new file mode 100644
index 000000000..1f0c043aa
--- /dev/null
+++ b/libempathy-gtk/empathy-theme-adium.c
@@ -0,0 +1,831 @@
+/* -*- 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 <libempathy/empathy-time.h>
+#include <libempathy/empathy-utils.h>
+
+#include "empathy-theme-adium.h"
+#include "empathy-smiley-manager.h"
+#include "empathy-conf.h"
+#include "empathy-ui-utils.h"
+
+#define DEBUG_FLAG EMPATHY_DEBUG_CHAT
+#include <libempathy/empathy-debug.h>
+
+#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyThemeAdium)
+
+typedef struct {
+ EmpathySmileyManager *smiley_manager;
+ EmpathyContact *last_contact;
+ gboolean page_loaded;
+ GList *message_queue;
+ gchar *path;
+ gchar *default_avatar_filename;
+ gchar *template_html;
+ gchar *basedir;
+ 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;
+} EmpathyThemeAdiumPriv;
+
+static void theme_adium_iface_init (EmpathyChatViewIface *iface);
+
+enum {
+ PROP_0,
+ PROP_PATH,
+};
+
+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 void
+theme_adium_load (EmpathyThemeAdium *theme)
+{
+ EmpathyThemeAdiumPriv *priv = GET_PRIV (theme);
+ gchar *file;
+ gchar *template_html = NULL;
+ gsize template_len;
+ GString *string;
+ gchar **strv = NULL;
+ gchar *css_path;
+ guint len = 0;
+ guint i = 0;
+ gchar *basedir_uri;
+
+ priv->basedir = g_strconcat (priv->path, G_DIR_SEPARATOR_S "Contents" G_DIR_SEPARATOR_S "Resources" G_DIR_SEPARATOR_S, NULL);
+ basedir_uri = g_strconcat ("file://", priv->basedir, NULL);
+
+ /* Load html files */
+ file = g_build_filename (priv->basedir, "Incoming", "Content.html", NULL);
+ g_file_get_contents (file, &priv->in_content_html, &priv->in_content_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (priv->basedir, "Incoming", "NextContent.html", NULL);
+ g_file_get_contents (file, &priv->in_nextcontent_html, &priv->in_nextcontent_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (priv->basedir, "Outgoing", "Content.html", NULL);
+ g_file_get_contents (file, &priv->out_content_html, &priv->out_content_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (priv->basedir, "Outgoing", "NextContent.html", NULL);
+ g_file_get_contents (file, &priv->out_nextcontent_html, &priv->out_nextcontent_len, NULL);
+ g_free (file);
+
+ file = g_build_filename (priv->basedir, "Status.html", NULL);
+ g_file_get_contents (file, &priv->status_html, &priv->status_len, NULL);
+ g_free (file);
+
+ css_path = g_build_filename (priv->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 (priv->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, priv->basedir);
+ g_string_append (string, strv[i++]);
+ if (len == 6) {
+ /* We include main.css by default */
+ g_string_append_printf (string, "@import url(\"%s\");", css_path);
+ g_string_append (string, strv[i++]);
+ /* FIXME: We should set the variant css here */
+ g_string_append (string, "");
+ } 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++]);
+ g_string_append (string, ""); /* FIXME: We don't support footer yet */
+ g_string_append (string, strv[i++]);
+ priv->template_html = g_string_free (string, FALSE);
+
+ /* Load the template */
+ webkit_web_view_load_html_string (WEBKIT_WEB_VIEW (theme),
+ priv->template_html, basedir_uri);
+
+ g_free (basedir_uri);
+ g_free (template_html);
+ g_free (css_path);
+ g_strfreev (strv);
+}
+
+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,
+ 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, "%userIconPath%")) {
+ replace = avatar_filename;
+ } else if (theme_adium_match (&cur, "%sender%")) {
+ replace = name;
+ } 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;
+ gchar *dup_body = NULL;
+ const gchar *body;
+ const gchar *name;
+ EmpathyAvatar *avatar;
+ const gchar *avatar_filename = NULL;
+ time_t timestamp;
+ gchar *html = NULL;
+ gsize len = 0;
+ const gchar *func;
+
+ 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);
+ 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);
+
+ /* 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 (!priv->default_avatar_filename) {
+ priv->default_avatar_filename =
+ empathy_filename_from_icon_name ("stock_person",
+ GTK_ICON_SIZE_DIALOG);
+ }
+ avatar_filename = priv->default_avatar_filename;
+ }
+
+ /* Get the right html/func to add the message */
+ if (priv->last_contact == sender) {
+ func = "appendNextMessage";
+ if (empathy_contact_is_user (sender)) {
+ html = priv->out_nextcontent_html;
+ len = priv->out_nextcontent_len;
+ }
+ if (!html) {
+ html = priv->in_nextcontent_html;
+ len = priv->in_nextcontent_len;
+ }
+ }
+ if (!html) {
+ func = "appendMessage";
+ if (empathy_contact_is_user (sender)) {
+ html = priv->out_content_html;
+ len = priv->out_content_len;
+ }
+ if (!html) {
+ html = priv->in_content_html;
+ len = priv->in_content_len;
+ }
+ }
+
+ theme_adium_append_html (theme, func, html, len, body, avatar_filename,
+ name, 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);
+
+ 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->status_html) {
+ theme_adium_append_html (theme, "appendMessage",
+ priv->status_html, priv->status_len,
+ str, NULL, NULL,
+ 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->basedir, NULL);
+ webkit_web_view_load_html_string (WEBKIT_WEB_VIEW (view),
+ priv->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);
+
+ g_free (priv->basedir);
+ g_free (priv->template_html);
+ g_free (priv->in_content_html);
+ g_free (priv->in_nextcontent_html);
+ g_free (priv->out_content_html);
+ g_free (priv->out_nextcontent_html);
+ g_free (priv->default_avatar_filename);
+ g_free (priv->path);
+
+ 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)
+{
+ theme_adium_load (EMPATHY_THEME_ADIUM (object));
+}
+
+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_PATH:
+ g_value_set_string (value, priv->path);
+ 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_PATH:
+ g_free (priv->path);
+ priv->path = g_value_dup_string (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_PATH,
+ g_param_spec_string ("path",
+ "The theme path",
+ "Path to the adium theme",
+ g_get_home_dir (),
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_READWRITE));
+
+
+ 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 (const gchar *path)
+{
+ g_return_val_if_fail (empathy_theme_adium_is_valid (path), NULL);
+
+ return g_object_new (EMPATHY_TYPE_THEME_ADIUM,
+ "path", path,
+ NULL);
+}
+
+gboolean
+empathy_theme_adium_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;
+}
+
diff --git a/libempathy-gtk/empathy-theme-adium.h b/libempathy-gtk/empathy-theme-adium.h
new file mode 100644
index 000000000..b62675680
--- /dev/null
+++ b/libempathy-gtk/empathy-theme-adium.h
@@ -0,0 +1,56 @@
+/* -*- 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;
+
+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 (const gchar *path);
+gboolean empathy_theme_adium_is_valid (const gchar *path);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_THEME_ADIUM_H__ */
diff --git a/libempathy-gtk/empathy-theme-manager.c b/libempathy-gtk/empathy-theme-manager.c
index 0186b5eb7..c6da8ea68 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
};
@@ -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,
@@ -318,6 +327,17 @@ empathy_theme_manager_create_view (EmpathyThemeManager *manager)
DEBUG ("Using theme %s", priv->name);
+#ifdef HAVE_WEBKIT
+ if (strcmp (priv->name, "adium") == 0) {
+ if (empathy_theme_adium_is_valid (priv->adium_path)) {
+ return EMPATHY_CHAT_VIEW (empathy_theme_adium_new (priv->adium_path));
+ } 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));
}
@@ -404,6 +424,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 +452,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,6 +503,16 @@ empathy_theme_manager_init (EmpathyThemeManager *manager)
EMPATHY_PREFS_CHAT_THEME,
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);
+
/* Track GTK color changes */
priv->settings = gtk_settings_get_default ();
g_signal_connect_swapped (priv->settings, "notify::color-hash",
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..cf423de41 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -558,6 +558,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.
*/
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index 4d58fedcf..60d48f3c4 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -90,12 +90,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,
diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am
index 3540c88bf..a07e863c1 100644
--- a/libempathy/Makefile.am
+++ b/libempathy/Makefile.am
@@ -53,7 +53,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
@@ -103,7 +102,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..90df179bc 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
@@ -577,3 +577,22 @@ 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;
+} \ No newline at end of file
diff --git a/libempathy/empathy-call-handler.h b/libempathy/empathy-call-handler.h
index 9a039f06a..112a3139a 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,7 @@ 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);
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-contact.c b/libempathy/empathy-contact.c
index 03ce8d28a..8e07fb9f6 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;
diff --git a/libempathy/empathy-contact.h b/libempathy/empathy-contact.h
index ff8d426e2..f4418768e 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);
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-tp-contact-list.c b/libempathy/empathy-tp-contact-list.c
index 116b8cf71..58cb89cbe 100644
--- a/libempathy/empathy-tp-contact-list.c
+++ b/libempathy/empathy-tp-contact-list.c
@@ -70,11 +70,8 @@ G_DEFINE_TYPE_WITH_CODE (EmpathyTpContactList, empathy_tp_contact_list, G_TYPE_O
tp_contact_list_iface_init));
static void
-tp_contact_list_group_invalidated_cb (TpChannel *channel,
- guint domain,
- gint code,
- gchar *message,
- EmpathyTpContactList *list)
+tp_contact_list_forget_group (EmpathyTpContactList *list,
+ TpChannel *channel)
{
EmpathyTpContactListPriv *priv = GET_PRIV (list);
const TpIntSet *members;
@@ -82,7 +79,6 @@ tp_contact_list_group_invalidated_cb (TpChannel *channel,
const gchar *group_name;
group_name = tp_channel_get_identifier (channel);
- DEBUG ("Group %s invalidated. Message: %s", group_name, message);
/* Signal that all members are not in that group anymore */
members = tp_channel_group_get_members (channel);
@@ -103,6 +99,22 @@ tp_contact_list_group_invalidated_cb (TpChannel *channel,
group_name,
FALSE);
}
+}
+
+static void
+tp_contact_list_group_invalidated_cb (TpChannel *channel,
+ guint domain,
+ gint code,
+ gchar *message,
+ EmpathyTpContactList *list)
+{
+ EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ const gchar *group_name;
+
+ group_name = tp_channel_get_identifier (channel);
+ DEBUG ("Group %s invalidated. Message: %s", group_name, message);
+
+ tp_contact_list_forget_group (list, channel);
g_hash_table_remove (priv->groups, group_name);
}
@@ -113,6 +125,7 @@ tp_contact_list_group_ready_cb (TpChannel *channel,
gpointer list)
{
EmpathyTpContactListPriv *priv = GET_PRIV (list);
+ TpChannel *old_group;
const gchar *group_name;
if (error) {
@@ -120,8 +133,25 @@ tp_contact_list_group_ready_cb (TpChannel *channel,
g_object_unref (channel);
return;
}
-
+
group_name = tp_channel_get_identifier (channel);
+
+ /* If there's already a group with this name in the table, we can't
+ * just let it be replaced. Replacing it causes it to be unreffed,
+ * which causes it to be invalidated (see
+ * <https://bugs.freedesktop.org/show_bug.cgi?id=22119>), which causes
+ * it to be removed from the hash table again, which causes it to be
+ * unreffed again.
+ */
+ old_group = g_hash_table_lookup (priv->groups, group_name);
+
+ if (old_group != NULL) {
+ DEBUG ("Discarding old group %s (%p)", group_name, old_group);
+ g_hash_table_steal (priv->groups, group_name);
+ tp_contact_list_forget_group (list, old_group);
+ g_object_unref (old_group);
+ }
+
g_hash_table_insert (priv->groups, (gpointer) group_name, channel);
DEBUG ("Group %s added", group_name);
diff --git a/libempathy/empathy-tp-file.c b/libempathy/empathy-tp-file.c
index 76882022a..e60b2999d 100644
--- a/libempathy/empathy-tp-file.c
+++ b/libempathy/empathy-tp-file.c
@@ -505,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;
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/po/es.po b/po/es.po
index b430d5b9e..972ffe251 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-11 11:12+0000\n"
+"PO-Revision-Date: 2009-06-11 14:30+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"
@@ -411,7 +411,7 @@ 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-tp-contact-list.c:757 ../src/empathy.c:286
msgid "People nearby"
msgstr "Gente cerca"
@@ -796,7 +796,7 @@ msgstr "%s ha entrado en la sala"
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:1289 ../src/empathy-call-window.c:1108
msgid "Disconnected"
msgstr "Desconectado"
@@ -1583,21 +1583,21 @@ msgstr "Un cliente de mensajería instantánea para GNOME"
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:4
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 +1606,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"
@@ -1620,8 +1620,9 @@ msgstr ""
"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>"
+#| msgid "<b>New Account</b>"
+msgid "<b>Add Account</b>"
+msgstr "<b>Añadir cuenta</b>"
#: ../src/empathy-accounts-dialog.ui.h:2
msgid "<b>No protocol installed</b>"
@@ -1636,14 +1637,10 @@ 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:7
msgid "Import Accounts..."
msgstr "Importar cuentas…"
-#: ../src/empathy-accounts-dialog.ui.h:8
+#: ../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."
@@ -1651,61 +1648,71 @@ msgstr ""
"Para añadir una nueva cuenta debe instalar primero un «backend» para cada "
"protocolo que quiera usar."
-#: ../src/empathy-accounts-dialog.ui.h:9
+#: ../src/empathy-accounts-dialog.ui.h:8
msgid "Type:"
msgstr "Tipo:"
-#: ../src/empathy-accounts-dialog.ui.h:10
+#: ../src/empathy-accounts-dialog.ui.h:9
msgid "_Add..."
msgstr "_Añadir…"
-#: ../src/empathy-call-window.c:382
+#: ../src/empathy-accounts-dialog.ui.h:10
+#| msgid "Create a new IRC network"
+msgid "_Create a new account"
+msgstr "_Crear una cuenta nueva"
+
+#: ../src/empathy-accounts-dialog.ui.h:11
+#| msgid "Show and edit accounts"
+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:405
msgid "Contrast"
msgstr "Contraste"
-#: ../src/empathy-call-window.c:385
+#: ../src/empathy-call-window.c:408
msgid "Brightness"
msgstr "Brillo"
-#: ../src/empathy-call-window.c:388
+#: ../src/empathy-call-window.c:411
msgid "Gamma"
msgstr "Gamma"
-#: ../src/empathy-call-window.c:492
+#: ../src/empathy-call-window.c:516
msgid "Volume"
msgstr "Volumen"
-#: ../src/empathy-call-window.c:638
+#: ../src/empathy-call-window.c:697
msgid "_Sidebar"
msgstr "Barra _lateral"
-#: ../src/empathy-call-window.c:657
+#: ../src/empathy-call-window.c:716
msgid "Dialpad"
msgstr "Teclado de llamada"
-#: ../src/empathy-call-window.c:663
+#: ../src/empathy-call-window.c:722
msgid "Audio input"
msgstr "Entrada de sonido"
-#: ../src/empathy-call-window.c:667
+#: ../src/empathy-call-window.c:726
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:789
#, c-format
msgid "Call with %s"
msgstr "Llamar con %s"
-#: ../src/empathy-call-window.c:801
+#: ../src/empathy-call-window.c:860
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:1204
#, c-format
msgid "Connected — %d:%02dm"
msgstr "Conectado — %d:%02dm"
@@ -1715,22 +1722,26 @@ 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"
@@ -1739,15 +1750,15 @@ msgstr "_Ver"
msgid "Conversations (%d)"
msgstr "Conversaciones (%d)"
-#: ../src/empathy-chat-window.c:449
+#: ../src/empathy-chat-window.c:470
msgid "Topic:"
msgstr "Tema:"
-#: ../src/empathy-chat-window.c:454
+#: ../src/empathy-chat-window.c:474
msgid "Typing a message."
msgstr "Tecleando un mensaje."
-#: ../src/empathy-chat-window.c:917 ../src/empathy-event-manager.c:429
+#: ../src/empathy-chat-window.c:935 ../src/empathy-event-manager.c:429
#, c-format
msgid "New message from %s"
msgstr "Nuevo mensaje de %s"
@@ -2411,23 +2422,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 +2446,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 +2463,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 +2478,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 +2486,9 @@ msgstr ""
"El gestor de conexiones seleccionado no soporta la extensión de depuración "
"remota."
+#~ 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 +2565,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/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 291e154d8..cf85c7853 100644
--- a/python/pyempathygtk/pyempathygtk.defs
+++ b/python/pyempathygtk/pyempathygtk.defs
@@ -118,6 +118,13 @@
(gtype-id "EMPATHY_TYPE_PRESENCE_CHOOSER")
)
+(define-object ProfileChooser
+ (in-module "Empathy")
+ (parent "GtkComboBox")
+ (c-name "EmpathyProfileChooser")
+ (gtype-id "EMPATHY_TYPE_PROFILE_CHOOSER")
+)
+
(define-object SmileyManager
(in-module "Empathy")
(parent "GObject")
@@ -1557,26 +1564,27 @@
;; From empathy-profile-chooser.h
+(define-function profile_chooser_get_type
+ (c-name "empathy_profile_chooser_get_type")
+ (return-type "GType")
+)
+
(define-function profile_chooser_new
(c-name "empathy_profile_chooser_new")
(is-constructor-of "EmpathyProfileChooser")
(return-type "GtkWidget*")
)
-(define-function profile_chooser_dup_selected
+(define-method dup_selected
+ (of-object "EmpathyProfileChooser")
(c-name "empathy_profile_chooser_dup_selected")
(return-type "McProfile*")
- (parameters
- '("GtkWidget*" "widget")
- )
)
-(define-function profile_chooser_n_profiles
+(define-method n_profiles
+ (of-object "EmpathyProfileChooser")
(c-name "empathy_profile_chooser_n_profiles")
(return-type "gint")
- (parameters
- '("GtkWidget*" "widget")
- )
)
@@ -1610,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")
@@ -1896,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..13fa386b2 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 "#%s"' \
+ ' | tac | grep ^Author: | head -1' \
+ % (self.last_tag, 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..dbcd6d43d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -6,7 +6,8 @@ AM_CPPFLAGS = \
$(EMPATHY_CFLAGS) \
$(LIBNOTIFY_CFLAGS) \
$(LIBCHAMPLAIN_CFLAGS) \
- $(DISABLE_DEPRECATED)
+ $(DISABLE_DEPRECATED) \
+ $(WEBKIT_CFLAGS) \
$(WARN_CFLAGS)
LDADD = \
@@ -15,7 +16,8 @@ LDADD = \
$(top_builddir)/extensions/libemp-extensions.la \
$(LIBNOTIFY_LIBS) \
$(EMPATHY_LIBS) \
- $(LIBCHAMPLAIN_LIBS)
+ $(LIBCHAMPLAIN_LIBS) \
+ $(WEBKIT_LIBS)
bin_PROGRAMS = \
empathy \
@@ -75,12 +77,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-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 +116,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-accounts-dialog.c b/src/empathy-accounts-dialog.c
index e311ac637..1dcde458f 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;
@@ -183,7 +184,8 @@ accounts_dialog_update_account (EmpathyAccountsDialog *dialog,
accounts_dialog_model_select_first (dialog);
return;
}
- if (empathy_profile_chooser_n_profiles (dialog->combobox_profile) > 0) {
+ if (empathy_profile_chooser_n_profiles (
+ EMPATHY_PROFILE_CHOOSER (dialog->combobox_profile)) > 0) {
/* We have no account configured but we have some
* profiles instsalled. The user obviously wants to add
* an account. Click on the Add button for him. */
@@ -819,7 +821,8 @@ accounts_dialog_button_create_clicked_cb (GtkWidget *button,
gchar *str;
McProfileCapabilityFlags cap;
- profile = empathy_profile_chooser_dup_selected (dialog->combobox_profile);
+ profile = empathy_profile_chooser_dup_selected (
+ EMPATHY_PROFILE_CHOOSER (dialog->combobox_profile));
/* Create account */
account = mc_account_create (profile);
@@ -840,8 +843,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);
}
}
@@ -870,13 +873,16 @@ accounts_dialog_profile_changed_cb (GtkWidget *widget,
McProfile *profile;
McProfileCapabilityFlags cap;
- profile = empathy_profile_chooser_dup_selected (dialog->combobox_profile);
+ profile = empathy_profile_chooser_dup_selected (
+ EMPATHY_PROFILE_CHOOSER (dialog->combobox_profile));
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);
}
@@ -907,8 +913,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);
@@ -1068,7 +1074,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.ui b/src/empathy-accounts-dialog.ui
index 49862d853..e19bcf7fe 100644
--- a/src/empathy-accounts-dialog.ui
+++ b/src/empathy-accounts-dialog.ui
@@ -255,14 +255,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 +297,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 +357,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,7 +375,7 @@
<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="label" translatable="yes">&lt;b&gt;Add Account&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
</child>
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index 08c0e7ea2..0ce80c97c 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>
@@ -59,6 +60,8 @@
#define REMOTE_CONTACT_AVATAR_DEFAULT_WIDTH EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT
#define REMOTE_CONTACT_AVATAR_DEFAULT_HEIGHT EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT
+#define CONNECTING_STATUS_TEXT _("Connecting...")
+
G_DEFINE_TYPE(EmpathyCallWindow, empathy_call_window, GTK_TYPE_WINDOW)
/* signal enum */
@@ -95,24 +98,35 @@ struct _EmpathyCallWindowPriv
GtkWidget *sidebar_button;
GtkWidget *statusbar;
GtkWidget *volume_button;
+ GtkWidget *redial_button;
GtkWidget *mic_button;
GtkWidget *camera_button;
GtkWidget *toolbar;
GtkWidget *pane;
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;
@@ -147,6 +161,10 @@ struct _EmpathyCallWindowPriv
gboolean sidebar_was_visible_before_fs;
gint original_width_before_fs;
gint original_height_before_fs;
+
+ /* Used to indicate if we are currently redialing. If we are, as soon as the
+ channel is closed, the call is automatically re-initiated.*/
+ gboolean redialing;
};
#define GET_PRIV(o) \
@@ -203,6 +221,11 @@ 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);
@@ -467,19 +490,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 +526,97 @@ 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*/
+ 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_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);
+
+ 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);
+
+ 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);
+}
- gtk_box_pack_start (GTK_BOX (hbox), progress, FALSE, FALSE, 3);
+static void
+empathy_call_window_setup_video_preview (EmpathyCallWindow *window)
+{
+ EmpathyCallWindowPriv *priv = GET_PRIV (window);
- return hbox;
+ GstElement *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);
}
static void
@@ -524,8 +628,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 +636,12 @@ 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,
"ui_manager", &priv->ui_manager,
"menufullscreen", &priv->menu_fullscreen,
NULL);
@@ -545,6 +649,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 +664,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_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);
- 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);
-
- 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,7 +747,7 @@ 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..."));
+ empathy_call_window_status_message (self, CONNECTING_STATUS_TEXT);
priv->timer = g_timer_new ();
@@ -996,26 +1055,69 @@ 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)
+ {
+ priv->liveadder = NULL;
+ priv->funnel = NULL;
+ g_object_unref (priv->pipeline);
+ priv->pipeline = 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 (could_reset_pipeline)
+ {
+ g_mutex_lock (priv->lock);
- g_timer_stop (priv->timer);
+ g_timer_stop (priv->timer);
- if (priv->timer_id != 0)
- g_source_remove (priv->timer_id);
- priv->timer_id = 0;
+ if (priv->timer_id != 0)
+ g_source_remove (priv->timer_id);
+ priv->timer_id = 0;
- g_mutex_unlock (priv->lock);
+ g_mutex_unlock (priv->lock);
- empathy_call_window_status_message (self, _("Disconnected"));
+ empathy_call_window_status_message (self, _("Disconnected"));
+
+ gtk_action_set_sensitive (priv->redial, TRUE);
+ gtk_widget_set_sensitive (priv->redial_button, TRUE);
+ gtk_widget_set_sensitive (priv->camera_button, FALSE);
+ gtk_action_set_sensitive (priv->send_video, FALSE);
+ priv->sending_video = FALSE;
+ priv->connected = FALSE;
+ priv->call_started = FALSE;
+
+ could_disconnect = TRUE;
+ }
- gtk_widget_set_sensitive (priv->camera_button, FALSE);
- gtk_action_set_sensitive (priv->send_video, FALSE);
- priv->sending_video = FALSE;
+ return could_disconnect;
}
@@ -1023,8 +1125,13 @@ 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->redialing)
+ {
+ empathy_call_window_restart_call (self);
+ priv->redialing = FALSE;
+ }
}
/* Called with global lock held */
@@ -1119,6 +1226,9 @@ empathy_call_window_connected (gpointer user_data)
gtk_action_set_sensitive (priv->send_video, TRUE);
}
+ gtk_action_set_sensitive (priv->redial, FALSE);
+ gtk_widget_set_sensitive (priv->redial_button, FALSE);
+
g_object_unref (call);
g_mutex_lock (priv->lock);
@@ -1320,7 +1430,6 @@ empathy_call_window_bus_message (GstBus *bus, GstMessage *message,
}
else
{
- gst_element_set_state (priv->pipeline, GST_STATE_NULL);
empathy_call_window_disconnected (self);
}
g_error_free (error);
@@ -1337,7 +1446,6 @@ 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,14 +1458,7 @@ 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);
+ empathy_call_window_setup_video_preview (window);
gst_element_set_state (priv->pipeline, GST_STATE_PAUSED);
}
@@ -1613,10 +1714,53 @@ 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);
- gst_element_set_state (priv->pipeline, GST_STATE_NULL);
- gtk_widget_destroy (GTK_WIDGET (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);
+ empathy_call_window_setup_video_preview (window);
+
+ g_object_unref (bus);
+
+ gtk_widget_show_all (priv->content_hbox);
+
+ empathy_call_window_status_message (window, CONNECTING_STATUS_TEXT);
+ priv->call_started = TRUE;
+ empathy_call_handler_start_call (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);
+
+ if (priv->connected)
+ priv->redialing = TRUE;
+
+ empathy_call_handler_stop_call (priv->handler);
+
+ if (!priv->connected)
+ empathy_call_window_restart_call (window);
}
static void
@@ -1678,7 +1822,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..3e67c7670 100644
--- a/src/empathy-call-window.ui
+++ b/src/empathy-call-window.ui
@@ -25,6 +25,14 @@
</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>
@@ -50,6 +58,7 @@
<menu action="call">
<menuitem action="send_video"/>
<menuitem action="menuhangup"/>
+ <menuitem action="menuredial"/>
</menu>
<menu action="view">
<menuitem action="show_preview"/>
@@ -86,6 +95,18 @@
</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>
+ </packing>
+ </child>
+ <child>
<object class="GtkSeparatorToolItem" id="toolbutton1">
<property name="visible">True</property>
</object>
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index bf02c3cc6..9c2dbc490 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -382,14 +382,33 @@ chat_window_update (EmpathyChatWindow *window)
}
static void
+append_markup_printf (GString *string,
+ const char *format,
+ ...)
+{
+ gchar *tmp;
+ va_list args;
+
+ va_start (args, format);
+
+ tmp = g_markup_vprintf_escaped (format, args);
+ g_string_append (string, tmp);
+ g_free (tmp);
+
+ va_end (args);
+}
+
+static void
chat_window_update_chat_tab (EmpathyChat *chat)
{
EmpathyChatWindow *window;
EmpathyChatWindowPriv *priv;
EmpathyContact *remote_contact;
const gchar *name;
+ const gchar *id;
McAccount *account;
const gchar *subject;
+ const gchar *status = NULL;
GtkWidget *widget;
GString *tooltip;
gchar *markup;
@@ -431,29 +450,28 @@ chat_window_update_chat_tab (EmpathyChat *chat)
tooltip = g_string_new (NULL);
if (remote_contact) {
- markup = g_markup_printf_escaped ("<b>%s</b><small> (%s)</small>\n%s",
- empathy_contact_get_id (remote_contact),
- mc_account_get_display_name (account),
- empathy_contact_get_status (remote_contact));
- g_string_append (tooltip, markup);
- g_free (markup);
+ id = empathy_contact_get_id (remote_contact);
+ status = empathy_contact_get_presence_message (remote_contact);
+ } else {
+ id = name;
}
- else {
- markup = g_markup_printf_escaped ("<b>%s</b><small> (%s)</small>", name,
- mc_account_get_display_name (account));
- g_string_append (tooltip, markup);
- g_free (markup);
+
+ append_markup_printf (tooltip,
+ "<b>%s</b><small> (%s)</small>",
+ id,
+ mc_account_get_display_name (account));
+
+ if (!EMP_STR_EMPTY (status)) {
+ append_markup_printf (tooltip, "\n<i>%s</i>", status);
}
if (subject) {
- markup = g_markup_printf_escaped ("\n<b>%s</b> %s", _("Topic:"), subject);
- g_string_append (tooltip, markup);
- g_free (markup);
+ append_markup_printf (tooltip, "\n<b>%s</b> %s",
+ _("Topic:"), subject);
}
+
if (g_list_find (priv->chats_composing, chat)) {
- markup = g_markup_printf_escaped ("\n%s", _("Typing a message."));
- g_string_append (tooltip, markup);
- g_free (markup);
+ append_markup_printf (tooltip, "\n%s", _("Typing a message."));
}
markup = g_string_free (tooltip, FALSE);
diff --git a/src/empathy-map-view.c b/src/empathy-map-view.c
index b8a32885c..05f5291d2 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,6 +51,7 @@ typedef struct {
GtkWidget *window;
GtkWidget *zoom_in;
GtkWidget *zoom_out;
+ GtkWidget *throbber;
ChamplainView *map_view;
ChamplainLayer *layer;
} EmpathyMapView;
@@ -68,6 +70,20 @@ static void map_view_contact_location_notify (GObject *gobject,
GParamSpec *arg1,
gpointer user_data);
+static void
+map_view_state_changed (ChamplainView *view,
+ GParamSpec *gobject,
+ EmpathyMapView *window)
+{
+ ChamplainState state;
+
+ 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));
+}
+
GtkWidget *
empathy_map_view_show (void)
{
@@ -75,6 +91,7 @@ empathy_map_view_show (void)
GtkBuilder *gui;
GtkWidget *sw;
GtkWidget *embed;
+ GtkWidget *throbber_holder;
gchar *filename;
GtkTreeModel *model;
EmpathyContactList *list_iface;
@@ -95,6 +112,7 @@ empathy_map_view_show (void)
"zoom_in", &window->zoom_in,
"zoom_out", &window->zoom_out,
"map_scrolledwindow", &sw,
+ "throbber", &throbber_holder,
NULL);
g_free (filename);
@@ -115,6 +133,12 @@ empathy_map_view_show (void)
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 */
@@ -131,6 +155,9 @@ empathy_map_view_show (void)
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);
@@ -145,7 +172,7 @@ map_view_destroy_cb (GtkWidget *widget,
{
GList *item;
- item = clutter_container_get_children (window->layer);
+ item = clutter_container_get_children (CLUTTER_CONTAINER (window->layer));
while (item != NULL)
{
EmpathyContact *contact;
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-preferences.c b/src/empathy-preferences.c
index 406db4c9f..4c88db675 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 {
@@ -49,6 +53,9 @@ typedef struct {
GtkWidget *checkbutton_compact_contact_list;
GtkWidget *checkbutton_show_smileys;
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;
@@ -89,19 +96,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 +115,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 +122,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,
@@ -241,10 +237,6 @@ 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_radio_button (preferences,
EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
preferences->radiobutton_contact_list_sort_by_name);
@@ -639,43 +631,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;
@@ -721,48 +676,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 +683,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,
@@ -955,32 +861,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)
@@ -1054,29 +934,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_theme_adium_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)
@@ -1124,6 +1191,9 @@ empathy_preferences_show (GtkWindow *parent)
"checkbutton_compact_contact_list", &preferences->checkbutton_compact_contact_list,
"checkbutton_show_smileys", &preferences->checkbutton_show_smileys,
"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,
diff --git a/src/empathy-preferences.ui b/src/empathy-preferences.ui
index d92fc8f88..eaec717ea 100644
--- a/src/empathy-preferences.ui
+++ b/src/empathy-preferences.ui
@@ -792,6 +792,49 @@
<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="label1">
+ <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>
+ <property name="title" translatable="yes">Sélectionner un dossier</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">&lt;span foreground="red"&gt;Not a valid adium theme&lt;/span&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
</object>
</child>
</object>
diff --git a/tests/.gitignore b/tests/.gitignore
index a37f3e5a0..eac793465 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -6,3 +6,4 @@ contact-run-until-ready-2
empetit
test-empathy-presence-chooser
test-empathy-status-preset-dialog
+test-empathy-profile-chooser
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7740d1f8b..f96650e79 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -26,12 +26,14 @@ noinst_PROGRAMS = \
contact-manager \
empetit \
test-empathy-presence-chooser \
- test-empathy-status-preset-dialog
+ test-empathy-status-preset-dialog \
+ test-empathy-profile-chooser
contact_manager_SOURCES = contact-manager.c
empetit_SOURCES = empetit.c
test_empathy_presence_chooser_SOURCES = test-empathy-presence-chooser.c
test_empathy_status_preset_dialog_SOURCES = test-empathy-status-preset-dialog.c
+test_empathy_profile_chooser_SOURCES = test-empathy-profile-chooser.c
check_PROGRAMS = check-main
TESTS = check-main
diff --git a/tests/test-empathy-profile-chooser.c b/tests/test-empathy-profile-chooser.c
new file mode 100644
index 000000000..9078bbde4
--- /dev/null
+++ b/tests/test-empathy-profile-chooser.c
@@ -0,0 +1,31 @@
+#include <config.h>
+
+#include <gtk/gtk.h>
+
+#include <libempathy-gtk/empathy-ui-utils.h>
+#include <libempathy-gtk/empathy-profile-chooser.h>
+
+int
+main (int argc,
+ char **argv)
+{
+ GtkWidget *window;
+ GtkWidget *chooser;
+
+ gtk_init (&argc, &argv);
+ empathy_gtk_init ();
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ chooser = empathy_profile_chooser_new ();
+ gtk_container_add (GTK_CONTAINER (window), chooser);
+
+ /* gtk_window_set_default_size (GTK_WINDOW (window), 150, -1);*/
+ gtk_widget_show_all (window);
+
+ g_signal_connect_swapped (window, "destroy",
+ G_CALLBACK (gtk_main_quit), NULL);
+
+ gtk_main ();
+
+ return 0;
+}