// Note: Instrumentation statements are highlighted in green
#include "EmailAddresses.hpp"
#include "string_io.hpp"
///////////////////////////////////////////////////////////////////////////////
// EmailAddresses class
///////////////////////////////////////////////////////////////////////////////
// Visual Member Definition
VISIBILITY_START(EmailAddresses, "Email Addresss", 7)
VVARIABLE(EmailAddresses, newAddress, "New Address", 0, 0)
VVCONTAINER(EmailAddresses, emailAddressList, "Address list", 0, 0)
VVITERATOR(EmailAddresses, emailAddressIter, emailAddressList, EmailAddressList, "Address iterator", 0, 0)
VVOID_FUNCTION(EmailAddresses, add, "Add", 0, 0)
VVOID_FUNCTION(EmailAddresses, remove, "Remove", 0, 0)
VVOID_FUNCTION(EmailAddresses, setDefault, "Set as default", 0, 0)
VCHARPTR_FUNCTION(EmailAddresses, getDefaultEmailAddress, "Default E-Mail Address", 0, 0)
VVOID_FUNCTION(EmailAddresses, clear, "Clear", 0, 0)
VISIBILITY_END
EmailAddresses::EmailAddresses(void)
{
emailAddressIter = emailAddressList.begin();
}
EmailAddresses::EmailAddresses(const EmailAddresses & that)
{
*this = that;
}
EmailAddresses::~EmailAddresses(void)
{
}
EmailAddresses & EmailAddresses::operator =(const EmailAddresses & that)
{
if (this != &that) {
newAddress = that.newAddress;
emailAddressList = that.emailAddressList;
emailAddressIter = emailAddressList.begin();
}
return *this;
}
std::ostream & operator<< (std::ostream& os, EmailAddresses & out_obj)
{
os << out_obj.newAddress << " ";
os << out_obj.emailAddressList.size() << " ";
EmailAddressList::iterator c_iter = out_obj.emailAddressList.begin();
while (c_iter != out_obj.emailAddressList.end()) {
os << *c_iter;
++c_iter;
}
return os;
}
std::istream & operator>> (std::istream & is, EmailAddresses & in_obj)
{
int item_size;
is >> in_obj.newAddress;
is >> item_size;
if (item_size) {
EmailAddressList::value_type s_obj;
while (item_size--) {
is >> s_obj;
in_obj.emailAddressList.insert(in_obj.emailAddressList.end(), s_obj);
}
}
in_obj.emailAddressIter = in_obj.emailAddressList.begin();
return is;
}
void EmailAddresses::add(void)
{
emailAddressList.push_back(newAddress);
}
void EmailAddresses::remove(void)
{
if (emailAddressIter != emailAddressList.end())
emailAddressIter = emailAddressList.erase(emailAddressIter);
}
void EmailAddresses::setDefault(void)
{
if (emailAddressIter != emailAddressList.end()) {
EmailAddressList::iterator c_iter = emailAddressList.begin();
while (c_iter != emailAddressList.end()) {
if (c_iter != emailAddressIter)
(*c_iter).isDefault = false;
else
(*c_iter).isDefault = true;
++c_iter;
}
}
}
char * EmailAddresses::getDefaultEmailAddress(void)
{
EmailAddressList::iterator c_iter = emailAddressList.begin();
while (c_iter != emailAddressList.end()) {
if ((*c_iter).isDefault)
return const_cast<char *>((*c_iter).emailAddress.c_str());
++c_iter;
}
return NULL;
}
void EmailAddresses::clear(void)
{
newAddress.clear();
emailAddressList.clear();
emailAddressIter = emailAddressList.begin();
}
void EmailAddresses::populateEditView(void)
{
newAddress.populateEditView();
EmailAddressList::value_type c_object;
c_object.populateEditView();
emailAddressList.insert(emailAddressList.end(), c_object);
emailAddressList.insert(emailAddressList.end(), c_object);
emailAddressList.insert(emailAddressList.end(), c_object);
emailAddressIter = emailAddressList.begin();
}
|