landing compose attachment ui changes.

This commit is contained in:
sspitzer%netscape.com 1999-07-31 19:05:36 +00:00
parent 6a09fe909e
commit 6e69c915d9
11 changed files with 185 additions and 27 deletions

View File

@ -22,3 +22,5 @@ defaultTextBody.html
messengercompose.xul messengercompose.xul
composebe_en.properties composebe_en.properties
addressAutoComplete.js addressAutoComplete.js
MsgAttachPage.js
MsgAttachPage.xul

View File

@ -35,6 +35,8 @@ EXPORT_RESOURCE_SAMPLES = \
$(srcdir)/defaultHtmlBody.html \ $(srcdir)/defaultHtmlBody.html \
$(srcdir)/addressAutoComplete.js \ $(srcdir)/addressAutoComplete.js \
$(srcdir)/composebe_en.properties \ $(srcdir)/composebe_en.properties \
$(srcdir)/MsgAttachPage.xul \
$(srcdir)/MsgAttachPage.js \
$(NULL) $(NULL)
EXPORT_RESOURCE_SAMPLES_TO_REMOVE := $(addprefix $(SAMPLES_DIR)/, $(EXPORT_RESOURCE_SAMPLES)) EXPORT_RESOURCE_SAMPLES_TO_REMOVE := $(addprefix $(SAMPLES_DIR)/, $(EXPORT_RESOURCE_SAMPLES))

View File

@ -0,0 +1,32 @@
var addattachmentfunction = null;
function Startup()
{
/* dump("Startup()\n"); */
if (window.arguments && window.arguments[0] && window.arguments[0].addattachmentfunction)
{
addattachmentfunction = window.arguments[0].addattachmentfunction;
doSetOKCancel(AttachPageOKCallback, AttachPageCancelCallback);
}
else
{
dump("error, no callback registered for OK\n");
}
}
function AttachPageOKCallback()
{
/* dump("attach this: " + document.getElementById('attachurl').value + "\n"); */
if (addattachmentfunction) {
addattachmentfunction(document.getElementById('attachurl').value);
}
return true;
}
function AttachPageCancelCallback()
{
return true;
}

View File

@ -0,0 +1,29 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://editor/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://messengercompose/skin/" type="text/css"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
<!DOCTYPE window
[
<!ENTITY windowTitle.label "Please Specify a Location to Attach">
]>
<window title="&windowTitle.label;"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="Startup()"
align="vertical">
<html:script language="JavaScript" src="chrome://messengercompose/content/MsgAttachPage.js"/>
<box align="horizontal">
<html:div>Web Page (URL):</html:div>
<html:input type="text" id="attachurl" align="bottom" style="min-width:200px; padding-bottom:0px" />
</box>
<box id="okCancelButtons"/>
</window>

View File

@ -22,6 +22,8 @@ var msgComposeService = Components.classes["component://netscape/messengercompos
msgComposeService = msgComposeService.QueryInterface(Components.interfaces.nsIMsgComposeService); msgComposeService = msgComposeService.QueryInterface(Components.interfaces.nsIMsgComposeService);
var msgCompose = null; var msgCompose = null;
var MAX_RECIPIENTS = 0; var MAX_RECIPIENTS = 0;
var numAttachments = 0;
var currentAttachment = null;
var other_header = ""; var other_header = "";
var update_compose_title_as_you_type = true; var update_compose_title_as_you_type = true;
@ -237,6 +239,8 @@ function GenericSendMessage( msgType )
{ {
Recipients2CompFields(msgCompFields); Recipients2CompFields(msgCompFields);
msgCompFields.SetSubject(document.getElementById("msgSubject").value); msgCompFields.SetSubject(document.getElementById("msgSubject").value);
dump("attachments = " + GenerateAttachmentsString() + "\n");
msgCompFields.SetAttachments(GenerateAttachmentsString());
msgCompose.SendMsg(msgType, getCurrentIdentity(), null); msgCompose.SendMsg(msgType, getCurrentIdentity(), null);
} }
@ -599,3 +603,79 @@ function CloseWindow()
if (msgCompose) if (msgCompose)
msgCompose.CloseWindow(); msgCompose.CloseWindow();
} }
function AttachFile()
{
dump("AttachFile()\n");
currentAttachment = "";
// Get a local file, converted into URL format
try {
var filePicker = Components.classes["component://netscape/filespecwithui"].createInstance();
filePicker = filePicker.QueryInterface(Components.interfaces.nsIFileSpecWithUI);
currentAttachment = filePicker.chooseFile("Enter file to attach");
}
catch (ex) {
dump("failed to get the local file to attach\n");
}
AddAttachment(currentAttachment);
}
function AddAttachment(attachment)
{
if (attachment && (attachment != "")) {
/* dump("attachment = " + attachment + "\n"); */
selectNode = document.getElementById('attachments');
numAttachments = numAttachments + 1;
key = "attachment" + numAttachments;
var opt = new Option(attachment, key);
selectNode.add(opt, null);
}
}
function AttachPage()
{
window.openDialog("chrome://messengercompose/content/MsgAttachPage.xul", "attachPageDialog", "chrome", {addattachmentfunction:AddAttachment});
}
function GenerateAttachmentsString()
{
dump("GenerateAttachmentsString()\n");
attachments = "";
selectNode = document.getElementById('attachments');
if (selectNode == null) return attachments;
options = selectNode.options;
if (options == null) return attachments;
if (options.length == 0) return attachments;
attachments = options[0].text;
for (i=1;i<options.length;i++) {
attachments = attachments + "," + options[i].text;
}
return attachments;
}
function RemoveLastAttachment()
{
dump("RemoveLastAttachment()\n");
selectNode = document.getElementById('attachments');
i = selectNode.options.length;
if (i > 0) {
selectNode.remove(i - 1);
/* bug in the DOM? when I remove the last element, the text
remains. so for now, when I remove the last element, I add
back a blank element, then remove it, so that it looks
correct. bug logged #11010 */
if (i == 1) {
var opt = new Option(" ", " ");
selectNode.add(opt, null);
selectNode.remove(0);
}
}
}

