Make less assumptions about calendar types in oeICalContainer.
bug 252603, r=mostafah git-svn-id: svn://10.0.0.236/trunk@159684 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -42,7 +42,51 @@ commands to individual calendars and a collector of calculated data for global q
|
||||
#include "oeICalContainerImpl.h"
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
|
||||
#include "nsCOMArray.h"
|
||||
#include "nsISimpleEnumerator.h"
|
||||
|
||||
/**
|
||||
* This enumerator collects items from an array of other enumerators, and
|
||||
* returns it as a single one.
|
||||
*/
|
||||
class oeCollectedEventEnumerator : public nsISimpleEnumerator
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
oeCollectedEventEnumerator(nsCOMArray<nsISimpleEnumerator>& aListOfEnums)
|
||||
: mListOfEnums(aListOfEnums),
|
||||
mEnumIndex(0)
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHOD HasMoreElements(PRBool *aResult)
|
||||
{
|
||||
*aResult = PR_FALSE;
|
||||
mListOfEnums[mEnumIndex]->HasMoreElements(aResult);
|
||||
while (!*aResult && (++mEnumIndex < mListOfEnums.Count())) {
|
||||
mListOfEnums[mEnumIndex]->HasMoreElements(aResult);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHOD GetNext(nsISupports **aResult)
|
||||
{
|
||||
return mListOfEnums[mEnumIndex]->GetNext(aResult);
|
||||
}
|
||||
|
||||
virtual ~oeCollectedEventEnumerator()
|
||||
{
|
||||
}
|
||||
|
||||
protected:
|
||||
nsCOMArray<nsISimpleEnumerator> mListOfEnums;
|
||||
PRInt32 mEnumIndex;
|
||||
};
|
||||
|
||||
NS_IMPL_ISUPPORTS1(oeCollectedEventEnumerator, nsISimpleEnumerator)
|
||||
|
||||
|
||||
icaltimetype ConvertFromPrtime( PRTime indate );
|
||||
PRTime ConvertToPrtime ( icaltimetype indate );
|
||||
extern "C" {
|
||||
@@ -530,29 +574,31 @@ oeICalContainerImpl::DeleteEvent( const char *id )
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
oeICalContainerImpl::GetAllEvents(nsISimpleEnumerator **resultList )
|
||||
oeICalContainerImpl::GetAllEvents(nsISimpleEnumerator **eventlist )
|
||||
{
|
||||
#ifdef ICAL_DEBUG
|
||||
printf( "oeICalContainerImpl::GetAllEvents()\n" );
|
||||
#endif
|
||||
oeEventEnumerator* eventEnum = new oeEventEnumerator();
|
||||
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)resultList);
|
||||
|
||||
PRUint32 num;
|
||||
unsigned int i;
|
||||
nsCOMArray<nsISimpleEnumerator> listOfEnums;
|
||||
|
||||
m_calendarArray->Count( &num );
|
||||
for( i=0; i<num; i++ )
|
||||
{
|
||||
nsCOMPtr<oeIICal> calendar;
|
||||
m_calendarArray->GetElementAt( i, getter_AddRefs(calendar) );
|
||||
calendar->GetAllEvents( (nsISimpleEnumerator **)&eventEnum );
|
||||
nsCOMPtr<nsISimpleEnumerator> eventEnum;
|
||||
calendar->GetAllEvents( getter_AddRefs(eventEnum) );
|
||||
listOfEnums.AppendObject(eventEnum);
|
||||
}
|
||||
|
||||
*eventlist = new oeCollectedEventEnumerator(listOfEnums);
|
||||
if (!*eventlist)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
NS_ADDREF(*eventlist);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -561,24 +607,26 @@ oeICalContainerImpl::GetEventsForMonth( PRTime datems, nsISimpleEnumerator **eve
|
||||
#ifdef ICAL_DEBUG
|
||||
printf( "oeICalContainerImpl::GetEventsForMonth()\n" );
|
||||
#endif
|
||||
nsCOMPtr<oeEventEnumerator> eventEnum = new oeEventEnumerator( );
|
||||
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)eventlist);
|
||||
|
||||
PRUint32 num;
|
||||
unsigned int i;
|
||||
nsCOMArray<nsISimpleEnumerator> listOfEnums;
|
||||
|
||||
m_calendarArray->Count( &num );
|
||||
for( i=0; i<num; i++ )
|
||||
{
|
||||
nsCOMPtr<oeIICal> calendar;
|
||||
m_calendarArray->GetElementAt( i, getter_AddRefs(calendar) );
|
||||
calendar->GetEventsForMonth( datems, (nsISimpleEnumerator **)&eventEnum );
|
||||
nsCOMPtr<nsISimpleEnumerator> eventEnum;
|
||||
calendar->GetEventsForMonth( datems, getter_AddRefs(eventEnum) );
|
||||
listOfEnums.AppendObject(eventEnum);
|
||||
}
|
||||
|
||||
*eventlist = new oeCollectedEventEnumerator(listOfEnums);
|
||||
if (!*eventlist)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
NS_ADDREF(*eventlist);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -587,23 +635,26 @@ oeICalContainerImpl::GetEventsForWeek( PRTime datems, nsISimpleEnumerator **even
|
||||
#ifdef ICAL_DEBUG
|
||||
printf( "oeICalContainerImpl::GetEventsForWeek()\n" );
|
||||
#endif
|
||||
nsCOMPtr<oeEventEnumerator> eventEnum = new oeEventEnumerator( );
|
||||
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)eventlist);
|
||||
|
||||
PRUint32 num;
|
||||
unsigned int i;
|
||||
nsCOMArray<nsISimpleEnumerator> listOfEnums;
|
||||
|
||||
m_calendarArray->Count( &num );
|
||||
for( i=0; i<num; i++ )
|
||||
{
|
||||
nsCOMPtr<oeIICal> calendar;
|
||||
m_calendarArray->GetElementAt( i, getter_AddRefs(calendar) );
|
||||
calendar->GetEventsForWeek( datems, (nsISimpleEnumerator **)&eventEnum );
|
||||
nsCOMPtr<nsISimpleEnumerator> eventEnum;
|
||||
calendar->GetEventsForWeek( datems, getter_AddRefs(eventEnum) );
|
||||
listOfEnums.AppendObject(eventEnum);
|
||||
}
|
||||
|
||||
*eventlist = new oeCollectedEventEnumerator(listOfEnums);
|
||||
if (!*eventlist)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
NS_ADDREF(*eventlist);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -613,23 +664,25 @@ oeICalContainerImpl::GetEventsForDay( PRTime datems, nsISimpleEnumerator **event
|
||||
printf( "oeICalContainerImpl::GetEventsForDay()\n" );
|
||||
#endif
|
||||
|
||||
nsCOMPtr<oeEventEnumerator> eventEnum = new oeEventEnumerator( );
|
||||
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)eventlist);
|
||||
|
||||
PRUint32 num;
|
||||
unsigned int i;
|
||||
nsCOMArray<nsISimpleEnumerator> listOfEnums;
|
||||
|
||||
m_calendarArray->Count( &num );
|
||||
for( i=0; i<num; i++ )
|
||||
{
|
||||
nsCOMPtr<oeIICal> calendar;
|
||||
m_calendarArray->GetElementAt( i, getter_AddRefs(calendar) );
|
||||
calendar->GetEventsForDay( datems, (nsISimpleEnumerator **)&eventEnum );
|
||||
nsCOMPtr<nsISimpleEnumerator> eventEnum;
|
||||
calendar->GetEventsForDay( datems, getter_AddRefs(eventEnum) );
|
||||
listOfEnums.AppendObject(eventEnum);
|
||||
}
|
||||
|
||||
*eventlist = new oeCollectedEventEnumerator(listOfEnums);
|
||||
if (!*eventlist)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
NS_ADDREF(*eventlist);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -639,24 +692,25 @@ oeICalContainerImpl::GetEventsForRange( PRTime checkdateinms, PRTime checkenddat
|
||||
printf( "oeICalContainerImpl::GetEventsForRange()\n" );
|
||||
#endif
|
||||
|
||||
nsCOMPtr<oeEventEnumerator> eventEnum = new oeEventEnumerator( );
|
||||
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)eventlist);
|
||||
|
||||
PRUint32 num;
|
||||
unsigned int i;
|
||||
nsCOMArray<nsISimpleEnumerator> listOfEnums;
|
||||
|
||||
m_calendarArray->Count( &num );
|
||||
for( i=0; i<num; i++ )
|
||||
{
|
||||
nsCOMPtr<oeIICal> calendar;
|
||||
m_calendarArray->GetElementAt( i, getter_AddRefs(calendar) );
|
||||
calendar->GetEventsForRange( checkdateinms, checkenddateinms, (nsISimpleEnumerator **)&eventEnum );
|
||||
nsCOMPtr<nsISimpleEnumerator> eventEnum;
|
||||
calendar->GetEventsForRange( checkdateinms, checkenddateinms, getter_AddRefs(eventEnum) );
|
||||
listOfEnums.AppendObject(eventEnum);
|
||||
}
|
||||
|
||||
*eventlist = new oeCollectedEventEnumerator(listOfEnums);
|
||||
if (!*eventlist)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
NS_ADDREF(*eventlist);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -666,24 +720,26 @@ oeICalContainerImpl::GetFirstEventsForRange( PRTime checkdateinms, PRTime checke
|
||||
#ifdef ICAL_DEBUG_ALL
|
||||
printf( "oeICalContainerImpl::GetFirstEventsForRange()\n" );
|
||||
#endif
|
||||
oeEventEnumerator* eventEnum = new oeEventEnumerator();
|
||||
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)eventlist);
|
||||
|
||||
PRUint32 num;
|
||||
unsigned int i;
|
||||
nsCOMArray<nsISimpleEnumerator> listOfEnums;
|
||||
|
||||
m_calendarArray->Count( &num );
|
||||
for( i=0; i<num; i++ )
|
||||
{
|
||||
nsCOMPtr<oeIICal> calendar;
|
||||
m_calendarArray->GetElementAt( i, getter_AddRefs(calendar) );
|
||||
calendar->GetFirstEventsForRange( checkdateinms, checkenddateinms, (nsISimpleEnumerator **)&eventEnum );
|
||||
nsCOMPtr<nsISimpleEnumerator> eventEnum;
|
||||
calendar->GetFirstEventsForRange( checkdateinms, checkenddateinms, getter_AddRefs(eventEnum) );
|
||||
listOfEnums.AppendObject(eventEnum);
|
||||
}
|
||||
|
||||
*eventlist = new oeCollectedEventEnumerator(listOfEnums);
|
||||
if (!*eventlist)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
NS_ADDREF(*eventlist);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -1282,14 +1282,9 @@ oeICalImpl::GetAllEvents(nsISimpleEnumerator **resultList )
|
||||
printf( "oeICalImpl::GetAllEvents()\n" );
|
||||
#endif
|
||||
|
||||
nsCOMPtr<oeEventEnumerator> eventEnum;
|
||||
if( !*resultList ) {
|
||||
eventEnum = new oeEventEnumerator();
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)resultList);
|
||||
} else
|
||||
eventEnum = (oeEventEnumerator *)*resultList;
|
||||
oeEventEnumerator *eventEnum = new oeEventEnumerator();
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> eventArray;
|
||||
NS_NewISupportsArray(getter_AddRefs(eventArray));
|
||||
@@ -1397,6 +1392,8 @@ oeICalImpl::GetAllEvents(nsISimpleEnumerator **resultList )
|
||||
|
||||
// bump ref count
|
||||
// return eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)resultList);
|
||||
*resultList = eventEnum;
|
||||
NS_ADDREF(*resultList);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -1483,14 +1480,11 @@ oeICalImpl::GetEventsForRange( PRTime checkdateinms, PRTime checkenddateinms, ns
|
||||
printf( "oeICalImpl::GetEventsForRange()\n" );
|
||||
#endif
|
||||
|
||||
nsCOMPtr<oeEventEnumerator> eventEnum;
|
||||
if( !*eventlist ) {
|
||||
eventEnum = new oeEventEnumerator();
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)eventlist);
|
||||
} else
|
||||
eventEnum = (oeEventEnumerator *)*eventlist;
|
||||
oeEventEnumerator *eventEnum = new oeEventEnumerator();
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
*eventlist = eventEnum;
|
||||
NS_ADDREF(*eventlist);
|
||||
|
||||
struct icaltimetype checkdate = ConvertFromPrtime( checkdateinms );
|
||||
icaltime_adjust( &checkdate, 0, 0, 0, -1 );
|
||||
@@ -1529,14 +1523,11 @@ oeICalImpl::GetFirstEventsForRange( PRTime checkdateinms, PRTime checkenddateinm
|
||||
#ifdef ICAL_DEBUG
|
||||
printf( "oeICalImpl::GetFirstEventsForRange()\n" );
|
||||
#endif
|
||||
nsCOMPtr<oeEventEnumerator> eventEnum;
|
||||
if( !*eventlist ) {
|
||||
eventEnum = new oeEventEnumerator();
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)eventlist);
|
||||
} else
|
||||
eventEnum = (oeEventEnumerator *)*eventlist;
|
||||
oeEventEnumerator *eventEnum = new oeEventEnumerator();
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
*eventlist = eventEnum;
|
||||
NS_ADDREF(*eventlist);
|
||||
|
||||
nsCOMPtr<nsISupportsArray> eventArray;
|
||||
NS_NewISupportsArray(getter_AddRefs(eventArray));
|
||||
@@ -1629,14 +1620,11 @@ oeICalImpl::GetNextNEvents( PRTime datems, PRInt32 maxcount, nsISimpleEnumerator
|
||||
printf( "oeICalImpl::GetNextNEvents( %d )\n", maxcount );
|
||||
#endif
|
||||
|
||||
nsCOMPtr<oeEventEnumerator> eventEnum;
|
||||
if( !*eventlist ) {
|
||||
eventEnum = new oeEventEnumerator();
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
eventEnum->QueryInterface(NS_GET_IID(nsISimpleEnumerator), (void **)eventlist);
|
||||
} else
|
||||
eventEnum = (oeEventEnumerator *)*eventlist;
|
||||
oeEventEnumerator *eventEnum = new oeEventEnumerator();
|
||||
if (!eventEnum)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
*eventlist = eventEnum;
|
||||
NS_ADDREF(*eventlist);
|
||||
|
||||
struct icaltimetype checkdate = ConvertFromPrtime( datems );
|
||||
icaltime_adjust( &checkdate, 0, 0, 0, -1 );
|
||||
|
||||
Reference in New Issue
Block a user