[Pkg-mozext-commits] [nostalgy] 14/235: *** empty log message ***
David Prévot
taffit at alioth.debian.org
Tue Oct 8 20:41:27 UTC 2013
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository nostalgy.
commit e0185bd6bc38ab2b98211855a40bc9d486a80bb1
Author: frisch <frisch at 56b81dcf-5a2f-0410-9db0-014be2e416ff>
Date: Mon Aug 28 16:05:18 2006 +0000
*** empty log message ***
git-svn-id: http://nostalgy.googlecode.com/svn/trunk@14 56b81dcf-5a2f-0410-9db0-014be2e416ff
---
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