Showing with 157 additions and 176 deletions.
  1. +1 −1 src/chrome/content/options.js
  2. +1 −0 src/chrome/content/options.xul
  3. +1 −1 src/chrome/content/overlay.xul
  4. +10 −10 src/chrome/locale/ru-RU/options.dtd
  5. +1 −1 src/chrome/locale/ru-RU/options.properties
  6. +2 −0 src/chrome/locale/zh-TW/options.dtd
  7. +1 −1 src/components/firetray-clhandler.js
  8. +3 −34 src/install.rdf
  9. +4 −11 src/modules/FiretrayHandler.jsm
  10. +12 −17 src/modules/FiretrayMessaging.jsm
  11. +1 −1 src/modules/FiretrayWindow.jsm
  12. +1 −1 src/modules/PrefListener.jsm
  13. +1 −1 src/modules/VersionChange.jsm
  14. +6 −7 src/modules/commons.js
  15. +4 −4 src/modules/ctypes/ctypes-utils.jsm
  16. +1 −1 src/modules/ctypes/ctypesMap.jsm
  17. +1 −1 src/modules/ctypes/libfiretray.jsm
  18. +4 −1 src/modules/ctypes/linux/cairo.jsm
  19. +1 −1 src/modules/ctypes/linux/gdk23.jsm
  20. +1 −1 src/modules/ctypes/linux/gio.jsm
  21. +1 −1 src/modules/ctypes/linux/glib.jsm
  22. +1 −1 src/modules/ctypes/linux/gobject.jsm
  23. +1 −1 src/modules/ctypes/linux/gtk2/appindicator.jsm
  24. +1 −1 src/modules/ctypes/linux/gtk2/gdk.jsm
  25. +1 −1 src/modules/ctypes/linux/gtk2/gtk.jsm
  26. +1 −1 src/modules/ctypes/linux/gtk23.jsm
  27. +1 −1 src/modules/ctypes/linux/gtk3/appindicator.jsm
  28. +1 −1 src/modules/ctypes/linux/gtk3/gdk.jsm
  29. +1 −1 src/modules/ctypes/linux/gtk3/gtk.jsm
  30. +1 −1 src/modules/ctypes/linux/libc.jsm
  31. +1 −1 src/modules/ctypes/linux/pango.jsm
  32. +1 −1 src/modules/ctypes/linux/pangocairo.jsm
  33. +1 −1 src/modules/ctypes/linux/x11.jsm
  34. +1 −1 src/modules/ctypes/winnt/gdi32.jsm
  35. +1 −1 src/modules/ctypes/winnt/kernel32.jsm
  36. +1 −1 src/modules/ctypes/winnt/shell32.jsm
  37. +1 −1 src/modules/ctypes/winnt/user32.jsm
  38. +1 −1 src/modules/ctypes/winnt/win32.jsm
  39. +10 −4 src/modules/linux/FiretrayAppIndicator.jsm
  40. +10 −8 src/modules/linux/FiretrayChat.jsm
  41. +9 −11 src/modules/linux/FiretrayChatStatusIcon.jsm
  42. +1 −1 src/modules/linux/FiretrayGtkIcons.jsm
  43. +19 −7 src/modules/linux/FiretrayGtkStatusIcon.jsm
  44. +1 −1 src/modules/linux/FiretrayPopupMenu.jsm
  45. +1 −1 src/modules/linux/FiretrayStatusIcon.jsm
  46. +3 −2 src/modules/linux/FiretrayWindow.jsm
  47. +22 −22 src/modules/logging.jsm
  48. +1 −1 src/modules/winnt/FiretrayPopupMenu.jsm
  49. +3 −3 src/modules/winnt/FiretrayStatusIcon.jsm
  50. +1 −1 src/modules/winnt/FiretrayWin32.jsm
  51. +1 −1 src/modules/winnt/FiretrayWindow.jsm
2 changes: 1 addition & 1 deletion src/chrome/content/options.js
Expand Up @@ -2,7 +2,7 @@

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cu = ChromeUtils;

