[Pkg-mozext-commits] [firetray] 266/399: add 'im' to mail server types and have VersionChange hooks applied synchronously
David Prévot
taffit at alioth.debian.org
Tue Oct 29 18:23:56 UTC 2013
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch dfsg-clean
in repository firetray.
commit c608058971bda3e34ad4d97103b072253fdf515e
Author: foudfou <foudil.newbie+git at gmail.com>
Date: Fri Aug 3 15:53:36 2012 +0200
add 'im' to mail server types and have VersionChange hooks applied synchronously
This forces us to hard code the addon version :(
---
src/defaults/preferences/prefs.js | 2 +-
src/install.rdf | 2 +-
src/modules/FiretrayHandler.jsm | 47 ++++++++++++++++-----------
src/modules/FiretrayMessaging.jsm | 4 +--
src/modules/VersionChange.jsm | 64 ++++++++++++++++++++++++-------------
src/modules/commons.js | 20 ++++++------
6 files changed, 85 insertions(+), 54 deletions(-)
diff --git a/src/defaults/preferences/prefs.js b/src/defaults/preferences/prefs.js
index e02085b..89e27b5 100644
--- a/src/defaults/preferences/prefs.js
+++ b/src/defaults/preferences/prefs.js
@@ -31,4 +31,4 @@ pref("extensions.firetray.folder_count_recursive", true);
// Ci.nsMsgFolderFlags.Archive|Drafts|Junk|Queue|SentMail|Trash|Virtual
pref("extensions.firetray.excluded_folders_flags", 1077956384);
// exposed in 1 tree, hence 2 branches: serverTypes, excludedAccounts
-pref("extensions.firetray.mail_accounts", '{ "serverTypes": {"pop3":{"order":1,"excluded":false}, "imap":{"order":1,"excluded":false}, "movemail":{"order":2,"excluded":true}, "none":{"order":3,"excluded":false}, "rss":{"order":4,"excluded":true}, "nntp":{"order":5,"excluded":true}}, "excludedAccounts": [] }'); // JSON
+pref("extensions.firetray.mail_accounts", '{ "serverTypes": {"pop3":{"order":1,"excluded":false}, "imap":{"order":1,"excluded":false}, "movemail":{"order":2,"excluded":true}, "none":{"order":3,"excluded":false}, "rss":{"order":4,"excluded":true}, "nntp":{"order":5,"excluded":true}, "im":{"order":6,"excluded":true}}, "excludedAccounts": [] }'); // JSON
diff --git a/src/install.rdf b/src/install.rdf
index e6aa128..b8f9633 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -5,7 +5,7 @@
<em:unpack>true</em:unpack> <!-- needed for embedded icons -->
<em:type>2</em:type>
<em:name>FireTray</em:name>
- <em:version>0.4.2</em:version>
+ <em:version>0.4.2</em:version> <!-- change FIRETRAY_VERSION accordingly ! -->
<em:creator>Hua Luo, Francesco Solero, Foudil BRÉTEL</em:creator>
<em:contributor>Hua Luo, Francesco Solero (Firetray original authors)</em:contributor>
<em:homepageURL>https://github.com/foudfou/firetray</em:homepageURL>
diff --git a/src/modules/FiretrayHandler.jsm b/src/modules/FiretrayHandler.jsm
index c64469f..806318e 100644
--- a/src/modules/FiretrayHandler.jsm
+++ b/src/modules/FiretrayHandler.jsm
@@ -27,10 +27,7 @@ if ("undefined" == typeof(firetray)) {
// other global functions
// (https://developer.mozilla.org/en/XUL_School/JavaScript_Object_Management)
firetray.Handler = {
- FILENAME_DEFAULT: null,
- FILENAME_SUFFIX: "32.png",
FILENAME_BLANK: null,
- FILENAME_NEWMAIL: null,
initialized: false,
inMailApp: false,
@@ -77,12 +74,15 @@ firetray.Handler = {
this.inBrowserApp = true;
F.LOG('inMailApp: '+this.inMailApp+', inBrowserApp: '+this.inBrowserApp);
- this.FILENAME_DEFAULT = firetray.Utils.chromeToPath(
- "chrome://firetray/skin/" + this.appName.toLowerCase() + this.FILENAME_SUFFIX);
this.FILENAME_BLANK = firetray.Utils.chromeToPath(
"chrome://firetray/skin/blank-icon.png");
- this.FILENAME_NEWMAIL = firetray.Utils.chromeToPath(
- "chrome://firetray/skin/message-mail-new.png");
+
+ VersionChange.init(FIRETRAY_ID, FIRETRAY_VERSION, FIRETRAY_PREF_BRANCH);
+ VersionChange.addHook(["install", "upgrade", "reinstall"], firetray.VersionChangeHandler.showReleaseNotes);
+ VersionChange.addHook(["upgrade", "reinstall"], firetray.VersionChangeHandler.tryEraseOldOptions);
+ VersionChange.addHook(["upgrade", "reinstall"], firetray.VersionChangeHandler.correctMailNotificationType);
+ VersionChange.addHook(["upgrade", "reinstall"], firetray.VersionChangeHandler.addIMServerTypePrefMaybe);
+ VersionChange.applyHooksAndWatchUninstall();
firetray.StatusIcon.init();
firetray.Handler.showHideIcon();
@@ -105,11 +105,6 @@ firetray.Handler = {
Services.obs.addObserver(this, "xpcom-will-shutdown", false);
Services.obs.addObserver(this, "profile-change-teardown", false);
- VersionChange.addHook(["install", "upgrade", "reinstall"], firetray.VersionChangeHandler.showReleaseNotes);
- VersionChange.addHook(["upgrade", "reinstall"], firetray.VersionChangeHandler.tryEraseOldOptions);
- VersionChange.addHook(["upgrade", "reinstall"], firetray.VersionChangeHandler.correctMailNotificationType);
- VersionChange.watch();
-
this.preventWarnOnClose();
this.initialized = true;
@@ -348,10 +343,10 @@ firetray.PrefListener = new PrefListener(
firetray.VersionChangeHandler = {
- showReleaseNotes: function(ver) {
- firetray.Handler.openTab(FIRETRAY_SPLASH_PAGE+"#v"+ver);
- firetray.Handler.tryEraseOldOptions();
- firetray.Handler.correctMailNotificationType();
+ showReleaseNotes: function() {
+ firetray.VersionChangeHandler.openTab(FIRETRAY_SPLASH_PAGE+"#v"+FIRETRAY_VERSION);
+ firetray.VersionChangeHandler.tryEraseOldOptions();
+ firetray.VersionChangeHandler.correctMailNotificationType();
},
openTab: function(url) {
@@ -412,16 +407,32 @@ firetray.VersionChangeHandler = {
for (let i = 0, length = oldOptions.length; i<length; ++i) {
try {
- firetray.Utils.prefService.clearUserPref(oldOptions[i]);
+ let option = oldOptions[i];
+ firetray.Utils.prefService.clearUserPref(option);
} catch (x) {}
}
},
correctMailNotificationType: function() {
if (firetray.Utils.prefService.getIntPref('message_count_type') ===
- FIRETRAY_MESSAGE_COUNT_TYPE_NEW)
+ FIRETRAY_MESSAGE_COUNT_TYPE_NEW) {
firetray.Utils.prefService.setIntPref('mail_notification_type',
FIRETRAY_NOTIFICATION_NEWMAIL_ICON);
+ F.WARN("mail notification type set to newmail icon.");
+ }
+ },
+
+ addIMServerTypePrefMaybe: function() {
+ let mailAccounts = firetray.Utils.getObjPref('mail_accounts');
+ let serverTypes = mailAccounts["serverTypes"];
+
+ if (!serverTypes["im"])
+ serverTypes["im"] = {"order":6,"excluded":true};
+
+ let prefObj = {"serverTypes":serverTypes, "excludedAccounts":mailAccounts["excludedAccounts"]};
+ firetray.Utils.setObjPref('mail_accounts', prefObj);
+
+ F.WARN("server type 'im' added to prefs.");
}
};
diff --git a/src/modules/FiretrayMessaging.jsm b/src/modules/FiretrayMessaging.jsm
index c362a39..66dcf0e 100644
--- a/src/modules/FiretrayMessaging.jsm
+++ b/src/modules/FiretrayMessaging.jsm
@@ -234,8 +234,8 @@ firetray.Messaging = {
let accounts = new this.Accounts();
for (let accountServer in accounts) {
F.LOG("is servertype excluded: "+serverTypes[accountServer.type].excluded+", account exclusion index: "+excludedAccounts.indexOf(accountServer.key));
- if ( (serverTypes[accountServer.type].excluded)
- || (excludedAccounts.indexOf(accountServer.key) >= 0) )
+ if (serverTypes[accountServer.type].excluded ||
+ (excludedAccounts.indexOf(accountServer.key) >= 0))
continue;
let rootFolder = accountServer.rootFolder; // nsIMsgFolder
diff --git a/src/modules/VersionChange.jsm b/src/modules/VersionChange.jsm
index 8fa7730..04fd1b7 100644
--- a/src/modules/VersionChange.jsm
+++ b/src/modules/VersionChange.jsm
@@ -5,7 +5,8 @@ const Ci = Components.interfaces;
const Cu = Components.utils;
Cu.import("resource://gre/modules/AddonManager.jsm");
-Cu.import("resource://firetray/commons.js");
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://firetray/logging.jsm");
/**
@@ -14,14 +15,27 @@ Cu.import("resource://firetray/commons.js");
*/
var VersionChange = {
- curVersion: null,
+ initialized: false,
+ addonId: null,
+ addonVersion: null,
+ addOnPrefs: null,
+
+ init: function(id, version, prefBranch) {
+ F.LOG("VersionChange got: id="+id+" ver="+version+" prefBranch="+prefBranch);
+ this.addOnId = id;
+ this.addonVersion = version;
+ this.addOnPrefs = Services.prefs.getBranch(prefBranch);
+
+ this.initialized = true;
+ },
versionComparator: Cc["@mozilla.org/xpcom/version-comparator;1"]
.getService(Ci.nsIVersionComparator),
- watch: function() {
+ applyHooksAndWatchUninstall: function() {
+ if (!this.initialized) throw "VersionChange not initialized";
+ this.onVersionChange(this.addonVersion); // AddonManager.getAddonByID() async, whereas we need sync call
AddonManager.addAddonListener(this.uninstallListener);
- AddonManager.getAddonByID(FIRETRAY_ID, this.onVersionChange.bind(this));
F.LOG("version change watching enabled");
},
@@ -29,22 +43,21 @@ var VersionChange = {
// detect reinstall later
uninstallListener: {
onUninstalling: function(addon) {
- if (addon.id !== FIRETRAY_ID) return;
- firetray.Utils.prefService.clearUserPref("installedVersion");
+ if (addon.id !== this.addonId) return;
+ this.addOnPrefs.clearUserPref("installedVersion");
},
onOperationCancelled: function(addon) {
- if (addon.id !== FIRETRAY_ID) return;
+ if (addon.id !== this.addonId) return;
let beingUninstalled = (addon.pendingOperations & AddonManager.PENDING_UNINSTALL) != 0;
if (beingUninstalled)
- firetray.Utils.prefService.clearUserPref("installedVersion");
+ this.addOnPrefs.clearUserPref("installedVersion");
}
},
- onVersionChange: function(addon) {
- F.LOG("VERSION: "+addon.version);
+ onVersionChange: function() {
+ F.LOG("VERSION: "+this.addonVersion);
- this.curVersion = addon.version;
- var firstrun = firetray.Utils.prefService.getBoolPref("firstrun");
+ var firstrun = this.addOnPrefs.getBoolPref("firstrun");
if (firstrun) {
F.LOG("FIRST RUN");
@@ -53,10 +66,10 @@ var VersionChange = {
} else {
try {
- var installedVersion = firetray.Utils.prefService.getCharPref("installedVersion");
- var versionDelta = this.versionComparator.compare(this.curVersion, installedVersion);
+ var installedVersion = this.addOnPrefs.getCharPref("installedVersion");
+ var versionDelta = this.versionComparator.compare(this.addonVersion, installedVersion);
if (versionDelta > 0) {
- firetray.Utils.prefService.setCharPref("installedVersion", this.curVersion);
+ this.addOnPrefs.setCharPref("installedVersion", this.addonVersion);
F.LOG("UPGRADE");
this._applyHooks("upgrade");
}
@@ -67,17 +80,18 @@ var VersionChange = {
this._applyHooks("reinstall");
}
}
+
},
initPrefs: function() {
- firetray.Utils.prefService.setBoolPref("firstrun", false);
- firetray.Utils.prefService.setCharPref("installedVersion", VersionChange.curVersion);
+ this.addOnPrefs.setBoolPref("firstrun", false);
+ this.addOnPrefs.setCharPref("installedVersion", VersionChange.addonVersion);
},
- _hooks: [], // collection of callbacks {id: 1, categories: [], fun: function}
+ _hooks: [], // collection of callbacks {id: 1, categories: [], fun: function}
addHook: function(categories, fun) {
- if (!firetray.js.isArray(categories)) throw new CategoryError();
+ if (Object.prototype.toString.call(categories) !== "[object Array]") throw new TypeError();
let id = this._hooks.push({})-1;
this._hooks[id] = {id: id, categories: categories, fun: fun};
return id;
@@ -89,10 +103,14 @@ var VersionChange = {
},
_applyHooks: function(category) {
- for (let i=0,len=this._hooks.length; i<len; ++i) {
- let cb = this._hooks[i];
- if (cb.categories.indexOf(category)) cb.fun(this.curVersion);
- }
+ try {
+ F.LOG("_hooks.len="+this._hooks.length+" category="+category);
+ for (let i=0,len=this._hooks.length; i<len; ++i) {
+ let cb = this._hooks[i];
+ if (cb.categories.indexOf(category) > -1) cb.fun();
+ else F.LOG("cb id="+cb.id+" not in category: "+cb.categories+"\n"+cb.fun);
+ }
+ } catch(x){F.ERROR(x);}
}
};
diff --git a/src/modules/commons.js b/src/modules/commons.js
index 47e7caa..ac64ed6 100644
--- a/src/modules/commons.js
+++ b/src/modules/commons.js
@@ -3,8 +3,8 @@
/* for now, logging facilities (imported from logging.jsm) are automatically
provided by this module */
var EXPORTED_SYMBOLS =
- [ "firetray", "F", "FIRETRAY_ID", "FIRETRAY_SPLASH_PAGE",
- "FIRETRAY_APPLICATION_ICON_TYPE_THEMED",
+ [ "firetray", "F", "FIRETRAY_ID", "FIRETRAY_VERSION", "FIRETRAY_PREF_BRANCH",
+ "FIRETRAY_SPLASH_PAGE", "FIRETRAY_APPLICATION_ICON_TYPE_THEMED",
"FIRETRAY_APPLICATION_ICON_TYPE_CUSTOM",
"FIRETRAY_NOTIFICATION_UNREAD_MESSAGE_COUNT",
"FIRETRAY_NOTIFICATION_NEWMAIL_ICON", "FIRETRAY_NOTIFICATION_CUSTOM_ICON",
@@ -20,11 +20,16 @@ const Cu = Components.utils;
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://firetray/logging.jsm");
+const FIRETRAY_VERSION = "0.4.2"; // needed for sync call of onVersionChange() :(
+const FIRETRAY_PREF_BRANCH = "extensions.firetray.";
const FIRETRAY_ID = "{9533f794-00b4-4354-aa15-c2bbda6989f8}";
const FIRETRAY_SPLASH_PAGE = "http://foudfou.github.com/FireTray/";
-const FIRETRAY_APPLICATION_ICON_TYPE_THEMED = 0;
-const FIRETRAY_APPLICATION_ICON_TYPE_CUSTOM = 1;
+const FIRETRAY_APPLICATION_ICON_TYPE_THEMED = 0;
+const FIRETRAY_APPLICATION_ICON_TYPE_CUSTOM = 1;
+
+const FIRETRAY_MESSAGE_COUNT_TYPE_UNREAD = 0;
+const FIRETRAY_MESSAGE_COUNT_TYPE_NEW = 1;
const FIRETRAY_NOTIFICATION_UNREAD_MESSAGE_COUNT = 0;
const FIRETRAY_NOTIFICATION_NEWMAIL_ICON = 1;
@@ -34,9 +39,6 @@ const FIRETRAY_DELAY_BROWSER_STARTUP_MILLISECONDS = 500;
const FIRETRAY_DELAY_NOWAIT_MILLISECONDS = 0;
const FIRETRAY_DELAY_PREF_CLEANING_MILLISECONDS = 15*60*1000;
-const FIRETRAY_MESSAGE_COUNT_TYPE_UNREAD = 0;
-const FIRETRAY_MESSAGE_COUNT_TYPE_NEW = 1;
-
if ("undefined" == typeof(F)) {
var F = {}; // helper wrapper
};
@@ -57,7 +59,7 @@ if ("undefined" == typeof(firetray)) {
};
firetray.Utils = {
- prefService: Services.prefs.getBranch("extensions.firetray."),
+ prefService: Services.prefs.getBranch(FIRETRAY_PREF_BRANCH),
strings: Services.strings.createBundle("chrome://firetray/locale/overlay.properties"),
getObjPref: function(prefStr) {
@@ -70,7 +72,7 @@ firetray.Utils = {
return objPref;
},
setObjPref: function(prefStr, obj) {
- F.LOG(obj);
+ F.LOG("setObjPref: "+obj);
try {
firetray.Utils.prefService.setCharPref(prefStr, JSON.stringify(obj));
} catch (x) {
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firetray.git
More information about the Pkg-mozext-commits
mailing list