[Pkg-mozext-commits] [nostalgy] 37/252: *** empty log message ***
David Prévot
taffit at moszumanska.debian.org
Tue Jun 14 15:24:39 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository nostalgy.
commit aa33a9c6d2ed0b112dc68399ef381600b33c1e6c
Author: frisch <frisch at 56b81dcf-5a2f-0410-9db0-014be2e416ff>
Date: Thu Sep 28 15:28:31 2006 +0000
*** empty log message ***
---
content/edit_prefs.js | 43 ++++++-----
content/edit_prefs.xul | 4 +
content/folders.js | 171 +++++++++++++++++++++++++++++++++--------
content/nostalgy.js | 54 ++++++-------
content/thunderbirdOverlay.xul | 3 -
files | 11 ++-
6 files changed, 201 insertions(+), 85 deletions(-)
diff --git a/content/edit_prefs.js b/content/edit_prefs.js
index c452858..f819f90 100644
--- a/content/edit_prefs.js
+++ b/content/edit_prefs.js
@@ -1,8 +1,13 @@
function gEBI(s) { return document.getElementById(s); }
var gList = null;
-var gRestrict = null;
-var gMatchFolder = null;
+
+var boolPrefs = [
+ "restrict_to_current_server",
+ "match_only_folder_name",
+ "sort_folders",
+ "match_case_sensitive"
+];
(function () {
var m = {
@@ -108,10 +113,11 @@ function onAcceptChanges() {
var prefs = Components.classes["@mozilla.org/preferences-service;1"].
getService(Components.interfaces.nsIPrefBranch);
prefs.setCharPref("extensions.nostalgy.rules", MkPrefStr());
- prefs.setBoolPref("extensions.nostalgy.restrict_to_current_server",
- gRestrict.checked);
- prefs.setBoolPref("extensions.nostalgy.match_only_folder_name",
- gMatchFolder.checked);
+
+ for (var i in boolPrefs) {
+ var n = boolPrefs[i];
+ prefs.setBoolPref("extensions.nostalgy."+n, gEBI(n).checked);
+ }
window.close();
}
@@ -128,10 +134,16 @@ function DoDelete() {
}
}
+function getBoolPref(prefs,s) {
+ var b = false;
+ try {
+ b=prefs.getBoolPref("extensions.nostalgy." + s); }
+ catch (ex) { }
+ return b;
+}
+
function onNostalgyLoad() {
gList = gEBI("rules");
- gRestrict = gEBI("restrict_to_current_server");
- gMatchFolder = gEBI("match_only_folder_name");
var prefs = Components.classes["@mozilla.org/preferences-service;1"].
getService(Components.interfaces.nsIPrefBranch);
@@ -142,17 +154,10 @@ function onNostalgyLoad() {
for (i = 0; i < r.length; i++) { CreateItem(r[i]); }
} catch (ex) { }
- var b = false;
- try {
- b=prefs.getBoolPref("extensions.nostalgy.restrict_to_current_server"); }
- catch (ex) { }
- gRestrict.checked = b;
-
- var b = false;
- try {
- b=prefs.getBoolPref("extensions.nostalgy.match_only_folder_name"); }
- catch (ex) { }
- gMatchFolder.checked = b;
+ for (var i in boolPrefs) {
+ var n = boolPrefs[i];
+ gEBI(n).checked = getBoolPref(prefs, n);
+ }
}
function onKeyPress(ev) {
diff --git a/content/edit_prefs.xul b/content/edit_prefs.xul
index 605f0ad..3e87160 100644
--- a/content/edit_prefs.xul
+++ b/content/edit_prefs.xul
@@ -53,6 +53,10 @@ shortcuts to move/copy the message to this folder.</label>
id="restrict_to_current_server" accesskey="R"/>
<checkbox label="Match only on folder name, not on the full path"
id="match_only_folder_name" accesskey="P"/>
+ <checkbox label="Sort folders alphabetically"
+ id="sort_folders" accesskey="S"/>
+ <checkbox label="Match folder names in a case sensitive way"
+ id="match_case_sensitive" accesskey="C"/>
</groupbox>
</vbox>
diff --git a/content/folders.js b/content/folders.js
index 616e6eb..0bc1ebb 100644
--- a/content/folders.js
+++ b/content/folders.js
@@ -1,5 +1,7 @@
var restrict_to_current_server = false;
var match_only_folder_name = false;
+var sort_folders = false;
+var match_case_sensitive = false;
function NostalgyCrop(s) {
var len = 120;
@@ -13,6 +15,10 @@ function NostalgyMakeRegexp(s) {
return (new RegExp(s.replace(/\.\./g, ".*"), ""));
}
+function mayLowerCase(s) {
+ if (!match_case_sensitive) { return (s.toLowerCase()); } else { return s; }
+}
+
function full_folder_name(folder) {
var uri = folder.prettyName;
while (!folder.isServer) {
@@ -55,14 +61,15 @@ function LongestCommonPrefix(s1,s2) {
function NostalgyFolderMatch(f,reg) {
if (match_only_folder_name) {
- return (f.prettyName.toLowerCase().match(reg) ||
- folder_name(f).toLowerCase().search(reg) == 0);
+ return (mayLowerCase(f.prettyName).match(reg) ||
+ mayLowerCase(folder_name(f)).search(reg) == 0);
} else {
- return (folder_name(f).toLowerCase().match(reg));
+ return (mayLowerCase(folder_name(f)).match(reg));
}
}
-function NostalgyAutocomplete() {
+function NostalgyAutocomplete(box) {
+ this.box = box;
this.xresults =
Components.classes[
"@mozilla.org/autocomplete/results;1"
@@ -74,7 +81,7 @@ function(text, results, listener) {
var items = this.xresults.items;
items.Clear();
- IterateMatches(text, function (folder) {
+ IterateMatches(text, this.box.shell_completion, function (folder) {
var newitem =
Components.classes[
"@mozilla.org/autocomplete/item;1"
@@ -89,7 +96,7 @@ function(text, results, listener) {
}
NostalgyAutocomplete.prototype.onStopLookup =
- function() { }
+ function() { }
NostalgyAutocomplete.prototype.onAutoComplete =
function(text, results, listener){ }
@@ -99,8 +106,77 @@ function(iid) {
throw Components.results.NS_NOINTERFACE;
}
+
+function NostalgyProcessResults(aSessionName, aResults, aStatus) {
+ this.clearResults(false); // clear results, but don't repaint yet
+ this.mLastResults[aSessionName] = aResults;
+ this.autoFillInput(aSessionName, aResults, false);
+ this.addResultElements(aSessionName, aResults);
+ this.openResultPopup();
+}
+
+function NostalgyProcessInput() {
+ if (this.ignoreInputEvent)
+ return;
+
+ this.userAction = "typing";
+ this.mNeedToFinish = true;
+ this.mTransientValue = false;
+ this.mNeedToComplete = true;
+ this.currentSearchString = this.value;
+ this.resultsPopup.selectedIndex = null;
+ this.removeAttribute("noMatchesFound");
+
+ this.mAutoCompleteTimer =
+ setTimeout(this.callListener, this.timeout, this, "startLookup");
+}
+
+function NostalgyProcessKeyPress(aEvent) {
+ this.mLastKeyCode = aEvent.keyCode;
+ var killEvent = false;
+ switch (aEvent.keyCode) {
+ case KeyEvent.DOM_VK_TAB:
+ this.shell_completion = true;
+ this.value = NostalgyCompleteUnique(this.value);
+ this.processInput();
+ killEvent = true;
+ break;
+
+ case KeyEvent.DOM_VK_RETURN:
+ killEvent = this.mMenuOpen;
+ this.finishAutoComplete(true, true, aEvent);
+ this.closeResultPopup();
+ break;
+
+ case KeyEvent.DOM_VK_ESCAPE:
+ this.clearTimer();
+ killEvent = this.mMenuOpen;
+ this.undoAutoComplete();
+ this.closeResultPopup();
+ break;
+
+ case KeyEvent.DOM_VK_PAGE_UP:
+ case KeyEvent.DOM_VK_DOWN:
+ case KeyEvent.DOM_VK_PAGE_DOWN:
+ case KeyEvent.DOM_VK_UP:
+ if (!aEvent.ctrlKey && !aEvent.metaKey) {
+ this.clearTimer();
+ killEvent = this.keyNavigation(aEvent);
+ }
+ break;
+ }
+ if (killEvent) {
+ aEvent.preventDefault();
+ aEvent.preventBubble();
+ }
+ return true;
+}
+
function NostalgyFolderSelectionBox(box) {
- box.addSession(new NostalgyAutocomplete());
+ box.shell_completion = false;
+ box.addSession(new NostalgyAutocomplete(box));
+ box.processInput = NostalgyProcessInput;
+ box.processKeyPress = NostalgyProcessKeyPress;
}
/** Looking up folders by name **/
@@ -109,16 +185,16 @@ function NostalgyCompleteUnique(s) {
var nb = 0;
var ret = "";
- var rexp = NostalgyMakeRegexp(s.toLowerCase());
+ var rexp = NostalgyMakeRegexp(mayLowerCase(s));
IterateFolders(function (f) {
- var n = folder_name(f).toLowerCase();
+ var n = mayLowerCase(folder_name(f));
if (n.search(rexp) == 0) {
nb++;
if (nb == 1) { ret = n; } else { ret = LongestCommonPrefix(ret,n); }
}
});
if (ret) {
- var f = FindFolderExact(ret);
+ var f = FindFolderCompleted(ret);
if (f) {
if (f.hasSubFolders) { return (folder_name(f) + "/"); }
else return (folder_name(f));
@@ -139,16 +215,27 @@ function NostalgyResolveFolder(uri) {
function FirstCompletion(uri) {
var ret = null;
- IterateMatches(uri, function(f) { ret = f; throw(0); });
+ IterateMatches(uri, false, function(f) { ret = f; throw(0); });
return ret;
}
function FindFolderExact(uri) {
var ret = null;
- var u = uri.toLowerCase();
+ var u = mayLowerCase(uri);
+ try {
+ IterateFoldersAllServers(function (folder) {
+ if (mayLowerCase(full_folder_name(folder)) == u) { ret = folder; throw(0); }
+ });
+ } catch (ex) { }
+ return ret;
+}
+
+function FindFolderCompleted(uri) {
+ var ret = null;
+ var u = mayLowerCase(uri);
try {
IterateFoldersAllServers(function (folder) {
- if (full_folder_name(folder).toLowerCase() == u) { ret = folder; throw(0); }
+ if (mayLowerCase(folder_name(folder)) == u) { ret = folder; throw(0); }
});
} catch (ex) { }
return ret;
@@ -189,27 +276,43 @@ function IterateFoldersAllServers(f) {
}
}
+function CompareFolderNames(a,b) {
+ var an = a.prettyName;
+ var bn = b.prettyName;
+ return ((an < bn) ? -1 : ((an > bn) ? 1 : 0));
+}
+
+var sorted_subfolders = new Array();
+
function IterateSubfolders(folder,f) {
- if (!folder.isServer || !restrict_to_current_server) { f(folder); }
+ if (!folder.isServer || !restrict_to_current_server) {
+ try { f(folder); }
+ catch (ex) { if (ex == 1) { return; } else { throw ex; } }
+ }
+ var arr;
if (folder.hasSubFolders) {
+ if (sort_folders) {
+ arr = sorted_subfolders[full_folder_name(folder)];
+ if (arr) { for (var n in arr) { IterateSubfolders(arr[n],f); }
+ return; }
+ }
+
var subfolders = folder.GetSubFolders();
var arr = new Array();
var done = false;
while (!done) {
var subfolder = subfolders.currentItem().
QueryInterface(Components.interfaces.nsIMsgFolder);
- arr.push(subfolder);
+ if (sort_folders) { arr.push(subfolder); }
+ else { IterateSubfolders(subfolder,f); }
try {subfolders.next();}
catch(e) {done = true;}
}
-
- arr.sort(function (a,b) {
- var an = a.prettyName;
- var bn = b.prettyName;
- if (an < bn) { return (-1); } else { return 1; }
- });
- var i;
- for (i = 0; i < arr.length; i++) { IterateSubfolders(arr[i],f) }
+ if (sort_folders) {
+ arr.sort(CompareFolderNames);
+ sorted_subfolders[full_folder_name(folder)] = arr;
+ for (var n in arr) { IterateSubfolders(arr[n],f); }
+ }
}
}
@@ -223,14 +326,20 @@ function IterateFolders(f) {
else { IterateFoldersAllServers(f); }
}
-function IterateMatches(uri,f) {
- var ret = null;
- var rexp = NostalgyMakeRegexp(uri.toLowerCase());
+function IterateMatches(uri,shell,f) {
+ var rexp = NostalgyMakeRegexp(mayLowerCase(uri));
- try {
- IterateFolders(function (folder) {
- if (NostalgyFolderMatch(folder,rexp)) { f(folder); }
- });
- } catch (ex) { }
+ if (shell) {
+ IterateFolders(function (folder) {
+ var n = mayLowerCase(folder_name(folder));
+ if (n.search(rexp) == 0) { f(folder); throw(1); }
+ });
+ } else {
+ try {
+ IterateFolders(function (folder) {
+ if (NostalgyFolderMatch(folder,rexp)) { f(folder); }
+ });
+ } catch (ex) { }
+ }
}
diff --git a/content/nostalgy.js b/content/nostalgy.js
index 6f22f6d..afb51ad 100644
--- a/content/nostalgy.js
+++ b/content/nostalgy.js
@@ -30,6 +30,14 @@ var NostalgyRules =
match_only_folder_name =
this._branch.getBoolPref("match_only_folder_name");
} catch (ex) { }
+ try {
+ sort_folders =
+ this._branch.getBoolPref("sort_folders");
+ } catch (ex) { }
+ try {
+ match_case_sensitive =
+ this._branch.getBoolPref("match_case_sensitive");
+ } catch (ex) { }
},
unregister: function()
@@ -59,13 +67,17 @@ var NostalgyRules =
if (!in_message_window) { NostalgyDefLabel(); }
break;
case "restrict_to_current_server":
- restrict_to_current_server =
- this._branch.getBoolPref("restrict_to_current_server");
+ restrict_to_current_server = this._branch.getBoolPref(aData);
if (!in_message_window) { NostalgyDefLabel(); }
break;
case "match_only_folder_name":
- match_only_folder_name =
- this._branch.getBoolPref("match_only_folder_name");
+ match_only_folder_name = this._branch.getBoolPref(aData);
+ break;
+ case "sort_folders":
+ sort_folders = this._branch.getBoolPref(aData);
+ break;
+ case "match_case_sensitive":
+ match_case_sensitive = this._branch.getBoolPref(aData);
break;
}
},
@@ -121,32 +133,16 @@ function onNostalgyLoad() {
gEBI("threadTree").addEventListener("select", NostalgyDefLabel, false);
}
- var saved_str = "";
- nostalgy_folderBox.addEventListener("keydown",
- function(ev){
- if (ev.keyCode == 9) {
- saved_str = nostalgy_folderBox.value;
- ev.preventDefault();
- ev.stopPropagation(); }
- }, false);
-
- nostalgy_folderBox.addEventListener("keypress",
- function(ev){
- if (ev.keyCode == 9) {
- nostalgy_folderBox.value = NostalgyCompleteUnique(saved_str);
- ev.preventDefault();
- ev.stopPropagation();
- }
- }, true);
-
window.addEventListener("mousedown", NostalgyHideIfBlurred, false);
// Don't know why, but the blur event does not seem to be fired properly...
}
function NostalgyHideIfBlurred() {
- if ((!nostalgy_statusBar.hidden) &&
- (document.commandDispatcher.focusedElement != nostalgy_folderBox))
- { NostalgyHide(); }
+ setTimeout(function (){
+ if ((!nostalgy_statusBar.hidden) &&
+ (document.commandDispatcher.focusedElement != nostalgy_folderBox))
+ { NostalgyHide(); }
+ }, 500);
}
function NostalgyHide() {
@@ -177,6 +173,7 @@ function NostalgyCollapseFolderPane() {
}
+
function NostalgyCmd(lab,cmd,init) {
focus_saved = document.commandDispatcher.focusedElement;
if (!focus_saved) { focus_saved = gEBI("messagepane").contentWindow; }
@@ -186,8 +183,13 @@ function NostalgyCmd(lab,cmd,init) {
nostalgy_statusBar.hidden = false;
nostalgy_th_statusBar.hidden = true;
nostalgy_folderBox.value = init;
+ nostalgy_folderBox.shell_completion = false;
+
- setTimeout(function() { nostalgy_folderBox.focus(); }, 0);
+ setTimeout(function() {
+ nostalgy_folderBox.focus();
+ nostalgy_folderBox.processInput();
+ }, 0);
// For some unknown reason, doing nostalgyBox.focus immediatly
// sometimes does not work...
}
diff --git a/content/thunderbirdOverlay.xul b/content/thunderbirdOverlay.xul
index 090be3a..079060e 100644
--- a/content/thunderbirdOverlay.xul
+++ b/content/thunderbirdOverlay.xul
@@ -39,9 +39,6 @@
oncommand="NostalgyScrollMsg(50);"/>
<key keycode="VK_ESCAPE" oncommand="NostalgyEscape(event);"/>
-<!-- <key key="F" oncommand="NostalgySelectFolderPane(event);"/>
- <key key="M" oncommand="NostalgySelectMessagePane(event);"/>
- <key key="I" oncommand="NostalgySelectSearch(event);"/> -->
</keyset>
diff --git a/files b/files
index d899d58..081b440 100644
--- a/files
+++ b/files
@@ -1,13 +1,12 @@
-content/.#nostalgy.js.1.3
-content/thunderbirdOverlay.xul
-content/about.xhtml
content/about.xul
-content/edit_prefs.js
content/edit_prefs.xul
-content/edit_rule.js
+content/thunderbirdOverlay.xul
+content/messageOverlay.xul
+content/about.xhtml
content/edit_rule.xul
content/folders.js
-content/messageOverlay.xul
+content/edit_rule.js
+content/edit_prefs.js
content/nostalgy.js
locale/en-US/nostalgy.dtd
locale/en-US/nostalgy.properties
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/nostalgy.git
More information about the Pkg-mozext-commits
mailing list