[Pkg-mozext-commits] [nostalgy] 13/252: *** empty log message ***

David Prévot taffit at moszumanska.debian.org
Tue Jun 14 15:24:37 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 a0ce820c51d3d6c2ad66f7a718c66119ed79408f
Author: frisch <frisch at 56b81dcf-5a2f-0410-9db0-014be2e416ff>
Date:   Mon Aug 28 16:05:18 2006 +0000

    *** empty log message ***
---
 content/NostalgyEditRule.xul |   8 ++--
 content/NostalgyPref.xul     |  21 +++++----
 content/edit_rule.js         |  47 ++++++++++++++++++++
 content/folders.js           |  11 +++++
 content/overlay.js           |  91 +++++++++++++++++++++++++++++++++------
 content/pref.js              | 100 +++++++++++++++++++++++++++++++++++++------
 content/rule.js              |  35 ---------------
 7 files changed, 239 insertions(+), 74 deletions(-)

diff --git a/content/NostalgyEditRule.xul b/content/NostalgyEditRule.xul
index c705e2a..d9bdc99 100644
--- a/content/NostalgyEditRule.xul
+++ b/content/NostalgyEditRule.xul
@@ -7,19 +7,19 @@
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         title="Edit Nostalgy Rule"
 	buttons="accept,cancel"
-	ondialogaccept="onAcceptChanges();"
+	ondialogaccept="return onAcceptChanges();"
 >
 
  <script src="folders.js"/>
- <script src="rule.js"/>
+ <script src="edit_rule.js"/>
 
-<vbox>
+<vbox style="width:600px">
  <groupbox>
 
 <grid flex="1">
   <columns>
+    <column flex="0"/>
     <column flex="1"/>
-    <column flex="2"/>
   </columns>
 
   <rows>
diff --git a/content/NostalgyPref.xul b/content/NostalgyPref.xul
index 8835bce..2e945d0 100644
--- a/content/NostalgyPref.xul
+++ b/content/NostalgyPref.xul
@@ -7,10 +7,9 @@
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         title="Nostalgy Preferences">
 
- <script src="folders.js"/>
  <script src="pref.js"/>
 
-<vbox>
+<vbox style="width:800px">
  <groupbox>
  <listbox flex="1" id="rules">
   <listhead>
@@ -23,20 +22,24 @@
    <listcol/>
    <listcol flex="1"/>
   </listcols>
-  <listitem>
-   <listcell label="Both" value="both"/>
-   <listcell label="Bla"/>
-   <listcell label="Blablabla"/>
-  </listitem> 
  </listbox>
 
  <vbox align="center">
   <hbox>
-  <button label="Edit" default="true" onclick="DoEdit();"/>
-  <button label="Done"/>
+  <button label="Edit" accesskey="E" onclick="DoEdit();"/>
+  <button label="Delete" accesskey="D" onclick="DoDelete();"/>
+
+  <button label="New rule" accesskey="N" onclick="DoNewRule();"/>
+  <button label="Done" onclick="DoClose();"/>
   </hbox>
  </vbox>
  </groupbox>
 </vbox>
 
+ <keyset>
+  <key key="N" oncommand="DoNewRule();"/>
+  <key key="D" oncommand="DoDelete();"/>
+  <key key="E" oncommand="DoEdit();"/>
+ </keyset>
+
 </window>
