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

#ifndef __gen_calIGoogleCalendar_h__
#define __gen_calIGoogleCalendar_h__


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

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

class nsIURI; /* forward declaration */


/* starting interface:    calIGoogleCalendar */
#define CALIGOOGLECALENDAR_IID_STR "d1a6e988-4b4d-45a5-ba46-43e501ea96e3"

#define CALIGOOGLECALENDAR_IID \
  {0xd1a6e988, 0x4b4d, 0x45a5, \
    { 0xba, 0x46, 0x43, 0xe5, 0x01, 0xea, 0x96, 0xe3 }}

class NS_NO_VTABLE calIGoogleCalendar : public calICalendar {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CALIGOOGLECALENDAR_IID)

  /**
     * attribute googleCalendarName
     * Google's Calendar name. This represents the <calendar name> in
     * http://www.google.com/calendar/feeds/<calendar name>/private/full
     */
  /* readonly attribute AUTF8String googleCalendarName; */
  NS_IMETHOD GetGoogleCalendarName(nsACString & aGoogleCalendarName) = 0;

  /**
     * attribute isDefaultCalendar
     * If true, this is the users default calendar. Non-default calendars have
     * a calendar name that contains "@group.calendar.google.com"
     */
  /* readonly attribute boolean isDefaultCalendar; */
  NS_IMETHOD GetIsDefaultCalendar(PRBool *aIsDefaultCalendar) = 0;

  /**
     * While calICalendar::uri returns the uri set by the user, fullUri returns
     * Google's "full" feed.
     *
     * XXX This will go away once the provider implements a custom add calendar
     * wizard, since uri will always be set to the full uri in that case.
     */
  /* attribute nsIURI fullUri; */
  NS_IMETHOD GetFullUri(nsIURI * *aFullUri) = 0;
  NS_IMETHOD SetFullUri(nsIURI * aFullUri) = 0;

  /**
     * The username used to access the calendar. Changing this sets the session
     * to a calIGoogleSession object with the given username.
     */
  /* attribute AUTF8String googleUser; */
  NS_IMETHOD GetGoogleUser(nsACString & aGoogleUser) = 0;
  NS_IMETHOD SetGoogleUser(const nsACString & aGoogleUser) = 0;

  /**
     * The session object associated with this calendar. Set this by changing
     * the googleUser attribute.
     */
  /* readonly attribute calIGoogleSession session; */
  NS_IMETHOD GetSession(calIGoogleSession * *aSession) = 0;

  /**
     * The calender title as provided by Google. This information is cached.
     */
  /* attribute AUTF8String title; */
  NS_IMETHOD GetTitle(nsACString & aTitle) = 0;
  NS_IMETHOD SetTitle(const nsACString & aTitle) = 0;

  /**
     * The access level that was set in Google's calendar UI. This information
     * is cached.
     */
  /* attribute AUTF8String access; */
  NS_IMETHOD GetAccess(nsACString & aAccess) = 0;
  NS_IMETHOD SetAccess(const nsACString & aAccess) = 0;

  /**
     * If set, the calendar is "selected" in the Google Calendar UI.
     */
  /* attribute boolean selected; */
  NS_IMETHOD GetSelected(PRBool *aSelected) = 0;
  NS_IMETHOD SetSelected(PRBool aSelected) = 0;

  /**
     * If set, the calendar is hidden from the Google Calendar UI. It is still
     * visible when managing calendars though.
     */
  /* attribute boolean hidden; */
  NS_IMETHOD GetHidden(PRBool *aHidden) = 0;
  NS_IMETHOD SetHidden(PRBool aHidden) = 0;

  /**
     * The color that was set in Google's calendar UI. This information is
     * cached.
     */
  /* attribute AUTF8String color; */
  NS_IMETHOD GetColor(nsACString & aColor) = 0;
  NS_IMETHOD SetColor(const nsACString & aColor) = 0;

  /**
     * The timezone that was set in Google's calendar UI. This information is
     * cached.
     */
  /* attribute AUTF8String timezone; */
  NS_IMETHOD GetTimezone(nsACString & aTimezone) = 0;
  NS_IMETHOD SetTimezone(const nsACString & aTimezone) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIGOOGLECALENDAR \
  NS_IMETHOD GetGoogleCalendarName(nsACString & aGoogleCalendarName); \
  NS_IMETHOD GetIsDefaultCalendar(PRBool *aIsDefaultCalendar); \
  NS_IMETHOD GetFullUri(nsIURI * *aFullUri); \
  NS_IMETHOD SetFullUri(nsIURI * aFullUri); \
  NS_IMETHOD GetGoogleUser(nsACString & aGoogleUser); \
  NS_IMETHOD SetGoogleUser(const nsACString & aGoogleUser); \
  NS_IMETHOD GetSession(calIGoogleSession * *aSession); \
  NS_IMETHOD GetTitle(nsACString & aTitle); \
  NS_IMETHOD SetTitle(const nsACString & aTitle); \
  NS_IMETHOD GetAccess(nsACString & aAccess); \
  NS_IMETHOD SetAccess(const nsACString & aAccess); \
  NS_IMETHOD GetSelected(PRBool *aSelected); \
  NS_IMETHOD SetSelected(PRBool aSelected); \
  NS_IMETHOD GetHidden(PRBool *aHidden); \
  NS_IMETHOD SetHidden(PRBool aHidden); \
  NS_IMETHOD GetColor(nsACString & aColor); \
  NS_IMETHOD SetColor(const nsACString & aColor); \
  NS_IMETHOD GetTimezone(nsACString & aTimezone); \
  NS_IMETHOD SetTimezone(const nsACString & aTimezone); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIGOOGLECALENDAR(_to) \
  NS_IMETHOD GetGoogleCalendarName(nsACString & aGoogleCalendarName) { return _to GetGoogleCalendarName(aGoogleCalendarName); } \
  NS_IMETHOD GetIsDefaultCalendar(PRBool *aIsDefaultCalendar) { return _to GetIsDefaultCalendar(aIsDefaultCalendar); } \
  NS_IMETHOD GetFullUri(nsIURI * *aFullUri) { return _to GetFullUri(aFullUri); } \
  NS_IMETHOD SetFullUri(nsIURI * aFullUri) { return _to SetFullUri(aFullUri); } \
  NS_IMETHOD GetGoogleUser(nsACString & aGoogleUser) { return _to GetGoogleUser(aGoogleUser); } \
  NS_IMETHOD SetGoogleUser(const nsACString & aGoogleUser) { return _to SetGoogleUser(aGoogleUser); } \
  NS_IMETHOD GetSession(calIGoogleSession * *aSession) { return _to GetSession(aSession); } \
  NS_IMETHOD GetTitle(nsACString & aTitle) { return _to GetTitle(aTitle); } \
  NS_IMETHOD SetTitle(const nsACString & aTitle) { return _to SetTitle(aTitle); } \
  NS_IMETHOD GetAccess(nsACString & aAccess) { return _to GetAccess(aAccess); } \
  NS_IMETHOD SetAccess(const nsACString & aAccess) { return _to SetAccess(aAccess); } \
  NS_IMETHOD GetSelected(PRBool *aSelected) { return _to GetSelected(aSelected); } \
  NS_IMETHOD SetSelected(PRBool aSelected) { return _to SetSelected(aSelected); } \
  NS_IMETHOD GetHidden(PRBool *aHidden) { return _to GetHidden(aHidden); } \
  NS_IMETHOD SetHidden(PRBool aHidden) { return _to SetHidden(aHidden); } \
  NS_IMETHOD GetColor(nsACString & aColor) { return _to GetColor(aColor); } \
  NS_IMETHOD SetColor(const nsACString & aColor) { return _to SetColor(aColor); } \
  NS_IMETHOD GetTimezone(nsACString & aTimezone) { return _to GetTimezone(aTimezone); } \
  NS_IMETHOD SetTimezone(const nsACString & aTimezone) { return _to SetTimezone(aTimezone); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIGOOGLECALENDAR(_to) \
  NS_IMETHOD GetGoogleCalendarName(nsACString & aGoogleCalendarName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGoogleCalendarName(aGoogleCalendarName); } \
  NS_IMETHOD GetIsDefaultCalendar(PRBool *aIsDefaultCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsDefaultCalendar(aIsDefaultCalendar); } \
  NS_IMETHOD GetFullUri(nsIURI * *aFullUri) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFullUri(aFullUri); } \
  NS_IMETHOD SetFullUri(nsIURI * aFullUri) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFullUri(aFullUri); } \
  NS_IMETHOD GetGoogleUser(nsACString & aGoogleUser) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGoogleUser(aGoogleUser); } \
  NS_IMETHOD SetGoogleUser(const nsACString & aGoogleUser) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGoogleUser(aGoogleUser); } \
  NS_IMETHOD GetSession(calIGoogleSession * *aSession) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSession(aSession); } \
  NS_IMETHOD GetTitle(nsACString & aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTitle(aTitle); } \
  NS_IMETHOD SetTitle(const nsACString & aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTitle(aTitle); } \
  NS_IMETHOD GetAccess(nsACString & aAccess) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccess(aAccess); } \
  NS_IMETHOD SetAccess(const nsACString & aAccess) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAccess(aAccess); } \
  NS_IMETHOD GetSelected(PRBool *aSelected) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSelected(aSelected); } \
  NS_IMETHOD SetSelected(PRBool aSelected) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSelected(aSelected); } \
  NS_IMETHOD GetHidden(PRBool *aHidden) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHidden(aHidden); } \
  NS_IMETHOD SetHidden(PRBool aHidden) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHidden(aHidden); } \
  NS_IMETHOD GetColor(nsACString & aColor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetColor(aColor); } \
  NS_IMETHOD SetColor(const nsACString & aColor) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetColor(aColor); } \
  NS_IMETHOD GetTimezone(nsACString & aTimezone) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimezone(aTimezone); } \
  NS_IMETHOD SetTimezone(const nsACString & aTimezone) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTimezone(aTimezone); } 

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