View File

@ -26,6 +26,8 @@ install::
$(MAKE_INSTALL) defaultHtmlBody.html $(DIST)\bin\chrome\messengercompose\content\default $(MAKE_INSTALL) defaultHtmlBody.html $(DIST)\bin\chrome\messengercompose\content\default
$(MAKE_INSTALL) composebe_en.properties $(DIST)\bin\chrome\messengercompose\content\default $(MAKE_INSTALL) composebe_en.properties $(DIST)\bin\chrome\messengercompose\content\default
$(MAKE_INSTALL) addressAutoComplete.js $(DIST)\bin\chrome\messengercompose\content\default $(MAKE_INSTALL) addressAutoComplete.js $(DIST)\bin\chrome\messengercompose\content\default
$(MAKE_INSTALL) MsgAttachPage.js $(DIST)\bin\chrome\messengercompose\content\default
$(MAKE_INSTALL) MsgAttachPage.xul $(DIST)\bin\chrome\messengercompose\content\default
clobber:: clobber::
rm -f $(DIST)\bin\chrome\messengercompose\content\default\messengercompose.xul rm -f $(DIST)\bin\chrome\messengercompose\content\default\messengercompose.xul
@ -34,3 +36,5 @@ clobber::
rm -f $(DIST)\bin\chrome\messengercompose\content\default\defaultHtmlBody.html rm -f $(DIST)\bin\chrome\messengercompose\content\default\defaultHtmlBody.html
rm -f $(DIST)\bin\chrome\messengercompose\content\default\composebe_en.properties rm -f $(DIST)\bin\chrome\messengercompose\content\default\composebe_en.properties
rm -f $(DIST)\bin\chrome\messengercompose\content\default\addressAutoComplete.js rm -f $(DIST)\bin\chrome\messengercompose\content\default\addressAutoComplete.js
rm -f $(DIST)\bin\chrome\messengercompose\content\default\MsgAttachPage.js
rm -f $(DIST)\bin\chrome\messengercompose\content\default\MsgAttachPage.xul

View File

