diff --git a/TODO b/TODO index 2e0068e..872cee4 100644 --- a/TODO +++ b/TODO @@ -36,8 +36,8 @@ ROADMAP NEXT FEATURES ------------- -* mouse scrolls on tray icon hides/shows * when restoring, if the window is iconified, deiconify it * keyboard shortcut hide/show +* fetch mail from popup menu [Vote](https://docs.google.com/spreadsheet/viewform?hl=fr&formkey=dFJqUC1pLTQzNkJYQldFdzdSV1BaSkE6MQ#gid=0) diff --git a/src/chrome/content/options.js b/src/chrome/content/options.js index 612db61..ab3e3cc 100644 --- a/src/chrome/content/options.js +++ b/src/chrome/content/options.js @@ -7,6 +7,16 @@ const Cu = Components.utils; Cu.import("resource://firetray/FiretrayHandler.jsm"); Cu.import("resource://firetray/commons.js"); +const FLDRS_UNINTERESTING = { + Archive: Ci.nsMsgFolderFlags.Archive, + Drafts: Ci.nsMsgFolderFlags.Drafts, + Junk: Ci.nsMsgFolderFlags.Junk, + Queue: Ci.nsMsgFolderFlags.Queue, + SentMail: Ci.nsMsgFolderFlags.SentMail, + Templates: Ci.nsMsgFolderFlags.Templates, + Trash: Ci.nsMsgFolderFlags.Trash +}; + const TREEROW_ACCOUNT_OR_SERVER_TYPE_NAME = 0; const TREEROW_ACCOUNT_OR_SERVER_TYPE_EXCLUDED = 1; const TREEROW_ACCOUNT_OR_SERVER_TYPE_ORDER = 2; diff --git a/src/chrome/content/overlay.js b/src/chrome/content/overlay.js index df27aab..934f86d 100644 --- a/src/chrome/content/overlay.js +++ b/src/chrome/content/overlay.js @@ -90,10 +90,7 @@ var firetrayChrome = { LOG('Pref changed: '+data); switch (data) { case 'hides_single_window': - if (firetray.StatusIcon.popupMenuWindowItemsHandled()) - firetray.StatusIcon.showAllPopupMenuWindowItems(true); - else - firetray.StatusIcon.hideAllPopupMenuWindowItems(true); + firetray.Handler.updatePopupMenu(); break; case 'show_icon_on_hide': firetray.Handler.showHideIcon(); diff --git a/src/install.rdf b/src/install.rdf index 68fa7dc..265d4dc 100644 --- a/src/install.rdf +++ b/src/install.rdf @@ -5,7 +5,7 @@ true 2 FireTray - 0.4.0a6 + 0.4.0b1 Hua Luo, Francesco Solero, Foudil BRÉTEL Hua Luo, Francesco Solero (Firetray original authors) https://github.com/foudfou/firetray diff --git a/src/modules/FiretrayMessaging.jsm b/src/modules/FiretrayMessaging.jsm index c4f7f30..8d56c96 100644 --- a/src/modules/FiretrayMessaging.jsm +++ b/src/modules/FiretrayMessaging.jsm @@ -1,6 +1,6 @@ /* -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -var EXPORTED_SYMBOLS = [ "firetray", "FLDRS_UNINTERESTING" ]; +var EXPORTED_SYMBOLS = [ "firetray" ]; const Cc = Components.classes; const Ci = Components.interfaces; @@ -10,16 +10,6 @@ Cu.import("resource:///modules/mailServices.js"); Cu.import("resource://gre/modules/PluralForm.jsm"); Cu.import("resource://firetray/commons.js"); -const FLDRS_UNINTERESTING = { - Archive: Ci.nsMsgFolderFlags.Archive, - Drafts: Ci.nsMsgFolderFlags.Drafts, - Junk: Ci.nsMsgFolderFlags.Junk, - Queue: Ci.nsMsgFolderFlags.Queue, - SentMail: Ci.nsMsgFolderFlags.SentMail, - Templates: Ci.nsMsgFolderFlags.Templates, - Trash: Ci.nsMsgFolderFlags.Trash -}; - /** * firetray namespace. */ @@ -77,7 +67,10 @@ firetray.Messaging = { }, /** - * computes total unread message count + * computes total unread message count. + * NOTE: new messages can(?) be filtered and mark read, but still be + * considered new, so we may have to use nsMsgFolderFlagType.GotNew on all + * folders */ updateUnreadMsgCount: function() { LOG("unreadMsgCount"); diff --git a/src/modules/gtk2/FiretrayStatusIcon.jsm b/src/modules/gtk2/FiretrayStatusIcon.jsm index 1e92f7f..5541a01 100644 --- a/src/modules/gtk2/FiretrayStatusIcon.jsm +++ b/src/modules/gtk2/FiretrayStatusIcon.jsm @@ -170,7 +170,6 @@ firetray.StatusIcon = { addPopupMenuWindowItem: function(xid) { // on registerWindow var menuItemWindow = gtk.gtk_image_menu_item_new(); firetray.Handler.gtkPopupMenuWindowItems.insert(xid, menuItemWindow); - this.setPopupMenuWindowItemLabel(menuItemWindow, xid); var menuShell = ctypes.cast(firetray.StatusIcon.menu, gtk.GtkMenuShell.ptr); gtk.gtk_menu_shell_prepend(menuShell, @@ -210,6 +209,7 @@ firetray.StatusIcon = { LOG("showSinglePopupMenuWindowItem"); let menuItemWindow = firetray.Handler.gtkPopupMenuWindowItems.get(xid); gtk.gtk_widget_show(ctypes.cast(menuItemWindow, gtk.GtkWidget.ptr)); + this.setPopupMenuWindowItemLabel(menuItemWindow, xid); // not when creating item ! this.showPopupMenuWindowSeparator(); }, @@ -218,12 +218,13 @@ firetray.StatusIcon = { this.hideSinglePopupMenuWindowItem(xid, forceHideSeparator); }, + // PopupMenu.hideItem(firetray.Handler.gtkPopupMenuWindowItems.get(xid)) hideSinglePopupMenuWindowItem: function(xid, forceHideSeparator) { LOG("hideSinglePopupMenuWindowItem"); let menuItemWindow = firetray.Handler.gtkPopupMenuWindowItems.get(xid); gtk.gtk_widget_hide(ctypes.cast(menuItemWindow, gtk.GtkWidget.ptr)); // on hideSingleWindow - if (!forceHideSeparator || (firetray.Handler.visibleWindowsCount === firetray.Handler.windowsCount)) { + if (forceHideSeparator || (firetray.Handler.visibleWindowsCount === firetray.Handler.windowsCount)) { this.hidePopupMenuWindowSeparator(); } }, @@ -420,3 +421,10 @@ firetray.Handler.setIconVisibility = function(visible) { gtk.gtk_status_icon_set_visible(firetray.StatusIcon.trayIcon, visible); return true; }; + +firetray.Handler.updatePopupMenu = function() { + if (firetray.StatusIcon.popupMenuWindowItemsHandled()) + firetray.StatusIcon.showAllPopupMenuWindowItems(true); + else + firetray.StatusIcon.hideAllPopupMenuWindowItems(true); +};