[empathy: 28/28] Merge branch 'log-window-webview'



commit 2021c145e0c5eb6aa9eda91d58d54b13007113ad
Merge: d3e8563 dc7080f
Author: Danielle Madeley <danielle madeley collabora co uk>
Date:   Thu Aug 18 10:10:00 2011 +1000

    Merge branch 'log-window-webview'

 configure.ac                           |   28 +--
 data/Makefile.am                       |    5 +-
 data/empathy-log-window.html           |  296 ++++++++++++++++++++
 libempathy-gtk/Makefile.am             |   30 +--
 libempathy-gtk/empathy-log-window.c    |  470 +++++++++++++++++++++++---------
 libempathy-gtk/empathy-log-window.ui   |   12 +-
 libempathy-gtk/empathy-theme-adium.c   |  267 ++-----------------
 libempathy-gtk/empathy-theme-manager.c |   21 --
 libempathy-gtk/empathy-webkit-utils.c  |  300 ++++++++++++++++++++
 libempathy-gtk/empathy-webkit-utils.h  |   42 +++
 libempathy/empathy-gsettings.h         |    1 +
 src/Makefile.am                        |    5 +-
 src/empathy-preferences.c              |    7 -
 13 files changed, 1017 insertions(+), 467 deletions(-)
---
diff --cc configure.ac
index d8de67f,7f6ec16..3aa266b
--- a/configure.ac
+++ b/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])
diff --cc data/empathy-log-window.html
index 0000000,6962528..8815925
mode 000000,100644..100644
--- a/data/empathy-log-window.html
+++ b/data/empathy-log-window.html
@@@ -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>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]