@ -54,7 +54,6 @@ Rights Reserved.
<broadcaster id="dialog.start" ready="false"/> <broadcaster id="dialog.start" ready="false"/>
<observes element="dialog.start" attribute="ready" onchange="ComposeStartup()"/> <observes element="dialog.start" attribute="ready" onchange="ComposeStartup()"/>
<!-- box id="toolbar" align="vertical" style="width:100%;height:100%" --> <!-- box id="toolbar" align="vertical" style="width:100%;height:100%" -->
<toolbox> <toolbox>
<menubar> <menubar>
@ -64,7 +63,13 @@ Rights Reserved.
<menuitem value="&saveCmd.label;" cmd="nsCmd:ComposeSave"/> <menuitem value="&saveCmd.label;" cmd="nsCmd:ComposeSave"/>
<menuitem value="&saveAsCmd.label;" onaction="SaveAsDraft()"/> <menuitem value="&saveAsCmd.label;" onaction="SaveAsDraft()"/>
<menuitem value="&saveAsTemplateCmd.label;" onaction="SaveAsTemplate()"/> <menuitem value="&saveAsTemplateCmd.label;" onaction="SaveAsTemplate()"/>
<menuitem value="&attachCmd.label;" cmd="nsCmd:ComposeAttach"/> <menu id="attachMenu" name="&attachMenu.label;">
<menuitem name="&attachFileCmd.label;" onclick="AttachFile()"/>
<menuitem name="&attachPageCmd.label;" onclick="AttachPage()"/>
<menuitem name="&removeLastAttachmentCmd.label;" onclick="RemoveLastAttachment()"/>
<menuseparator/>
<menuitem name="&attachVCardCmd.label;" onclick="AttachVCard()"/>
</menu>
<menuseparator/> <menuseparator/>
<menuitem value="&sendNowCmd.label;" onaction="SendMessage()"/> <menuitem value="&sendNowCmd.label;" onaction="SendMessage()"/>
<menuitem value="&sendLaterCmd.label;" onaction="SendMessageLater()"/> <menuitem value="&sendLaterCmd.label;" onaction="SendMessageLater()"/>
@ -210,6 +215,12 @@ Rights Reserved.
<html:select id="msgIdentity" flex="80%"/> <html:select id="msgIdentity" flex="80%"/>
</box> </box>
<spring style="height:0.5em"/> <spring style="height:0.5em"/>
<box align="horizontal" flex="100%">
<html:div flex="20%">&attachments.label;</html:div>
<html:select id="attachments" flex="80%">
</html:select>
</box>
<spring style="height:0.5em"/>
<box align="horizontal" flex="100%"> <box align="horizontal" flex="100%">
<box align="vertical" flex="20%"> <box align="vertical" flex="20%">
<box align="vertical" flex="100%"> <box align="vertical" flex="100%">
@ -273,27 +284,6 @@ Rights Reserved.
<html:input id="msgSubject" type="text" flex="80%" onkeyup="SetComposeWindowTitle(event.which);"/> <html:input id="msgSubject" type="text" flex="80%" onkeyup="SetComposeWindowTitle(event.which);"/>
</box> </box>
</box> </box>
<box align="vertical" flex="40%">
<box align="horizontal" flex="100%">
<html:div flex="100%">[attachment box]</html:div>
<!--
<tree id="attachment" class="attachment" flex="100%">
<treehead>
<treerow>
<treecell>Attachment</treecell>
</treerow>
</treehead>
<treechildren id="attachmentTree" open="true">
<treeitem> <treerow> <treecell>aaaa</treecell> </treerow> </treeitem>
<treeitem> <treerow> <treecell>bbb</treecell> </treerow> </treeitem>
<treeitem> <treerow> <treecell>ccc</treecell> </treerow> </treeitem>
<treeitem> <treerow> <treecell>dddd</treecell> </treerow> </treeitem>
<treeitem> <treerow> <treecell>eeeee</treecell> </treerow> </treeitem>
</treechildren>
</tree>
-->
</box>
</box>
</box> </box>
</toolbar> </toolbar>

View File

@ -10,6 +10,7 @@
<!ENTITY followupAddr.label "Followup:"> <!ENTITY followupAddr.label "Followup:">
<!ENTITY subject.label "Subject:"> <!ENTITY subject.label "Subject:">
<!ENTITY attachments.label "Attachments:">
<!-- menu items: the . means that the menu item isn't implemented yet --> <!-- menu items: the . means that the menu item isn't implemented yet -->
@ -19,7 +20,11 @@
<!ENTITY saveCmd.label ".Save"> <!ENTITY saveCmd.label ".Save">
<!ENTITY saveAsCmd.label "Save As (Draft)"> <!ENTITY saveAsCmd.label "Save As (Draft)">
<!ENTITY saveAsTemplateCmd.label "Save As (Template)"> <!ENTITY saveAsTemplateCmd.label "Save As (Template)">
<!ENTITY attachCmd.label ".Attach"> <!ENTITY attachMenu.label "Attach...">
<!ENTITY attachFileCmd.label "File...">
<!ENTITY attachPageCmd.label "Web Page...">
<!ENTITY removeLastAttachmentCmd.label "Remove Last Attachment">
<!ENTITY attachVCardCmd.label ".Personal Card (vCard)">
<!ENTITY sendNowCmd.label "Send Now"> <!ENTITY sendNowCmd.label "Send Now">
<!ENTITY sendLaterCmd.label "Send Later"> <!ENTITY sendLaterCmd.label "Send Later">
<!ENTITY quoteOrigCmd.label ".Quote Original Message"> <!ENTITY quoteOrigCmd.label ".Quote Original Message">

