[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