[Solved] TH 45 Move subfolder to selected folder

Talk about add-ons and extension development.
Post Reply
T4ng10r
Posts: 17
Joined: April 30th, 2016, 4:34 am

[Solved] TH 45 Move subfolder to selected folder

Post by T4ng10r »

Hi,
I'm working on script which - as result - move selected folder to other one. I know how to add new subfolder, but I don't know how to move it.
I've got nsIMsgFolder of one to move and destination. Can you help me solve this problem?

Secondly - how easily get folder which path I know? Currently I do it like this:

Code: Select all

var searchedFolderPath = [ "RF", "AS", "Assign"];
var acctMgr = Components.classes["@mozilla.org/messenger/account-manager;1"]
                        .getService(Components.interfaces.nsIMsgAccountManager);
var accounts = acctMgr.accounts;
for (var i = 0; i < accounts.length; i++) {
  var server = accounts.queryElementAt(i, Components.interfaces.nsIMsgAccount).incomingServer;
  if (server.prettyName.startsWith( accountName )) { 
    searchedServer = server;
    var rootFolder = server.rootFolder;
    if (rootFolder.hasSubFolders) {
      var folder = rootFolder;
      var subFolders = folder.subFolders;
      for( j = 0; j < searchedFolderPath.length; j++) { //
        while(subFolders.hasMoreElements()) {
          folder = subFolders.getNext().QueryInterface(Components.interfaces.nsIMsgFolder);
          if (folder.prettiestName == searchedFolderPath[j]) {
            if (folder.hasSubFolders) {
              subFolders = folder.subFolders;
              break;
            }
          }
        }
      }
    }
  }
}
But I would like to use URI like "imap://userName%40serverName/RF/AS/Assigned" to do it quicker. How to achieve it?
Last edited by T4ng10r on May 19th, 2016, 3:27 am, edited 1 time in total.
T4ng10r
Posts: 17
Joined: April 30th, 2016, 4:34 am

Re: TH 45 Move subfolder to selected folder

Post by T4ng10r »

Ad.1 Moving folder is done by nsIMsgFolder.copyFolder functions.

Code: Select all

destinationFolder.copyFolder(folderToMove, true, null, null)
Ad.2
In bugzilla I found answer to my question.
Post Reply