/* Header file */
class _MYCLASS_ : public calIGoogleCalendar
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIGOOGLECALENDAR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute AUTF8String googleCalendarName; */
NS_IMETHODIMP _MYCLASS_::GetGoogleCalendarName(nsACString & aGoogleCalendarName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isDefaultCalendar; */
NS_IMETHODIMP _MYCLASS_::GetIsDefaultCalendar(PRBool *aIsDefaultCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIURI fullUri; */
NS_IMETHODIMP _MYCLASS_::GetFullUri(nsIURI * *aFullUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFullUri(nsIURI * aFullUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String googleUser; */
NS_IMETHODIMP _MYCLASS_::GetGoogleUser(nsACString & aGoogleUser)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetGoogleUser(const nsACString & aGoogleUser)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute AUTF8String title; */
NS_IMETHODIMP _MYCLASS_::GetTitle(nsACString & aTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTitle(const nsACString & aTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String access; */
NS_IMETHODIMP _MYCLASS_::GetAccess(nsACString & aAccess)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAccess(const nsACString & aAccess)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean selected; */
NS_IMETHODIMP _MYCLASS_::GetSelected(PRBool *aSelected)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSelected(PRBool aSelected)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean hidden; */
NS_IMETHODIMP _MYCLASS_::GetHidden(PRBool *aHidden)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHidden(PRBool aHidden)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String color; */
NS_IMETHODIMP _MYCLASS_::GetColor(nsACString & aColor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetColor(const nsACString & aColor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String timezone; */
NS_IMETHODIMP _MYCLASS_::GetTimezone(nsACString & aTimezone)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTimezone(const nsACString & aTimezone)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_calIGoogleCalendar_h__ */
