雷鳥閃電擴展顯示如下所示上的Week
和Day
觀點左側的時間...顯示2次從雷鳥閃電擴展在周和日查看不同的時區
我想表現出2個不同的時區(如本地時間和太平洋時間)如下圖所示的時間...
是否有CONF配置參數來做到這一點?是否有另一個可以調整的擴展?如果沒有,我該如何破解Thunderbird擴展來做到這一點?
僅供參考,Outlook有此functionality。此外,這answer顯示如何破解閃電延伸。
雷鳥閃電擴展顯示如下所示上的Week
和Day
觀點左側的時間...顯示2次從雷鳥閃電擴展在周和日查看不同的時區
我想表現出2個不同的時區(如本地時間和太平洋時間)如下圖所示的時間...
是否有CONF配置參數來做到這一點?是否有另一個可以調整的擴展?如果沒有,我該如何破解Thunderbird擴展來做到這一點?
僅供參考,Outlook有此functionality。此外,這answer顯示如何破解閃電延伸。
我沒有解決一般情況下的問題。我只是讓時間顯示在當前時區並顯示前一小時。在我的情況下,當前時區是美國山區時間,前一小時最終是美國太平洋時間。
在以下jar文件的文件必須在雷鳥不運行進行編輯。
C:\用戶\ nreynold.ORADEV \應用程序數據\漫遊\雷鳥\概況\ 輪廓 \擴展\ {e2fda1a4-762b-4020-b5ad-a41df1933103} \ chrome.jar
通過評論指示makeTimeBox()
必須改變方法:
function makeTimeBox(timestr, time2str, size) { // Add time2str parameter
var box = createXULElement("box");
box.setAttribute("orient", orient);
box.setAttribute("align", "left"); // Add
if (orient == "horizontal") {
box.setAttribute("width", size);
} else {
box.setAttribute("height", size);
}
var label = createXULElement("label");
label.setAttribute("class", "calendar-time-bar-label");
label.setAttribute("value", timestr);
label.setAttribute("style", "color: #4080C0; font-weight: bold;"); // Replace "align"
box.appendChild(label);
var label = createXULElement("label"); // Add
label.setAttribute("class", "calendar-time-bar-label"); // Add
label.setAttribute("value", time2str); // Add
box.appendChild(label); // Add
return box;
}
makeTimeBox()
後添加以下方法。
function makeTime(hour) {
var h = hour % 12;
if (h == 0)
h = 12;
var s = hour >= 12 ? " pm" : " am";
var result = h + s;
return result;
}
刪除其下方出現makeTimeBox()
var formatter = Components.classes["@mozilla.org/intl/scriptabledateformat;1"].
getService(Components.interfaces.nsIScriptableDateFormat);
更改以下行的幾行下面的行...
var timeString;
...是...
var timeString, time2String;
約25行lo WER,替換下面的行...
timeString = formatter.FormatTime("",
Components.interfaces.nsIScriptableDateFormat.timeFormatNoSeconds,
theHour, 0, 0);
box = makeTimeBox(timeString, durPix);
...是...
timeString = makeTime(theHour) + " MT";
ptHour = theHour - 1;
ptHour += 23;
ptHour %= 24;
ptHour += 1;
time2String = makeTime(ptHour) + " PT";
box = makeTimeBox(timeString, time2String, durPix);
我不知道有任何現成的附件可以做到這一點,但我可以告訴你它是如何完成的。首先創建一個典型的Thunderbird擴展框架,在Firefox世界中,如果您搜索文檔,這稱爲「傳統」擴展。它應該包含一個install.rdf和一個chrome.manifest。我假設你選擇view-zones
作爲chrome.manifest中的標識符。
接下來,您需要創建一個CSS文件,該文件允許您覆蓋calendar-time-bar
綁定。請注意,使用此方法只能有一個覆蓋綁定的擴展。內容將是這樣的:
calendar-time-bar {
-moz-binding: url(chrome://view-zones/content/bindings.xml#calendar-time-bar) !important;
}
這將覆蓋時間欄與你結合,您將在bindings.xml
文件中創建。它擴展了內置時間欄,但在重新佈局之後添加了一些代碼以添加這些額外的標籤。需要在chrome.manifest文件中使用style
指令引用CSS文件,並且可以擴展chrome://calendar/skin/calendar-views.css
。然後,你將不得不創造chrome://view-zones/content/bindings.xml
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<bindings id="calendar-multiday-view-bindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="calendar-time-bar"
extends="chrome://calendar/content/calendar-multiday-view.xml#calendar-time-bar">
<implementation>
<method name="relayout">
<body><![CDATA[
this.__proto__.__proto__.relayout.call(this);
let XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
let topbox = document.getAnonymousElementByAttribute(this, "anonid", "topbox");
for (let box of topbox.childNodes) {
let timelabel = box.appendChild(document.createElementNS(XUL_NS, "label"));
timelabel.setAttribute("value", "10:00 PT");
}
]]></body>
</method>
</implementation>
</binding>
</bindings>
我已經離開了標籤的靜態現在,但你可以認爲這將改變"10:00 PT"
基於其他標籤上的實際時間有些邏輯或者與actual method中使用的算法相同。您還可以添加類和樣式,使其看起來不同。
也就是說,也許你會有興趣將此功能添加到核心閃電?我認爲這將是一個很好的補充。我很確定我們有一個開放的錯誤,但目前我找不到它,所以如果你有興趣,也許你可以file a bug,我可以給你更多關於如何設置的信息。在這種情況下,將會將binding更改爲顯示多個標籤並添加用戶可見的首選項以便能夠選擇時區。