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

#ifndef __gen_nsIAbView_h__
#define __gen_nsIAbView_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

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

class nsIAbDirectory; /* forward declaration */

class nsIArray; /* forward declaration */


/* starting interface:    nsIAbViewListener */
#define NS_IABVIEWLISTENER_IID_STR "79ad5d6e-1dd2-11b2-addd-f547dab50d75"

#define NS_IABVIEWLISTENER_IID \
  {0x79ad5d6e, 0x1dd2, 0x11b2, \
    { 0xad, 0xdd, 0xf5, 0x47, 0xda, 0xb5, 0x0d, 0x75 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIAbViewListener : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABVIEWLISTENER_IID)

  /* void onSelectionChanged (); */
  NS_SCRIPTABLE NS_IMETHOD OnSelectionChanged(void) = 0;

  /* void onCountChanged (in long total); */
  NS_SCRIPTABLE NS_IMETHOD OnCountChanged(PRInt32 total) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbViewListener, NS_IABVIEWLISTENER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABVIEWLISTENER \
  NS_SCRIPTABLE NS_IMETHOD OnSelectionChanged(void); \
  NS_SCRIPTABLE NS_IMETHOD OnCountChanged(PRInt32 total); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABVIEWLISTENER(_to) \
  NS_SCRIPTABLE NS_IMETHOD OnSelectionChanged(void) { return _to OnSelectionChanged(); } \
  NS_SCRIPTABLE NS_IMETHOD OnCountChanged(PRInt32 total) { return _to OnCountChanged(total); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABVIEWLISTENER(_to) \
  NS_SCRIPTABLE NS_IMETHOD OnSelectionChanged(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSelectionChanged(); } \
  NS_SCRIPTABLE NS_IMETHOD OnCountChanged(PRInt32 total) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCountChanged(total); } 

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

/* Header file */
class nsAbViewListener : public nsIAbViewListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABVIEWLISTENER

  nsAbViewListener();

private:
  ~nsAbViewListener();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsAbViewListener, nsIAbViewListener)

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

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

/* void onSelectionChanged (); */
NS_IMETHODIMP nsAbViewListener::OnSelectionChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCountChanged (in long total); */
NS_IMETHODIMP nsAbViewListener::OnCountChanged(PRInt32 total)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIAbView */
#define NS_IABVIEW_IID_STR "c7c454bd-1901-4a4b-aac7-a3f9918b3616"

#define NS_IABVIEW_IID \
  {0xc7c454bd, 0x1901, 0x4a4b, \
    { 0xaa, 0xc7, 0xa3, 0xf9, 0x91, 0x8b, 0x36, 0x16 }}

/**
 * This interface and its associated nsAbView object provides an interface
 * to allow a tree to be associated with an address book, and the results
 * to be displayed in that tree.
 *
 * If you wish for the tree to display the results of a different address
 * book, then call setView again. There is no need to delete and recreate the
 * nsAbView object. If you wish to clear the view, then just call clearView.
 */
