* add chat_icon_enable pref
* fix globaluserStatus with all IM accounts disconnected * cleaning
This commit is contained in:
parent
06349f15f4
commit
693611c994
|
@ -5,6 +5,7 @@ const Ci = Components.interfaces;
|
||||||
const Cu = Components.utils;
|
const Cu = Components.utils;
|
||||||
|
|
||||||
Cu.import("resource://firetray/FiretrayHandler.jsm");
|
Cu.import("resource://firetray/FiretrayHandler.jsm");
|
||||||
|
Cu.import("resource://firetray/FiretrayChat.jsm");
|
||||||
Cu.import("resource://firetray/commons.js");
|
Cu.import("resource://firetray/commons.js");
|
||||||
|
|
||||||
const TREEROW_ACCOUNT_OR_SERVER_TYPE_NAME = 0;
|
const TREEROW_ACCOUNT_OR_SERVER_TYPE_NAME = 0;
|
||||||
|
@ -592,6 +593,14 @@ var firetrayUIOptions = {
|
||||||
if (!/\d/.test(charStr))
|
if (!/\d/.test(charStr))
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
toggleChat: function(enabled) {
|
||||||
|
F.LOG("Chat icon enable="+enabled);
|
||||||
|
if (enabled)
|
||||||
|
firetray.Chat.init();
|
||||||
|
else
|
||||||
|
firetray.Chat.shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
<preference id="pref_app_icon_filename" name="extensions.firetray.app_icon_filename" type="string"/>
|
<preference id="pref_app_icon_filename" name="extensions.firetray.app_icon_filename" type="string"/>
|
||||||
<preference id="pref_scroll_hides" name="extensions.firetray.scroll_hides" type="bool" />
|
<preference id="pref_scroll_hides" name="extensions.firetray.scroll_hides" type="bool" />
|
||||||
<preference id="pref_scroll_mode" name="extensions.firetray.scroll_mode" type="string" />
|
<preference id="pref_scroll_mode" name="extensions.firetray.scroll_mode" type="string" />
|
||||||
|
<preference id="pref_chat_icon_enable" name="extensions.firetray.chat_icon_enable" type="bool" />
|
||||||
<preference id="pref_mail_notification_enabled" name="extensions.firetray.mail_notification_enabled" type="bool" />
|
<preference id="pref_mail_notification_enabled" name="extensions.firetray.mail_notification_enabled" type="bool" />
|
||||||
<preference id="pref_folder_count_recursive" name="extensions.firetray.folder_count_recursive" type="bool" />
|
<preference id="pref_folder_count_recursive" name="extensions.firetray.folder_count_recursive" type="bool" />
|
||||||
<preference id="pref_message_count_type" name="extensions.firetray.message_count_type" type="int" />
|
<preference id="pref_message_count_type" name="extensions.firetray.message_count_type" type="int" />
|
||||||
|
@ -44,6 +45,7 @@
|
||||||
<tab label="&windows_options;"/>
|
<tab label="&windows_options;"/>
|
||||||
<tab label="&icon_options;"/>
|
<tab label="&icon_options;"/>
|
||||||
<tab label="&mail_options;" id="mail_tab" />
|
<tab label="&mail_options;" id="mail_tab" />
|
||||||
|
<tab label="&chat_options;" />
|
||||||
</tabs>
|
</tabs>
|
||||||
<tabpanels flex="1">
|
<tabpanels flex="1">
|
||||||
|
|
||||||
|
@ -51,27 +53,27 @@
|
||||||
<vbox pack="start" align="left" flex="1">
|
<vbox pack="start" align="left" flex="1">
|
||||||
|
|
||||||
<checkbox id="ui_hides_on_close" preference="pref_hides_on_close"
|
<checkbox id="ui_hides_on_close" preference="pref_hides_on_close"
|
||||||
label="&bool_hides_on_close.label;"
|
label="&hides_on_close.label;"
|
||||||
accesskey="&bool_hides_on_close.accesskey;"
|
accesskey="&hides_on_close.accesskey;"
|
||||||
oncommand="firetrayUIOptions.updateWindowAndIconOptions();"/>
|
oncommand="firetrayUIOptions.updateWindowAndIconOptions();"/>
|
||||||
<checkbox id="ui_hides_on_minimize" preference="pref_hides_on_minimize"
|
<checkbox id="ui_hides_on_minimize" preference="pref_hides_on_minimize"
|
||||||
label="&bool_hides_on_minimize.label;"
|
label="&hides_on_minimize.label;"
|
||||||
accesskey="&bool_hides_on_minimize.accesskey;"
|
accesskey="&hides_on_minimize.accesskey;"
|
||||||
oncommand="firetrayUIOptions.updateWindowAndIconOptions();"/>
|
oncommand="firetrayUIOptions.updateWindowAndIconOptions();"/>
|
||||||
<checkbox id="ui_hides_single_window" preference="pref_hides_single_window"
|
<checkbox id="ui_hides_single_window" preference="pref_hides_single_window"
|
||||||
label="&bool_hides_single_window.label;"
|
label="&hides_single_window.label;"
|
||||||
accesskey="&bool_hides_single_window.accesskey;"
|
accesskey="&hides_single_window.accesskey;"
|
||||||
tooltiptext="&bool_hides_single_window.tooltip;"/>
|
tooltiptext="&hides_single_window.tooltip;"/>
|
||||||
<checkbox id="ui_start_hidden" preference="pref_start_hidden"
|
<checkbox id="ui_start_hidden" preference="pref_start_hidden"
|
||||||
label="&bool_start_hidden.label;"
|
label="&start_hidden.label;"
|
||||||
accesskey="&bool_start_hidden.accesskey;"/>
|
accesskey="&start_hidden.accesskey;"/>
|
||||||
<checkbox id="ui_show_activates" preference="pref_show_activates"
|
<checkbox id="ui_show_activates" preference="pref_show_activates"
|
||||||
label="&bool_show_activates.label;"
|
label="&show_activates.label;"
|
||||||
accesskey="&bool_show_activates.accesskey;"
|
accesskey="&show_activates.accesskey;"
|
||||||
tooltiptext="&bool_show_activates.tooltip;"/>
|
tooltiptext="&show_activates.tooltip;"/>
|
||||||
<checkbox id="ui_remember_desktop" preference="pref_remember_desktop"
|
<checkbox id="ui_remember_desktop" preference="pref_remember_desktop"
|
||||||
label="&bool_remember_desktop.label;"
|
label="&remember_desktop.label;"
|
||||||
accesskey="&bool_remember_desktop.accesskey;"/>
|
accesskey="&remember_desktop.accesskey;"/>
|
||||||
|
|
||||||
</vbox>
|
</vbox>
|
||||||
</tabpanel>
|
</tabpanel>
|
||||||
|
@ -113,8 +115,8 @@
|
||||||
</radiogroup>
|
</radiogroup>
|
||||||
|
|
||||||
<checkbox id="ui_show_icon_on_hide" preference="pref_show_icon_on_hide"
|
<checkbox id="ui_show_icon_on_hide" preference="pref_show_icon_on_hide"
|
||||||
label="&bool_show_icon_on_hide.label;"
|
label="&show_icon_on_hide.label;"
|
||||||
accesskey="&bool_show_icon_on_hide.accesskey;"/>
|
accesskey="&show_icon_on_hide.accesskey;"/>
|
||||||
|
|
||||||
<checkbox id="ui_scroll_hides" preference="pref_scroll_hides"
|
<checkbox id="ui_scroll_hides" preference="pref_scroll_hides"
|
||||||
label="&enable_mouse_scroll.label;"
|
label="&enable_mouse_scroll.label;"
|
||||||
|
@ -278,6 +280,17 @@
|
||||||
</vbox>
|
</vbox>
|
||||||
</tabpanel>
|
</tabpanel>
|
||||||
|
|
||||||
|
<tabpanel id="chat_tabpanel" flex="1">
|
||||||
|
<vbox align="left" flex="1">
|
||||||
|
|
||||||
|
<checkbox id="ui_chat_icon_enable" preference="pref_chat_icon_enable"
|
||||||
|
label="&chat_icon_enable.label;"
|
||||||
|
accesskey="&chat_icon_enable.accesskey;"
|
||||||
|
oncommand="firetrayUIOptions.toggleChat(this.checked);"/>
|
||||||
|
|
||||||
|
</vbox>
|
||||||
|
</tabpanel>
|
||||||
|
|
||||||
</tabpanels>
|
</tabpanels>
|
||||||
</tabbox>
|
</tabbox>
|
||||||
|
|
||||||
|
|
|
@ -7,24 +7,25 @@
|
||||||
<!ENTITY windows_options "Windows">
|
<!ENTITY windows_options "Windows">
|
||||||
<!ENTITY icon_options "Icon">
|
<!ENTITY icon_options "Icon">
|
||||||
<!ENTITY mail_options "Mail">
|
<!ENTITY mail_options "Mail">
|
||||||
|
<!ENTITY chat_options "Chat">
|
||||||
|
|
||||||
<!ENTITY bool_hides_on_close.label "Closing window hides to tray">
|
<!ENTITY hides_on_close.label "Closing window hides to tray">
|
||||||
<!ENTITY bool_hides_on_close.accesskey "C">
|
<!ENTITY hides_on_close.accesskey "C">
|
||||||
<!ENTITY bool_hides_on_minimize.label "Minimizing window hides to tray">
|
<!ENTITY hides_on_minimize.label "Minimizing window hides to tray">
|
||||||
<!ENTITY bool_hides_on_minimize.accesskey "M">
|
<!ENTITY hides_on_minimize.accesskey "M">
|
||||||
<!ENTITY bool_hides_single_window.label "Hide windows individually">
|
<!ENTITY hides_single_window.label "Hide windows individually">
|
||||||
<!ENTITY bool_hides_single_window.tooltip "not all windows at once">
|
<!ENTITY hides_single_window.tooltip "not all windows at once">
|
||||||
<!ENTITY bool_hides_single_window.accesskey "H">
|
<!ENTITY hides_single_window.accesskey "H">
|
||||||
<!ENTITY bool_start_hidden.label "Start application hidden to tray">
|
<!ENTITY start_hidden.label "Start application hidden to tray">
|
||||||
<!ENTITY bool_start_hidden.accesskey "S">
|
<!ENTITY start_hidden.accesskey "S">
|
||||||
<!ENTITY bool_show_activates.label "Activate restored windows">
|
<!ENTITY show_activates.label "Activate restored windows">
|
||||||
<!ENTITY bool_show_activates.accesskey "e">
|
<!ENTITY show_activates.accesskey "e">
|
||||||
<!ENTITY bool_show_activates.tooltip "restored windows raise on top and get focus">
|
<!ENTITY show_activates.tooltip "restored windows raise on top and get focus">
|
||||||
<!ENTITY bool_remember_desktop.label "Remember desktop (per-window)">
|
<!ENTITY remember_desktop.label "Remember desktop (per-window)">
|
||||||
<!ENTITY bool_remember_desktop.accesskey "R">
|
<!ENTITY remember_desktop.accesskey "R">
|
||||||
|
|
||||||
<!ENTITY bool_show_icon_on_hide.label "Show tray icon only if a window is hidden">
|
<!ENTITY show_icon_on_hide.label "Show tray icon only if a window is hidden">
|
||||||
<!ENTITY bool_show_icon_on_hide.accesskey "w">
|
<!ENTITY show_icon_on_hide.accesskey "w">
|
||||||
<!ENTITY app_icon_type "Application icon type">
|
<!ENTITY app_icon_type "Application icon type">
|
||||||
<!ENTITY app_icon_themed.label "Default themed">
|
<!ENTITY app_icon_themed.label "Default themed">
|
||||||
<!ENTITY app_icon_themed.accesskey "D">
|
<!ENTITY app_icon_themed.accesskey "D">
|
||||||
|
@ -77,3 +78,6 @@
|
||||||
<!ENTITY account_or_server_type_excluded.tooltip "Includes accounts or types into unread messages count">
|
<!ENTITY account_or_server_type_excluded.tooltip "Includes accounts or types into unread messages count">
|
||||||
<!ENTITY account_or_server_type_order "Order">
|
<!ENTITY account_or_server_type_order "Order">
|
||||||
<!ENTITY account_or_server_type_order.tooltip "Order in which mail server types are displayed. Double-clic to edit.">
|
<!ENTITY account_or_server_type_order.tooltip "Order in which mail server types are displayed. Double-clic to edit.">
|
||||||
|
|
||||||
|
<!ENTITY chat_icon_enable.label "Enable chat icon">
|
||||||
|
<!ENTITY chat_icon_enable.accesskey "E">
|
||||||
|
|
|
@ -20,6 +20,7 @@ pref("extensions.firetray.new_mail_icon_names", '["indicator-messages-new", "mai
|
||||||
pref("extensions.firetray.show_icon_on_hide", false);
|
pref("extensions.firetray.show_icon_on_hide", false);
|
||||||
pref("extensions.firetray.scroll_hides", true);
|
pref("extensions.firetray.scroll_hides", true);
|
||||||
pref("extensions.firetray.scroll_mode", "down_hides");
|
pref("extensions.firetray.scroll_mode", "down_hides");
|
||||||
|
pref("extensions.firetray.chat_icon_enable", true);
|
||||||
|
|
||||||
pref("extensions.firetray.message_count_type", 0);
|
pref("extensions.firetray.message_count_type", 0);
|
||||||
pref("extensions.firetray.mail_notification_enabled", true);
|
pref("extensions.firetray.mail_notification_enabled", true);
|
||||||
|
|
|
@ -10,7 +10,6 @@ Cu.import("resource:///modules/imServices.jsm");
|
||||||
Cu.import("resource://firetray/commons.js");
|
Cu.import("resource://firetray/commons.js");
|
||||||
Cu.import("resource://firetray/linux/FiretrayChatStatusIcon.jsm");
|
Cu.import("resource://firetray/linux/FiretrayChatStatusIcon.jsm");
|
||||||
|
|
||||||
// FIXME: rename to firetray.Chat
|
|
||||||
firetray.Chat = {
|
firetray.Chat = {
|
||||||
initialized: false,
|
initialized: false,
|
||||||
observedTopics: {},
|
observedTopics: {},
|
||||||
|
@ -118,27 +117,32 @@ firetray.Chat = {
|
||||||
},
|
},
|
||||||
|
|
||||||
updateIcon: function() {
|
updateIcon: function() {
|
||||||
let userStatus = Services.core.globalUserStatus.statusType;
|
let globalConnectedStatus = this.globalConnectedStatus();
|
||||||
|
let userStatus;
|
||||||
|
if (globalConnectedStatus)
|
||||||
|
userStatus = Services.core.globalUserStatus.statusType;
|
||||||
|
else
|
||||||
|
userStatus = Ci.imIStatusInfo.STATUS_OFFLINE;
|
||||||
F.LOG("IM status="+userStatus);
|
F.LOG("IM status="+userStatus);
|
||||||
|
|
||||||
let iconName;
|
let iconName;
|
||||||
switch (userStatus) {
|
switch (userStatus) {
|
||||||
case Ci.imIStatusInfo.STATUS_OFFLINE:
|
case Ci.imIStatusInfo.STATUS_OFFLINE: // 1
|
||||||
iconName = FIRETRAY_IM_STATUS_OFFLINE;
|
iconName = FIRETRAY_IM_STATUS_OFFLINE;
|
||||||
break;
|
break;
|
||||||
case Ci.imIStatusInfo.STATUS_IDLE:
|
case Ci.imIStatusInfo.STATUS_IDLE: // 4
|
||||||
case Ci.imIStatusInfo.STATUS_AWAY:
|
case Ci.imIStatusInfo.STATUS_AWAY: // 5
|
||||||
iconName = FIRETRAY_IM_STATUS_AWAY;
|
iconName = FIRETRAY_IM_STATUS_AWAY;
|
||||||
break;
|
break;
|
||||||
case Ci.imIStatusInfo.STATUS_AVAILABLE:
|
case Ci.imIStatusInfo.STATUS_AVAILABLE: // 7
|
||||||
iconName = FIRETRAY_IM_STATUS_AVAILABLE;
|
iconName = FIRETRAY_IM_STATUS_AVAILABLE;
|
||||||
break;
|
break;
|
||||||
case Ci.imIStatusInfo.STATUS_UNAVAILABLE:
|
case Ci.imIStatusInfo.STATUS_UNAVAILABLE: // 6
|
||||||
iconName = FIRETRAY_IM_STATUS_BUSY;
|
iconName = FIRETRAY_IM_STATUS_BUSY;
|
||||||
break;
|
break;
|
||||||
case Ci.imIStatusInfo.STATUS_UNKNOWN:
|
case Ci.imIStatusInfo.STATUS_UNKNOWN: // 0
|
||||||
case Ci.imIStatusInfo.STATUS_INVISIBLE:
|
case Ci.imIStatusInfo.STATUS_INVISIBLE: // 2
|
||||||
case Ci.imIStatusInfo.STATUS_MOBILE:
|
case Ci.imIStatusInfo.STATUS_MOBILE: // 3
|
||||||
default:
|
default:
|
||||||
// ignore
|
// ignore
|
||||||
}
|
}
|
||||||
|
@ -146,6 +150,18 @@ firetray.Chat = {
|
||||||
F.LOG("IM status changed="+iconName);
|
F.LOG("IM status changed="+iconName);
|
||||||
if (iconName)
|
if (iconName)
|
||||||
firetray.ChatStatusIcon.setIconImage(iconName);
|
firetray.ChatStatusIcon.setIconImage(iconName);
|
||||||
|
},
|
||||||
|
|
||||||
|
globalConnectedStatus: function() {
|
||||||
|
let accounts = Services.accounts.getAccounts();
|
||||||
|
let globalConnected = false;
|
||||||
|
while (accounts.hasMoreElements()) {
|
||||||
|
let account = accounts.getNext().QueryInterface(Ci.imIAccount);
|
||||||
|
F.LOG("account="+account+" STATUS="+account.statusInfo.statusType+" connected="+account.connected);
|
||||||
|
globalConnected = globalConnected || account.connected;
|
||||||
|
}
|
||||||
|
F.LOG("globalConnected="+globalConnected);
|
||||||
|
return globalConnected;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,8 +43,9 @@ firetray.Messaging = {
|
||||||
MailServices.mailSession.AddFolderListener(that.mailSessionListener,
|
MailServices.mailSession.AddFolderListener(that.mailSessionListener,
|
||||||
that.mailSessionListener.notificationFlags);
|
that.mailSessionListener.notificationFlags);
|
||||||
|
|
||||||
// FIXME: add im-icon pref
|
if (Services.prefs.getBoolPref("mail.chat.enabled") &&
|
||||||
if (Services.prefs.getBoolPref("mail.chat.enabled") && this.existsIMAccount())
|
firetray.Utils.prefService.getBoolPref("chat_icon_enable") &&
|
||||||
|
this.existsChatAccount())
|
||||||
firetray.Chat.init();
|
firetray.Chat.init();
|
||||||
|
|
||||||
this.initialized = true;
|
this.initialized = true;
|
||||||
|
@ -68,7 +69,7 @@ firetray.Messaging = {
|
||||||
// this._items is undefined' when calling method:
|
// this._items is undefined' when calling method:
|
||||||
// [nsISimpleEnumerator::hasMoreElements]"), and we're unsure if we should
|
// [nsISimpleEnumerator::hasMoreElements]"), and we're unsure if we should
|
||||||
// initAccounts() ourselves...
|
// initAccounts() ourselves...
|
||||||
existsIMAccount: function() {
|
existsChatAccount: function() {
|
||||||
let accounts = new this.Accounts();
|
let accounts = new this.Accounts();
|
||||||
for (let accountServer in accounts)
|
for (let accountServer in accounts)
|
||||||
if (accountServer.type === 'im') {
|
if (accountServer.type === 'im') {
|
||||||
|
@ -84,7 +85,7 @@ firetray.Messaging = {
|
||||||
switch (topic) {
|
switch (topic) {
|
||||||
case "account-removed":
|
case "account-removed":
|
||||||
this.cleanExcludedAccounts();
|
this.cleanExcludedAccounts();
|
||||||
if (subject.QueryInterface(Ci.imIAccount) && !this.existsIMAccount())
|
if (subject.QueryInterface(Ci.imIAccount) && !this.existsChatAccount())
|
||||||
firetray.Chat.shutdown();
|
firetray.Chat.shutdown();
|
||||||
break;
|
break;
|
||||||
case "account-added":
|
case "account-added":
|
||||||
|
|
Loading…
Reference in New Issue