Cu.import("resource://firetray/FiretrayHandler.jsm");
Cu.import("resource://firetray/commons.js");
Expand Down
1 change: 1 addition & 0 deletions src/chrome/content/options.xul
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://firetray/skin/overlay.css" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/preferences/preferences.css" type="text/css"?>
<!DOCTYPE prefwindow SYSTEM "chrome://firetray/locale/options.dtd">
<prefwindow id="firetray-preferences"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
Expand Down
2 changes: 1 addition & 1 deletion src/chrome/content/overlay.xul
Expand Up @@ -2,7 +2,7 @@
<?xml-stylesheet href="chrome://firetray/skin/overlay.css" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://firetray/locale/overlay.dtd">
<overlay id="firetray-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript;version=1.8" src="overlay.js"/>
<script type="application/javascript" src="overlay.js"/>

<stringbundleset id="stringbundleset">
<stringbundle id="firetray-strings" src="chrome://firetray/locale/overlay.properties"/>
Expand Down
20 changes: 10 additions & 10 deletions src/chrome/locale/ru-RU/options.dtd
@@ -1,7 +1,7 @@
<!-- if you need multiline/carriage return, use a .properties -->
<!ENTITY prefwindow.title "Настройки FireTray">

<!ENTITY NOT_IMPLEMENTED_YET "ЕЩЕ НЕ РЕАЛИЗОВАНО">
<!ENTITY NOT_IMPLEMENTED_YET "ЕЩЁ НЕ РЕАЛИЗОВАНО">

<!ENTITY windows_options "Окна">
<!ENTITY icon_options "Значок">
Expand All @@ -18,7 +18,7 @@
<!ENTITY hides_last_only.label "Скрывать только последнее окно">
<!ENTITY hides_last_only.tooltip "другие окна будут закрыты (уничтожены)">
<!ENTITY hides_last_only.accesskey "O">
<!ENTITY start_hidden.label "При запуске программы сворачивать ее в трей">
<!ENTITY start_hidden.label "При запуске программы сворачивать её в трей">
<!ENTITY start_hidden.accesskey "S">
<!ENTITY show_activates.label "Включать восстановленные окна">
<!ENTITY show_activates.accesskey "e">
Expand All @@ -43,18 +43,18 @@
<!ENTITY down "↓" >
<!ENTITY hide "скрыть" >
<!ENTITY restore "показать" >
<!ENTITY middle_click.label "Mouse middle click action :" >
<!ENTITY middle_click.label "Действие по нажатию средней кнопки мыши :" >
<!ENTITY middle_click.accesskey "k" >
<!ENTITY show_hide "Show/hide" >
<!ENTITY activate_last "Activate last window" >
<!ENTITY show_hide "Показать/Скрыть" >
<!ENTITY activate_last "Сделать активным последнее окно" >

<!ENTITY mail_notification_enabled.label "Включить оповещение о новых сообщениях">
<!ENTITY mail_notification_enabled.accesskey "a">
<!ENTITY message_count_type.label "уведомлять о :">
<!ENTITY message_count_type.accesskey "m">
<!ENTITY message_count_type_unread "непрочитанных сообщениях">
<!ENTITY message_count_type_new "новых сообщениях">
<!ENTITY message_count_type_new.tooltip "новых сообщениях с последнего просмотра папки.">
<!ENTITY message_count_type_new.tooltip "новых сообщениях с последнего просмотра папки">
<!ENTITY mail_notification_type.label "Тип оповещения">
<!ENTITY mail_notification_type.tooltip "aka. Biff">
<!ENTITY mail_notification_unread_count.label "показать количество новых сообщений">
Expand All @@ -69,16 +69,16 @@
<!ENTITY choose.accesskey "O">

<!ENTITY unread_count_folder_exceptions.label "Включать особые папки">
<!ENTITY unread_count_folder_exceptions.tooltip "Включать особые папки для подсчета количества новых сообщений">
<!ENTITY unread_count_folder_exceptions.tooltip "Включать особые папки для подсчёта количества новых сообщений">
<!ENTITY excluded_folders_list.tooltip "Используйте CTRL + ЛКМ для множественного выбора">

<!ENTITY unread_count_account_exceptions.label "Включаемые почтовые ящики">
<!ENTITY unread_count_account_exceptions.tooltip "Почтовые ящик для подсчета непрочитанных сообщений">
<!ENTITY unread_count_account_exceptions.tooltip "Почтовые ящик для подсчёта непрочитанных сообщений">
<!ENTITY folder_count_recursive.label "Включая подпапки">
<!ENTITY folder_count_recursive.accesskey "f">
<!ENTITY only_favorite_folders.label "Только избранные папки">
<!ENTITY only_favorite_folders.accesskey "v">
<!ENTITY only_favorite_folders.tooltip "Within included folder types and included accounts, only count messages in favorite folders">
<!ENTITY only_favorite_folders.tooltip "Во включённых типах папок и аккаутах, только количество сообщений в избранных папках">

