You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/mimelib/basicmsg.cpp

439 lines
9.7 KiB

//=============================================================================
// File: basicmsg.cpp
// Contents: Definitions for BasicMessage
// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net>
// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html
//
// Copyright (c) 1996, 1997 Douglas W. Sauder
// All rights reserved.
//
// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT,
// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER
// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT
// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
//
//=============================================================================
#include <assert.h>
#include <stdlib.h>
#include "basicmsg.h"
BasicMessage::BasicMessage()
{
mMessage = DwMessage::NewMessage(mEmptyString, 0);
}
BasicMessage::BasicMessage(DwMessage* aMsg)
{
mMessage = aMsg;
}
BasicMessage::~BasicMessage()
{
if (mMessage != 0) {
delete mMessage;
}
}
void BasicMessage::TakeMessage(DwMessage* aMsg)
{
// Delete the old DwMessage
if (mMessage) {
delete mMessage;
}
// Assign the new DwMessage
mMessage = aMsg;
}
const DwString& BasicMessage::AsString()
{
// Assemble the DwMessage
mMessage->Assemble();
// Return its string contents
return mMessage->AsString();
}
void BasicMessage::SetAutomaticFields()
{
DwHeaders& headers = mMessage->Headers();
headers.MimeVersion().FromString("1.0");
headers.MessageId().CreateDefault();
}
const DwString& BasicMessage::DateStr() const
{
// Access the 'Date' header field and return its contents as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasDate()) {
return headers.Date().AsString();
}
else {
return mEmptyString;
}
}
DwUint32 BasicMessage::Date() const
{
// Access the 'Date' header field and return its contents as a UNIX
// time (i.e. POSIX time)
DwHeaders& headers = mMessage->Headers();
if (headers.HasDate()) {
return headers.Date().AsUnixTime();
}
else {
return (DwUint32) -1;
}
}
void BasicMessage::SetDate(DwUint32 aUnixTime)
{
// Access the 'Date' header field and set its contents from a UNIX
// time (i.e. POSIX time)
mMessage->Headers().Date().FromUnixTime(aUnixTime);
}
const DwString& BasicMessage::To() const
{
// Access the 'To' header field and return its contents as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasTo()) {
return headers.To().AsString();
}
else {
return mEmptyString;
}
}
void BasicMessage::SetTo(const DwString& aStr)
{
// Access the 'To' header field and set its contents from a string
mMessage->Headers().To().FromString(aStr);
}
const DwString& BasicMessage::Cc() const
{
// Access the 'Cc' header field and return its contents as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasCc()) {
return headers.Cc().AsString();
}
else {
return mEmptyString;
}
}
void BasicMessage::SetCc(const DwString& aStr)
{
// Access the 'Cc' header field and set its contents from a string
mMessage->Headers().Cc().FromString(aStr);
}
const DwString& BasicMessage::Bcc() const
{
// Access the 'Bcc' header field and return its contents as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasBcc()) {
return headers.Bcc().AsString();
}
else {
return mEmptyString;
}
}
void BasicMessage::SetBcc(const DwString& aStr)
{
// Access the 'Bcc' header field and set its contents from a string
mMessage->Headers().Bcc().FromString(aStr);
}
const DwString& BasicMessage::From() const
{
// Access the 'From' header field and return its contents as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasFrom()) {
return headers.From().AsString();
}
else {
return mEmptyString;
}
}
void BasicMessage::SetFrom(const DwString& aStr)
{
// Access the 'From' header field and set its contents from a string
mMessage->Headers().From().FromString(aStr);
}
const DwString& BasicMessage::Subject() const
{
// Access the 'Subject' header field and return its contents as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasSubject()) {
return headers.Subject().AsString();
}
else {
return mEmptyString;
}
}
void BasicMessage::SetSubject(const DwString& aStr)
{
// Access the 'Subject' header field and set its contents from a string
mMessage->Headers().Subject().FromString(aStr);
}
const DwString& BasicMessage::TypeStr() const
{
// Access the 'Content-Type' header field and return its 'type'
// as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasContentType()) {
return headers.ContentType().TypeStr();
}
else {
return mEmptyString;
}
}
int BasicMessage::Type() const
{
// Access the 'Content-Type' header field and return its 'type'
// as an enumerated type
DwHeaders& headers = mMessage->Headers();
if (headers.HasContentType()) {
return headers.ContentType().Type();
}
else {
return DwMime::kTypeNull;
}
}
void BasicMessage::SetTypeStr(const DwString& aStr)
{
// Access the 'Content-Type' header field and set its 'type'
// from a string
mMessage->Headers().ContentType().SetTypeStr(aStr);
}
void BasicMessage::SetType(int aType)
{
// Access the 'Content-Type' header field and set its 'type'
// from an enumerated type
mMessage->Headers().ContentType().SetType(aType);
}
const DwString& BasicMessage::SubtypeStr() const
{
// Access the 'Content-Type' header field and return its 'subtype'
// as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasContentType()) {
return headers.ContentType().SubtypeStr();
}
else {
return mEmptyString;
}
}
int BasicMessage::Subtype() const
{
// Access the 'Content-Type' header field and return its 'subtype'
// as an enumerated type
DwHeaders& headers = mMessage->Headers();
if (headers.HasContentType()) {
return headers.ContentType().Subtype();
}
else {
return DwMime::kSubtypeNull;
}
}
void BasicMessage::SetSubtypeStr(const DwString& aStr)
{
// Access the 'Content-Type' header field and set its 'subtype'
// from a string
mMessage->Headers().ContentType().SetSubtypeStr(aStr);
}
void BasicMessage::SetSubtype(int aSubtype)
{
// Access the 'Content-Type' header field and set its 'subtype'
// from an enumerated type
mMessage->Headers().ContentType().SetSubtype(aSubtype);
}
const DwString& BasicMessage::ContentTransferEncodingStr() const
{
// Access the 'Content-Transfer-Encoding' header field and return
// its contents as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasContentTransferEncoding()) {
return headers.ContentTransferEncoding().AsString();
}
else {
return mEmptyString;
}
}
int BasicMessage::ContentTransferEncoding() const
{
// Access the 'Content-Transfer-Encoding' header field and return
// its contents as an enumerated type
DwHeaders& headers = mMessage->Headers();
if (headers.HasContentTransferEncoding()) {
return headers.ContentTransferEncoding().AsEnum();
}
else {
return DwMime::kCteNull;
}
}
void BasicMessage::SetContentTransferEncodingStr(const DwString& aStr)
{
// Access the 'Content-Transfer-Encoding' header field and set
// its contents from a string
mMessage->Headers().ContentTransferEncoding().FromString(aStr);
}
void BasicMessage::SetContentTransferEncoding(int aCte)
{
// Access the 'Content-Transfer-Encoding' header field and set
// its contents from an enumerated type
mMessage->Headers().ContentTransferEncoding().FromEnum(aCte);
}
const DwString& BasicMessage::CteStr() const
{
// Access the 'Content-Transfer-Encoding' header field and return
// its contents as a string
DwHeaders& headers = mMessage->Headers();
if (headers.HasContentTransferEncoding()) {
return headers.ContentTransferEncoding().AsString();
}
else {
return mEmptyString;
}
}
int BasicMessage::Cte() const
{
// Access the 'Content-Transfer-Encoding' header field and return
// its contents as an enumerated type
DwHeaders& headers = mMessage->Headers();
if (headers.HasContentTransferEncoding()) {
return headers.ContentTransferEncoding().AsEnum();
}
else {
return DwMime::kCteNull;
}
}
void BasicMessage::SetCteStr(const DwString& aStr)
{
// Access the 'Content-Transfer-Encoding' header field and set
// its contents from a string
mMessage->Headers().ContentTransferEncoding().FromString(aStr);
}
void BasicMessage::SetCte(int aCte)
{
// Access the 'Content-Transfer-Encoding' header field and set
// its contents from an enumerated type
mMessage->Headers().ContentTransferEncoding().FromEnum(aCte);
}
const DwString& BasicMessage::Body() const
{
// Access the message body and return its contents as a string
const DwString& body = mMessage->Body().AsString();
return body;
}
void BasicMessage::SetBody(const DwString& aStr)
{
// Access the message body and set its contents from a string
mMessage->Body().FromString(aStr);
}