using System;
using System.Collections.Generic;
using System.ComponentModel;
using FastReport.Utils;
namespace FastReport
{
///
/// Contains the email settings such as recipient(s) address, name, subject, message body.
///
///
///
[TypeConverter(typeof(FastReport.TypeConverters.FRExpandableObjectConverter))]
public class EmailSettings
{
#region Fields
private string[] recipients;
private string subject;
private string message;
#endregion
#region Properties
///
/// Gets or sets the recipient(s) email addresses.
///
///
/// This property contains one or several email addresses in the following form: "john@url.com".
///
public string[] Recipients
{
get { return recipients; }
set { recipients = value; }
}
///
/// Gets or sets the message subject.
///
public string Subject
{
get { return subject; }
set { subject = value; }
}
///
/// Gets or sets the message body.
///
public string Message
{
get { return message; }
set { message = value; }
}
internal string RecipientsText
{
get
{
if (Recipients == null)
return "";
string result = "";
foreach (string recipient in Recipients)
{
result += recipient + "\r\n";
}
return result.Substring(0, result.Length - 2);
}
set
{
if (String.IsNullOrEmpty(value))
{
recipients = null;
return;
}
Recipients = value.Replace("\r\n", "\n").Split('\n');
}
}
internal string FirstRecipient
{
get { return Recipients == null ? "" : Recipients[0]; }
}
internal string[] CCRecipients
{
get
{
if (Recipients == null || Recipients.Length == 1)
return null;
List result = new List();
for (int i = 1; i < Recipients.Length; i++)
{
result.Add(Recipients[i]);
}
return result.ToArray();
}
}
#endregion
#region Public Methods
///
/// Copies email settings from another source.
///
/// Source to copy settings from.
public void Assign(EmailSettings source)
{
Recipients = source.Recipients;
Subject = source.Subject;
Message = source.Message;
}
///
/// Resets all settings to its default values.
///
public void Clear()
{
recipients = null;
subject = "";
message = "";
}
internal void Serialize(FRWriter writer, EmailSettings c)
{
if (Recipients != c.Recipients)
writer.WriteValue("EmailSettings.Recipients", Recipients);
if (Subject != c.Subject)
writer.WriteStr("EmailSettings.Subject", Subject);
if (Message != c.Message)
writer.WriteStr("EmailSettings.Message", Message);
}
#endregion
///
/// Initializes a new instance of the class with default settings.
///
public EmailSettings()
{
Clear();
}
}
}