<!ENTITY account_or_server_type_name "Почтовый ящик">
<!ENTITY account_or_server_type_name.tooltip "Имя почтового ящика или протокола">
Expand All @@ -93,7 +93,7 @@
<!ENTITY mail_change_trigger.tooltip "Абсолютный путь к программе. В качестве первого аргумента будет передано количество сообщений">
<!ENTITY mail_get_attention.label "Установить срочное оповещение X11">
<!ENTITY mail_get_attention.accesskey "X">
<!ENTITY nomail_hides_icon.label "Hide icon when no mail">
<!ENTITY nomail_hides_icon.label "Прятать значок, если нет писем">
<!ENTITY nomail_hides_icon.accesskey "H">

<!ENTITY chat_icon_enable.label "Включить значок чата">
Expand Down
2 changes: 1 addition & 1 deletion src/chrome/locale/ru-RU/options.properties
@@ -1,6 +1,6 @@
Archive=Архив
Drafts=Черновики
Junk=Junk
Junk=Спам
Queue=Очередь
SentMail=Отправленные
Templates=Черновики
Expand Down
2 changes: 2 additions & 0 deletions src/chrome/locale/zh-TW/options.dtd
Expand Up @@ -83,6 +83,8 @@
<!ENTITY mail_change_trigger.tooltip "要在訊息數改變時執行程式的絕對路徑。程式會將新的訊息數作為第一個參數。">
<!ENTITY mail_get_attention.label "有新訊息時視窗發出提醒信號">
<!ENTITY mail_get_attention.accesskey "g">
<!ENTITY nomail_hides_icon.label "有新郵件時顯示系統列圖示">
<!ENTITY nomail_hides_icon.accesskey "t">
<!ENTITY chat_icon_enable.label "啟用聊天圖示">
<!ENTITY chat_icon_enable.accesskey "E">
<!ENTITY chat_icon_blink.label "有新訊息時閃爍聊天圖示">
Expand Down
2 changes: 1 addition & 1 deletion src/components/firetray-clhandler.js
Expand Up @@ -2,7 +2,7 @@

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cu = ChromeUtils;

Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://firetray/logging.jsm");
Expand Down
37 changes: 3 additions & 34 deletions src/install.rdf
Expand Up @@ -19,48 +19,17 @@
<em:targetPlatform>Linux</em:targetPlatform>
<em:targetPlatform>WINNT</em:targetPlatform>

<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <!-- Firefox -->
<em:minVersion>7.0</em:minVersion>
<em:maxVersion>38.0</em:maxVersion>
</Description>
</em:targetApplication>

<em:targetApplication> <!-- Thunderbird -->
<Description>
<em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
<em:minVersion>7.0</em:minVersion>
<em:maxVersion>38.0</em:maxVersion>
</Description>
</em:targetApplication>

<em:targetApplication> <!-- SeaMonkey -->
<Description>
<em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
<em:minVersion>2.4</em:minVersion>
<em:maxVersion>2.35</em:maxVersion>
</Description>
</em:targetApplication>

<em:targetApplication> <!-- ChatZilla -->
<Description>
<em:id>{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}</em:id>
<em:minVersion>0.8</em:minVersion>
<em:maxVersion>0.9.*</em:maxVersion>
</Description>
</em:targetApplication>

<em:targetApplication> <!-- Zotero -->
<Description>
<em:id>zotero@chnm.gmu.edu</em:id>
<em:minVersion>2.1a1</em:minVersion>
<em:maxVersion>4.*</em:maxVersion>
<em:minVersion>57.0</em:minVersion>
<em:maxVersion>60.*</em:maxVersion>
</Description>
</em:targetApplication>

<em:developer>Jared Forsyth</em:developer>
<em:developer>Glen Winters</em:developer>
<em:developer>CubicF</em:developer>

