I need to find a way to open a message in the default Thunderbird
message window. I only have the message header information, but to open
the message window i need the messageUri, folderUri and gDBView:
window.openDialog( "chrome://messenger/content/messageWindow.xul",
"_blank", "all,chrome,dialog=no,status,toolbar", messageUri, folderUri,
gDBView );
Is there any other way to open the message window, or how can I get
these arguments with just the header information? Trouble is, I'm not in
the main thunderbird view when calling my function, so also the gDBView
might be trouble.
I was wondering if there was a way to go around this by implementing
some kind of method to select the message in question in the TB main
view, and then open the message window. Then all those value would be
easy to get.
Actually I also have some trouble getting the message header...
currently I get some chosen data from the message header and store it
into a file. I was thinking that I would be able to use just the
messageId to get the whole header, but now seems that even that isn't so
easy. I managed to pass the gDBView to my extension window, but haven't
yet been able to do much with it. At this point I don't know if it's
even usable (I just passed it as an argument in window.opendialog(..)).
If you have the message-id and know what folder the message is in, you
can get the header from the database (which you get from the folder).
Example:
let msgHdr = folder.msgDatabase.getMsgHdrForMessageID(messageId);
where:
folder is an nsIMsgFolder
Andrew
given an nsIMsgDBHdr msgHdr:
let messageUri = msgHdr.folder.getUriForMsg(msgHdr);
let folderUri = msgHdr.folder.URI;
I'm not looking at the code right now, but presumably what the argument
wants is an nsIMsgDBView that currently has the message visible in it.
Given a message header, you can get a folder, which you can use to
instantiate a new db view on the folder.
Andrew
Thanks, I'll try these things tonight. Though right now I'm bit
uncertain how to get the URI of the message folder, which I guess I'll
need to get the nsIMsgFolder. There's a method for getting the URI of a
message through the nsIMsgFolder, but couldn't find a similar method
for folder. The URI's seem very similar though, so maybe I can do some
tricks with the strings to get the folder URI.
Also there might be a problem with this, because when I get the
nsIMsgDBHdr, the folder can be changed later by other functionality of
my extension (and by user). I guess I have to somehow figure out of
updating the folder data I have if this happens, or then find out how I
could search through all the folders visible for thunderbird, with just
the messageId at hand.
DB views are still quite unfamiliar for me. Is there any short guide of
how to use them available? Or rather, how to manipulate the thread pane
in Thunderbird through them. I'll try to get my head wrappend around the
docs in MDC, but so far they have been be bit unrevealing.
I'm hoping to have a beta version of my extension out somewhere next
week. Doing it as a one-man project work for my school. Seems this
project became bit bigger than I thought it would.
>>
> Just to motivate you to look into ReminderFox for the use of
> 'messageID'. We have had similar situation/problems and we find the
> message also the message is moved along the folders. Markus did a great
> job with his code!!
> Dont hesitate to call back if you need details or directions ...
>
Thanks! Seems that there is lot of things in ReminderFox which can help
me. The way to get all the folder URI's to search seems quite
complicated though... trying to understand how it all works. Though I
guess trying to update my database on folder listeners events wouldn't
really work anyway, if the user makes changes somewhere else.
Got my extension to work in the same way as ReminderFox, by searching
with the messageId. That's quite a bit of code for something that I
thought would be pretty simple. Thanks a lot, I couldn't have done that
by myself in the time I have left to finish this project.
Now however I have another issue... I would need to get the Inbox of
each of the accounts, separated from the other folders. I've managed to
parse the main folders in each account, but now I'm wondering, is Inbox
always named as "Inbox" in TB? For now, I will assume it is and carry on.
I need to trust this item also because I have a folder listener, which I
want to limit only to Inbox and Sent folders of each account. It's bit
strange though, because I've noticed on my testing that sometimes I get
a duplicate event in "INBOX", in addition to "Inbox" event.
But thanks for the help, right now I'm going forward again.
> I would need to get the Inbox of each of the accounts, separated from
> the other folders.
That's easy in TB3, just call getFolderWithFlag(nsMsgFolderFlags.Inbox);
on each account's root folder.
--
Warning: May contain traces of nuts.