\ No newline at end of file
diff --git a/content/edit_rule.js b/content/edit_rule.js
new file mode 100644
index 0000000..032f715
--- /dev/null
+++ b/content/edit_rule.js
@@ -0,0 +1,47 @@
+function gEBI(id) { return (document.getElementById(id)); }
+
+var gFolderSelect = null;
+var gContainsSelect = null;
+var gFieldSelect = null;
+
+function onNostalgyLoad() {
+ var rule = window.arguments[0];
+ if (!rule) { alert("rule=null!"); }
+
+ gFolderSelect = gEBI("folderselect");
+ gContainsSelect = gEBI("contains");
+ gFieldSelect = gEBI("field");
+ gFolderSelect.addSession(new myautocomplete());
+
+ gContainsSelect.focus();
+
+ gFolderSelect.value = rule.folder;
+ gContainsSelect.value = rule.contains;
+ gFieldSelect.selectedItem = gEBI(rule.field);
+}
+
+function onAcceptChanges() {
+ if (!FindFolderExact(gFolderSelect.value)) {
+   alert("Please choose an existing folder");
+   return false;
+ }
+ if (gContainsSelect.value == "") {
+   alert("Please provide a non-empty string for 'contains'");
+   return false;
+ }
+ var rule = { 
+    field: gFieldSelect.selectedItem.getAttribute("id"),
+    contains: gContainsSelect.value,
+    folder: gFolderSelect.value 
+ };
+    
+ (window.arguments[1])(rule);
+ return true;
+}
+
+function ChooseFolder() {
+  var folder = FindFolder(gFolderSelect.value);
+  if (folder) { gFolderSelect.value = folder_name(folder); }
+}
+
+window.addEventListener("load", onNostalgyLoad, false);
\ No newline at end of file
diff --git a/content/folders.js b/content/folders.js
index 82343ba..004b4c1 100644
--- a/content/folders.js
+++ b/content/folders.js
@@ -123,6 +123,17 @@ function FindFolder(uri)
  return ret;
 }
 
