зеркало из https://github.com/mozilla/pjs.git
fix 16360 auto save of drafts, sr=mscott
This commit is contained in:
Родитель
51faac852b
Коммит
089451abb8
|
@ -97,6 +97,8 @@ var gReceiptOptionChanged;
|
|||
var gAttachVCardOptionChanged;
|
||||
|
||||
var gMailSession;
|
||||
var gAutoSaveInterval;
|
||||
var gAutoSaveTimeout;
|
||||
|
||||
const kComposeAttachDirPrefName = "mail.compose.attach.dir";
|
||||
|
||||
|
@ -227,6 +229,8 @@ var gComposeRecyclingListener = {
|
|||
var event = document.createEvent('Events');
|
||||
event.initEvent('compose-window-close', false, true);
|
||||
document.getElementById("msgcomposeWindow").dispatchEvent(event);
|
||||
if (gAutoSaveTimeout)
|
||||
clearTimeout(gAutoSaveTimeout);
|
||||
},
|
||||
|
||||
onReopen: function(params) {
|
||||
|
@ -1376,6 +1380,12 @@ function ComposeStartup(recycled, aParams)
|
|||
if (document.getElementById("sidebar").getAttribute("src") == "")
|
||||
setTimeout(toggleAddressPicker, 0); // do this on a delay so we don't hurt perf. on bringing up a new compose window
|
||||
}
|
||||
gAutoSaveInterval = sPrefs.getBoolPref("mail.compose.autosave")
|
||||
? sPrefs.getIntPref("mail.compose.autosaveinterval") * 60000
|
||||
: 0;
|
||||
|
||||
if (gAutoSaveInterval)
|
||||
gAutoSaveTimeout = setTimeout("AutoSave()", gAutoSaveInterval);
|
||||
}
|
||||
|
||||
// The new, nice, simple way of getting notified when a new editor has been created
|
||||
|
@ -1454,7 +1464,6 @@ function ComposeLoad()
|
|||
// do nothing...
|
||||
}
|
||||
|
||||
|
||||
if (gLogComposePerformance)
|
||||
sMsgComposeService.TimeStamp("Start initializing the compose window (ComposeLoad)", false);
|
||||
|
||||
|
@ -1514,6 +1523,8 @@ function ComposeUnload()
|
|||
RemoveDirectorySettingsObserver(gCurrentAutocompleteDirectory);
|
||||
if (gMsgCompose)
|
||||
gMsgCompose.UnregisterStateListener(stateListener);
|
||||
if (gAutoSaveTimeout)
|
||||
clearTimeout(gAutoSaveTimeout);
|
||||
}
|
||||
|
||||
function SetDocumentCharacterSet(aCharset)
|
||||
|
@ -1762,6 +1773,7 @@ function GenericSendMessage( msgType )
|
|||
msgType == nsIMsgCompDeliverMode.Later ||
|
||||
msgType == nsIMsgCompDeliverMode.Save ||
|
||||
msgType == nsIMsgCompDeliverMode.SaveAsDraft ||
|
||||
msgType == nsIMsgCompDeliverMode.AutoSaveAsDraft ||
|
||||
msgType == nsIMsgCompDeliverMode.SaveAsTemplate)
|
||||
{
|
||||
var fallbackCharset = new Object;
|
||||
|
@ -3262,3 +3274,12 @@ function loadHTMLMsgPrefs()
|
|||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function AutoSave()
|
||||
{
|
||||
if (gMsgCompose.editor && (gContentChanged || gMsgCompose.bodyModified))
|
||||
GenericSendMessage(nsIMsgCompDeliverMode.AutoSaveAsDraft);
|
||||
|
||||
gAutoSaveTimeout = setTimeout("AutoSave()", gAutoSaveInterval);
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
<script type="application/x-javascript">
|
||||
<![CDATA[
|
||||
var _elementIDs = ["forwardMessageMode", "spellCheckBeforeSend", "strictlyMime",
|
||||
"wrapLength", "mailWarnOnSendAccelKey",
|
||||
"wrapLength", "mailWarnOnSendAccelKey", "autoSave",
|
||||
"autoSaveInterval",
|
||||
// auto complete prefs
|
||||
"addressingAutocomplete", "autocompleteLDAP",
|
||||
"directoriesList"];
|
||||
|
@ -78,6 +79,12 @@
|
|||
<checkbox id="mailWarnOnSendAccelKey" label="&warnOnSendAccelKey.label;"
|
||||
prefstring="mail.warn_on_send_accel_key"
|
||||
accesskey="&warnOnSendAccelKey.accesskey;"/>
|
||||
|
||||
<hbox align="center" pack="start">
|
||||
<checkbox id="autoSave" label="&autoSave.label;" prefstring="mail.compose.autosave"/>
|
||||
<textbox id="autoSaveInterval" size="2" preftype="int" prefstring="mail.compose.autosaveinterval"/>
|
||||
<label value="&autoSaveEnd.label;"/>
|
||||
</hbox>
|
||||
|
||||
<hbox align="center">
|
||||
<label value="&wrapOutMsg.label;" accesskey="&wrapOutMsg.accesskey;" control="wrapLength"/>
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
<!ENTITY useMIME.accesskey "o">
|
||||
<!ENTITY warnOnSendAccelKey.label "Confirm when using keyboard shortcut to send message">
|
||||
<!ENTITY warnOnSendAccelKey.accesskey "C">
|
||||
<!ENTITY autoSave.label "AutoSave every">
|
||||
<!ENTITY autoSaveEnd.label "minutes">
|
||||
<!-- LOCALIZATION NOTE (wrapOutMsg.label): This will concatenate with "xxx characters", using a number and (char.label). -->
|
||||
<!ENTITY wrapOutMsg.label "Wrap plain text messages at">
|
||||
<!ENTITY wrapOutMsg.accesskey "l">
|
||||
|
|
|
@ -59,7 +59,7 @@ interface nsIMsgCompSaveType {
|
|||
|
||||
typedef long MSG_DeliverMode;
|
||||
|
||||
[scriptable, uuid(f338eba4-7530-11d3-8833-006008948010)]
|
||||
[scriptable, uuid(a9f27dd7-8f89-4de3-8fbf-41b789c16ee5)]
|
||||
interface nsIMsgCompDeliverMode {
|
||||
const long Now = 0;
|
||||
const long Later = 1;
|
||||
|
@ -68,6 +68,7 @@ interface nsIMsgCompDeliverMode {
|
|||
const long SaveAsDraft = 4;
|
||||
const long SaveAsTemplate = 5;
|
||||
const long SendUnsent = 6;
|
||||
const long AutoSaveAsDraft = 7;
|
||||
};
|
||||
|
||||
[scriptable, uuid(f38ea280-e090-11d3-a449-e3153319347c)]
|
||||
|
|
|
@ -879,6 +879,13 @@ nsresult nsMsgCompose::_SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *ide
|
|||
if (!composeSendListener)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
// right now, AutoSaveAsDraft is identical to SaveAsDraft as
|
||||
// far as the msg send code is concerned. This way, we don't have
|
||||
// to add an nsMsgDeliverMode for autosaveasdraft, and add cases for
|
||||
// it in the msg send code.
|
||||
if (deliverMode == nsIMsgCompDeliverMode::AutoSaveAsDraft)
|
||||
deliverMode = nsIMsgCompDeliverMode::SaveAsDraft;
|
||||
|
||||
composeSendListener->SetMsgCompose(this);
|
||||
composeSendListener->SetDeliverMode(deliverMode);
|
||||
|
||||
|
@ -1003,25 +1010,29 @@ NS_IMETHODIMP nsMsgCompose::SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity
|
|||
if (progress)
|
||||
{
|
||||
mProgress = progress;
|
||||
nsAutoString msgSubject;
|
||||
m_compFields->GetSubject(msgSubject);
|
||||
|
||||
PRBool showProgress = PR_FALSE;
|
||||
nsCOMPtr<nsIPrefBranch> prefBranch (do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (prefBranch)
|
||||
if (deliverMode != nsIMsgCompDeliverMode::AutoSaveAsDraft)
|
||||
{
|
||||
prefBranch->GetBoolPref("mailnews.show_send_progress", &showProgress);
|
||||
if (showProgress)
|
||||
{
|
||||
nsCOMPtr<nsIMsgComposeProgressParams> params = do_CreateInstance(NS_MSGCOMPOSEPROGRESSPARAMS_CONTRACTID, &rv);
|
||||
if (NS_FAILED(rv) || !params)
|
||||
return NS_ERROR_FAILURE;
|
||||
nsAutoString msgSubject;
|
||||
m_compFields->GetSubject(msgSubject);
|
||||
|
||||
params->SetSubject(msgSubject.get());
|
||||
params->SetDeliveryMode(deliverMode);
|
||||
PRBool showProgress = PR_FALSE;
|
||||
nsCOMPtr<nsIPrefBranch> prefBranch (do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (prefBranch)
|
||||
{
|
||||
prefBranch->GetBoolPref("mailnews.show_send_progress", &showProgress);
|
||||
if (showProgress)
|
||||
{
|
||||
nsCOMPtr<nsIMsgComposeProgressParams> params = do_CreateInstance(NS_MSGCOMPOSEPROGRESSPARAMS_CONTRACTID, &rv);
|
||||
if (NS_FAILED(rv) || !params)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
params->SetSubject(msgSubject.get());
|
||||
params->SetDeliveryMode(deliverMode);
|
||||
|
||||
mProgress->OpenProgressDialog(m_window, aMsgWindow, "chrome://messenger/content/messengercompose/sendProgress.xul", params);
|
||||
mProgress->GetPrompter(getter_AddRefs(prompt));
|
||||
mProgress->OpenProgressDialog(m_window, aMsgWindow, "chrome://messenger/content/messengercompose/sendProgress.xul", params);
|
||||
mProgress->GetPrompter(getter_AddRefs(prompt));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1099,6 +1110,7 @@ NS_IMETHODIMP nsMsgCompose::SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity
|
|||
case nsIMsgCompDeliverMode::Later:
|
||||
nsMsgDisplayMessageByID(prompt, NS_MSG_UNABLE_TO_SEND_LATER);
|
||||
break;
|
||||
case nsIMsgCompDeliverMode::AutoSaveAsDraft:
|
||||
case nsIMsgCompDeliverMode::SaveAsDraft:
|
||||
nsMsgDisplayMessageByID(prompt, NS_MSG_UNABLE_TO_SAVE_DRAFT);
|
||||
break;
|
||||
|
|
|
@ -401,6 +401,7 @@ NS_IMETHODIMP nsMsgSendReport::DisplayReport(nsIPrompt *prompt, PRBool showError
|
|||
preStrId = NS_MSG_UNABLE_TO_SEND_LATER;
|
||||
break;
|
||||
|
||||
case nsIMsgCompDeliverMode::AutoSaveAsDraft:
|
||||
case nsIMsgCompDeliverMode::SaveAsDraft:
|
||||
titleID = NS_MSG_SAVE_DRAFT_TITLE;
|
||||
preStrId = NS_MSG_UNABLE_TO_SAVE_DRAFT;
|
||||
|
|
|
@ -71,6 +71,9 @@ pref("mailnews.headers.showUserAgent", false);
|
|||
// is displayed in the message pane or not...
|
||||
pref("mailnews.headers.showOrganization", false);
|
||||
|
||||
// mailnews tcp read+write timeout in seconds.
|
||||
pref("mailnews.tcptimeout", 60);
|
||||
|
||||
// Mail server preferences, pop by default
|
||||
pref("mail.server_type", 0); // 0 pop, 1 imap,
|
||||
// (Unix only:)
|
||||
|
@ -152,6 +155,8 @@ pref("mail.html_compose", true);
|
|||
// this will show up in the address picker in the compose window
|
||||
// examples: "X-Face" or "Approved,X-No-Archive"
|
||||
pref("mail.compose.other.header", "");
|
||||
pref("mail.compose.autosave", false);
|
||||
pref("mail.compose.autosaveinterval", 5); // in minutes
|
||||
pref("mail.fcc_folder", "");
|
||||
pref("mail.encrypt_outgoing_mail", false);
|
||||
pref("mail.crypto_sign_outgoing_mail", false);
|
||||
|
|
Загрузка…
Ссылка в новой задаче