/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM calIWcapCalendar.idl
 */

#ifndef __gen_calIWcapCalendar_h__
#define __gen_calIWcapCalendar_h__


#ifndef __gen_calICalendar_h__
#include "calICalendar.h"
#endif

#ifndef __gen_calIDateTime_h__
#include "calIDateTime.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class calIWcapSession; /* forward declaration */


/* starting interface:    calIWcapCalendar */
#define CALIWCAPCALENDAR_IID_STR "21a189df-6c92-41f6-9e2b-1929ef25caee"

#define CALIWCAPCALENDAR_IID \
  {0x21a189df, 0x6c92, 0x41f6, \
    { 0x9e, 0x2b, 0x19, 0x29, 0xef, 0x25, 0xca, 0xee }}

/** Adds WCAP specific capabilities.
 */
class NS_NO_VTABLE calIWcapCalendar : public calICalendar {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIWCAPCALENDAR_IID)

  /**
     * User session this calendar instance belongs to.
     */
  /* readonly attribute calIWcapSession session; */
  NS_IMETHOD GetSession(calIWcapSession * *aSession) = 0;

  /**
     * Current calId the calendar instance acts on; defaults to userId.
     */
  /* readonly attribute string calId; */
  NS_IMETHOD GetCalId(char * *aCalId) = 0;

  /**
     * UserId of primary owner of this calendar instance.
     */
  /* readonly attribute string ownerId; */
  NS_IMETHOD GetOwnerId(char * *aOwnerId) = 0;

  /**
     * Whether the currently selected calendar belongs to user.
     */
  /* readonly attribute boolean isOwnedCalendar; */
  NS_IMETHOD GetIsOwnedCalendar(PRBool *aIsOwnedCalendar) = 0;

  /**
     * Calendar description.
     */
  /* readonly attribute string description; */
  NS_IMETHOD GetDescription(char * *aDescription) = 0;

  /**
     * Calendar display name.
     */
  /* readonly attribute string displayName; */
  NS_IMETHOD GetDisplayName(char * *aDisplayName) = 0;

  /**
//      * Gets or sets this calendar's (calId) default timezone.
//      */
/**
     * Gets calendar properties.
     * An error is notified to all registered calIObservers, then thrown.
     *
     * @param propName property name (e.g. X-S1CS-CALPROPS-COMMON-NAME)
     * @return array of property values
     */
  /* void getCalendarProperties (in string propName, out unsigned long count, [array, size_is (count), retval] out string properties); */
  NS_IMETHOD GetCalendarProperties(const char *propName, PRUint32 *count, char ***properties) = 0;

  /**
     * Scope: Attendee
     * The event or todo is an invitation from another
     * user and the current user has declined the invitation.
     */
  enum { ITEM_FILTER_REPLY_DECLINED = 16777216U };

  /**
     * Scope: Attendee
     * The event or todo is an invitation from another
     * user and the current user has accepted the invitation.
     */
  enum { ITEM_FILTER_REPLY_ACCEPTED = 33554432U };

  /**
     * Scope: Organizer
     * The event or todo is an invitation from the current
     * user to other invitees, and all invitees have replied.
     */
  enum { ITEM_FILTER_REQUEST_COMPLETED = 67108864U };

  /**
     * Scope: Attendee
     * The event or todo is an invitation from another
     * user and the current user has not replied to it yet.
     */
  enum { ITEM_FILTER_REQUEST_NEEDS_ACTION = 134217728U };

  /**
     * Scope: Attendee
     * The event or todo is an invitation from another
     * user and the current user is not required to reply.
     */
  enum { ITEM_FILTER_REQUEST_NEEDSNOACTION = 268435456U };

  /**
     * Scope: Organizer
     * The event or todo is an invitation from the current
     * user to other invitees, and is currently in the
     * process of sending out invitations.
     */
  enum { ITEM_FILTER_REQUEST_PENDING = 536870912U };

  /**
     * Scope: Organizer
     * The event or todo is an invitation from the current
     * user to other invitees, and is currently awaiting.
     */
  enum { ITEM_FILTER_REQUEST_WAITFORREPLY = 1073741824U };

  /** xxx todo: to be moved to calIOperationListener?
     */
  enum { SYNC = 5U };

  /**
     * Syncs in changes since time <code>dtFrom</code>.
     * The passed <code>listener</code> receives a
     * <code>SYNC</code> with timestamp as detail.
     *
     * @param destCal destination calendar to write changes to (may be null)
     * @param itemFilter ITEM_FILTER flags OR-ed together,
     *                   ITEM_FILTER_CLASS_OCCURRENCES not allowed
     * @param dtFrom start time to sync changes from,
     *               if null all items are synced in
     * @param listener operation listener for SYNC operation
     *                 (may optionally implemented calIObserver to receive
     *                 onAddItem(), onModifyItem() or onDeleteItem() calls)
     */
  /* void syncChangesTo (in calICalendar destCal, in unsigned long itemFilter, in calIDateTime dtFrom, in calIOperationListener listener); */
  NS_IMETHOD SyncChangesTo(calICalendar *destCal, PRUint32 itemFilter, calIDateTime *dtFrom, calIOperationListener *listener) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIWcapCalendar, CALIWCAPCALENDAR_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIWCAPCALENDAR \
  NS_IMETHOD GetSession(calIWcapSession * *aSession); \
  NS_IMETHOD GetCalId(char * *aCalId); \
  NS_IMETHOD GetOwnerId(char * *aOwnerId); \
  NS_IMETHOD GetIsOwnedCalendar(PRBool *aIsOwnedCalendar); \
  NS_IMETHOD GetDescription(char * *aDescription); \
  NS_IMETHOD GetDisplayName(char * *aDisplayName); \
  NS_IMETHOD GetCalendarProperties(const char *propName, PRUint32 *count, char ***properties); \
  NS_IMETHOD SyncChangesTo(calICalendar *destCal, PRUint32 itemFilter, calIDateTime *dtFrom, calIOperationListener *listener); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIWCAPCALENDAR(_to) \
  NS_IMETHOD GetSession(calIWcapSession * *aSession) { return _to GetSession(aSession); } \
  NS_IMETHOD GetCalId(char * *aCalId) { return _to GetCalId(aCalId); } \
  NS_IMETHOD GetOwnerId(char * *aOwnerId) { return _to GetOwnerId(aOwnerId); } \
  NS_IMETHOD GetIsOwnedCalendar(PRBool *aIsOwnedCalendar) { return _to GetIsOwnedCalendar(aIsOwnedCalendar); } \
  NS_IMETHOD GetDescription(char * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetDisplayName(char * *aDisplayName) { return _to GetDisplayName(aDisplayName); } \
  NS_IMETHOD GetCalendarProperties(const char *propName, PRUint32 *count, char ***properties) { return _to GetCalendarProperties(propName, count, properties); } \
  NS_IMETHOD SyncChangesTo(calICalendar *destCal, PRUint32 itemFilter, calIDateTime *dtFrom, calIOperationListener *listener) { return _to SyncChangesTo(destCal, itemFilter, dtFrom, listener); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIWCAPCALENDAR(_to) \
  NS_IMETHOD GetSession(calIWcapSession * *aSession) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSession(aSession); } \
  NS_IMETHOD GetCalId(char * *aCalId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCalId(aCalId); } \
  NS_IMETHOD GetOwnerId(char * *aOwnerId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOwnerId(aOwnerId); } \
  NS_IMETHOD GetIsOwnedCalendar(PRBool *aIsOwnedCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsOwnedCalendar(aIsOwnedCalendar); } \
  NS_IMETHOD GetDescription(char * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD GetDisplayName(char * *aDisplayName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisplayName(aDisplayName); } \
  NS_IMETHOD GetCalendarProperties(const char *propName, PRUint32 *count, char ***properties) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCalendarProperties(propName, count, properties); } \
  NS_IMETHOD SyncChangesTo(calICalendar *destCal, PRUint32 itemFilter, calIDateTime *dtFrom, calIOperationListener *listener) { return !_to ? NS_ERROR_NULL_POINTER : _to->SyncChangesTo(destCal, itemFilter, dtFrom, listener); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public calIWcapCalendar
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIWCAPCALENDAR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, calIWcapCalendar)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute calIWcapSession session; */
NS_IMETHODIMP _MYCLASS_::GetSession(calIWcapSession * *aSession)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string calId; */
NS_IMETHODIMP _MYCLASS_::GetCalId(char * *aCalId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string ownerId; */
NS_IMETHODIMP _MYCLASS_::GetOwnerId(char * *aOwnerId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isOwnedCalendar; */
NS_IMETHODIMP _MYCLASS_::GetIsOwnedCalendar(PRBool *aIsOwnedCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(char * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string displayName; */
NS_IMETHODIMP _MYCLASS_::GetDisplayName(char * *aDisplayName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCalendarProperties (in string propName, out unsigned long count, [array, size_is (count), retval] out string properties); */
NS_IMETHODIMP _MYCLASS_::GetCalendarProperties(const char *propName, PRUint32 *count, char ***properties)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void syncChangesTo (in calICalendar destCal, in unsigned long itemFilter, in calIDateTime dtFrom, in calIOperationListener listener); */
NS_IMETHODIMP _MYCLASS_::SyncChangesTo(calICalendar *destCal, PRUint32 itemFilter, calIDateTime *dtFrom, calIOperationListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_calIWcapCalendar_h__ */