+function FindFolderExact(uri) {
+ var ret = null;
+ uri = uri.toLowerCase();
+ try {
+  IterateFolders(function (folder) {
+   if (folder_name(folder).toLowerCase() == uri) { ret = folder; throw(0); }
+  });
+ } catch (ex) { }
+ return ret;
+}
+
 function IterateFolders(f) {
  var amService = 
     Components.classes["@mozilla.org/messenger/account-manager;1"]
diff --git a/content/overlay.js b/content/overlay.js
index 4d906df..eb3dce1 100644
--- a/content/overlay.js
+++ b/content/overlay.js
@@ -6,6 +6,64 @@ var nostalgy_label = null;
 var nostalgy_th_statusBar = null;
 var nostalgy_cmdLabel = null;
 
+/** Rules **/
+
+var NostalgyRules =
+{
+  register: function()
+  {
+    var prefService = Components.classes["@mozilla.org/preferences-service;1"]
+                            .getService(Components.interfaces.nsIPrefService);
+    this._branch = prefService.getBranch("extensions.nostalgy.");
+    this._branch2 = 
+        this._branch.QueryInterface(Components.interfaces.nsIPrefBranch2);
+    this._branch2.addObserver("", this, false);
+    this.get_rules();
+  },
+
+  unregister: function()
+  {
+    if(!this._branch2) return;
+    this._branch2.removeObserver("", this);
+  },
+
+  get_rules: function()
+  {
+    var r = eval(this._branch.getCharPref("rules"));
+    var i;
+    for (i = 0; i < r.length; i++) {
+      r[i].contains = r[i].contains.toLowerCase();
+    }
+    this.rules = r;
+  },
+
+  observe: function(aSubject, aTopic, aData)
+  {
+    if(aTopic != "nsPref:changed") return;
+    switch (aData) {
+      case "rules":
+        this.get_rules();
+        break;
+    }
+  },
+
+  apply: function(sender,subject)
+  {
+    var folder = null;
+    var rules = this.rules;
+    for (i = 0; (i < rules.length) && (!folder); i++) {
+      var r = rules[i];
+      if ((r.field != "subject") && (sender.indexOf(r.contains) >= 0)
+          || (r.field != "sender") && (subject.indexOf(r.contains) >= 0)) {
+        folder = FindFolderExact(r.folder);
+      }
+    }
+    return folder;
+  }
+}
+
+NostalgyRules.register();
+
 /** Driver **/
 
 var default_label = "";
@@ -14,7 +72,7 @@ var command = null;
 var last_folder_author = new Array();
 var last_folder_subject = new Array();
 var last_folder = null;
-var glast_folder = null;
+var gsuggest_folder = null;
 
 function onNostalgyLoad() {
  nostalgy_folderBox = gEBI("nostalgy-folderbox");
@@ -55,10 +113,10 @@ function NostalgyHide() {
 
 
 function NostalgyDefLabel() { 
- glast_folder = get_last_folder();
- if (glast_folder) {
+ gsuggest_folder = NostalgySuggest();
+ if (gsuggest_folder) {
    nostalgy_label.value = 
-       default_label + " [+Shift: ==> " + folder_name(glast_folder) + "]";
+       default_label + " [+Shift: ==> " + folder_name(gsuggest_folder) + "]";
  } else {
    nostalgy_label.value = default_label;
  }
@@ -98,11 +156,11 @@ function NostalgyRunCommand() {
 }
 
 function MailAuthor() {
- return(gDBView.hdrForFirstSelectedMessage.author);
+ return(gDBView.hdrForFirstSelectedMessage.author.toLowerCase());
 }
 
 function MailSubject() {
- return(gDBView.hdrForFirstSelectedMessage.subject);
+ return(gDBView.hdrForFirstSelectedMessage.subject.toLowerCase());
 }
 
 function register_folder(folder) {
@@ -111,12 +169,19 @@ function register_folder(folder) {
  last_folder = folder
 }
 
-function get_last_folder() {
- var r = last_folder_author[MailAuthor()];
+function NostalgySuggest() {
+ var r = null;
+ r = NostalgyRules.apply(MailAuthor(), MailSubject());
  if (r) { return(r); }
- r = last_folder_subject[MailSubject()];
- if (r) { return(r); }
- return(last_folder);
+
+// r = last_folder_author[MailAuthor()];
+// if (r) { return(r); }
+
+// r = last_folder_subject[MailSubject()];
+// if (r) { return(r); }
+
+// return(last_folder);
+  return(null);
 }
 
 /**  Commands **/
@@ -137,8 +202,8 @@ function CopyToFolder(folder) {
 }
 
 function NostalgyAgain(lab,cmd) {
- if (glast_folder) {
-   cmd(glast_folder);
+ if (gsuggest_folder) {
+   cmd(gsuggest_folder);
  }
 }
 
diff --git a/content/pref.js b/content/pref.js
index 2ca1556..fbb4aa8 100644
--- a/content/pref.js
+++ b/content/pref.js
@@ -1,30 +1,104 @@
+var gList = null;
+
+function SetItem(item, rule) {
+  var f = item.childNodes.item(0);
+  var lab = "";
+  if (rule.field == "both") { lab = "Both"; }
+  else if (rule.field == "sender") { lab = "Sender"; }
+  else if (rule.field == "subject") { lab = "Subject"; }
+  else alert("Internal error: unknown field " + rule.field);
+
+  f.setAttribute("value", rule.field);
+  f.setAttribute("label", lab);
+
+  item.childNodes.item(1).setAttribute("label", rule.contains);
+  item.childNodes.item(2).setAttribute("label", rule.folder);
+}
+
 function RuleOfItem(item) {
- return ({ folder_name: item.childNodes.item(2).getAttribute("label"),
+ return ({ folder: item.childNodes.item(2).getAttribute("label"),
 	   contains: item.childNodes.item(1).getAttribute("label"),
 	   field: item.childNodes.item(0).getAttribute("value") });
 }
 
+function CreateItem(rule) {
+  var item = document.createElement("listitem");
+  item.appendChild(document.createElement("listcell"));
+  item.appendChild(document.createElement("listcell"));
+  item.appendChild(document.createElement("listcell"));
+  SetItem(item,rule);
+  gList.appendChild(item);
+  gList.selectedItem = item;
+}
+
+
 function StrOfRule(rule) {
-  return ("{ folder_name: '" + rule.folder_name + 
-          "', contains: '" + rule.contains + 
-          "', field: '" + rule.field + "' }");
+  return (
+   "{field: '"    + rule.field    + "'," +
+   " contains: '" + rule.contains + "'," +
+   " folder: '"   + rule.folder   + "'}"
+  );
+}
+
+function MkPrefStr() {
+  var i;
+  var cnt = gList.getRowCount();
+  var res = "";
+  for (i = 0; i < cnt; i++) {
+    if (i > 0) res = res + ", ";
+    res = res + StrOfRule(RuleOfItem(gList.getItemAtIndex(i)));
+  }
+  return ("[" + res + "]");
 }
 
 
+function EditRule(rule, accept) {
+  window.openDialog("chrome://nostalgy/content/NostalgyEditRule.xul", 
+                     "_blank", 
+	             "dialog,chrome,modal,titlebar,resizable=yes",
+	             rule,accept);
+}
 
 function DoEdit() {
-  var list = document.getElementById("rules");
-  var item = list.selectedItem;
-  if (item) {
-   window.openDialog("chrome://nostalgy/content/NostalgyEditRule.xul", 
-                     "", "centerscreen,chrome,modal,titlebar,resizable=yes",
-	             item);
+  var item = gList.selectedItem;
+  if (item) { 
+    EditRule(RuleOfItem(item), function(rule) { SetItem(item,rule); });
+  }
+}
+
+function DoClose() {
+  var prefs = Components.classes["@mozilla.org/preferences-service;1"].
+                         getService(Components.interfaces.nsIPrefBranch);
+  prefs.setCharPref("extensions.nostalgy.rules", MkPrefStr());
+  window.close();
+}
+
+function DoNewRule() {
+  EditRule({ field:"both", contains:"", folder:"" }, CreateItem);
+}
+
+function DoDelete() {
+  var idx = gList.selectedIndex;
+  if (idx >= 0) { 
+    gList.removeItemAt(idx); 
+    if (gList.getRowCount() <= idx) { idx = gList.getRowCount() - 1; }  
+    gList.selectedIndex = idx;
   }
 }
 
 function onNostalgyLoad() {
-  var o = {x : 1, y : 2};
-  alert(o.toString())
+  gList = document.getElementById("rules");
+
+  var prefs = Components.classes["@mozilla.org/preferences-service;1"].
+                         getService(Components.interfaces.nsIPrefBranch);
+  var rules = eval(prefs.getCharPref("extensions.nostalgy.rules"));
+  var i;
+  for (i = 0; i < rules.length; i++) { CreateItem(rules[i]); }
+}
+
+function onKeyPress(ev) {
+  if ((ev.keyCode == 46) || (ev.keyCode == 8)) { DoDelete(); }
 }
 
-window.addEventListener("load", onNostalgyLoad, false);
\ No newline at end of file
+window.addEventListener("load", onNostalgyLoad, false);
+window.addEventListener("keypress", onKeyPress, false);
diff --git a/content/rule.js b/content/rule.js
index 8a6b869..e69de29 100644
--- a/content/rule.js
+++ b/content/rule.js
@@ -1,35 +0,0 @@
-function gEBI(id) { return (document.getElementById(id)); }
-function FolderSelect() { return (gEBI("folderselect")); }
-function ContainsSelect() { return (gEBI("contains")); }
-function FieldSelect() { return (gEBI("field")); }
-
-var gitem = null;
-
-function onNostalgyLoad() {
- FolderSelect().addSession(new myautocomplete());
-
- gitem = window.arguments[0];
- if (gitem) {
-   FolderSelect().value = gitem.childNodes.item(2).getAttribute("label");
-   ContainsSelect().value = gitem.childNodes.item(1).getAttribute("label");
-   FieldSelect().selectedItem = 
-       gEBI(gitem.childNodes.item(0).getAttribute("value"));
- }
-}
-
-function onAcceptChanges() {
- gitem.childNodes.item(2).setAttribute("label", FolderSelect().value);
- gitem.childNodes.item(1).setAttribute("label", ContainsSelect().value);
- gitem.childNodes.item(0).setAttribute("label", 
-    FieldSelect().selectedItem.getAttribute("label"));
- gitem.childNodes.item(0).setAttribute("value", 
-    FieldSelect().selectedItem.getAttribute("id"));
-}
-
-function ChooseFolder() {
-  var b = FolderSelect();
-  var folder = FindFolder(b.value);
-  if (folder) { b.value = folder_name(folder); }
-}
-
-window.addEventListener("load", onNostalgyLoad, false);
\ No newline at end of file

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