2016-08-22 19 views
1

雷鳥閃電擴展顯示如下所示上的WeekDay觀點左側的時間...顯示2次從雷鳥閃電擴展在周和日查看不同的時區

Screenshot

我想表現出2個不同的時區(如本地時間和太平洋時間)如下圖所示的時間...

Modified

是否有CONF配置參數來做到這一點?是否有另一個可以調整的擴展?如果沒有,我該如何破解Thunderbird擴展來做到這一點?

僅供參考,Outlook有此functionality。此外,這answer顯示如何破解閃電延伸。

回答

0

我沒有解決一般情況下的問題。我只是讓時間顯示在當前時區並顯示前一小時。在我的情況下,當前時區是美國山區時間,前一小時最終是美國太平洋時間。

Screenshot

在以下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); 
0

我不知道有任何現成的附件可以做到這一點,但我可以告訴你它是如何完成的。首先創建一個典型的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更改爲顯示多個標籤並添加用戶可見的首選項以便能夠選擇時區。