[Pkg-mozext-commits] [compactheader] 199/441: New version 1.2.5: Backport fix for toggle header in command button menu Backport removal of subject tooltip Remove support for Thunderbird 3.0 Add support for Thunderbird 5.0b2pre: Cleanup of buttons on uninstall will not work.
David Prévot
taffit at moszumanska.debian.org
Wed Mar 18 12:28:58 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository compactheader.
commit 82ab7268f1d52b489900fd40e2616bbc105e0ca3
Author: joachim.herb <none at none>
Date: Sat Jun 4 15:14:43 2011 +0000
New version 1.2.5:
Backport fix for toggle header in command button menu
Backport removal of subject tooltip
Remove support for Thunderbird 3.0
Add support for Thunderbird 5.0b2pre: Cleanup of buttons on uninstall will not work.
--HG--
branch : B_1_2
---
chrome.manifest | 31 +-
chrome/CompactHeader/content/CHTMessenger.js | 184 +++
chrome/CompactHeader/content/CHTMessenger.xul | 52 +
.../CompactHeader/content/compactHeaderOverlay.js | 1209 +++++++++++++++-----
.../CompactHeader/content/compactHeaderOverlay.xul | 262 ++++-
install.rdf | 15 +-
6 files changed, 1431 insertions(+), 322 deletions(-)
diff --git a/chrome.manifest b/chrome.manifest
index 9d842dd..3230cbc 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -1,5 +1,26 @@
-content CompactHeader chrome/CompactHeader/content/
-skin CompactHeader global chrome/CompactHeader/skin/global/
-locale CompactHeader en-US chrome/CompactHeader/locale/en-US/
-locale CompactHeader de-DE chrome/CompactHeader/locale/de-DE/
-overlay chrome://messenger/content/msgHdrViewOverlay.xul chrome://CompactHeader/content/compactHeaderOverlay.xul
\ No newline at end of file
+content CompactHeader chrome/CompactHeader/content/
+
+skin CompactHeader global chrome/CompactHeader/skin/global/
+skin CompactHeader-os classic/1.0 chrome/CompactHeader/skin/common/
+skin CompactHeader-os classic/1.0 chrome/CompactHeader/skin/gnome/ os=Linux
+skin CompactHeader-os classic/1.0 chrome/CompactHeader/skin/windows/ os=WINNT
+skin CompactHeader-os classic/1.0 chrome/CompactHeader/skin/mac/ os=Darwin
+
+locale CompactHeader en-US chrome/CompactHeader/locale/en-US/
+locale CompactHeader de-DE chrome/CompactHeader/locale/de-DE/
+locale CompactHeader it-IT chrome/CompactHeader/locale/it-IT/
+locale CompactHeader da-DK chrome/CompactHeader/locale/da-DK/
+locale CompactHeader fr-FR chrome/CompactHeader/locale/fr-FR/
+locale CompactHeader es-ES chrome/CompactHeader/locale/es-ES/
+
+overlay chrome://messenger/content/msgHdrViewOverlay.xul chrome://CompactHeader/content/compactHeaderOverlay.xul
+overlay chrome://global/content/customizeToolbar.xul chrome://CompactHeader/content/customizeToolbarOverlay.xul
+style chrome://global/content/customizeToolbar.xul chrome://CompactHeader-os/skin/osdef.css
+style chrome://global/content/customizeToolbar.xul chrome://CompactHeader/skin/CompactHeader.css
+
+overlay chrome://messenger/content/messageWindow.xul chrome://CompactHeader/content/buttonsOverlay.xul
+overlay chrome://messenger/content/messenger.xul chrome://CompactHeader/content/buttonsOverlay.xul
+style chrome://global/content/customizeToolbar.xul chrome://CompactHeader-os/skin/buttonsOverlay.css
+
+overlay chrome://messenger/content/messageWindow.xul chrome://CompactHeader/content/CHTMessenger.xul
+overlay chrome://messenger/content/messenger.xul chrome://CompactHeader/content/CHTMessenger.xul
diff --git a/chrome/CompactHeader/content/CHTMessenger.js b/chrome/CompactHeader/content/CHTMessenger.js
new file mode 100644
index 0000000..eeea38f
--- /dev/null
+++ b/chrome/CompactHeader/content/CHTMessenger.js
@@ -0,0 +1,184 @@
+/*
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Communicator client code, released
+# March 31, 1998.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998-1999
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Joachim Herb <joachim.herb at gmx.de>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+*/
+
+if(!org) var org={};
+if(!org.mozdev) org.mozdev={};
+if(!org.mozdev.customizeHeaderToolbar) org.mozdev.customizeHeaderToolbar = {};
+
+org.mozdev.customizeHeaderToolbar.messenger = function(){
+ var pub = {};
+
+// pub.init = function () {
+// var onLoadFkt = document.getElementById("messengerWindow").getAttribute("onload");
+// if (onLoadFkt) {
+// var strTest = new RegExp('OnLoadMessenger', 'g');;
+// onLoadFkt = onLoadFkt.replace(strTest,
+// "org.mozdev.customizeHeaderToolbar.messenger.CHTLoadMessenger");
+// document.getElementById("messengerWindow").setAttribute("onload", onLoadFkt);
+// }
+// }
+
+ pub.saveToolboxData = function() {
+ var hdrToolbox = document.getElementById("header-view-toolbox");
+ var hdrToolbar = document.getElementById("header-view-toolbar");
+ var saveToolbox = document.getElementById("CHTSaveToolboxData");
+ var saveToolbar = document.getElementById("CHTSaveToolbarData");
+ if (hdrToolbox && hdrToolbar && saveToolbox && saveToolbar) {
+ saveToolbar.firstPermanentChild = hdrToolbar.firstPermanentChild;
+ saveToolbar.lastPermanentChild = hdrToolbar.lastPermanentChild;
+ if (hdrToolbox.palette) {
+ saveToolbox.palette = hdrToolbox.palette.cloneNode(true);
+ }
+ else {
+ //alert("no palette")
+ var hdrPalette = document.getElementById("header-view-toolbar-palette");
+ if (!hdrPalette) {
+ //alert("no header-view-toolbar-palette");
+ }
+ else {
+ //alert("header-view-toolbar-palette");
+ }
+ }
+ if (hdrToolbox.toolbarset) {
+ saveToolbox.toolbarset = hdrToolbox.toolbarset.cloneNode(true);
+ }
+ else {
+ //alert("no toolbarset")
+ }
+ saveToolbox.setAttribute("gotData", "true");
+ }
+ else {
+ //alert("no toolbox/bar");
+ saveToolbox.setAttribute("gotData", "false");
+ }
+ }
+
+ pub.loadToolboxData = function() {
+ var hdrToolbox = document.getElementById("header-view-toolbox");
+ var hdrToolbar = document.getElementById("header-view-toolbar");
+ var saveToolbox = document.getElementById("CHTSaveToolboxData");
+ var saveToolbar = document.getElementById("CHTSaveToolbarData");
+ if (hdrToolbox && hdrToolbar && saveToolbox && saveToolbar && saveToolbox.getAttribute("gotData") == "true") {
+ hdrToolbar.firstPermanentChild = saveToolbar.firstPermanentChild;
+ hdrToolbar.lastPermanentChild = saveToolbar.lastPermanentChild;
+ if (saveToolbox.palette) {
+ hdrToolbox.palette = saveToolbox.palette.cloneNode(true);
+ } else {
+ }
+ if (saveToolbox.toolbarset) {
+ hdrToolbox.toolbarset = saveToolbox.toolbarset.cloneNode(true);
+ } else {
+ }
+ }
+ }
+
+
+ return pub;
+}();
+
+org.mozdev.customizeHeaderToolbar.pane = function(){
+ var pub = {};
+
+ pub.CHTUpdateReplyButton = function () {
+ UpdateReplyButtons();
+ }
+
+ pub.CHTUpdateJunkButton = function () {
+ UpdateJunkButton();
+ }
+
+ pub.CHTSetDefaultButtons = function () {
+ var hdrToolbox = document.getElementById("header-view-toolbox");
+ var hdrToolbar = document.getElementById("header-view-toolbar");
+ var hdrBarDefaultSet = hdrToolbar.getAttribute("defaultset");
+ var hdrBoxDefaultLabelalign = hdrToolbox.getAttribute("defaultlabelalign");
+ var hdrBoxDefaultIconsize = hdrToolbox.getAttribute("defaulticonsize");
+ var hdrBoxDefaultMode = hdrToolbox.getAttribute("defaultmode");
+ var hdrBarDefaultIconsize = hdrToolbar.getAttribute("defaulticonsize");
+ var hdrBarDefaultMode = hdrToolbar.getAttribute("defaultmode");
+
+ hdrToolbox.setAttribute("labelalign", hdrBoxDefaultLabelalign);
+ hdrToolbox.setAttribute("iconsize", hdrBoxDefaultIconsize);
+ hdrToolbox.setAttribute("mode", hdrBoxDefaultMode);
+ hdrToolbar.setAttribute("iconsize", hdrBarDefaultIconsize);
+ hdrToolbar.setAttribute("mode", hdrBarDefaultMode);
+
+ hdrToolbar.currentSet = hdrBarDefaultSet;
+ hdrToolbar.setAttribute("currentset", hdrBarDefaultSet);
+
+ document.persist(hdrToolbox.id,"labelalign");
+ document.persist(hdrToolbox.id,"iconsize");
+ document.persist(hdrToolbox.id,"mode");
+ document.persist(hdrToolbar.id,"iconsize");
+ document.persist(hdrToolbar.id,"mode");
+ document.persist(hdrToolbar.id,"currentset");
+ }
+
+ pub.CHTCleanupButtons = function() {
+ var hdrToolbox = document.getElementById("header-view-toolbox");
+ var hdrToolbar = document.getElementById("header-view-toolbar");
+ var hdrBarDefaultSet = "hdrReplyButton,hdrReplyAllButton,hdrReplyListButton,hdrForwardButton,hdrArchiveButton,hdrJunkButton,hdrTrashButton";
+ var hdrBoxDefaultLabelalign = hdrToolbox.getAttribute("defaultlabelalign");
+ var hdrBoxDefaultIconsize = hdrToolbox.getAttribute("defaulticonsize");
+ var hdrBoxDefaultMode = hdrToolbox.getAttribute("defaultmode");
+ var hdrBarDefaultIconsize = hdrToolbar.getAttribute("defaulticonsize");
+ var hdrBarDefaultMode = hdrToolbar.getAttirbute("defaultmode");
+
+ hdrToolbox.setAttribute("labelalign", hdrBoxDefaultLabelalign);
+ hdrToolbox.setAttribute("iconsize", hdrBoxDefaultIconsize);
+ hdrToolbox.setAttribute("mode", hdrBoxDefaultMode);
+ hdrToolbar.setAttribute("iconsize", hdrBarDefaultIconsize);
+ hdrToolbar.setAttribute("mode", hdrBarDefaultMode);
+
+ hdrToolbar.currentSet = hdrBarDefaultSet;
+ hdrToolbar.setAttribute("currentset", hdrBarDefaultSet);
+
+ document.persist(hdrToolbox.id,"labelalign");
+ document.persist(hdrToolbox.id,"iconsize");
+ document.persist(hdrToolbox.id,"mode");
+ document.persist(hdrToolbar.id,"iconsize");
+ document.persist(hdrToolbar.id,"mode");
+ document.persist(hdrToolbar.id,"currentset");
+ }
+
+ return pub;
+}();
+
+//org.mozdev.customizeHeaderToolbar.messenger.init();
diff --git a/chrome/CompactHeader/content/CHTMessenger.xul b/chrome/CompactHeader/content/CHTMessenger.xul
new file mode 100644
index 0000000..90bb0f3
--- /dev/null
+++ b/chrome/CompactHeader/content/CHTMessenger.xul
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!-- ***** BEGIN LICENSE BLOCK *****
+ - Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ -
+ - The contents of this file are subject to the Mozilla Public License Version
+ - 1.1 (the "License"); you may not use this file except in compliance with
+ - the License. You may obtain a copy of the License at
+ - http://www.mozilla.org/MPL/
+ -
+ - Software distributed under the License is distributed on an "AS IS" basis,
+ - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ - for the specific language governing rights and limitations under the
+ - License.
+ -
+ - The Original Code is Thunderbird Toolbar Customization Overlay.
+ -
+ - The Initial Developer of the Original Code is
+ - Mozilla Messaging, Inc.
+ - Portions created by the Initial Developer are Copyright (C) 2009
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ - Joachim Herb <joachim.herb at gmx.de>
+ -
+ - Alternatively, the contents of this file may be used under the terms of
+ - either the GNU General Public License Version 2 or later (the "GPL"), or
+ - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ - in which case the provisions of the GPL or the LGPL are applicable instead
+ - of those above. If you wish to allow use of your version of this file only
+ - under the terms of either the GPL or the LGPL, and not to allow others to
+ - use your version of this file under the terms of the MPL, indicate your
+ - decision by deleting the provisions above and replace them with the notice
+ - and other provisions required by the LGPL or the GPL. If you do not delete
+ - the provisions above, a recipient may use your version of this file under
+ - the terms of any one of the MPL, the GPL or the LGPL.
+ -
+ - ***** END LICENSE BLOCK ***** -->
+
+<!DOCTYPE overlay [
+]>
+
+
+<overlay id="CHTmessengerWindow"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/x-javascript"
+ src="chrome://CompactHeader/content/CHTMessenger.js"/>
+ <window id="messengerWindow">
+ <toolbox id="CHTSaveToolboxData" collapsed="true">
+ <toolbar id="CHTSaveToolbarData" collapsed="true"/>
+ </toolbox>
+ </window>
+</overlay>
diff --git a/chrome/CompactHeader/content/compactHeaderOverlay.js b/chrome/CompactHeader/content/compactHeaderOverlay.js
index 95824e0..a8b3fdb 100644
--- a/chrome/CompactHeader/content/compactHeaderOverlay.js
+++ b/chrome/CompactHeader/content/compactHeaderOverlay.js
@@ -21,9 +21,7 @@
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
-# Markus Hossner <markushossner at gmx.de>
-# Mark Banner <bugzilla at standard8.plus.com>
-# David Ascher <dascher at mozillamessaging.com>
+# Joachim Herb <joachim.herb at gmx.de>
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
@@ -53,288 +51,989 @@
// view in the message header pane.
////////////////////////////////////////////////////////////////////////////////////
-var gCoheCollapsedHeaderViewMode = false;
-var gCoheBuiltCollapsedView = false;
+if(!org) var org={};
+if(!org.mozdev) org.mozdev={};
+if(!org.mozdev.compactHeader) org.mozdev.compactHeader = {};
-/**
- * The collapsed view: very lightweight. We only show a couple of fields. See
- * msgHdrViewOverlay.js for details of the field definition semantics.
- */
- var gCoheCollapsedHeaderList = [
- {name:"subject", outputFunction:coheUpdateHeaderValueInTextNode},
- {name:"from", useToggle:true, useShortView:true, outputFunction: OutputEmailAddresses},
-// {name:"toCcBcc", useToggle:true, useShortView:true, outputFunction: OutputEmailAddresses},
- {name:"date", outputFunction:OutputDate}];
+org.mozdev.compactHeader.pane = function() {
+ var pub = {};
- var prefBranch = Components.classes["@mozilla.org/preferences-service;1"]
+ const COHE_EXTENSION_UUID = "{58D4392A-842E-11DE-B51A-C7B855D89593}";
+
+// var regex = {
+// /* taken from https://bugzilla.mozilla.org/show_bug.cgi?id=57104 */
+// links : /((\w+):\/\/[^<>()'"\s]+|www(\.[-\w]+){2,})/
+// };
+//
+ var gCoheCollapsedHeaderViewMode = false;
+ var gCoheBuiltCollapsedView = false;
+
+ /**
+ * The collapsed view: very lightweight. We only show a couple of fields. See
+ * msgHdrViewOverlay.js for details of the field definition semantics.
+ */
+ var gCoheCollapsedHeader1LListLongAddresses = [
+ {name:"subject", outputFunction:coheOutputSubject},
+ {name:"from", useToggle:true, outputFunction:coheOutputEmailAddresses},
+// {name:"toCcBcc", useToggle:true, outputFunction:coheOutputEmailAddresses},
+ {name:"date", outputFunction:coheUpdateDateValue}
+ ];
+
+ var gCoheCollapsedHeader2LListLongAddresses = [
+ {name:"subject", outputFunction:coheOutputSubject},
+ {name:"from", useToggle:true, outputFunction:coheOutputEmailAddresses},
+ {name:"toCcBcc", useToggle:true, outputFunction:coheOutputEmailAddresses},
+ {name:"date", outputFunction:coheUpdateDateValue}
+ ];
+
+ var cohePrefBranch = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService)
.getBranch("extensions.CompactHeader.");
-
- var buttonslist = ["Reply", "Forward", "Archive", "Junk", "Trash"];
- var buttonsanonid = [["hdrReplyButton", "hdrReplyAllButton", "hdrReplyListButton"],
-// "hdrReplyDropdown", "hdrReplySubButton", "hdrReplyAllSubButtonSep",
-// "hdrReplyAllSubButton", "hdrReplyAllDropdown", "hdrReplyAllSubButton",
-// "hdrReplySubButton", "hdrReplyListDropdown", "hdrReplyListSubButton",
-// "hdrReplyAllSubButton", "hdrReplySubButton"],
- ["hdrForwardButton"],
- ["archiveButton"],
- ["hdrJunkButton"],
- ["hdrTrashButton"]
- ];
-
-// Now, for each view the message pane can generate, we need a global table
-// of headerEntries. These header entry objects are generated dynamically
-// based on the static data in the header lists (see above) and elements
-// we find in the DOM based on properties in the header lists.
-var gCoheCollapsedHeaderView = {};
-
-function coheInitializeHeaderViewTables()
-{
- // iterate over each header in our header list array, create a header entry
- // for it, and store it in our header table
- var index;
- for (index = 0; index < gCoheCollapsedHeaderList.length; index++)
+
+ var coheIntegrateRSSLinkify = false;
+
+ var RSSLinkify = {
+ oldSubject: null,
+ newSubject: null
+ };
+
+ var cohe={
+ version: -1,
+ firstrun: true,
+ current: -1
+ };
+
+ var coheFirstTime = true;
+
+ function coheOutputSubject(headerEntry, headerValue) {
+ var subjectBox;
+
+ if (cohePrefBranch.getBoolPref("headersize.twolineview")) {
+ subjectBox = document.getElementById("collapsed2LsubjectOutBox")
+ } else {
+ subjectBox = document.getElementById("collapsed1LsubjectOutBox")
+ }
+
+// if (subjectBox) {
+// subjectBox.setAttribute("tooltiptext", headerValue);
+// }
+ updateHeaderValue(headerEntry, headerValue);
+ }
+
+ function coheOutputEmailAddresses(headerEntry, emailAddresses) {
+ /* function copied from comm-1.9.1/ mail/ base/ content/ msgHdrViewOverlay.js 771135e6aaf5 */
+ if (!emailAddresses)
+ return;
+
+ var addresses = {};
+ var fullNames = {};
+ var names = {};
+ var numAddresses = 0;
+
+ var msgHeaderParser = Components.classes["@mozilla.org/messenger/headerparser;1"]
+ .getService(Components.interfaces.nsIMsgHeaderParser);
+ numAddresses = msgHeaderParser.parseHeadersWithArray(emailAddresses, addresses, names, fullNames);
+ var index = 0;
+ while (index < numAddresses)
{
- gCoheCollapsedHeaderView[gCoheCollapsedHeaderList[index].name] =
- new createHeaderEntry('collapsed', gCoheCollapsedHeaderList[index]);
+ // if we want to include short/long toggle views and we have a long view, always add it.
+ // if we aren't including a short/long view OR if we are and we haven't parsed enough
+ // addresses to reach the cutoff valve yet then add it to the default (short) div.
+ var address = {};
+ address.emailAddress = addresses.value[index];
+ address.fullAddress = fullNames.value[index];
+ if (cohePrefBranch.getBoolPref("headersize.addressstyle")) {
+ address.displayName = address.emailAddress;
+ address.fullAddress = address.emailAddress;
+ } else {
+ address.displayName = names.value[index];
+ }
+ if (headerEntry.useToggle && (typeof headerEntry.enclosingBox.addAddressView == 'function')) {
+ headerEntry.enclosingBox.addAddressView(address);
+ } else {
+ updateEmailAddressNode(headerEntry.enclosingBox.emailAddressNode, address);
+ }
+ index++;
}
-}
+
+ if (headerEntry.useToggle && (typeof headerEntry.enclosingBox.buildViews == 'function'))
+ headerEntry.enclosingBox.buildViews();
+ //OutputEmailAddresses(headerEntry, emailAddresses);
+ }
+
+ // Now, for each view the message pane can generate, we need a global table
+ // of headerEntries. These header entry objects are generated dynamically
+ // based on the static data in the header lists (see above) and elements
+ // we find in the DOM based on properties in the header lists.
+ var gCoheCollapsedHeaderView = {};
+
+ function coheInitializeHeaderViewTables()
+ {
+ gCoheCollapsedHeaderView = {};
+ var index;
+
+ if (cohePrefBranch.getBoolPref("headersize.twolineview")) {
+ for (index = 0; index < gCoheCollapsedHeader2LListLongAddresses.length; index++) {
+ gCoheCollapsedHeaderView[gCoheCollapsedHeader2LListLongAddresses[index].name] =
+ new createHeaderEntry('collapsed2L', gCoheCollapsedHeader2LListLongAddresses[index]);
+ }
+ } else {
+ for (index = 0; index < gCoheCollapsedHeader1LListLongAddresses.length; index++) {
+ gCoheCollapsedHeaderView[gCoheCollapsedHeader1LListLongAddresses[index].name] =
+ new createHeaderEntry('collapsed1L', gCoheCollapsedHeader1LListLongAddresses[index]);
+ }
+ }
+
+ if (cohePrefBranch.getBoolPref("headersize.linkify")) {
+ RSSLinkify.newSubject = document.getElementById("collapsedsubjectlinkBox") || document.createElement("label");
+ RSSLinkify.newSubject.setAttribute("id", "collapsedsubjectlinkBox");
+ RSSLinkify.newSubject.setAttribute("class", "headerValue plain headerValueUrl");
+ RSSLinkify.newSubject.setAttribute("originalclass", "headerValue plain headerValueUrl");
+ RSSLinkify.newSubject.setAttribute("context", "CohecopyUrlPopup");
+ RSSLinkify.newSubject.setAttribute("keywordrelated", "true");
+ RSSLinkify.newSubject.setAttribute("readonly", "true");
+ RSSLinkify.newSubject.setAttribute("appendoriginalclass", "true");
+ RSSLinkify.newSubject.setAttribute("flex", "1");
+ if (cohePrefBranch.getBoolPref("headersize.twolineview")) {
+ RSSLinkify.oldSubject = document.getElementById("collapsed2LsubjectBox");
+ } else {
+ RSSLinkify.oldSubject = document.getElementById("collapsed1LsubjectBox");
+ }
+ RSSLinkify.oldSubject.parentNode.insertBefore(RSSLinkify.newSubject, RSSLinkify.oldSubject);
+ }
+ }
+
+ pub.coheOnLoadMsgHeaderPane = function() {
+ coheInitializeHeaderViewTables();
+
+ // Add an address book listener so we can update the header view when things
+ // change.
+ Components.classes["@mozilla.org/abmanager;1"]
+ .getService(Components.interfaces.nsIAbManager)
+ .addAddressBookListener(coheAddressBookListener,
+ Components.interfaces.nsIAbListener.all);
+
+ var deckHeaderView = document.getElementById("msgHeaderViewDeck");
+
+ gCoheCollapsedHeaderViewMode =
+ deckHeaderView.selectedPanel == document.getElementById('collapsedHeaderView');
+
+ // work around XUL deck bug where collapsed header view, if it's the persisted
+ // default, wouldn't be sized properly because of the larger expanded
+ // view "stretches" the deck.
+ if (gCoheCollapsedHeaderViewMode)
+ document.getElementById('expandedHeaderView').collapsed = true;
+ else
+ document.getElementById('collapsedHeaderView').collapsed = true;
+
+ if (cohePrefBranch.getBoolPref("headersize.twolineview")) {
+ document.getElementById('collapsed1LHeadersBox').collapsed = true;
+ document.getElementById('collapsed2LHeadersBox').collapsed = false;
+ } else {
+ document.getElementById('collapsed1LHeadersBox').collapsed = false;
+ document.getElementById('collapsed2LHeadersBox').collapsed = true;
+ }
+
+ if (coheFirstTime)
+ {
+ coheFirstTime = false;
+ gMessageListeners.push(coheMessageListener);
+ org.mozdev.customizeHeaderToolbar.messenger.loadToolboxData();
+ fillToolboxPalette();
+ org.mozdev.customizeHeaderToolbar.messenger.saveToolboxData();
+ var toolbox = document.getElementById("header-view-toolbox");
+ toolbox.customizeDone = function(aEvent) {
+ MailToolboxCustomizeDone(aEvent, "CustomizeHeaderToolbar");
+ document.getElementById("header-view-toolbox").removeAttribute("doCustomization");
+ enableButtons();
+ org.mozdev.customizeHeaderToolbar.pane.CHTUpdateReplyButton();
+ org.mozdev.customizeHeaderToolbar.pane.CHTUpdateJunkButton();
+ org.mozdev.compactHeader.buttons.coheToggleStar();
+ org.mozdev.customizeHeaderToolbar.messenger.saveToolboxData();
+ };
+ }
+
+ if (cohe.firstrun) {
+ coheCheckFirstRun();
+ }
+
+ if (cohe.firstrun || document.getElementById("hdrReplyAllButton") == null) {
+ org.mozdev.customizeHeaderToolbar.pane.CHTSetDefaultButtons();
+ cohe.firstrun = false;
+ }
+
+ coheToggleHeaderContent();
+ setButtonStyle();
+ org.mozdev.customizeHeaderToolbar.messenger.saveToolboxData();
+ }
+
+ var coheMessageListener =
+ {
+ onStartHeaders:
+ function cML_onStartHeaders () {
+ gCoheBuiltCollapsedView = false;
+ },
+
+ onEndHeaders:
+ function cML_onEndHeaders() {
+ ClearHeaderView(gCoheCollapsedHeaderView);
+ coheUpdateMessageHeaders();
+ },
+
+ onEndAttachments: function cML_onEndAttachments(){}
+ };
+
+ pub.coheOnUnloadMsgHeaderPane = function()
+ {
+ Components.classes["@mozilla.org/abmanager;1"]
+ .getService(Components.interfaces.nsIAbManager)
+ .removeAddressBookListener(coheAddressBookListener);
+
+ removeEventListener('messagepane-loaded', coheOnLoadMsgHeaderPane, true);
+ removeEventListener('messagepane-unloaded', coheOnUnloadMsgHeaderPane, true);
+ }
+
+ var coheAddressBookListener =
+ {
+ onItemAdded: function(aParentDir, aItem) {
+ coheOnAddressBookDataChanged(nsIAbListener.itemAdded,
+ aParentDir, aItem);
+ },
+ onItemRemoved: function(aParentDir, aItem) {
+ coheOnAddressBookDataChanged(aItem instanceof nsIAbCard ?
+ nsIAbListener.directoryItemRemoved :
+ nsIAbListener.directoryRemoved,
+ aParentDir, aItem);
+ },
+
+ onItemPropertyChanged: function(aItem, aProperty, aOldValue, aNewValue) {
+ // We only need updates for card changes, address book and mailing list
+ // ones don't affect us here.
+ if (aItem instanceof Components.interfaces.nsIAbCard)
+ coheOnAddressBookDataChanged(nsIAbListener.itemChanged, null, aItem);
+ }
+ }
+
+ function coheOnAddressBookDataChanged(aAction, aParentDir, aItem) {
+ gEmailAddressHeaderNames.forEach(function (headerName) {
+ var headerEntry = null;
+
+ if (headerName in gCoheCollapsedHeaderView) {
+ headerEntry = gCoheCollapsedHeaderView[headerName];
+ if (headerEntry)
+ headerEntry.enclosingBox.updateExtraAddressProcessing(aAction,
+ aParentDir,
+ aItem);
+ }
+ });
+ }
+
+ function linkifySubject(subjectValueStr) {
+ var subjectNode = document.getElementById(subjectValueStr);
+ while(subjectNode.childNodes.length > 0) {
+ subjectNode.removeChild(subjectNode.firstChild)
+ }
+ var subject = currentHeaderData['subject'].headerValue;
-function coheOnLoadMsgHeaderPane()
-{
- coheInitializeHeaderViewTables();
+ if (regex.links.test(subject)) {
+ var text = subject;
+ /* utility function to split text and links */
+ function linkify(text) {
+ var matches = regex.links.exec(text);
+ var pre, post = null;
+ [pre, post] = text.split(matches[1]);
+ var link = document.createElement("a");
+ link.appendChild(document.createTextNode(matches[1]));
+ link.setAttribute("href", matches[1]);
+ link.setAttribute("class","text-link");
+ link.setAttribute("onclick", "org.mozdev.compactHeader.pane.subjectLinkOnClickListenter(event);");
+ return [pre,link,post];
+ }
+ /* loop through multiple possible links in the subject */
+ while(text && regex.links.test(text)) {
+ var pre, link, post = null;
+ [pre,link,post] = linkify(text);
+ /* we can't assume that any pre or post text was given, only a link */
+ if (pre && pre.length > 0)
+ subjectNode.appendChild(document.createTextNode(pre));
+ subjectNode.appendChild(link);
+ text = post;
+ }
+ if (text && text.length > 0)
+ subjectNode.appendChild(document.createTextNode(text));
+ } else {
+ subjectNode.appendChild(document.createTextNode(subject));
+ }
+ }
- // Add an address book listener so we can update the header view when things
- // change.
- Components.classes["@mozilla.org/abmanager;1"]
- .getService(Components.interfaces.nsIAbManager)
- .addAddressBookListener(coheAddressBookListener,
- Components.interfaces.nsIAbListener.all);
+ /* :::: Subject Link onClick Listener Functions :::: */
+ pub.subjectLinkOnClickListenter = function(event) {
+ if (event.originalTarget && event.originalTarget.getAttribute("href")) {
+ try {
+ messenger.launchExternalURL(event.originalTarget.getAttribute("href"));
+ } catch (e) { Application.console.log(e); }
+ }
+ }
- var deckHeaderView = document.getElementById("msgHeaderViewDeck");
-
- gCoheCollapsedHeaderViewMode =
- deckHeaderView.selectedPanel == document.getElementById('collapsedHeaderView');
-
- // work around XUL deck bug where collapsed header view, if it's the persisted
- // default, wouldn't be sized properly because of the larger expanded
- // view "stretches" the deck.
- if (gCoheCollapsedHeaderViewMode)
- document.getElementById('expandedHeaderView').collapsed = true;
- else
- document.getElementById('collapsedHeaderView').collapsed = true;
+
+ // make sure the appropriate fields within the currently displayed view header mode
+ // are collapsed or visible...
+ function coheUpdateHeaderView()
+ {
+ if (gCoheCollapsedHeaderViewMode)
+ showHeaderView(gCoheCollapsedHeaderView);
+
+ if (cohePrefBranch.getBoolPref("headersize.linkify")) {
+ var url = currentHeaderData["content-base"];
+ if(url) {
+ RSSLinkify.newSubject.setAttribute("onclick", "if (!event.button) messenger.launchExternalURL('" +
+ url.headerValue + "');");
+ RSSLinkify.newSubject.setAttribute("value", currentHeaderData["subject"].headerValue);
+ RSSLinkify.newSubject.setAttribute("url", url.headerValue);
+ RSSLinkify.newSubject.setAttribute("collapsed", "false");
+ RSSLinkify.oldSubject.setAttribute("collapsed", "true");
+ RSSLinkify.newSubject.setAttribute("tooltiptext", url.headerValue);
+ } else {
+ RSSLinkify.newSubject.setAttribute("collapsed", "true");
+ RSSLinkify.oldSubject.setAttribute("collapsed", "false");
+ RSSLinkify.oldSubject.setAttribute("tooltiptext", currentHeaderData["subject"].headerValue);
+// if (gCoheCollapsedHeaderViewMode) {
+// //linkifySubject('collapsed1LsubjectBox');
+// }
+// else {
+// linkifySubject('expandedsubjectBox');
+// }
+ }
+ } else {
+ if (RSSLinkify.newSubject) {
+ RSSLinkify.newSubject.setAttribute("collapsed", "true");
+ }
+ if (RSSLinkify.oldSubject) {
+ RSSLinkify.oldSubject.setAttribute("collapsed", "false");
+ RSSLinkify.oldSubject.setAttribute("tooltiptext", currentHeaderData["subject"].headerValue);
+ }
+ }
+ if (cohePrefBranch.getBoolPref("headersize.addressstyle")) {
+ selectEmailDisplayed();
+ }
+
+ //fillToolboxPalette();
+ coheToggleHeaderContent();
+ org.mozdev.customizeHeaderToolbar.pane.CHTUpdateReplyButton();
+ org.mozdev.customizeHeaderToolbar.pane.CHTUpdateJunkButton();
+ org.mozdev.compactHeader.buttons.coheToggleStar();
+ }
+
+ function enableButtons() {
+ var hdrToolbar = document.getElementById("header-view-toolbar");
+ if (toolbar) {
+ var buttons = hdrToolbar.querySelectorAll("[disabled*='true']");
+ for (var i=0; i<buttons.length; i++) {
+ buttons[i].removeAttribute("disabled");
+ }
+ }
+ }
+
+ function fillToolboxPalette() {
+ var hdrToolbar = document.getElementById("header-view-toolbar");
+ var hdrToolbox = document.getElementById("header-view-toolbox");
+ var buttons = ["button-reply", "button-replyall", "button-replylist",
+ "button-tag", "button-forward", "button-archive", "button-file",
+ "button-print", "button-mark", "button-starMessages",
+ "button-newmsg", "button-goback", "button-goforward",
+ "button-previous", "button-next", "button-compact",
+ "button-address", "button-stop", "button-getmsg",
+ "button-getPartialMessages",
+ "stylish-toolbar-button",
+ "button-enigmail-decrypt",
+ "RealPreviousMessage", "RealNextMessage", "SelectSMTP",
+ "ToggleHTML", "ToggleImages", "bDeleteThread",
+ "mailredirect-toolbarbutton",
+ "lightningbutton-convert-to-task",
+ "lightningbutton-convert-to-event"];
+ var currentSet=hdrToolbar.getAttribute("currentset");
+ hdrToolbar.currentSet = currentSet;
+ for (var i=0; i<buttons.length; i++) {
+ var buttonName = buttons[i];
+ var button = document.getElementById(buttonName) ||
+ document.getElementById("mail-toolbox").palette.getElementsByAttribute("id", buttonName)[0];
+ if (button) {
+ var hdrButton = button.cloneNode(true);
+ if (hdrButton) {
+ if (hdrButton.localName == "toolbaritem") {
+ var subButtons = hdrButton.querySelectorAll(".toolbarbutton-1");
+ for (var j=0; j<subButtons.length; j++) {
+ addClass(subButtons[j], "msgHeaderView-button-out");
+ }
+ } else {
+ if (hdrButton.type != "menu-button") {
+ addClass(hdrButton, "msgHeaderView-button");
+ } else {
+ addClass(hdrButton, "msgHeaderView-button-out");
+ }
+ }
+ //hdrButton.id = "hdr" + hdrButton.id;
+ hdrToolbox.palette.appendChild(hdrButton);
+ /* var bStyle = document.defaultView.getComputedStyle(button, null);
+ hdrButton.style.MozImageRegion = bStyle.MozImageRegion;
+ hdrButton.style.listStyleImage = bStyle.listStyleImage;*/
+ }
+ if (currentSet.indexOf(buttonName)>=0) {
+ var result = hdrToolbar.insertItem(hdrButton.id);
+ currentSet = hdrToolbar.getAttribute("currentset");
+ hdrToolbar.currentSet = currentSet;
+ }
+ }
+ }
- gMessageListeners.push(coheMessageListener);
-}
+ var buttonsRemove = ["hdrForwardButton", "hdrArchiveButton",
+ "hdrReplyToSenderButton"];//, "hdrReplyButton",
+ //"hdrReplyAllButton", "hdrReplyListButton"];
+ for (var i=0; i<buttonsRemove.length; i++) {
+ var buttonName = buttonsRemove[i];
+ var button = document.getElementById(buttonName) ||
+ document.getElementById("header-view-toolbox").palette.getElementsByAttribute("id", buttonName)[0];
+ if (button) {
+ button.setAttribute("collapsed", "true");
+ }
+ }
+
+ var target = "hdrOtherActionsButton";
+
+ var newParent = document.getElementById(target) ||
+ document.getElementById("header-view-toolbox").palette.getElementsByAttribute("id", target)[0];
+
+ if (newParent != null) {
+ var myElement;
+ myElement= document.getElementById("otherActionsPopup");
+ if (myElement) {
+ newParent.appendChild(myElement);
+ }
+ }
+ }
-var coheMessageListener =
-{
- onStartHeaders:
- function cML_onStartHeaders () {
- gCoheBuiltCollapsedView = false;
- },
-
- onEndHeaders:
- function cML_onEndHeaders() {
- ClearHeaderView(gCoheCollapsedHeaderView);
- coheUpdateMessageHeaders();
- },
-
- onEndAttachments: function cML_onEndAttachments(){}
-};
+ function setButtonStyle() {
+ var hdrToolbar = document.getElementById("header-view-toolbar");
+ var hdrToolbox = document.getElementById("header-view-toolbox");
+ var buttons = hdrToolbar.querySelectorAll("toolbarbutton");
+ for (var i=0; i<buttons.length; i++) {
+ var button = buttons[i];
+ if (button) {
+ addClass(button, "customize-header-toolbar-button");
+ addClass(button, "customize-header-toolbar-" + button.id)
+ if (cohePrefBranch.getBoolPref("headersize.flatButtons")) {
+ if (button.type != "menu-button") {
+ addClass(button, "msgHeaderView-flat-button");
+ } else {
+ removeClass(button, "msgHeaderView-flat-button");
+ removeClass(button, "msgHeaderView-button");
+ removeClass(button, "msgHeaderView-button-out");
+ addClass(button, "msgHeaderView-flat-button-out");
+ }
+ } else {
+ if (button.type != "menu-button") {
+ removeClass(button, "msgHeaderView-flat-button");
+ } else {
+ removeClass(button, "msgHeaderView-flat-button");
+ removeClass(button, "msgHeaderView-button");
+ removeClass(button, "msgHeaderView-flat-button-out");
+ addClass(button, "msgHeaderView-button-out");
+ }
+ }
+ }
+ }
-function coheOnUnloadMsgHeaderPane()
-{
- Components.classes["@mozilla.org/abmanager;1"]
- .getService(Components.interfaces.nsIAbManager)
- .removeAddressBookListener(coheAddressBookListener);
-
- removeEventListener('messagepane-loaded', coheOnLoadMsgHeaderPane, true);
- removeEventListener('messagepane-unloaded', coheOnUnloadMsgHeaderPane, true);
-}
+ var buttons = hdrToolbar.querySelectorAll("toolbaritem");
+ for (var i=0; i<buttons.length; i++) {
+ var button = buttons[i];
+ if (button) {
+ addClass(button, "customize-header-toolbar-button");
+ addClass(button, "customize-header-toolbar-" + button.id)
+ if (cohePrefBranch.getBoolPref("headersize.flatButtons")) {
+ removeClass(button, "msgHeaderView-button-out-item");
+ addClass(button, "msgHeaderView-flat-button-out-item");
+ } else {
+ removeClass(button, "msgHeaderView-flat-button-out-item");
+ addClass(button, "msgHeaderView-button-out-item");
+ }
+ }
+ }
+
+ buttons = hdrToolbox.palette.querySelectorAll("toolbarbutton");
+ for (var i=0; i<buttons.length; i++) {
+ var button = buttons[i];
+ if (button) {
+ addClass(button, "customize-header-toolbar-button");
+ addClass(button, "customize-header-toolbar-" + button.id)
+ if (cohePrefBranch.getBoolPref("headersize.flatButtons")) {
+ if (button.getAttribute("type") != "menu-button") {
+ addClass(button, "msgHeaderView-flat-button");
+ } else {
+ removeClass(button, "msgHeaderView-flat-button");
+ removeClass(button, "msgHeaderView-button");
+ removeClass(button, "msgHeaderView-button-out");
+ addClass(button, "msgHeaderView-flat-button-out");
+ }
+ } else {
+ if (button.getAttribute("type") != "menu-button") {
+ removeClass(button, "msgHeaderView-flat-button");
+ } else {
+ removeClass(button, "msgHeaderView-flat-button");
+ removeClass(button, "msgHeaderView-button");
+ removeClass(button, "msgHeaderView-flat-button-out");
+ addClass(button, "msgHeaderView-button-out");
+ }
+ }
+ }
+ }
-var coheAddressBookListener =
-{
- onItemAdded: function(aParentDir, aItem) {
- coheOnAddressBookDataChanged(nsIAbListener.itemAdded,
- aParentDir, aItem);
- },
- onItemRemoved: function(aParentDir, aItem) {
- coheOnAddressBookDataChanged(aItem instanceof nsIAbCard ?
- nsIAbListener.directoryItemRemoved :
- nsIAbListener.directoryRemoved,
- aParentDir, aItem);
- },
-
- onItemPropertyChanged: function(aItem, aProperty, aOldValue, aNewValue) {
- // We only need updates for card changes, address book and mailing list
- // ones don't affect us here.
- if (aItem instanceof Components.interfaces.nsIAbCard)
- coheOnAddressBookDataChanged(nsIAbListener.itemChanged, null, aItem);
+ buttons = hdrToolbox.palette.querySelectorAll("toolbaritem");
+ for (var i=0; i<buttons.length; i++) {
+ var button = buttons[i];
+ if (button) {
+ addClass(button, "customize-header-toolbar-button");
+ addClass(button, "customize-header-toolbar-" + button.id)
+ if (cohePrefBranch.getBoolPref("headersize.flatButtons")) {
+ removeClass(button, "msgHeaderView-button-out-item");
+ addClass(button, "msgHeaderView-flat-button-out-item");
+ } else {
+ removeClass(button, "msgHeaderView-flat-button-out-item");
+ addClass(button, "msgHeaderView-button-out-item");
+ }
+ }
+ }
}
-}
-function coheOnAddressBookDataChanged(aAction, aParentDir, aItem) {
- gEmailAddressHeaderNames.forEach(function (headerName) {
- var headerEntry = null;
-
- if (headerName in gCoheCollapsedHeaderView) {
- headerEntry = gCoheCollapsedHeaderView[headerName];
- if (headerEntry)
- headerEntry.enclosingBox.updateExtraAddressProcessing(aAction,
- aParentDir,
- aItem);
+ pub.coheToggleHeaderView = function() {
+ gCoheCollapsedHeaderViewMode = !gCoheCollapsedHeaderViewMode;
+
+ let deck = document.getElementById('msgHeaderViewDeck');
+ // Work around a xul deck bug where the height of the deck is determined
+ // by the tallest panel in the deck even if that panel is not selected...
+ deck.selectedPanel.collapsed = true;
+
+ if (gCoheCollapsedHeaderViewMode) {
+ deck.selectedPanel = document.getElementById("collapsedHeaderView")
+ coheUpdateMessageHeaders();
+ } else {
+ deck.selectedPanel = document.getElementById("expandedHeaderView");
+ ClearHeaderView(gExpandedHeaderView);
+ UpdateExpandedMessageHeaders();
+ //gDBView.reloadMessage();
+ }
+
+ // Work around a xul deck bug where the height of the deck is determined
+ // by the tallest panel in the deck even if that panel is not selected...
+ deck.selectedPanel.collapsed = false;
+ syncGridColumnWidths();
+
+ coheToggleHeaderContent();
+ }
+
+ function coheToggleHeaderContent() {
+ var strHideLabel = document.getElementById("CoheHideDetailsLabel").value;
+ var strShowLabel = document.getElementById("CoheShowDetailsLabel").value;
+ var strLabel;
+
+ var smimeBox = document.getElementById("smimeBox");
+
+ if (smimeBox != null) {
+ if (gCoheCollapsedHeaderViewMode) {
+ var parent = document.getElementById("collapsed2LdateOutBox");
+ var refElement = document.getElementById("collapsed2LdateRow");
+ if (parent != null && refElement != null) {
+ parent.insertBefore(smimeBox, refElement);
+ }
+ }
+ else {
+ var parent = document.getElementById("dateValueBox");
+ var refElement = document.getElementById("dateLabel");
+ if (parent != null && refElement != null) {
+ parent.insertBefore(smimeBox, refElement);
+ }
+ }
+ }
+
+ var dispMUABox = document.getElementById("dispMUA");
+
+ if (dispMUABox != null) {
+ if (gCoheCollapsedHeaderViewMode) {
+ var parent = document.getElementById("collapsed2LdateOutBox");
+ var refElement = document.getElementById("collapsed2LdateRow");
+ if (parent != null && refElement != null) {
+ parent.insertBefore(dispMUABox, refElement);
+ }
}
- });
-}
+ else {
+ var parent = document.getElementById("dateValueBox");
+ var refElement = document.getElementById("dateLabel");
+ if (parent != null && refElement != null) {
+ parent.insertBefore(dispMUABox, refElement);
+ }
+ }
+ }
-// make sure the appropriate fields within the currently displayed view header mode
-// are collapsed or visible...
-function coheUpdateHeaderView()
-{
- if (gCoheCollapsedHeaderViewMode)
- showHeaderView(gCoheCollapsedHeaderView);
-
- UpdateJunkButton();
- updateHdrButtons();
-}
+ org.mozdev.customizeHeaderToolbar.messenger.loadToolboxData();
-function coheToggleHeaderView ()
-{
- gCoheCollapsedHeaderViewMode = !gCoheCollapsedHeaderViewMode;
-
- let deck = document.getElementById('msgHeaderViewDeck');
- // Work around a xul deck bug where the height of the deck is determined
- // by the tallest panel in the deck even if that panel is not selected...
- deck.selectedPanel.collapsed = true;
+ if (gCoheCollapsedHeaderViewMode) {
+ strLabel = strShowLabel;
+ } else {
+ strLabel = strHideLabel;
+ }
- if (gCoheCollapsedHeaderViewMode) {
- deck.selectedPanel = document.getElementById("collapsedHeaderView")
- coheUpdateMessageHeaders();
- } else {
- deck.selectedPanel = document.getElementById("expandedHeaderView");
- ClearHeaderView(gExpandedHeaderView);
- UpdateExpandedMessageHeaders();
- }
+ if (document.getElementById("hideDetailsMenu")) {
+ document.getElementById("hideDetailsMenu").setAttribute("label", strLabel);
+ }
- updateHdrButtons();
+ var hdrToolbox = document.getElementById("header-view-toolbox");
+ var hdrToolbar = document.getElementById("header-view-toolbar");
+ var firstPermanentChild = hdrToolbar.firstPermanentChild;
+ var lastPermanentChild = hdrToolbar.lastPermanentChild;
+ if (gCoheCollapsedHeaderViewMode) {
+ strLabel = strShowLabel;
+ var cBox = document.getElementById("collapsed2LButtonBox");
+ if (cBox.parentNode.id != hdrToolbox.parentNode.id) {
+ var cloneToolboxPalette;
+ var cloneToolbarset;
+ if (hdrToolbox.palette) {
+ cloneToolboxPalette = hdrToolbox.palette.cloneNode(true);
+ }
+ if (hdrToolbox.toolbarset) {
+ cloneToolbarset = hdrToolbox.toolbarset.cloneNode(true);
+ }
+ cBox.parentNode.insertBefore(hdrToolbox, cBox);
+ hdrToolbox.palette = cloneToolboxPalette;
+ hdrToolbox.toolbarset = cloneToolbarset;
+ hdrToolbar = document.getElementById("header-view-toolbar");
+ hdrToolbar.firstPermanentChild = firstPermanentChild;
+ hdrToolbar.lastPermanentChild = lastPermanentChild;
+ }
+ } else {
+ strLabel = strHideLabel;
+ var cBox = document.getElementById("expandedHeaders");
+ if (cBox.parentNode.id != hdrToolbox.parentNode.id) {
+ var cloneToolboxPalette;
+ var cloneToolbarset;
+ if (hdrToolbox.palette) {
+ cloneToolboxPalette = hdrToolbox.palette.cloneNode(true);
+ }
+ if (hdrToolbox.toolbarset) {
+ cloneToolbarset = hdrToolbox.toolbarset.cloneNode(true);
+ }
+ cBox.parentNode.appendChild(hdrToolbox);
+ hdrToolbox.palette = cloneToolboxPalette;
+ hdrToolbox.toolbarset = cloneToolbarset;
+ hdrToolbar = document.getElementById("header-view-toolbar");
+ hdrToolbar.firstPermanentChild = firstPermanentChild;
+ hdrToolbar.lastPermanentChild = lastPermanentChild;
+ }
+ }
+
+ if (document.getElementById("hideDetailsMenu")) {
+ document.getElementById("hideDetailsMenu").setAttribute("label", strLabel);
+ }
+ }
- // Work around a xul deck bug where the height of the deck is determined
- // by the tallest panel in the deck even if that panel is not selected...
- deck.selectedPanel.collapsed = false;
-}
-
-// default method for updating a header value into a header entry
-function coheUpdateHeaderValueInTextNode(headerEntry, headerValue)
-{
- headerEntry.textNode.value = headerValue;
-}
-
-// coheUpdateMessageHeaders: Iterate through all the current header data we received from mime for this message
-// for each header entry table, see if we have a corresponding entry for that header. i.e. does the particular
-// view care about this header value. if it does then call updateHeaderEntry
-function coheUpdateMessageHeaders()
-{
- // Remove the height attr so that it redraws correctly. Works around a
- // problem that attachment-splitter causes if it's moved high enough to
- // affect the header box:
- document.getElementById('msgHeaderView').removeAttribute('height');
-
- // iterate over each header we received and see if we have a matching entry
- // in each header view table...
- for (var headerName in currentHeaderData)
+ // default method for updating a header value into a header entry
+ function coheUpdateHeaderValueInTextNode(headerEntry, headerValue)
{
- var headerField = currentHeaderData[headerName];
- var headerEntry = null;
-
- if (gCoheCollapsedHeaderViewMode && !gCoheBuiltCollapsedView)
+ headerEntry.textNode.value = headerValue;
+ }
+
+ function coheUpdateDateValue(headerEntry, headerValue) {
+ //var t = currentHeaderData.date.headerValue;
+ var d
+ d = document.getElementById("collapsed1LdateBox");
+ d.textContent = headerValue;
+ d = document.getElementById("collapsed2LdateBox");
+ d.textContent = headerValue;
+ }
+
+
+ // coheUpdateMessageHeaders: Iterate through all the current header data we received from mime for this message
+ // for each header entry table, see if we have a corresponding entry for that header. i.e. does the particular
+ // view care about this header value. if it does then call updateHeaderEntry
+ function coheUpdateMessageHeaders()
+ {
+ // Remove the height attr so that it redraws correctly. Works around a
+ // problem that attachment-splitter causes if it's moved high enough to
+ // affect the header box:
+ document.getElementById('msgHeaderView').removeAttribute('height');
+
+ // iterate over each header we received and see if we have a matching entry
+ // in each header view table...
+ for (var headerName in currentHeaderData)
{
- if (headerName == "cc" || headerName == "to" || headerName == "bcc")
- headerEntry = gCoheCollapsedHeaderView["toCcBcc"];
- else if (headerName in gCoheCollapsedHeaderView)
- headerEntry = gCoheCollapsedHeaderView[headerName];
+ var headerField = currentHeaderData[headerName];
+ var headerEntry = null;
+
+ if (gCoheCollapsedHeaderViewMode && !gCoheBuiltCollapsedView)
+ {
+ if (headerName == "cc" || headerName == "to" || headerName == "bcc")
+ headerEntry = gCoheCollapsedHeaderView["toCcBcc"];
+ else if (headerName in gCoheCollapsedHeaderView)
+ headerEntry = gCoheCollapsedHeaderView[headerName];
+ }
+
+ if (headerEntry) {
+ headerEntry.outputFunction(headerEntry, headerField.headerValue);
+ headerEntry.valid = true;
+ }
}
-
- if (headerEntry) {
- headerEntry.outputFunction(headerEntry, headerField.headerValue);
- headerEntry.valid = true;
+
+ if (gCoheCollapsedHeaderViewMode)
+ gCoheBuiltCollapsedView = true;
+
+ // now update the view to make sure the right elements are visible
+ coheUpdateHeaderView();
+ }
+
+ function addClass(el, strClass) {
+ var testnew = new RegExp('\\b'+strClass+'\\b').test(el.className);
+ if (!testnew) {
+ el.className += el.className?' '+strClass:strClass;
}
}
-
- if (gCoheCollapsedHeaderViewMode)
- gCoheBuiltCollapsedView = true;
-
- // now update the view to make sure the right elements are visible
- coheUpdateHeaderView();
-}
-
-addEventListener('messagepane-loaded', coheOnLoadMsgHeaderPane, true);
-addEventListener('messagepane-unloaded', coheOnUnloadMsgHeaderPane, true);
-
-function updateHdrButtons() {
- UpdateReplyButtons();
- for(var i = 0; i<buttonslist.length; i++) {
- var buttonBox = document.getElementById('msgHeaderViewDeck').selectedPanel
- .getElementsByTagName("header-view-button-box").item(0);
- for (var j=0; j<buttonsanonid[i].length; j++){
- var myElement = buttonBox.getButton(buttonsanonid[i][j]);
- if (myElement != null) {
- if (prefBranch.getBoolPref("expandedview.display" + buttonslist[i])) {
- if (buttonslist[i] != "Reply") {
- myElement.hidden = ! prefBranch.getBoolPref("expandedview.display" + buttonslist[i]);
- }
- }
- else {
- myElement.hidden = ! prefBranch.getBoolPref("expandedview.display" + buttonslist[i]);
- }
- }
- }
+
+ function removeClass(el, strClass) {
+ var str = new RegExp('(\\s|^)'+strClass+'(\\s|$)', 'g');
+ el.className = el.className.replace(str, ' ');
}
-}
-
-var myPrefObserver =
-{
- register: function()
+
+ function CoheCopyWebsiteAddress(websiteAddressNode)
{
- // First we'll need the preference services to look for preferences.
- var prefService = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefService);
-
- // For this._branch we ask that the preferences for extensions.myextension. and children
- this._branch = prefService.getBranch("extensions.CompactHeader.");
-
- // Now we queue the interface called nsIPrefBranch2. This interface is described as:
- // "nsIPrefBranch2 allows clients to observe changes to pref values."
- this._branch.QueryInterface(Components.interfaces.nsIPrefBranch2);
-
- // Finally add the observer.
- this._branch.addObserver("", this, false);
- },
-
- unregister: function()
+ if (websiteAddressNode)
+ {
+ var websiteAddress = websiteAddressNode.getAttribute("url");
+
+ var contractid = "@mozilla.org/widget/clipboardhelper;1";
+ var iid = Components.interfaces.nsIClipboardHelper;
+ var clipboard = Components.classes[contractid].getService(iid);
+ clipboard.copyString(websiteAddress);
+ }
+ }
+
+ function selectEmailDisplayed() {
+ var xulemail = document.getElementById("collapsedtoCcBccBox");
+ if (xulemail != null) {
+ var nextbox = document.getAnonymousElementByAttribute(xulemail, "anonid", "longEmailAddresses");
+ if (nextbox != null) {
+ var xuldesc = document.getAnonymousElementByAttribute(xulemail, "containsEmail", "true");
+ if (xuldesc != null) {
+ var children = xuldesc.children;
+ for (var i=0; i<children.length; i++) {
+ if (children[i].localName == "mail-emailaddress") {
+ var rawAddress = children[i].getAttribute("emailAddress");
+ if (rawAddress) {
+ children[i].setAttribute("label", rawAddress);
+ }
+ }
+ }
+ }
+ }
+ }
+ var xulemail = document.getElementById("collapsedfromBox");
+ if (xulemail != null) {
+ var nextbox = document.getAnonymousElementByAttribute(xulemail, "anonid", "longEmailAddresses");
+ if (nextbox != null) {
+ var xuldesc = document.getAnonymousElementByAttribute(xulemail, "containsEmail", "true");
+ if (xuldesc != null) {
+ var children = xuldesc.children;
+ for (var i=0; i<children.length; i++) {
+ if (children[i].localName == "mail-emailaddress") {
+ var rawAddress = children[i].getAttribute("emailAddress");
+ if (rawAddress) {
+ children[i].setAttribute("label", rawAddress);
+ }
+ }
+ }
+ }
+ }
+ }
+ };
+
+ var myPrefObserverHeaderSize =
{
- if(!this._branch) return;
- this._branch.removeObserver("", this);
- },
+ register: function()
+ {
+ // First we'll need the preference services to look for preferences.
+ var prefService = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefService);
+
+ // For this._branch we ask that the preferences for extensions.myextension. and children
+ this._branch = prefService.getBranch("extensions.CompactHeader.headersize.");
+
+ // Now we queue the interface called nsIPrefBranch2. This interface is described as:
+ // "nsIPrefBranch2 allows clients to observe changes to pref values."
+ this._branch.QueryInterface(Components.interfaces.nsIPrefBranch2);
+
+ // Finally add the observer.
+ this._branch.addObserver("", this, false);
+ },
+
+ unregister: function()
+ {
+ if(!this._branch) return;
+ this._branch.removeObserver("", this);
+ },
+
+ observe: function(aSubject, aTopic, aData)
+ {
+ if(aTopic != "nsPref:changed") return;
+ // aSubject is the nsIPrefBranch we're observing (after appropriate QI)
+ // aData is the name of the pref that's been changed (relative to aSubject)
+
+ var event = document.createEvent('Events');
+ event.initEvent('messagepane-loaded', false, true);
+ var headerViewElement = document.getElementById("msgHeaderView");
+ headerViewElement.dispatchEvent(event);
+
+ gDBView.reloadMessage();
+ }
+ }
+
+ myPrefObserverHeaderSize.register();
+
+ function coheCheckFirstRun() {
+ var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
+ .getService(Components.interfaces.nsIXULAppInfo);
+ var versionChecker = Components.classes["@mozilla.org/xpcom/version-comparator;1"]
+ .getService(Components.interfaces.nsIVersionComparator);
+// debugLog("first run 0");
+ if(versionChecker.compare(appInfo.version, "3.2a1pre") < 0) {
+// debugLog("firstrun 1");
+ cohe.version = -1;
+ cohe.firstrun = false;
+ cohe.gExtensionManager = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
+ // check if this is part of CompactHeader
+ if ((cohe.gExtensionManager.getItemForID(COHE_EXTENSION_UUID) == null) || (isAddonDisabled(COHE_EXTENSION_UUID))) {
+ return;
+ }
+
+ cohe.current = cohe.gExtensionManager.getItemForID(COHE_EXTENSION_UUID).version;
+ try{
+ cohe.version = cohePrefBranch.getCharPref("version");
+ cohe.firstrun = cohePrefBranch.getBoolPref("firstrun");
+ } catch(e) {
+ } finally {
+ //check for first run
+ if (cohe.firstrun){
+ cohePrefBranch.setBoolPref("firstrun",false);
+ cohePrefBranch.setCharPref("version",cohe.current);
+ }
+ //check for upgrade
+ if (cohe.version!=cohe.current && !cohe.firstrun){
+ cohePrefBranch.setCharPref("version",cohe.current);
+ // XXX
+ }
+ }
+ }
+ else {
+ //debugLog("firstrun 3");
+ Components.utils.import("resource://gre/modules/AddonManager.jsm");
+ AddonManager.getAddonByID(COHE_EXTENSION_UUID,
+ function(myAddon) {
+// debugLog("first run 2");
+ cohe.version = -1;
+ cohe.firstrun = false;
+ cohe.current = myAddon.version;
+ try{
+ cohe.version = cohePrefBranch.getCharPref("version");
+ cohe.firstrun = cohePrefBranch.getBoolPref("firstrun");
+ } catch(e) {
+ } finally {
+ //check for first run
+ if (cohe.firstrun){
+ cohePrefBranch.setBoolPref("firstrun",false);
+ cohePrefBranch.setCharPref("version",cohe.current);
+ }
+ //check for upgrade
+ if (cohe.version!=cohe.current && !cohe.firstrun){
+ cohePrefBranch.setCharPref("version",cohe.current);
+ // XXX
+ }
+ }
+ }
+ );
+ }
+// debugLog("firstrun 4");
+ }
- observe: function(aSubject, aTopic, aData)
- {
- if(aTopic != "nsPref:changed") return;
- // aSubject is the nsIPrefBranch we're observing (after appropriate QI)
- // aData is the name of the pref that's been changed (relative to aSubject)
- updateHdrButtons();
+// var aConsoleService = Components.classes["@mozilla.org/consoleservice;1"]
+// .getService(Components.interfaces.nsIConsoleService);
+
+ pub.coheInitializeOverlay = function() {
+ // var gExtensionManager = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
+ // check if this is part of CompactHeader
+ // if ((gExtensionManager.getItemForID(COHE_EXTENSION_UUID) == null) || isAddonDisabled(COHE_EXTENSION_UUID)) {
+ // return;
+ //}
+ coheUninstallObserver.register();
+ }
+
+ var coheUninstallObserver = {
+ _uninstall : false,
+ observe : function(subject, topic, data) {
+ if (topic == "em-action-requested") {
+ subject.QueryInterface(Components.interfaces.nsIUpdateItem);
+
+ if (subject.id == COHE_EXTENSION_UUID) {
+ if (data == "item-uninstalled") {
+ this._uninstall = true;
+ } else if (data == "item-cancel-action") {
+ this._uninstall = false;
+ }
+ }
+ } else if (topic == "quit-application-granted") {
+ if (this._uninstall) {
+ cohePrefBranch.deleteBranch("");
+ org.mozdev.customizeHeaderToolbar.pane.CHTCleanupButtons();
+ }
+ this.unregister();
+ }
+ },
+ register : function() {
+ var observerService =
+ Components.classes["@mozilla.org/observer-service;1"].
+ getService(Components.interfaces.nsIObserverService);
+
+ observerService.addObserver(this, "em-action-requested", false);
+ observerService.addObserver(this, "quit-application-granted", false);
+ },
+ unregister : function() {
+ var observerService =
+ Components.classes["@mozilla.org/observer-service;1"].
+ getService(Components.interfaces.nsIObserverService);
- /*
- switch (aData) {
- case "pref1":
- // extensions.myextension.pref1 was changed
- break;
- case "pref2":
- // extensions.myextension.pref2 was changed
- break;
- }
- */
+ observerService.removeObserver(this,"em-action-requested");
+ observerService.removeObserver(this,"quit-application-granted");
+ }
}
-}
-myPrefObserver.register();
+
+ function isAddonDisabled(uuid) {
+ var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ var addon = rdfService.GetResource("urn:mozilla:item:" + uuid);
+
+ var em = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager);
+ var ds = em.datasource;
+
+ var appRes = rdfService.GetResource("http://www.mozilla.org/2004/em-rdf#appDisabled");
+ var appDisabled = ds.GetTarget(addon, appRes, true);
+ if(appDisabled instanceof Components.interfaces.nsIRDFLiteral && appDisabled.Value == "true")
+ return true;
+
+ var userRes = rdfService.GetResource("http://www.mozilla.org/2004/em-rdf#userDisabled");
+ var userDisabled = ds.GetTarget(addon, userRes, true);
+ if(userDisabled instanceof Components.interfaces.nsIRDFLiteral && userDisabled.Value == "true")
+ return true;
+
+ return false;
+ }
+ return pub;
+}();
+
+addEventListener('messagepane-loaded', org.mozdev.compactHeader.pane.coheOnLoadMsgHeaderPane, true);
+addEventListener('messagepane-unloaded', org.mozdev.compactHeader.pane.coheOnUnloadMsgHeaderPane, true);
+addEventListener('load', org.mozdev.compactHeader.pane.coheInitializeOverlay, false);
+
diff --git a/chrome/CompactHeader/content/compactHeaderOverlay.xul b/chrome/CompactHeader/content/compactHeaderOverlay.xul
index 62f166f..39b74c9 100644
--- a/chrome/CompactHeader/content/compactHeaderOverlay.xul
+++ b/chrome/CompactHeader/content/compactHeaderOverlay.xul
@@ -2,74 +2,222 @@
<!DOCTYPE overlay [
<!ENTITY % msgHeaderDTD SYSTEM
- "chrome://messenger/locale/msgHdrViewOverlay.dtd">
- %msgHeaderDTD;
- <!ENTITY % compactHeaderDTD SYSTEM
- "chrome://CompactHeader/locale/CompactHeader.dtd">
- %compactHeaderDTD;
+ "chrome://messenger/locale/msgHdrViewOverlay.dtd">
+ %msgHeaderDTD;
+ <!ENTITY % compactHeaderDTD SYSTEM
+ "chrome://CompactHeader/locale/CompactHeader.dtd">
+ %compactHeaderDTD;
+ <!ENTITY % preferencesDTD SYSTEM
+ "chrome://CompactHeader/locale/preferences.dtd">
+ %preferencesDTD;
+ <!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd">
+ %messengerDTD;
]>
<?xml-stylesheet href="chrome://CompactHeader/skin/CompactHeader.css" type="text/css"?>
+<?xml-stylesheet href="chrome://CompactHeader-os/skin/osdef.css" type="text/css"?>
+
<overlay id="compactHeaderOverlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/javascript"
- src="chrome://CompactHeader/content/compactHeaderOverlay.js"/>
+ <script type="application/javascript" src="chrome://CompactHeader-d/content/compactHeaderOverlay.js"/>
+
+ <keyset>
+ <key id="hideDetailsKey"
+ modifiers="shift"
+ key="&toggleDetails.key;"
+ oncommand="org.mozdev.compactHeader.pane.coheToggleHeaderView();"/>
+ </keyset>
+
+ <popup id="header-toolbar-context-menu">
+ <menuitem id="hidecohePreferencesButton"
+ label="&dialog.title;"
+ oncommand="openDialog('chrome://CompactHeader/content/preferences.xul', 'prefs', 'chrome,resizable=no,centerscreen,modal');"/>
+ </popup>
<deck id="msgHeaderViewDeck">
- <!-- YYY namespace ids added here? -->
- <hbox id="expandedHeaderView">
- <vbox id="hideDetailsButtonID" insertbefore="expandedHeaders">
- <button id="hideDetailsButton"
- tooltiptext="&hideDetailsButton.label;"
- onclick="coheToggleHeaderView();"
- class="msgHeaderView-button msgHeaderView-flat-button"/>
- </vbox>
- <vbox id="expandedHeaders" flex="1">
- <hbox id="otherHeadersAndButtonsBox" flex="1">
- <vbox id="otherActionsBox" align="end">
- <button type="menu" id="otherActionsButton"
- label="&otherActionsButton.label;"
- class="msgHeaderView-button msgHeaderView-flat-button">
- <menupopup id="otherActionsPopup">
- <menuitem id="hideDetailsMenu" label="&hideDetailsButton.label;"
- oncommand="coheToggleHeaderView();" />
- </menupopup>
- </button>
- </vbox>
- </hbox>
- </vbox>
- </hbox>
-
- <vbox id="collapsedHeaderView" class="header-part1 headerContainer" flex="2" pack="start">
-
- <hbox align="start">
- <hbox id="showDetailsButtonBox" align="start">
- <button id="showDetailsButton"
- tooltiptext="&showDetailsButton.label;"
- onclick="coheToggleHeaderView();"
- class="msgHeaderView-button msgHeaderView-flat-button"/>
- </hbox>
- <hbox align="baseline" flex="2">
- <hbox id="collapsedsubjectBox" align="start" flex="1">
- <textbox id="collapsedsubjectValue" flex="1" readonly="true" class="collapsedHeaderValue plain"/>
- </hbox>
- <hbox id="collapsedfromBox" align="end">
- <mail-multi-emailHeaderField id="collapsedfromValue"
- class="collapsedHeaderDisplayName"
- label="&fromField2.label;"/>
- </hbox>
- <hbox id="collapseddateBox" align="end">
- <textbox id="collapseddateValue" class="collapsedHeaderValue plain" readonly="true"/>
- </hbox>
- <header-view-button-box id="collapsedButtonBox" style="display:none"/>
- </hbox>
+ <vbox id="expandedHeaderView" orient="horizontal">
+ <vbox id="hideDetailsButtonBox" insertbefore="expandedHeadersBox">
+ <button id="hideDetailsButton"
+ tooltiptext="&hideDetailsButton.label;"
+ onclick="org.mozdev.compactHeader.pane.coheToggleHeaderView();"
+ class="msgHeaderView-flat-button"/>
+ </vbox>
+
+ <hbox id="coheStringTransferBox" hidden="true">
+ <label id="CoheHideDetailsLabel" value="&hideDetailsButton.label;"/>
+ <label id="CoheShowDetailsLabel" value="&showDetailsButton.label;"/>
</hbox>
-
- </vbox>
- </deck>
+ <vbox id="expandedHeadersBox">
+ <hbox id="expandedHeadersTopBox" flex="1">
+ <toolbox id="header-view-toolbox"
+ mode="icons"
+ defaultmode="icons">
+ <toolbarpalette id="header-view-toolbar-palette">
+ <toolbarbutton id="hdrOtherActionsButton"
+ label="&otherActionsButton.label;"
+ tooltiptext="&otherActionsButton.label;"
+ class="toolbarbutton-1 msgHeaderView-button hdrOtherActionsButton"
+ type="menu"/>
+ </toolbarpalette>
+ <toolbar id="header-view-toolbar"
+ mode="icons" defaultmode="icons"
+ defaultset="hdrReplyToSenderButton,hdrReplyButton,hdrReplyAllButton,hdrReplyListButton,hdrForwardButton,button-reply,button-forward,hdrArchiveButton,hdrJunkButton,hdrTrashButton,hdrOtherActionsButton">
+ </toolbar>
+ </toolbox>
+ </hbox>
+
+
+ <hbox id="expandedHeadersBottomBox">
+
+ <vbox id="otherActionsBox" flex="0">
+ <hbox id="dateValueBox" flex="0"/>
+ <button type="menu" id="otherActionsButton" collapsed="true"
+ label="&otherActionsButton.label;"
+ class="msgHeaderView-button msgHeaderView-flat-button">
+ <menupopup id="otherActionsPopup" onpopupshowing="InitMessageMark()">
+ <menuitem id="hdrPlane-markFlagged"
+ type="checkbox"
+ label="&markStarredCmd.label;"
+ accesskey="&markStarredCmd.accesskey;"
+ command="cmd_markAsFlagged"
+ insertbefore="viewSourceMenuItem"
+ key="key_toggleFlagged"/>
+ <menu id="hdrPlane-HeadersPopupMenu" label="&headersMenu.label;" accesskey="&headersMenu.accesskey;">
+ <menupopup id="menu_HeadersPopup" onpopupshowing="InitViewHeadersMenu();">
+ <menuitem id="hdrPlane-viewallheaders"
+ type="radio"
+ name="viewheadergroup"
+ label="&headersAllCmd.label;"
+ accesskey="&headersAllCmd.accesskey;"
+ command="cmd_viewAllHeader"/>
+ <menuitem id="hdrPlane-viewnormalheaders"
+ type="radio"
+ name="viewheadergroup"
+ label="&headersNormalCmd.label;"
+ accesskey="&headersNormalCmd.accesskey;"
+ command="cmd_viewNormalHeader"/>
+ </menupopup>
+ </menu>
+ <menuseparator id="otherActionPopupAfterViewSource"/>
+ <menuitem id="hideDetailsMenu"
+ label="&hideDetailsButton.label;"
+ oncommand="org.mozdev.compactHeader.pane.coheToggleHeaderView();"/>
+ <menuitem id="hidecohePreferencesButton"
+ label="&dialog.title;"
+ oncommand="openDialog('chrome://CompactHeader/content/preferences.xul', 'prefs', 'chrome,centerscreen,dependent,all,resizable=no');"/>
+ </menupopup>
+ </button>
+ </vbox>
+ </hbox>
+
+ </vbox>
+ </vbox>
+
+ <vbox id="collapsedHeaderView" orient="horizontal" flex="1">
+ <popup id="CohecopyUrlPopup" popupanchor="bottomleft">
+ <menuitem label="©LinkCmd.label;" accesskey="©LinkCmd.accesskey;" oncommand="CoheCopyWebsiteAddress(document.popupNode)"/>
+ </popup>
+ <vbox id="showDetailsButtonBox" align="start" flex="0">
+ <button id="showDetailsButton"
+ tooltiptext="&showDetailsButton.label;"
+ onclick="org.mozdev.compactHeader.pane.coheToggleHeaderView();"
+ class="msgHeaderView-flat-button"/>
+ </vbox>
+ <vbox id="collapsed1LHeadersBox" flex="1" collapsed="false">
+ <hbox id="collapsed1LHeaderViewFirstLine" flex="0">
+ <hbox id="collapsed1LsubjectOutBox" align="start" flex="99">
+ <row id="collapsed1LsubjectRow" flex="99">
+ <mail-headerfield id="collapsed1LsubjectBox" flex="99"/>
+ </row>
+ </hbox>
+ <hbox id="collapsed1LfromOutBox" align="start" flex="0">
+ <grid flex="1">
+ <columns>
+ <column flex="0"/>
+ </columns>
+ <rows>
+ <row id="collapsed1LfromRow">
+ <mail-multi-emailHeaderField id="collapsed1LfromBox" flex="0"/>
+ </row>
+ </rows>
+ </grid>
+ </hbox>
+<!--
+ <grid id="collapsed1LtoCcBccOutBox" flex="1" hidden="true">
+ <columns>
+ <column flex="0"/>
+ <column flex="1"/>
+ </columns>
+ <row id="collapsed1LtoCcBccRow" align="baseline">
+ <label id="collapsed1LtoCcBccLabel" class="headerName"
+ value="&toField2.label;" control="collapsed1LtoCcBccBox"/>
+ <mail-multi-emailHeaderField id="collapsed1LtoCcBccBox" flex="1"/>
+ </row>
+ </grid>
+-->
+ <hbox id="collapsed1LdateOutBox" align="start" pack="end" flex="0">
+ <row id="collapsed1LdateRow">
+ <label id="collapsed1LdateBox" class="dateLabel" flex="1"/>
+ </row>
+ </hbox>
+ <header-view-button-box id="collapsed1LButtonBox" flex="0" align="start" hidden="true"/>
+ </hbox>
+ <hbox id="collapsed1LHeaderViewSecondLine" align="top" flex="1" collapsed="true">
+ </hbox>
+ </vbox>
+
+ <vbox id="collapsed2LHeadersBox" flex="1" collapsed="true">
+ <hbox id="collapsed2LHeaderViewFirstLine" flex="0">
+ <hbox id="collapsed2LfromOutBox" align="start" flex="0">
+ <grid flex="1">
+ <columns>
+ <column flex="0"/>
+ </columns>
+ <rows>
+ <row id="collapsed2LfromRow">
+ <mail-multi-emailHeaderField id="collapsed2LfromBox" flex="0"/>
+ </row>
+ </rows>
+ </grid>
+ </hbox>
+ <grid id="collapsed2LtoCcBccOutBox" flex="1">
+ <columns>
+ <column flex="0"/>
+ <column flex="1"/>
+ </columns>
+ <rows>
+ <row id="collapsed2LtoCcBccRow" align="baseline">
+ <label id="collapsed2LtoCcBccLabel" class="headerName"
+ value="&toField2.label;" control="collapsed2LtoCcBccBox"/>
+ <mail-multi-emailHeaderField id="collapsed2LtoCcBccBox" flex="1"/>
+ </row>
+ </rows>
+ </grid>
+ <header-view-button-box id="collapsed2LButtonBox" flex="0" align="start"/>
+ </hbox>
+ <hbox id="collapsed2LHeaderViewSecondLine" align="top" flex="1">
+ <hbox id="collapsed2LsubjectOutBox" align="top" flex="99">
+ <row id="collapsed2LsubjectRow" flex="99">
+ <mail-headerfield id="collapsed2LsubjectBox" flex="99"/>
+ </row>
+ </hbox>
+ <hbox id="collapsed2LdateOutBox" align="top" pack="end" flex="0">
+ <row id="collapsed2LdateRow" align="top" pack="end">
+ <label id="collapsed2LdateBox" class="dateLabel" flex="1"/>
+ </row>
+ </hbox>
+ </hbox>
+ </vbox>
+
+ </vbox>
+
+ </deck>
</overlay>
+
+<!--
+-->
\ No newline at end of file
diff --git a/install.rdf b/install.rdf
index 35650a2..6efa6e2 100644
--- a/install.rdf
+++ b/install.rdf
@@ -6,20 +6,25 @@
<RDF:Description about="urn:mozilla:install-manifest">
<em:name>CompactHeader</em:name>
- <em:version>0.3.4</em:version>
- <em:description>Add ability to reduce header size to one line.</em:description>
+ <em:version>1.2.5</em:version>
+ <em:description>Add ability to reduce header size to one or two lines. Linkify subjects in RSS feeds.</em:description>
<em:creator>Joachim Herb</em:creator>
<em:contributor>Zamula</em:contributor>
+ <em:contributor>Alex Dedul (original author of RSS Linkify Subject)</em:contributor>
+ <em:contributor>Marco (Help for Mac OS X theme)</em:contributor>
<em:optionsURL>chrome://CompactHeader/content/preferences.xul</em:optionsURL>
<em:homepageURL>http://compactheader.mozdev.org/</em:homepageURL>
+ <em:updateURL>http://compactheader.mozdev.org/update.rdf</em:updateURL>
+ <em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+O1ZsY+7zY6A2GUdEx+6yoWhlfMz7qtDWDLEzMDCZ046vWauIwTGsIT4/48InmKSjF8q529U8FHamJI03FQuuE94KdLkQCJfGTUOwf/U1pKcHpF/WweGmRj7SrOt/exNCdUj7EaJ/vICy4TaUZ42Oul2CwP00x4BixiNs+26UbwIDAQAB</em:updateKey>
<em:id>{58D4392A-842E-11DE-B51A-C7B855D89593}</em:id>
<em:type>2</em:type>
+ <em:iconURL>chrome://CompactHeader/skin/cohe-icon.png</em:iconURL>
<em:targetApplication>
<RDF:Description>
<em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
- <em:minVersion>3.0b3</em:minVersion>
- <em:maxVersion>3.1a1pre</em:maxVersion>
+ <em:minVersion>3.1</em:minVersion>
+ <em:maxVersion>5.0b2pre</em:maxVersion>
</RDF:Description>
</em:targetApplication>
</RDF:Description>
-</RDF>
\ No newline at end of file
+</RDF>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/compactheader.git
More information about the Pkg-mozext-commits
mailing list