* fix setPopupMenuWindowItemLabel call

* bump to v0.4.0b1
* refactoring
This commit is contained in:
foudfou 2012-01-23 01:13:27 +01:00
parent b4b9813d25
commit fc51dca3fe
6 changed files with 28 additions and 20 deletions

2
TODO
View File

@ -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)

View File

@ -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;

View File

@ -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();

View File

@ -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.0a6</em:version>
<em:version>0.4.0b1</em:version>
<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>

View File

@ -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");

View File

@ -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);
};