mirror of
https://github.com/moparisthebest/FireTray
synced 2024-08-13 15:53:47 -04:00
* 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;
|
||||
|
||||
Cu.import("resource://firetray/FiretrayHandler.jsm");
|
||||
Cu.import("resource://firetray/FiretrayChat.jsm");
|
||||
Cu.import("resource://firetray/commons.js");
|
||||
|
||||
const TREEROW_ACCOUNT_OR_SERVER_TYPE_NAME = 0;
|
||||
@ -592,6 +593,14 @@ var firetrayUIOptions = {
|
||||
if (!/\d/.test(charStr))
|
||||
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_scroll_hides" name="extensions.firetray.scroll_hides" type="bool" />
|
||||
<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_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" />
|
||||
@ -44,6 +45,7 @@
|
||||
<tab label="&windows_options;"/>
|
||||
<tab label="&icon_options;"/>
|
||||
<tab label="&mail_options;" id="mail_tab" />
|
||||
<tab label="&chat_options;" />
|
||||
</tabs>
|
||||
<tabpanels flex="1">
|
||||
|
||||
@ -51,27 +53,27 @@
|
||||
<vbox pack="start" align="left" flex="1">
|
||||
|
||||
<checkbox id="ui_hides_on_close" preference="pref_hides_on_close"
|
||||
label="&bool_hides_on_close.label;"
|
||||
accesskey="&bool_hides_on_close.accesskey;"
|
||||
label="&hides_on_close.label;"
|
||||
accesskey="&hides_on_close.accesskey;"
|
||||
oncommand="firetrayUIOptions.updateWindowAndIconOptions();"/>
|
||||
<checkbox id="ui_hides_on_minimize" preference="pref_hides_on_minimize"
|
||||
label="&bool_hides_on_minimize.label;"
|
||||
accesskey="&bool_hides_on_minimize.accesskey;"
|
||||
label="&hides_on_minimize.label;"
|
||||
accesskey="&hides_on_minimize.accesskey;"
|
||||
oncommand="firetrayUIOptions.updateWindowAndIconOptions();"/>
|
||||
<checkbox id="ui_hides_single_window" preference="pref_hides_single_window"
|
||||
label="&bool_hides_single_window.label;"
|
||||
accesskey="&bool_hides_single_window.accesskey;"
|
||||
tooltiptext="&bool_hides_single_window.tooltip;"/>
|
||||
label="&hides_single_window.label;"
|
||||
accesskey="&hides_single_window.accesskey;"
|
||||
tooltiptext="&hides_single_window.tooltip;"/>
|
||||
<checkbox id="ui_start_hidden" preference="pref_start_hidden"
|
||||
label="&bool_start_hidden.label;"
|
||||
accesskey="&bool_start_hidden.accesskey;"/>
|
||||
label="&start_hidden.label;"
|
||||
accesskey="&start_hidden.accesskey;"/>
|
||||
<checkbox id="ui_show_activates" preference="pref_show_activates"
|
||||
label="&bool_show_activates.label;"
|
||||
accesskey="&bool_show_activates.accesskey;"
|
||||
tooltiptext="&bool_show_activates.tooltip;"/>
|
||||
label="&show_activates.label;"
|
||||
accesskey="&show_activates.accesskey;"
|
||||
tooltiptext="&show_activates.tooltip;"/>
|
||||
<checkbox id="ui_remember_desktop" preference="pref_remember_desktop"
|
||||
label="&bool_remember_desktop.label;"
|
||||
accesskey="&bool_remember_desktop.accesskey;"/>
|
||||
label="&remember_desktop.label;"
|
||||
accesskey="&remember_desktop.accesskey;"/>
|
||||
|
||||
</vbox>
|
||||
</tabpanel>
|
||||
@ -113,8 +115,8 @@
|
||||
</radiogroup>
|
||||
|
||||
<checkbox id="ui_show_icon_on_hide" preference="pref_show_icon_on_hide"
|
||||
label="&bool_show_icon_on_hide.label;"
|
||||
accesskey="&bool_show_icon_on_hide.accesskey;"/>
|
||||
label="&show_icon_on_hide.label;"
|
||||
accesskey="&show_icon_on_hide.accesskey;"/>
|
||||
|
||||
<checkbox id="ui_scroll_hides" preference="pref_scroll_hides"
|
||||
label="&enable_mouse_scroll.label;"
|
||||
@ -278,6 +280,17 @@
|
||||
</vbox>
|
||||
</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>
|
||||
</tabbox>
|
||||
|
||||
|
@ -7,24 +7,25 @@
|
||||
<!ENTITY windows_options "Windows">
|
||||
<!ENTITY icon_options "Icon">
|
||||
<!ENTITY mail_options "Mail">
|
||||
<!ENTITY chat_options "Chat">
|
||||
|
||||
<!ENTITY bool_hides_on_close.label "Closing window hides to tray">
|
||||
<!ENTITY bool_hides_on_close.accesskey "C">
|
||||
<!ENTITY bool_hides_on_minimize.label "Minimizing window hides to tray">
|
||||
<!ENTITY bool_hides_on_minimize.accesskey "M">
|
||||
<!ENTITY bool_hides_single_window.label "Hide windows individually">
|
||||
<!ENTITY bool_hides_single_window.tooltip "not all windows at once">
|
||||
<!ENTITY bool_hides_single_window.accesskey "H">
|
||||
<!ENTITY bool_start_hidden.label "Start application hidden to tray">
|
||||
<!ENTITY bool_start_hidden.accesskey "S">
|
||||
<!ENTITY bool_show_activates.label "Activate restored windows">
|
||||
<!ENTITY bool_show_activates.accesskey "e">
|
||||
<!ENTITY bool_show_activates.tooltip "restored windows raise on top and get focus">
|
||||
<!ENTITY bool_remember_desktop.label "Remember desktop (per-window)">
|
||||
<!ENTITY bool_remember_desktop.accesskey "R">
|
||||
<!ENTITY hides_on_close.label "Closing window hides to tray">
|
||||
<!ENTITY hides_on_close.accesskey "C">
|
||||
<!ENTITY hides_on_minimize.label "Minimizing window hides to tray">
|
||||
<!ENTITY hides_on_minimize.accesskey "M">
|
||||
<!ENTITY hides_single_window.label "Hide windows individually">
|
||||
<!ENTITY hides_single_window.tooltip "not all windows at once">
|
||||
<!ENTITY hides_single_window.accesskey "H">
|
||||
<!ENTITY start_hidden.label "Start application hidden to tray">
|
||||
<!ENTITY start_hidden.accesskey "S">
|
||||
<!ENTITY show_activates.label "Activate restored windows">
|
||||
<!ENTITY show_activates.accesskey "e">
|
||||
<!ENTITY show_activates.tooltip "restored windows raise on top and get focus">
|
||||
<!ENTITY remember_desktop.label "Remember desktop (per-window)">
|
||||
<!ENTITY remember_desktop.accesskey "R">
|
||||
|
||||
<!ENTITY bool_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.label "Show tray icon only if a window is hidden">
|
||||
<!ENTITY show_icon_on_hide.accesskey "w">
|
||||
<!ENTITY app_icon_type "Application icon type">
|
||||
<!ENTITY app_icon_themed.label "Default themed">
|
||||
<!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_order "Order">
|
||||
<!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.scroll_hides", true);
|
||||
pref("extensions.firetray.scroll_mode", "down_hides");
|
||||
pref("extensions.firetray.chat_icon_enable", true);
|
||||
|
||||
pref("extensions.firetray.message_count_type", 0);
|
||||
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/linux/FiretrayChatStatusIcon.jsm");
|
||||
|
||||
// FIXME: rename to firetray.Chat
|
||||
firetray.Chat = {
|
||||
initialized: false,
|
||||
observedTopics: {},
|
||||
@ -118,27 +117,32 @@ firetray.Chat = {
|
||||
},
|
||||
|
||||
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);
|
||||
|
||||
let iconName;
|
||||
switch (userStatus) {
|
||||
case Ci.imIStatusInfo.STATUS_OFFLINE:
|
||||
case Ci.imIStatusInfo.STATUS_OFFLINE: // 1
|
||||
iconName = FIRETRAY_IM_STATUS_OFFLINE;
|
||||
break;
|
||||
case Ci.imIStatusInfo.STATUS_IDLE:
|
||||
case Ci.imIStatusInfo.STATUS_AWAY:
|
||||
case Ci.imIStatusInfo.STATUS_IDLE: // 4
|
||||
case Ci.imIStatusInfo.STATUS_AWAY: // 5
|
||||
iconName = FIRETRAY_IM_STATUS_AWAY;
|
||||
break;
|
||||
case Ci.imIStatusInfo.STATUS_AVAILABLE:
|
||||
case Ci.imIStatusInfo.STATUS_AVAILABLE: // 7
|
||||
iconName = FIRETRAY_IM_STATUS_AVAILABLE;
|
||||
break;
|
||||
case Ci.imIStatusInfo.STATUS_UNAVAILABLE:
|
||||
case Ci.imIStatusInfo.STATUS_UNAVAILABLE: // 6
|
||||
iconName = FIRETRAY_IM_STATUS_BUSY;
|
||||
break;
|
||||
case Ci.imIStatusInfo.STATUS_UNKNOWN:
|
||||
case Ci.imIStatusInfo.STATUS_INVISIBLE:
|
||||
case Ci.imIStatusInfo.STATUS_MOBILE:
|
||||
case Ci.imIStatusInfo.STATUS_UNKNOWN: // 0
|
||||
case Ci.imIStatusInfo.STATUS_INVISIBLE: // 2
|
||||
case Ci.imIStatusInfo.STATUS_MOBILE: // 3
|
||||
default:
|
||||
// ignore
|
||||
}
|
||||
@ -146,6 +150,18 @@ firetray.Chat = {
|
||||
F.LOG("IM status changed="+iconName);
|
||||
if (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,
|
||||
that.mailSessionListener.notificationFlags);
|
||||
|
||||
// FIXME: add im-icon pref
|
||||
if (Services.prefs.getBoolPref("mail.chat.enabled") && this.existsIMAccount())
|
||||
if (Services.prefs.getBoolPref("mail.chat.enabled") &&
|
||||
firetray.Utils.prefService.getBoolPref("chat_icon_enable") &&
|
||||
this.existsChatAccount())
|
||||
firetray.Chat.init();
|
||||
|
||||
this.initialized = true;
|
||||
@ -68,7 +69,7 @@ firetray.Messaging = {
|
||||
// this._items is undefined' when calling method:
|
||||
// [nsISimpleEnumerator::hasMoreElements]"), and we're unsure if we should
|
||||
// initAccounts() ourselves...
|
||||
existsIMAccount: function() {
|
||||
existsChatAccount: function() {
|
||||
let accounts = new this.Accounts();
|
||||
for (let accountServer in accounts)
|
||||
if (accountServer.type === 'im') {
|
||||
@ -84,7 +85,7 @@ firetray.Messaging = {
|
||||
switch (topic) {
|
||||
case "account-removed":
|
||||
this.cleanExcludedAccounts();
|
||||
if (subject.QueryInterface(Ci.imIAccount) && !this.existsIMAccount())
|
||||
if (subject.QueryInterface(Ci.imIAccount) && !this.existsChatAccount())
|
||||
firetray.Chat.shutdown();
|
||||
break;
|
||||
case "account-added":
|
||||
|
Loading…
Reference in New Issue
Block a user