Merge branch 'log-window-webview'
authorDanielle Madeley <danielle.madeley@collabora.co.uk>
Thu, 18 Aug 2011 00:10:00 +0000 (10:10 +1000)
committerDanielle Madeley <danielle.madeley@collabora.co.uk>
Thu, 18 Aug 2011 00:10:00 +0000 (10:10 +1000)
1  2 
configure.ac
data/empathy-log-window.html
libempathy-gtk/Makefile.am
libempathy-gtk/empathy-log-window.c
libempathy/empathy-gsettings.h
src/Makefile.am
src/empathy-preferences.c

diff --cc configure.ac
@@@ -179,8 -174,7 +179,9 @@@ PKG_CHECK_MODULES(EMPATHY
     libcanberra-gtk3 >= $LIBCANBERRA_GTK_REQUIRED
     libnotify >= $LIBNOTIFY_REQUIRED
     gcr-3 >= $GCR_REQUIRED
 +   libpulse
 +   libpulse-mainloop-glib
+    webkitgtk-3.0 >= $WEBKIT_REQUIRED
  ])
  
  PKG_CHECK_MODULES(YELL, [telepathy-yell])
index 0000000,6962528..8815925
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,296 +1,296 @@@
 -  
+ <?xml version="1.0">
+ <html
+  xmlns="http://www.w3.org/TR/html4/"
+  xmlns:empathy="http://live.gnome.org/Empathy">
+   <head>
+     <style type="text/css">
+ html, body, div, p {
+   padding: 0;
+   margin: 1px;
+ }
+ body {
+   margin-left: -1em;
+ }
+ div.row {
+   margin-left: 1em;
+   clear: both;
+ }
+ div.row p {
+   display: inline;
+   white-space: pre-wrap;
+ }
+ span.open:after {
+   content: "\25BE";
+   margin-right: 2px;
+ }
+ span.closed:after {
+   content: "\25B8";
+   margin-right: 2px;
+ }
+ span.date {
+   float: right;
+   color: gray;
+ }
+ img.icon {
+   vertical-align: middle;
+   padding-right: 1px;
+ }
+     </style>
+     <script type="text/javascript">
+ var EMPATHY_NS='http://live.gnome.org/Empathy';
+ function filterNodes (node, tagName)
+ {
+   var out = new Array();
+   for (var i = 0; i < node.childNodes.length; i++)
+     {
+       var elem = node.childNodes[i];
+       if (elem.tagName == tagName)
+         out.push(elem);
+     }
+   return out;
+ }
+ function getNodes(node)
+ {
+   return filterNodes(node, 'DIV');
+ }
+ function getContent(node)
+ {
+   return filterNodes(node, 'P')[0];
+ }
+ function getToggle(node)
+ {
+   return filterNodes(node, 'SPAN')[0];
+ }
+ function setExpander(node, open)
+ {
+   var toggle = getToggle(node);
+   var display;
+   var nodes;
+   if (open)
+     {
+       toggle.setAttribute('class', 'open');
+       display = 'block';
+     }
+   else
+     {
+       toggle.setAttribute('class', 'closed');
+       display = 'none';
+     }
+   nodes = getNodes(node);
+   for (var i = 0; i < nodes.length; i++)
+     nodes[i].style.display = display;
+ }
+ function expandAll()
+ {
+   function expandAllRecurse(node)
+     {
+       var nodes = getNodes(node);
+       for (var i = 0; i < nodes.length; i++)
+         {
+           setExpander(nodes[i], true);
+           expandAllRecurse(nodes[i]);
+         }
+     }
+   var treeview = document.getElementById('treeview');
+   expandAllRecurse(treeview);
+ }
+ function setContent (contents, text, icon, date_)
+ {
+   contents.innerHTML = "";
+   if (icon != "")
+     {
+       contents.innerHTML += '<img class="icon" src="' + icon + '"/>';
+     }
+   contents.innerHTML += text;
+   contents.innerHTML += '<span class="date">' + date_ + '</span>';
+ }
+ function insertRow (path, text, icon, date_)
+ {
+   var treeview = document.getElementById('treeview');
+   var parentnode = treeview;
+   var i;
+   // walk the tree
+   for (i = 0; i < path.length - 1; i++)
+     parentnode = getNodes(parentnode)[path[i]];
+   // create a new node
+   var newnode = document.createElement('div');
+   newnode.setAttribute('class', 'row');
+   // insert the new node into the tree
+   var nodes = getNodes(parentnode);
+   if (path[i] >= nodes.length)
+     parentnode.appendChild(newnode);
+   else
+     parentnode.insertBefore(newnode, nodes[path[i]]);
+   // set the path
+   newnode.setAttributeNS(EMPATHY_NS, 'path', path.join(':'));
+   // add an expander
+   var toggle = document.createElement('span');
+   newnode.appendChild(toggle);
+   toggle.setAttribute('class', 'closed');
+   toggle.style.display = 'none';
+   var contents = document.createElement('p');
+   newnode.appendChild(contents);
+   setContent(contents, text, icon, date_);
+   function toggleExpander (e)
+     {
+       if (toggle.getAttribute('class') == 'closed')
+         setExpander(newnode, true);
+       else
+         setExpander(newnode, false);
+     };
++
+   toggle.onclick = toggleExpander;
+   contents.ondblclick = toggleExpander;
+   // if the node is not a top-level node, hide it
+   if (parentnode != treeview)
+     newnode.style.display = 'none';
+ }
+ function changeRow (path, text, icon, date_)
+ {
+   var treeview = document.getElementById('treeview');
+   var node = treeview;
+   // walk the tree
+   for (var i = 0; i < path.length; i++)
+     node = getNodes(node)[path[i]];
+   // set the contents
+   var contents = getContent(node);
+   setContent(contents, text, icon, date_);
+ }
+ function deleteRow (path)
+ {
+   var treeview = document.getElementById('treeview');
+   var node = treeview;
+   // walk the tree
+   for (var i = 0; i < path.length; i++)
+     node = getNodes(node)[path[i]];
+   node.parentNode.removeChild(node);
+ }
+ function reorderRows (path, new_order)
+ {
+   var treeview = document.getElementById('treeview');
+   var node = treeview;
+   // walk the tree
+   for (var i = 0; i < path.length; i++)
+     node = getNodes(node)[path[i]];
+   var nodes = getNodes(node);
+   // remove all the nodes from the DOM
+   for (var i = 0; i < nodes.length; i++)
+     node.removeChild(nodes[i]);
+   // put them back in the new order
+   // For reference: new_order[new_pos] = old_pos
+   for (var i = 0; i < nodes.length; i++)
+     node.appendChild(nodes[new_order[i]]);
+   // recursively update the path
+   function updatePaths(path, node)
+     {
+       var nodes = getNodes(node);
+       for (var i = 0; i < nodes.length; i++)
+         {
+           var newpath = path.concat([i]);
+           nodes[i].setAttributeNS(EMPATHY_NS, 'path', newpath.join(':'));
+           updatePaths(newpath, nodes[i]);
+         }
+     }
+   updatePaths(path, node);
+ }
+ function hasChildRows (path, has_children)
+ {
+   var treeview = document.getElementById('treeview');
+   var node = treeview;
+   // walk the tree
+   for (var i = 0; i < path.length; i++)
+     node = getNodes(node)[path[i]];
+   var toggle = getToggle(node);
+   if (has_children)
+     toggle.style.display = 'inline';
+   else
+     toggle.style.display = 'none';
+ }
+ function getOffset (node)
+ {
+   var y = 0;
+   while (node != null && !isNaN(node.offsetTop))
+     {
+       y += node.offsetTop - node.scrollTop;
+       node = node.offsetParent;
+     }
+   return y;
+ }
+ function scrollToRow (path)
+ {
+   var treeview = document.getElementById('treeview');
+   var node = treeview;
+   // walk the tree
+   for (var i = 0; i < path.length; i++)
+     node = getNodes(node)[path[i]];
+   window.scrollTo(0, getOffset(node));
+ }
+     </script>
+   </head>
+   <body>
+     <div id="treeview">
+     </div>
+   </body>
+ </html>
Simple merge
Simple merge
Simple merge
diff --cc src/Makefile.am
Simple merge
Simple merge