class NS_NO_VTABLE NS_SCRIPTABLE nsIAbView : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABVIEW_IID)

  /**
   * Sets up the nsIAbView to look at the specified directory. This may be
   * called multiple times.
   *
   * @param aDirectory      The directory to search, this may be a directory
   *                        with a query string.
   * @param aViewListener   An optional listener.
   * @param aSortColumn     The column to sort by. See the xul element with
   *                        id abResultsTreeCols for possible values.
   * @param aSortDirection  The sort direction to use ("ascending"/"descending")
   * @return                The actual sortColumn (various switching of apps
   *                        could cause the persisted sortColumn to be bogus).
   */
  /* AString setView (in nsIAbDirectory aAddressBook, in nsIAbViewListener aAbViewListener, in AString aSortColumn, in AString aSortDirection); */
  NS_SCRIPTABLE NS_IMETHOD SetView(nsIAbDirectory *aAddressBook, nsIAbViewListener *aAbViewListener, const nsAString & aSortColumn, const nsAString & aSortDirection, nsAString & _retval NS_OUTPARAM) = 0;

  /**
   * Clears the view and releases any locally held copies of the address book
   * directory. This should be called when the view is no longer required, e.g.
   * on unload.
   */
  /* void clearView (); */
  NS_SCRIPTABLE NS_IMETHOD ClearView(void) = 0;

  /**
   * Sorts the tree by the specified parameters.
   *
   * sortBy does not optimize for the case when sortColumn and sortDirection
   * is identical since the last call, the caller is responsible optimizing
   * for that case.
   *
   * @param aSortColumn     The column to sort by. See the xul element with
   *                        id abResultsTreeCols for possible values.
   * @param aSortDirection  The sort direction to use ("ascending"/"descending")
   */
  /* void sortBy (in wstring aSortColumn, in wstring aSortDirection); */
  NS_SCRIPTABLE NS_IMETHOD SortBy(const PRUnichar *aSortColumn, const PRUnichar *aSortDirection) = 0;

  /* readonly attribute AString sortColumn; */
  NS_SCRIPTABLE NS_IMETHOD GetSortColumn(nsAString & aSortColumn) = 0;

  /* readonly attribute AString sortDirection; */
  NS_SCRIPTABLE NS_IMETHOD GetSortDirection(nsAString & aSortDirection) = 0;

  /**
   * Returns the current directory that this view is hooked up to. May be
   * null if no directory has been set.
   */
  /* readonly attribute nsIAbDirectory directory; */
  NS_SCRIPTABLE NS_IMETHOD GetDirectory(nsIAbDirectory **aDirectory) = 0;

  /**
   * Returns the card associated with the given row.
   *
   * @param aRow  The row from which to return the card.
   * @return      A card associated with the row, or null if row is not valid.
   */
  /* nsIAbCard getCardFromRow (in long aRow); */
  NS_SCRIPTABLE NS_IMETHOD GetCardFromRow(PRInt32 aRow, nsIAbCard **_retval NS_OUTPARAM) = 0;

  /* void selectAll (); */
  NS_SCRIPTABLE NS_IMETHOD SelectAll(void) = 0;

  /* void deleteSelectedCards (); */
  NS_SCRIPTABLE NS_IMETHOD DeleteSelectedCards(void) = 0;

  /**
   * Swaps the first and last name order, and updates the appropriate
   * preference.
   */
  /* void swapFirstNameLastName (); */
  NS_SCRIPTABLE NS_IMETHOD SwapFirstNameLastName(void) = 0;

  /**
   *  Returns an array of the currently selected addresses.
   */
  /* readonly attribute nsIArray selectedAddresses; */
  NS_SCRIPTABLE NS_IMETHOD GetSelectedAddresses(nsIArray **aSelectedAddresses) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbView, NS_IABVIEW_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABVIEW \
  NS_SCRIPTABLE NS_IMETHOD SetView(nsIAbDirectory *aAddressBook, nsIAbViewListener *aAbViewListener, const nsAString & aSortColumn, const nsAString & aSortDirection, nsAString & _retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD ClearView(void); \
  NS_SCRIPTABLE NS_IMETHOD SortBy(const PRUnichar *aSortColumn, const PRUnichar *aSortDirection); \
  NS_SCRIPTABLE NS_IMETHOD GetSortColumn(nsAString & aSortColumn); \
  NS_SCRIPTABLE NS_IMETHOD GetSortDirection(nsAString & aSortDirection); \
  NS_SCRIPTABLE NS_IMETHOD GetDirectory(nsIAbDirectory **aDirectory); \
  NS_SCRIPTABLE NS_IMETHOD GetCardFromRow(PRInt32 aRow, nsIAbCard **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD SelectAll(void); \
  NS_SCRIPTABLE NS_IMETHOD DeleteSelectedCards(void); \
  NS_SCRIPTABLE NS_IMETHOD SwapFirstNameLastName(void); \
  NS_SCRIPTABLE NS_IMETHOD GetSelectedAddresses(nsIArray **aSelectedAddresses); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABVIEW(_to) \
  NS_SCRIPTABLE NS_IMETHOD SetView(nsIAbDirectory *aAddressBook, nsIAbViewListener *aAbViewListener, const nsAString & aSortColumn, const nsAString & aSortDirection, nsAString & _retval NS_OUTPARAM) { return _to SetView(aAddressBook, aAbViewListener, aSortColumn, aSortDirection, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD ClearView(void) { return _to ClearView(); } \
  NS_SCRIPTABLE NS_IMETHOD SortBy(const PRUnichar *aSortColumn, const PRUnichar *aSortDirection) { return _to SortBy(aSortColumn, aSortDirection); } \
  NS_SCRIPTABLE NS_IMETHOD GetSortColumn(nsAString & aSortColumn) { return _to GetSortColumn(aSortColumn); } \
  NS_SCRIPTABLE NS_IMETHOD GetSortDirection(nsAString & aSortDirection) { return _to GetSortDirection(aSortDirection); } \
  NS_SCRIPTABLE NS_IMETHOD GetDirectory(nsIAbDirectory **aDirectory) { return _to GetDirectory(aDirectory); } \
  NS_SCRIPTABLE NS_IMETHOD GetCardFromRow(PRInt32 aRow, nsIAbCard **_retval NS_OUTPARAM) { return _to GetCardFromRow(aRow, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SelectAll(void) { return _to SelectAll(); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteSelectedCards(void) { return _to DeleteSelectedCards(); } \
  NS_SCRIPTABLE NS_IMETHOD SwapFirstNameLastName(void) { return _to SwapFirstNameLastName(); } \
  NS_SCRIPTABLE NS_IMETHOD GetSelectedAddresses(nsIArray **aSelectedAddresses) { return _to GetSelectedAddresses(aSelectedAddresses); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABVIEW(_to) \
  NS_SCRIPTABLE NS_IMETHOD SetView(nsIAbDirectory *aAddressBook, nsIAbViewListener *aAbViewListener, const nsAString & aSortColumn, const nsAString & aSortDirection, nsAString & _retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetView(aAddressBook, aAbViewListener, aSortColumn, aSortDirection, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD ClearView(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearView(); } \
  NS_SCRIPTABLE NS_IMETHOD SortBy(const PRUnichar *aSortColumn, const PRUnichar *aSortDirection) { return !_to ? NS_ERROR_NULL_POINTER : _to->SortBy(aSortColumn, aSortDirection); } \
  NS_SCRIPTABLE NS_IMETHOD GetSortColumn(nsAString & aSortColumn) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSortColumn(aSortColumn); } \
  NS_SCRIPTABLE NS_IMETHOD GetSortDirection(nsAString & aSortDirection) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSortDirection(aSortDirection); } \
  NS_SCRIPTABLE NS_IMETHOD GetDirectory(nsIAbDirectory **aDirectory) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDirectory(aDirectory); } \
  NS_SCRIPTABLE NS_IMETHOD GetCardFromRow(PRInt32 aRow, nsIAbCard **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCardFromRow(aRow, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SelectAll(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectAll(); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteSelectedCards(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSelectedCards(); } \
  NS_SCRIPTABLE NS_IMETHOD SwapFirstNameLastName(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SwapFirstNameLastName(); } \
  NS_SCRIPTABLE NS_IMETHOD GetSelectedAddresses(nsIArray **aSelectedAddresses) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSelectedAddresses(aSelectedAddresses); } 

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

/* Header file */
class nsAbView : public nsIAbView
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABVIEW

  nsAbView();

private:
  ~nsAbView();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsAbView, nsIAbView)

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

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

/* AString setView (in nsIAbDirectory aAddressBook, in nsIAbViewListener aAbViewListener, in AString aSortColumn, in AString aSortDirection); */
NS_IMETHODIMP nsAbView::SetView(nsIAbDirectory *aAddressBook, nsIAbViewListener *aAbViewListener, const nsAString & aSortColumn, const nsAString & aSortDirection, nsAString & _retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearView (); */
NS_IMETHODIMP nsAbView::ClearView()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void sortBy (in wstring aSortColumn, in wstring aSortDirection); */
NS_IMETHODIMP nsAbView::SortBy(const PRUnichar *aSortColumn, const PRUnichar *aSortDirection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AString sortColumn; */
NS_IMETHODIMP nsAbView::GetSortColumn(nsAString & aSortColumn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AString sortDirection; */
NS_IMETHODIMP nsAbView::GetSortDirection(nsAString & aSortDirection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIAbDirectory directory; */
NS_IMETHODIMP nsAbView::GetDirectory(nsIAbDirectory **aDirectory)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIAbCard getCardFromRow (in long aRow); */
NS_IMETHODIMP nsAbView::GetCardFromRow(PRInt32 aRow, nsIAbCard **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectAll (); */
NS_IMETHODIMP nsAbView::SelectAll()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteSelectedCards (); */
NS_IMETHODIMP nsAbView::DeleteSelectedCards()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void swapFirstNameLastName (); */
NS_IMETHODIMP nsAbView::SwapFirstNameLastName()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIArray selectedAddresses; */
NS_IMETHODIMP nsAbView::GetSelectedAddresses(nsIArray **aSelectedAddresses)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIAbView_h__ */