View File

@ -292,7 +292,7 @@ nsresult nsMsgCompose::_SendMsg(MSG_DeliverMode deliverMode,
m_compFields->SetReplyTo(NS_CONST_CAST(char*, (const char *)replyTo)); m_compFields->SetReplyTo(NS_CONST_CAST(char*, (const char *)replyTo));
m_compFields->SetOrganization(NS_CONST_CAST(char*, (const char *)organization)); m_compFields->SetOrganization(NS_CONST_CAST(char*, (const char *)organization));
#ifdef DEBUG_ducarroz #if defined(DEBUG_ducarroz) || defined(DEBUG_seth_)
printf("----------------------------\n"); printf("----------------------------\n");
printf("-- Sending Mail Message --\n"); printf("-- Sending Mail Message --\n");
printf("----------------------------\n"); printf("----------------------------\n");
@ -300,6 +300,7 @@ nsresult nsMsgCompose::_SendMsg(MSG_DeliverMode deliverMode,
printf("To: %s Cc: %s Bcc: %s\n", m_compFields->GetTo(), m_compFields->GetCc(), m_compFields->GetBcc()); printf("To: %s Cc: %s Bcc: %s\n", m_compFields->GetTo(), m_compFields->GetCc(), m_compFields->GetBcc());
printf("Newsgroups: %s\n", m_compFields->GetNewsgroups()); printf("Newsgroups: %s\n", m_compFields->GetNewsgroups());
printf("Subject: %s \nMsg: %s\n", m_compFields->GetSubject(), m_compFields->GetBody()); printf("Subject: %s \nMsg: %s\n", m_compFields->GetSubject(), m_compFields->GetBody());
printf("Attachments: %s\n",m_compFields->GetAttachments());
printf("----------------------------\n"); printf("----------------------------\n");
#endif //DEBUG #endif //DEBUG
@ -343,7 +344,13 @@ nsresult nsMsgCompose::_SendMsg(MSG_DeliverMode deliverMode,
tEditor = m_editor; tEditor = m_editor;
} }
else else
tEditor = nsnull; tEditor = nsnull;
#ifdef DEBUG
printf("RHP: do your magic here.\n");
printf("Attachments: %s\n",m_compFields->GetAttachments());
#endif
rv = mMsgSend->CreateAndSendMessage( rv = mMsgSend->CreateAndSendMessage(
tEditor, tEditor,
identity, identity,

View File

@ -186,8 +186,10 @@ public:
nsIMsgSendListener **CreateListenerArray(); nsIMsgSendListener **CreateListenerArray();
private: private:
nsMsgCompose *mComposeObj; nsMsgCompose *mComposeObj;
MSG_DeliverMode mDeliverMode; MSG_DeliverMode mDeliverMode;
}; };

View File

@ -10,6 +10,7 @@
<!ENTITY followupAddr.label "Followup:"> <!ENTITY followupAddr.label "Followup:">
<!ENTITY subject.label "Subject:"> <!ENTITY subject.label "Subject:">
<!ENTITY attachments.label "Attachments:">
<!-- menu items: the . means that the menu item isn't implemented yet --> <!-- menu items: the . means that the menu item isn't implemented yet -->
@ -19,7 +20,11 @@
<!ENTITY saveCmd.label ".Save"> <!ENTITY saveCmd.label ".Save">
<!ENTITY saveAsCmd.label "Save As (Draft)"> <!ENTITY saveAsCmd.label "Save As (Draft)">
<!ENTITY saveAsTemplateCmd.label "Save As (Template)"> <!ENTITY saveAsTemplateCmd.label "Save As (Template)">
<!ENTITY attachCmd.label ".Attach"> <!ENTITY attachMenu.label "Attach...">
<!ENTITY attachFileCmd.label "File...">
<!ENTITY attachPageCmd.label "Web Page...">
<!ENTITY removeLastAttachmentCmd.label "Remove Last Attachment">
<!ENTITY attachVCardCmd.label ".Personal Card (vCard)">
<!ENTITY sendNowCmd.label "Send Now"> <!ENTITY sendNowCmd.label "Send Now">
<!ENTITY sendLaterCmd.label "Send Later"> <!ENTITY sendLaterCmd.label "Send Later">
<!ENTITY quoteOrigCmd.label ".Quote Original Message"> <!ENTITY quoteOrigCmd.label ".Quote Original Message">