mirror of
https://github.com/moparisthebest/FireTray
synced 2024-11-15 13:25:04 -05:00
add themable icon names to options
This commit is contained in:
parent
f1960bbed8
commit
175f48661e
@ -19,9 +19,6 @@ var firetrayUIOptions = {
|
||||
onLoad: function(e) {
|
||||
this.strings = document.getElementById("firetray-options-strings");
|
||||
|
||||
this.updateWindowAndIconOptions();
|
||||
this.updateScrollOptions();
|
||||
|
||||
if (firetray.Handler.inMailApp) {
|
||||
Cu.import("resource://firetray/FiretrayMessaging.jsm");
|
||||
this.initMailControls();
|
||||
@ -29,6 +26,11 @@ var firetrayUIOptions = {
|
||||
let mailTab = document.getElementById("mail_tab");
|
||||
this.hideElement(mailTab, true);
|
||||
}
|
||||
|
||||
this.updateWindowAndIconOptions();
|
||||
this.updateScrollOptions();
|
||||
this.initAppIconType();
|
||||
this.initIconNames();
|
||||
},
|
||||
|
||||
onQuit: function(e) {
|
||||
@ -76,6 +78,42 @@ var firetrayUIOptions = {
|
||||
this.disableGroup(document.getElementById("ui_radiogroup_scroll"), !scroll_hides);
|
||||
},
|
||||
|
||||
initAppIconType: function() {
|
||||
document.getElementById("ui_app_icon_type_themed").value =
|
||||
FIRETRAY_APPLICATION_ICON_TYPE_THEMED;
|
||||
document.getElementById("ui_app_icon_type_custom").value =
|
||||
FIRETRAY_APPLICATION_ICON_TYPE_CUSTOM;
|
||||
document.getElementById("ui_app_icon_type").selectedIndex =
|
||||
firetray.Utils.prefService.getIntPref("app_icon_type");
|
||||
},
|
||||
|
||||
initIconNames: function() {
|
||||
let appIconNames = firetray.Utils.getArrayPref(firetray.StatusIcon.prefAppIconNames);
|
||||
LOG("appIconNames="+appIconNames);
|
||||
let len = appIconNames.length;
|
||||
if (len>2)
|
||||
throw new RangeError("Too many icon names");
|
||||
for (let i=0; i<len; ++i) {
|
||||
let textbox = document.getElementById("app_icon_type_themed_name"+(i+1));
|
||||
textbox.value = appIconNames[i];
|
||||
}
|
||||
let textbox = document.getElementById("app_icon_type_themed_name3");
|
||||
textbox.value = firetray.Handler.appNameOriginal.toLowerCase();
|
||||
},
|
||||
|
||||
updateIconNames: function(textbox) {
|
||||
let appIconNames = [];
|
||||
for (let i=1; i<3; ++i) {
|
||||
let tb = document.getElementById("app_icon_type_themed_name"+i);
|
||||
let val = tb.value.trim();
|
||||
LOG("val="+val);
|
||||
if (val)
|
||||
appIconNames.push(val);
|
||||
}
|
||||
LOG("appIconNames="+appIconNames);
|
||||
firetray.Utils.setArrayPref(firetray.StatusIcon.prefAppIconNames, appIconNames);
|
||||
},
|
||||
|
||||
initMailControls: function() {
|
||||
this.populateExcludedFoldersList();
|
||||
this.populateTreeAccountsOrServerTypes();
|
||||
@ -187,6 +225,12 @@ var firetrayUIOptions = {
|
||||
this.disableMessageCountMaybe(messageCountType);
|
||||
},
|
||||
|
||||
chooseAppIconFile: function() {
|
||||
var filepath = document.getElementById("app_icon_custom_filename");
|
||||
this._chooseIconFile(filepath);
|
||||
firetray.Handler.setIconImageDefault();
|
||||
},
|
||||
|
||||
chooseMailIconFile: function() {
|
||||
var filepath = document.getElementById("custom_mail_icon_filename");
|
||||
this._chooseIconFile(filepath);
|
||||
@ -252,7 +296,7 @@ var firetrayUIOptions = {
|
||||
_disableTreeRow: function(row, disable) {
|
||||
let that = this;
|
||||
try {
|
||||
let cells = row.childNodes; // .getElementsByTagName('treecell');
|
||||
let cells = row.childNodes;
|
||||
LOG("CELLS: "+cells);
|
||||
for (let i=0, len=cells.length; i<len; ++i) {
|
||||
LOG("i: "+i+", cell:"+cells[i]);
|
||||
|
@ -25,6 +25,8 @@
|
||||
<preference id="pref_start_hidden" name="extensions.firetray.start_hidden" type="bool"/>
|
||||
<preference id="pref_show_activates" name="extensions.firetray.show_activates" type="bool"/>
|
||||
<preference id="pref_show_icon_on_hide" name="extensions.firetray.show_icon_on_hide" type="bool"/>
|
||||
<preference id="pref_app_icon_type" name="extensions.firetray.app_icon_type" type="int"/>
|
||||
<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_icon_text_color" name="extensions.firetray.icon_text_color" type="string" />
|
||||
@ -36,7 +38,8 @@
|
||||
|
||||
<tabbox>
|
||||
<tabs>
|
||||
<tab label="&windows_icon_options;"/>
|
||||
<tab label="&windows_options;"/>
|
||||
<tab label="&icon_options;"/>
|
||||
<tab label="&mail_options;" id="mail_tab" />
|
||||
</tabs>
|
||||
<tabpanels flex="1">
|
||||
@ -44,8 +47,6 @@
|
||||
<tabpanel id="general_tabpanel" flex="1">
|
||||
<vbox pack="start" align="left" flex="1">
|
||||
|
||||
<groupbox>
|
||||
<caption label="&windows_behaviour;" />
|
||||
<checkbox id="ui_hides_on_close" preference="pref_hides_on_close"
|
||||
label="&bool_hides_on_close.label;"
|
||||
accesskey="&bool_hides_on_close.accesskey;"
|
||||
@ -65,13 +66,45 @@
|
||||
label="&bool_show_activates.label;"
|
||||
accesskey="&bool_show_activates.accesskey;"
|
||||
tooltiptext="&bool_show_activates.tooltip;"/>
|
||||
</groupbox>
|
||||
|
||||
<groupbox>
|
||||
<caption label="&icon_settings;" />
|
||||
</vbox>
|
||||
</tabpanel>
|
||||
|
||||
|
||||
<tabpanel id="icon_tabpanel" flex="1">
|
||||
<vbox pack="start" align="left" flex="1">
|
||||
|
||||
<radiogroup id="ui_app_icon_type" preference="pref_app_icon_type">
|
||||
<vbox align="left" flex="1">
|
||||
<label class="header">&app_icon_type;</label>
|
||||
|
||||
<hbox>
|
||||
<radio id="ui_app_icon_type_themed" label="&app_icon_themed.label;"
|
||||
accesskey="&app_icon_themed.accesskey;" tooltiptext="&app_icon_themed.tooltip;" />
|
||||
<textbox id="app_icon_type_themed_name1" size="12" placeholder="&app_icon_themed_name;"
|
||||
onchange="firetrayUIOptions.updateIconNames(this);" flex="1" />
|
||||
<textbox id="app_icon_type_themed_name2" size="12" placeholder="&app_icon_themed_name;"
|
||||
onchange="firetrayUIOptions.updateIconNames(this);" flex="1" />
|
||||
<textbox id="app_icon_type_themed_name3" size="12" placeholder="&app_icon_themed_name;"
|
||||
onchange="firetrayUIOptions.updateIconNames(this);" flex="1"
|
||||
disabled="true"/>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<radio id="ui_app_icon_type_custom" label="&app_icon_custom.label;"
|
||||
accesskey="&app_icon_custom.accesskey;" />
|
||||
<textbox id="app_icon_custom_filename" preference="pref_app_icon_filename" flex="1" />
|
||||
<button id="app_icon_custom_select" label="&choose;"
|
||||
accesskey="&choose.accesskey;"
|
||||
oncommand="firetrayUIOptions.chooseAppIconFile()" />
|
||||
</hbox>
|
||||
|
||||
</vbox>
|
||||
</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;"/>
|
||||
|
||||
<checkbox id="ui_scroll_hides" preference="pref_scroll_hides"
|
||||
label="&enable_mouse_scroll.label;"
|
||||
accesskey="&enable_mouse_scroll.accesskey;"
|
||||
@ -80,7 +113,6 @@
|
||||
<radio id="ui_radio_scroll_down_hides" label="&down;=&hide;, &up;=&restore;" value="down_hides" />
|
||||
<radio id="ui_radio_scroll_up_hides" label="&up;=&hide;, &down;=&restore;" value="up_hides" />
|
||||
</radiogroup>
|
||||
</groupbox>
|
||||
|
||||
</vbox>
|
||||
</tabpanel>
|
||||
@ -130,10 +162,22 @@
|
||||
observes="broadcaster-notification-disabled"/>
|
||||
</hbox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<radio id="ui_radio_mail_notification_newmail_icon" label="&mail_notification_newmail_icon.label;"
|
||||
accesskey="&mail_notification_newmail_icon.accesskey;"
|
||||
oncommand="firetrayUIOptions.updateNotificationSettings()"
|
||||
observes="broadcaster-notification-disabled" />
|
||||
<!-- TODO -->
|
||||
<textbox id="radio_mail_notification_newmail_icon_name1" size="12"
|
||||
placeholder="&app_icon_themed_name;" onchange="" flex="1"
|
||||
observes="broadcaster-notification-disabled" />
|
||||
<textbox id="radio_mail_notification_newmail_icon_name2" size="12"
|
||||
placeholder="&app_icon_themed_name;" onchange="" flex="1"
|
||||
observes="broadcaster-notification-disabled" />
|
||||
<textbox id="radio_mail_notification_newmail_icon_name3" size="12"
|
||||
placeholder="&app_icon_themed_name;" onchange="" flex="1"
|
||||
observes="broadcaster-notification-disabled" />
|
||||
</hbox>
|
||||
<hbox>
|
||||
<radio id="ui_radio_mail_notification_custom_mail_icon" label="&mail_notification_custom_mail_icon.label;"
|
||||
accesskey="&mail_notification_custom_mail_icon.accesskey;"
|
||||
@ -141,7 +185,7 @@
|
||||
observes="broadcaster-notification-disabled" />
|
||||
<hbox id="custom_mail_icon" align="center" flex="1" >
|
||||
<textbox id="custom_mail_icon_filename" preference="pref_custom_mail_icon"
|
||||
onblur="firetray.Messaging.updateMsgCount();" flex="1" />
|
||||
onchange="firetray.Messaging.updateMsgCount();" flex="1" />
|
||||
<button id="custom_mail_icon_select" label="&choose;"
|
||||
accesskey="&choose.accesskey;"
|
||||
oncommand="firetrayUIOptions.chooseMailIconFile()" />
|
||||
|
@ -4,10 +4,10 @@
|
||||
|
||||
<!ENTITY NOT_IMPLEMENTED_YET "NOT IMPLEMENTED YET">
|
||||
|
||||
<!ENTITY windows_icon_options "Windows and Icon">
|
||||
<!ENTITY windows_options "Windows">
|
||||
<!ENTITY icon_options "Icon">
|
||||
<!ENTITY mail_options "Mail">
|
||||
|
||||
<!ENTITY windows_behaviour "Windows behaviour">
|
||||
<!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">
|
||||
@ -21,9 +21,16 @@
|
||||
<!ENTITY bool_show_activates.accesskey "e">
|
||||
<!ENTITY bool_show_activates.tooltip "restored windows raise on top and get focus">
|
||||
|
||||
<!ENTITY icon_settings "Icon settings">
|
||||
<!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 app_icon_type "Application icon">
|
||||
<!ENTITY app_icon_themed.label "Default themed">
|
||||
<!ENTITY app_icon_themed.accesskey "D">
|
||||
<!ENTITY app_icon_themed_name "icon-name">
|
||||
<!ENTITY app_icon_themed.tooltip "Icon names provided by graphical environment">
|
||||
<!ENTITY app_icon_custom.label "Custom">
|
||||
<!ENTITY app_icon_custom.accesskey "u">
|
||||
|
||||
<!ENTITY mouse_wheel_options "Mouse wheel options" >
|
||||
<!ENTITY enable_mouse_scroll.label "Handle mouse scroll on tray icon" >
|
||||
<!ENTITY enable_mouse_scroll.accesskey "l">
|
||||
|
@ -13,6 +13,11 @@ pref("extensions.firetray.hides_single_window", false);
|
||||
pref("extensions.firetray.start_hidden", false);
|
||||
pref("extensions.firetray.show_activates", false);
|
||||
|
||||
pref("extensions.firetray.app_icon_type", 0);
|
||||
pref("extensions.firetray.app_browser_icon_names", '[]');
|
||||
pref("extensions.firetray.app_mail_icon_names", '["indicator-messages", "applications-email-panel"]');
|
||||
pref("extensions.firetray.app_default_icon_names", '[]');
|
||||
pref("extensions.firetray.app_icon_filename", "");
|
||||
pref("extensions.firetray.show_icon_on_hide", false);
|
||||
pref("extensions.firetray.scroll_hides", true);
|
||||
pref("extensions.firetray.scroll_mode", "down_hides");
|
||||
|
@ -370,6 +370,16 @@ firetray.PrefListener = new PrefListener(
|
||||
case 'message_count_type':
|
||||
firetray.Messaging.updateMsgCount();
|
||||
break;
|
||||
case 'app_mail_icon_names':
|
||||
case 'app_browser_icon_names':
|
||||
case 'app_default_icon_names':
|
||||
firetray.StatusIcon.loadThemedIcons();
|
||||
case 'app_icon_type':
|
||||
if (firetray.Handler.inMailApp)
|
||||
firetray.Messaging.updateMsgCount();
|
||||
else
|
||||
firetray.Handler.setIconImageDefault();
|
||||
break;
|
||||
default:
|
||||
}
|
||||
});
|
||||
|
@ -4,9 +4,10 @@
|
||||
provided by this module */
|
||||
var EXPORTED_SYMBOLS =
|
||||
[ "firetray", "LOG", "WARN", "ERROR", "FIREFOX_ID", "THUNDERBIRD_ID",
|
||||
"SEAMONKEY_ID", "FIRETRAY_ID", "FIRETRAY_SPLASH_PAGE", "getType",
|
||||
"isArray", "isEmpty", "strEquals",
|
||||
"FIRETRAY_NOTIFICATION_UNREAD_MESSAGE_COUNT",
|
||||
"SEAMONKEY_ID", "FIRETRAY_ID", "FIRETRAY_SPLASH_PAGE",
|
||||
"FIRETRAY_APPLICATION_ICON_TYPE_THEMED",
|
||||
"FIRETRAY_APPLICATION_ICON_TYPE_CUSTOM", "getType", "isArray", "isEmpty",
|
||||
"strEquals", "FIRETRAY_NOTIFICATION_UNREAD_MESSAGE_COUNT",
|
||||
"FIRETRAY_NOTIFICATION_NEWMAIL_ICON", "FIRETRAY_NOTIFICATION_CUSTOM_ICON",
|
||||
"FIRETRAY_DELAY_BROWSER_STARTUP_MILLISECONDS",
|
||||
"FIRETRAY_DELAY_NOWAIT_MILLISECONDS", "FIRETRAY_MESSAGE_COUNT_TYPE_UNREAD",
|
||||
@ -29,6 +30,9 @@ const CHATZILLA_ID = "{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}";
|
||||
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_NOTIFICATION_UNREAD_MESSAGE_COUNT = 0;
|
||||
const FIRETRAY_NOTIFICATION_NEWMAIL_ICON = 1;
|
||||
const FIRETRAY_NOTIFICATION_CUSTOM_ICON = 3;
|
||||
@ -216,6 +220,13 @@ if(!Object.keys) Object.keys = function(o){
|
||||
return ret;
|
||||
};
|
||||
|
||||
// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim
|
||||
if(!String.prototype.trim) {
|
||||
String.prototype.trim = function () {
|
||||
return this.replace(/^\s+|\s+$/g,'');
|
||||
};
|
||||
}
|
||||
|
||||
// http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object-from-json
|
||||
function isEmpty(obj) {
|
||||
for(var prop in obj) {
|
||||
|
@ -30,6 +30,7 @@ firetray.StatusIcon = {
|
||||
trayIcon: null,
|
||||
themedIconApp: null,
|
||||
themedIconNewMail: null,
|
||||
prefAppIconNames: null,
|
||||
|
||||
init: function() {
|
||||
try {
|
||||
@ -39,9 +40,7 @@ firetray.StatusIcon = {
|
||||
LOG("gtkIconTheme="+gtkIconTheme);
|
||||
gtk.gtk_icon_theme_append_search_path(gtkIconTheme, this.GTK_THEME_ICON_PATH);
|
||||
|
||||
// TODO: make related options
|
||||
this.themedIconApp = this.initThemedIcon(["indicator-messages", "applications-email-panel", firetray.Handler.appNameOriginal.toLowerCase()]);
|
||||
this.themedIconNewMail = this.initThemedIcon(["indicator-messages-new", "mail-message-new"]);
|
||||
this.loadThemedIcons();
|
||||
|
||||
this.trayIcon = gtk.gtk_status_icon_new();
|
||||
|
||||
@ -69,6 +68,20 @@ firetray.StatusIcon = {
|
||||
this.initialized = false;
|
||||
},
|
||||
|
||||
loadThemedIcons: function() {
|
||||
if (firetray.Handler.inMailApp) {
|
||||
this.prefAppIconNames = "app_mail_icon_names";
|
||||
this.themedIconNewMail = this.initThemedIcon(["indicator-messages-new", "mail-message-new"]); // TODO
|
||||
} else if (firetray.Handler.inBrowserApp) {
|
||||
this.prefAppIconNames = "app_browser_icon_names";
|
||||
} else {
|
||||
this.prefAppIconNames = "app_default_icon_names";
|
||||
}
|
||||
let appIconNames = firetray.Utils.getArrayPref(this.prefAppIconNames);
|
||||
appIconNames.push(firetray.Handler.appNameOriginal.toLowerCase());
|
||||
this.themedIconApp = this.initThemedIcon(appIconNames);
|
||||
},
|
||||
|
||||
initThemedIcon: function(names) {
|
||||
if (!isArray(names)) throw new TypeError();
|
||||
let namesLen = names.length;
|
||||
@ -162,7 +175,13 @@ firetray.Handler.setIconImageFromFile = firetray.StatusIcon.setIconImageFromFile
|
||||
firetray.Handler.setIconImageDefault = function() {
|
||||
if (!firetray.StatusIcon.themedIconApp)
|
||||
throw "Default application themed icon not set";
|
||||
let appIconType = firetray.Utils.prefService.getIntPref("app_icon_type");
|
||||
if (appIconType === FIRETRAY_APPLICATION_ICON_TYPE_THEMED)
|
||||
firetray.Handler.setIconImage(firetray.StatusIcon.themedIconApp);
|
||||
else if (appIconType === FIRETRAY_APPLICATION_ICON_TYPE_CUSTOM) {
|
||||
let appIconFilename = firetray.Utils.prefService.getCharPref("app_icon_filename");
|
||||
firetray.Handler.setIconImageFromFile(appIconFilename);
|
||||
}
|
||||
};
|
||||
|
||||
// GTK bug: Gdk-CRITICAL **: IA__gdk_window_get_root_coords: assertion `GDK_IS_WINDOW (window)' failed
|
||||
|
Loading…
Reference in New Issue
Block a user