/*
    This file is part of libkcal.

    Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public License
    along with this library; see the file COPYING.LIB.  If not, write to
    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.
*/

#include <tqstringlist.h>

#include <kdebug.h>
#include <tdelocale.h>

#include "attendee.h"

using namespace KCal;

Attendee::Attendee( const TQString &name, const TQString &email, bool _rsvp,
                    Attendee::PartStat s, Attendee::Role r, const TQString &u)
  : Person( name, email )
{
  mRSVP = _rsvp;
  mStatus = s;
  mRole = r;
  mUid = u;
}

Attendee::~Attendee()
{
}

bool KCal::operator==( const Attendee& a1, const Attendee& a2 )
{
    return ( operator==( (const Person&)a1, (const Person&) a2 ) &&
             a1.RSVP() == a2.RSVP() &&
             a1.role() == a2.role() &&
             a1.status() == a2.status() &&
             a1.uid() == a2.uid() &&
             a1.delegate() == a2.delegate() &&
             a1.delegator() == a2.delegator() );
}

void Attendee::setStatus( Attendee::PartStat s )
{
  mStatus = s;
}

Attendee::PartStat Attendee::status() const
{
  return mStatus;
}

TQString Attendee::statusStr() const
{
  return statusName( mStatus );
}

TQString Attendee::statusName( Attendee::PartStat s )
{
  switch ( s ) {
    default:
    case NeedsAction:
      return i18n("Needs Action");
      break;
    case Accepted:
      return i18n("Accepted");
      break;
    case Declined:
      return i18n("Declined");
      break;
    case Tentative:
      return i18n("attendee status", "Tentative");
      break;
    case Delegated:
      return i18n("Delegated");
      break;
    case Completed:
      return i18n("Completed");
      break;
    case InProcess:
      return i18n("In Process");
      break;
    case None:
      return i18n("attendee status unknown", "Unknown");
      break;
  }
}

TQStringList Attendee::statusList()
{
  TQStringList list;
  list << statusName( NeedsAction );
  list << statusName( Accepted );
  list << statusName( Declined );
  list << statusName( Tentative );
  list << statusName( Delegated );
  list << statusName( Completed );
  list << statusName( InProcess );

  return list;
}


void Attendee::setRole( Attendee::Role r )
{
  mRole = r;
}

Attendee::Role Attendee::role() const
{
  return mRole;
}

TQString Attendee::roleStr() const
{
  return roleName( mRole );
}

void Attendee::setUid( const TQString &uid )
{
  mUid = uid;
}

TQString Attendee::uid() const
{
  return mUid;
}

TQString Attendee::roleName( Attendee::Role r )
{
  switch ( r ) {
    case Chair:
      return i18n("Chair");
      break;
    default:
    case ReqParticipant:
      return i18n("Participant");
      break;
    case OptParticipant:
      return i18n("Optional Participant");
      break;
    case NonParticipant:
      return i18n("Observer");
      break;
  }
}

TQStringList Attendee::roleList()
{
  TQStringList list;
  list << roleName( ReqParticipant );
  list << roleName( OptParticipant );
  list << roleName( NonParticipant );
  list << roleName( Chair );

  return list;
}
