[empathy: 28/28] Merge branch 'log-window-webview'
- From: Danielle Madeley <daniellem src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [empathy: 28/28] Merge branch 'log-window-webview'
- Date: Thu, 18 Aug 2011 00:37:08 +0000 (UTC)
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]