gecko-dev/lib/mailto/msgsendp.h
akkana%netscape.com 1a97e11ffd Mailto landing.
The mailto library is the mail compose code ripped out of the old
Messenger libmsg library, then cleaned up somewhat
(it could still use more cleaning).
This library should only be built ifdef MOZ_MAIL_COMPOSE.
1998-09-04 19:04:30 +00:00

113 lines
3.3 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef MSG_SENDP_H
#define MSG_SENDP_H
#include "msgzap.h"
#include "mimeenc.h"
class MSG_SendMimeDeliveryState;
typedef int (*MSG_SendPartWriteFunc)(const char* line, int32 size,
XP_Bool isheader, void* closure);
class MSG_SendPart : public MSG_ZapIt {
public:
MSG_SendPart(MSG_SendMimeDeliveryState* state, int16 part_csid = 0);
virtual ~MSG_SendPart(); // Note that the destructor also destroys
// any children that were added.
virtual int Write();
virtual int SetFile(const char* filename, XP_FileType filetype);
const char* GetFilename() {return m_filename;}
XP_FileType GetFiletype() {return m_filetype;}
virtual int SetBuffer(const char* buffer);
const char* GetBuffer() {return m_buffer;}
virtual int SetType(const char* type);
const char* GetType() {return m_type;}
int16 GetCSID() { return m_csid; }
virtual int SetOtherHeaders(const char* other);
const char* SetOtherHeaders() {return m_other;}
virtual int AppendOtherHeaders(const char* moreother);
virtual int SetMimeDeliveryState(MSG_SendMimeDeliveryState* state);
// Note that the MSG_SendPart class will take over ownership of the
// MimeEncoderData* object, deleting it when it chooses. (This is
// necessary because deleting these objects is the only current way to
// flush out the data in them.)
int SetEncoderData(MimeEncoderData* data);
MimeEncoderData *GetEncoderData() {return m_encoder_data;}
int SetStripSensitiveHeaders(XP_Bool value) {
m_strip_sensitive_headers = value;
return 0;
}
XP_Bool GetStripSensitiveHeaders() {return m_strip_sensitive_headers;}
virtual int AddChild(MSG_SendPart* child);
int32 GetNumChildren() {return m_numchildren;}
MSG_SendPart* GetChild(int32 which);
MSG_SendPart* DetachChild(int32 which);
virtual int SetMainPart(XP_Bool value);
XP_Bool IsMainPart() {return m_mainpart;}
protected:
int CopyString(char** dest, const char* src);
int PushBody(char* buffer, int32 length);
MSG_SendMimeDeliveryState* m_state;
MSG_SendPart* m_parent;
char* m_filename;
XP_FileType m_filetype;
char* m_buffer;
char* m_type;
char* m_other;
int16 m_csid; // charset ID associated with this part
XP_Bool m_strip_sensitive_headers;
MimeEncoderData *m_encoder_data; /* Opaque state for base64/qp encoder. */
MSG_SendPart** m_children;
int32 m_numchildren;
// Data used while actually writing.
XP_Bool m_firstBlock;
XP_Bool m_needIntlConversion;
CCCDataObject m_intlDocToMailConverter;
XP_Bool m_mainpart;
XP_Bool m_just_hit_CR;
static int32 M_counter;
};
#endif /* MSG_SENDP_H */