Guest User

FiltaQuilla

a guest
Feb 17th, 2012
670
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Code Snippet #1 for FiltaQuilla Javascript Action */
  2. // Gmail POP succeeds, Gmail IMAP succeeds
  3.  
  4. function copyListener() {
  5.   this.OnStartCopy = function() {}
  6.   this.OnProgress = function(aProgress, aProgressMax) {}
  7.   this.SetMessageKey = function(aKey) {}
  8.   this.GetMessageId = function(aMessageId) {}
  9.   this.OnStopCopy = function(aStatus) {
  10.     if (Components.isSuccessCode(aStatus)) {
  11.       var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
  12.         getService(Components.interfaces.nsIWindowMediator);
  13.       var win = wm.getMostRecentWindow("mail:3pane");
  14.       var tabmail = win.document.getElementById("tabmail");
  15.       tabmail.openTab("folder", {folder: destFolder, background: true,
  16.         folderPaneVisible: false, messagePaneVisible: true});
  17.     }
  18.   }
  19. }
  20. var destUri = "mailbox://nobody@Local%20Folders/Example";
  21. var destUri = "mailbox://username%[email protected]/Example";
  22. var destUri = "imap://username%[email protected]/[Gmail]/Example";
  23. var destFolder = GetMsgFolderFromUri(destUri);
  24. var mutableArray = Components.classes["@mozilla.org/array;1"].
  25.   createInstance(Components.interfaces.nsIMutableArray);
  26. for (var i = 0; i < msgHdrs.length; i++) {
  27.   var msgHdr = msgHdrs.queryElementAt(i, Components.interfaces.nsIMsgDBHdr);
  28.   mutableArray.appendElement(msgHdr, false /*weak*/);
  29. }
  30. var cs = Components.classes["@mozilla.org/messenger/messagecopyservice;1"].
  31.   getService(Components.interfaces.nsIMsgCopyService);
  32. cs.CopyMessages(msgHdr.folder, mutableArray, destFolder, true /*isMove*/,
  33.   new copyListener(), msgWindow, false /*allowUndo*/);
  34.  
  35. /* Code Snippet #2 for FiltaQuilla Javascript Action */
  36. // Gmail POP succeeds, Gmail IMAP fails
  37.  
  38. function copyListener(aMsgId) {
  39.   this.OnStartCopy = function() {}
  40.   this.OnProgress = function(aProgress, aProgressMax) {}
  41.   this.SetMessageKey = function(aKey) {}
  42.   this.GetMessageId = function(aMessageId) {}
  43.   this.OnStopCopy = function(aStatus) {
  44.     dump(aMsgId + "\n");
  45.     if (Components.isSuccessCode(aStatus)) {
  46.       var enumerator = destFolder.messages;
  47.       while (enumerator.hasMoreElements()) {
  48.         var msgHdr = enumerator.getNext().
  49.           QueryInterface(Components.interfaces.nsIMsgDBHdr);
  50.         dump((msgHdr.messageId == aMsgId) + " " + msgHdr.messageId + "\n");
  51.         if (msgHdr.messageId == aMsgId) {
  52.           var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
  53.             getService(Components.interfaces.nsIWindowMediator);
  54.           var win = wm.getMostRecentWindow("mail:3pane");
  55.           var tabmail = win.document.getElementById("tabmail");
  56.           tabmail.openTab("folder", {folder: msgHdr.folder, background: true,
  57.             folderPaneVisible: false, messagePaneVisible: true,
  58.             msgHdr: msgHdr, forceSelectMessage: false});
  59.           break;
  60.         }
  61.       }
  62.     }
  63.   }
  64. }
  65. var destUri = "mailbox://nobody@Local%20Folders/Example";
  66. var destUri = "mailbox://username%[email protected]/Example";
  67. var destUri = "imap://username%[email protected]/[Gmail]/Example";
  68. var destFolder = GetMsgFolderFromUri(destUri);
  69. var mutableArray = Components.classes["@mozilla.org/array;1"].
  70.   createInstance(Components.interfaces.nsIMutableArray);
  71. for (var i = 0; i < msgHdrs.length; i++) {
  72.   var msgHdr = msgHdrs.queryElementAt(i, Components.interfaces.nsIMsgDBHdr);
  73.   mutableArray.appendElement(msgHdr, false /*weak*/);
  74. }
  75. var msgId = msgHdrs.queryElementAt(0, Components.interfaces.nsIMsgDBHdr).messageId;
  76. dump("\nTest Copy Listener\n");
  77. var cs = Components.classes["@mozilla.org/messenger/messagecopyservice;1"].
  78.   getService(Components.interfaces.nsIMsgCopyService);
  79. cs.CopyMessages(msgHdr.folder, mutableArray, destFolder, true /*isMove*/,
  80.   new copyListener(msgId), msgWindow, false /*allowUndo*/);
  81.  
  82. /* Code Snippet #3 for testing without extension */
  83. // Gmail POP succeeds, Gmail IMAP fails
  84.  
  85. function copyListener(aMsgId) {
  86.   this.QueryInterface = function(aIID) {
  87.     if (aIID.equals(Components.interfaces.nsIMsgCopyServiceListener) ||
  88.         aIID.equals(Components.interfaces.nsISupports))
  89.       return this;
  90.     throw Components.results.NS_ERROR_NO_INTERFACE;
  91.     return 0;
  92.   }
  93.   this.OnStartCopy = function() {}
  94.   this.OnProgress = function(aProgress, aProgressMax) {}
  95.   this.SetMessageKey = function(aKey) {}
  96.   this.GetMessageId = function(aMessageId) {}
  97.   this.OnStopCopy = function(aStatus) {
  98.     dump(aMsgId + "\n");
  99.     // alert("force delay"); // alert succeeds
  100.     if (Components.isSuccessCode(aStatus)) {
  101.       // SelectFolder(destFolder.URI); // select folder fails
  102.       // setTimeout(function() {
  103.       var enumerator = destFolder.messages; // missing moved messages
  104.       while (enumerator.hasMoreElements()) {
  105.         var msgHdr = enumerator.getNext().
  106.           QueryInterface(Components.interfaces.nsIMsgDBHdr);
  107.         dump((msgHdr.messageId == aMsgId) + " " + msgHdr.messageId + "\n");
  108.         if (msgHdr.messageId == aMsgId) { // always false
  109.           var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
  110.             getService(Components.interfaces.nsIWindowMediator);
  111.           var win = wm.getMostRecentWindow("mail:3pane");
  112.           var tabmail = win.document.getElementById("tabmail");
  113.           tabmail.openTab("folder", {folder: msgHdr.folder, background: true,
  114.             folderPaneVisible: false, messagePaneVisible: true,
  115.             msgHdr: msgHdr, forceSelectMessage: false});
  116.           break;
  117.         }
  118.       }
  119.       // }, 3000); // timeout <= 3000 fails
  120.     }
  121.   }
  122. }
  123. var destUri = "mailbox://nobody@Local%20Folders/Example";
  124. var destUri = "mailbox://username%[email protected]/Example";
  125. var destUri = "imap://username%[email protected]/[Gmail]/Example";
  126. var destFolder = GetMsgFolderFromUri(destUri);
  127. var folder = GetFirstSelectedMsgFolder();
  128. var enumerator = folder.messages;
  129. var mutableArray = Components.classes["@mozilla.org/array;1"].
  130.   createInstance(Components.interfaces.nsIMutableArray);
  131. while (enumerator.hasMoreElements()) {
  132.   var msgHdr = enumerator.getNext().
  133.     QueryInterface(Components.interfaces.nsIMsgDBHdr);
  134.   mutableArray.appendElement(msgHdr, false /*weak*/);
  135. }
  136. var msgId = mutableArray.
  137.   queryElementAt(0, Components.interfaces.nsIMsgDBHdr).messageId;
  138. dump("\nTest Copy Listener\n");
  139. var cs = Components.classes["@mozilla.org/messenger/messagecopyservice;1"].
  140.   getService(Components.interfaces.nsIMsgCopyService);
  141. cs.CopyMessages(msgHdr.folder, mutableArray, destFolder, true /*isMove*/,
  142.   new copyListener(msgId), msgWindow, false /*allowUndo*/);
Advertisement
Add Comment
Please, Sign In to add comment