<em:contributor>Simone 'Underpass'</em:contributor>
<em:contributor>Diego Rodriguez</em:contributor>
Expand Down
15 changes: 4 additions & 11 deletions src/modules/FiretrayHandler.jsm
Expand Up @@ -5,7 +5,7 @@ var EXPORTED_SYMBOLS = [ "firetray" ];

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cu = ChromeUtils;

Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/ctypes.jsm");
Expand Down Expand Up @@ -59,14 +59,7 @@ firetray.Handler = {
OS: Services.appinfo.OS.toLowerCase(), // "WINNT", "Linux", "Darwin"
widgetTk: Services.appinfo.widgetToolkit,
};})(),
addonRootDir: (function(){
let uri = Services.io.newURI(Components.stack.filename, null, null);
if (uri instanceof Ci.nsIFileURL) {
log.debug("_directory="+uri.file.parent.parent.path);
return uri.file.parent.parent;
}
throw new Error("not resolved");
})(),

support: {chat: false, winnt: false},

init: function() { // does creates icon
Expand Down Expand Up @@ -254,8 +247,8 @@ firetray.Handler = {
// [nsISimpleEnumerator::hasMoreElements]"), and we're unsure if we should
// initAccounts() ourselves...
existsChatAccount: function() {
let accounts = new firetray.Messaging.Accounts();
for (let accountServer in accounts)
let accounts = firetray.Messaging.Accounts();
for (let accountServer of accounts)
if (accountServer.type === FIRETRAY_ACCOUNT_SERVER_TYPE_IM) {
log.debug("found im server: "+accountServer.prettyName);
return true;
Expand Down
29 changes: 12 additions & 17 deletions src/modules/FiretrayMessaging.jsm
Expand Up @@ -4,7 +4,7 @@ var EXPORTED_SYMBOLS = [ "firetray", "FLDRS_UNINTERESTING" ];

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cu = ChromeUtils;

Cu.import("resource:///modules/iteratorUtils.jsm");
Cu.import("resource:///modules/mailServices.js");
Expand Down Expand Up @@ -263,8 +263,8 @@ firetray.Messaging = {
let excludedAccounts = mailAccounts["excludedAccounts"];

this.newMsgCount = 0;
let accounts = new this.Accounts();
for (let accountServer in accounts) { // nsIMsgIncomingServer
let accounts = firetray.Messaging.Accounts();
for (let accountServer of accounts) { // nsIMsgIncomingServer

if (accountServer.type === FIRETRAY_ACCOUNT_SERVER_TYPE_IM) {
continue; // IM messages are counted elsewhere
Expand Down Expand Up @@ -365,32 +365,27 @@ firetray.Messaging = {
* @param sortByTypeAndName: boolean
* @return a generator over all nsIMsgIncomingServer including hidden and IM ones
*/
firetray.Messaging.Accounts = function(sortByTypeAndName) {
firetray.Messaging.Accounts = function*(sortByTypeAndName) {
if (typeof(sortByTypeAndName) == "undefined") {
this.sortByTypeAndName = false;
return;
}
if (typeof(sortByTypeAndName) !== "boolean")
sortByTypeAndName = false;
} else if (typeof(sortByTypeAndName) !== "boolean") {
throw new TypeError();
}

this.sortByTypeAndName = sortByTypeAndName;
};

firetray.Messaging.Accounts.prototype.__iterator__ = function() {
log.debug("sortByTypeAndName="+this.sortByTypeAndName);
log.debug("sortByTypeAndName=" + sortByTypeAndName);

/* NOTE: sort() not provided by nsIMsgAccountManager.accounts
(nsISupportsArray or nsIArray if xulrunner >= 20.0). Should be OK to
re-build a JS-Array for few accounts */
let accountServers = [];
for (let accountServer in fixIterator(MailServices.accounts.accounts,
for (let accountServer of fixIterator(MailServices.accounts.accounts,
Ci.nsIMsgAccount)) {
accountServers.push(accountServer.incomingServer);
}

let mailAccounts = firetray.Utils.getObjPref('mail_accounts');
let serverTypes = mailAccounts["serverTypes"];
if (this.sortByTypeAndName) {
if (sortByTypeAndName) {
accountServers.sort(function(a,b) {
if (serverTypes[a.type].order
< serverTypes[b.type].order)
Expand Down Expand Up @@ -419,8 +414,8 @@ firetray.Messaging.Accounts.prototype.__iterator__ = function() {
*/
firetray.Messaging.accountsByServerType = function() {
let accountsByServerType = {};
let accounts = new firetray.Messaging.Accounts(false);
for (let accountServer in accounts) {
let accounts = firetray.Messaging.Accounts(false);
for (let accountServer of accounts) {
let accountServerKey = accountServer.key.toString();
let accountServerName = accountServer.prettyName;
let accountServerType = accountServer.type;
Expand Down
2 changes: 1 addition & 1 deletion src/modules/FiretrayWindow.jsm
Expand Up @@ -5,7 +5,7 @@ var EXPORTED_SYMBOLS = [ "FiretrayWindow" ];

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cu = ChromeUtils;

Cu.import("resource://firetray/commons.js");

Expand Down
2 changes: 1 addition & 1 deletion src/modules/PrefListener.jsm
Expand Up @@ -5,7 +5,7 @@ var EXPORTED_SYMBOLS = [ "PrefListener" ];

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cu = ChromeUtils;


/**
Expand Down
2 changes: 1 addition & 1 deletion src/modules/VersionChange.jsm
Expand Up @@ -2,7 +2,7 @@ var EXPORTED_SYMBOLS = [ "VersionChange" ];

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cu = ChromeUtils;

Cu.import("resource://gre/modules/AddonManager.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Expand Down
13 changes: 6 additions & 7 deletions src/modules/commons.js
Expand Up @@ -20,7 +20,7 @@ var EXPORTED_SYMBOLS =

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cu = ChromeUtils;

Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://firetray/logging.jsm");
Expand Down Expand Up @@ -183,7 +183,7 @@ firetray.Utils = {
},

QueryInterfaces: function(obj) {
for each (i in Components.interfaces)
for (i of Components.interfaces)
try {
if (obj instanceof i) log.debug (i);
} catch(x) {}
Expand Down Expand Up @@ -230,22 +230,21 @@ firetray.Utils = {
XPath: function(ref, xpath) {
var doc = ref.ownerDocument || ref;

const XPathResult = Ci.nsIDOMXPathResult;
try {
let that = this;
var result = doc.evaluate(xpath, ref, that._nsResolver,
XPathResult.ANY_TYPE, null);
0 /* XPathResult.ANY_TYPE */, null);
} catch (x) {
log.error(x);
}
log.debug("XPathResult="+result.resultType);

switch (result.resultType) {
case XPathResult.NUMBER_TYPE:
case result.NUMBER_TYPE:
return result.numberValue;
case XPathResult.BOOLEAN_TYPE:
case result.BOOLEAN_TYPE:
return result.booleanValue;
case XPathResult.STRING_TYPE:
case result.STRING_TYPE:
return result.stringValue;
} // else XPathResult.UNORDERED_NODE_ITERATOR_TYPE:

Expand Down
8 changes: 4 additions & 4 deletions src/modules/ctypes/ctypes-utils.jsm
Expand Up @@ -38,7 +38,7 @@

var EXPORTED_SYMBOLS = [ "ctypes_library", "is64bit", "WinCbABI" ];

const Cu = Components.utils;
const Cu = ChromeUtils;

Cu.import("resource://gre/modules/ctypes.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Expand Down Expand Up @@ -117,7 +117,7 @@ function ctypes_library(aName, aABIs, aDefines, aGlobal) {

var library;
this.ABI = -1;
for each (let abi in aABIs) {
for (let abi of aABIs) {
// FIXME: ABI is in fact SO_VER. Now we're mixing .so versions and the
// .dll extension :(
let libname = abi === 'dll' ? aName :
Expand Down Expand Up @@ -161,15 +161,15 @@ function ctypes_library(aName, aABIs, aDefines, aGlobal) {
let lib = {
declare: function() {
try {
args = [];
let args = [];
args.push(arguments[0]);
// FIXME: ugly hack. We'll see when we need WinCbABI
if (this.ABI === 'dll') {
args.push(WinABI);
} else {
args.push(ctypes.default_abi);
}
for each (let arg in Array.prototype.slice.call(arguments, 1)) {
for (let arg of Array.prototype.slice.call(arguments, 1)) {
args.push(arg);
}

Expand Down
2 changes: 1 addition & 1 deletion src/modules/ctypes/ctypesMap.jsm
Expand Up @@ -4,7 +4,7 @@ var EXPORTED_SYMBOLS = [ "ctypesMap", "FIRETRAY_WINDOW_COUNT_MAX", "DeleteError"

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cu = ChromeUtils;

Cu.import("resource://gre/modules/ctypes.jsm");
Cu.import("resource://firetray/logging.jsm");
Expand Down