зеркало из https://github.com/mozilla/pjs.git
reorganize data loading.
This commit is contained in:
Родитель
c06e4c58e5
Коммит
15b65490c0
|
@ -1,66 +0,0 @@
|
|||
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2
|
||||
-*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* nsCalScheduler
|
||||
* Wraps all the capi and parsing code. A more convenient
|
||||
* interface for performing scheduling tasks.
|
||||
*
|
||||
* sman
|
||||
*/
|
||||
|
||||
#if !defined(AFX_NSCALSCHEDULER_H__A53027E1_42D1_11D2_8ED8_0060088A4B1D__INCLUDED_)
|
||||
#define AFX_NSCALSCHEDULER_H__A53027E1_42D1_11D2_8ED8_0060088A4B1D__INCLUDED_
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsError.h"
|
||||
#include "nsCom.h"
|
||||
#include "capi.h"
|
||||
#include "julnstr.h"
|
||||
#include "nsDateTime.h"
|
||||
|
||||
class nsCalScheduler
|
||||
{
|
||||
public:
|
||||
nsCalScheduler();
|
||||
virtual ~nsCalScheduler();
|
||||
|
||||
/**
|
||||
* Fetch events from the supplied curl that overlap the
|
||||
* supplied date range.
|
||||
* @param sCurl the curl describing the data source
|
||||
* @param u the user who is asking for the data
|
||||
* @param psPassword the password needed to login to this url
|
||||
* @param dStart range start time
|
||||
* @param dEnd range end time
|
||||
* @param ppsPropList array of property names to load
|
||||
* @param iPropCount number of items in ppsPropList
|
||||
* @param pCal the calendar into which these events should be loaded
|
||||
* @return 0 on success
|
||||
*/
|
||||
nsresult FetchEventsByRange(
|
||||
const JulianString& sCurl,
|
||||
DateTime dStart,
|
||||
DateTime dEnd,
|
||||
char** ppsPropList,
|
||||
int iPropCount,
|
||||
NSCalendar* pCal);
|
||||
};
|
||||
|
||||
#endif // !defined(AFX_NSCALSCHEDULER_H__A53027E1_42D1_11D2_8ED8_0060088A4B1D__INCLUDED_)
|
|
@ -41,6 +41,7 @@
|
|||
#include "nsCalUserList.h"
|
||||
#include "nsCalSessionMgr.h"
|
||||
#include "capi.h"
|
||||
#include "nsCalScheduler.h"
|
||||
|
||||
/*
|
||||
* CalendarShell Class Declaration
|
||||
|
@ -102,18 +103,18 @@ public:
|
|||
nsICalendarContainer * mDocumentContainer ;
|
||||
nsIXPFCObserverManager * mObserverManager;
|
||||
|
||||
private:
|
||||
CAPISession mCAPISession;
|
||||
CAPIHandle mCAPIHandle;
|
||||
NSCalendar * m_pCalendar;
|
||||
NSCalendar * mpCalendar;
|
||||
nsCalLoggedInUser* mpLoggedInUser;
|
||||
|
||||
JulianString msCalURL; /* the calendar associated with this user */
|
||||
char * mCAPIPassword; /* the password which must be entered by the user */
|
||||
|
||||
nsCalUserList m_UserList;
|
||||
nsCalList m_CalList;
|
||||
nsCalSessionMgr m_SessionMgr;
|
||||
nsCalUserList mUserList;
|
||||
nsCalList mCalList;
|
||||
nsCalSessionMgr mSessionMgr;
|
||||
nsCalScheduler mScheduler;
|
||||
nsICommandServer * mCommandServer;
|
||||
|
||||
};
|
||||
|
|
|
@ -23,6 +23,7 @@ CPPSRCS = \
|
|||
nsCalList.cpp \
|
||||
nsCalSession.cpp \
|
||||
nsCalSessionMgr.cpp \
|
||||
nsCalScheduler.cpp \
|
||||
nsCalLoggedInUser.cpp \
|
||||
nsCalendarWidget.cpp \
|
||||
nsCalendarShell.cpp \
|
||||
|
|
|
@ -1,145 +0,0 @@
|
|||
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2
|
||||
-*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* nsCalScheduler
|
||||
* Wraps all the capi and parsing code. A more convenient
|
||||
* interface for performing scheduling tasks.
|
||||
*
|
||||
* sman
|
||||
*/
|
||||
|
||||
|
||||
#include "nsCalScheduler.h"
|
||||
|
||||
nsCalScheduler::nsCalScheduler()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
nsCalScheduler::~nsCalScheduler()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch events from the supplied curl that overlap the
|
||||
* supplied date range.
|
||||
* @param sCurl the curl describing the data source
|
||||
* @param u the user who is asking for the data
|
||||
* @param psPassword the password needed to login to this url
|
||||
* @param dStart range start time
|
||||
* @param dEnd range end time
|
||||
* @param ppsPropList array of property names to load
|
||||
* @param iPropCount number of items in ppsPropList
|
||||
* @param pCal the calendar into which these events should be loaded
|
||||
* @return 0 on success
|
||||
*/
|
||||
nsresult FetchEventsByRange(
|
||||
const JulianString& sCurl,
|
||||
const nsCalUser& u,
|
||||
const char* psPassword,
|
||||
DateTime dStart,
|
||||
DateTime dEnd,
|
||||
char** ppsPropList,
|
||||
int iPropCount,
|
||||
nsCalendar* pCal)
|
||||
{
|
||||
User * pFromUser;
|
||||
User * pToUser;
|
||||
nsCurlParser Curl(sCurl);
|
||||
|
||||
JulianPtrArray CompList;
|
||||
JulianPtrArray RecipList;
|
||||
JulianPtrArray ModifierList;
|
||||
|
||||
UnicodeString name = "John Sun";
|
||||
UnicodeString email = "jsun@netscape.com";
|
||||
UnicodeString capaddr = "jsunCAP";
|
||||
t_int32 xitemid = 32432;
|
||||
UnicodeString iripaddr = "jsunIRIP";
|
||||
UnicodeString subject = "a subject";
|
||||
UnicodeString password = "z8j20bwm";
|
||||
UnicodeString hostname = "calendar-1";
|
||||
UnicodeString node = "10000";
|
||||
pFromUser = new User(name, email, capaddr, xitemid, iripaddr);
|
||||
|
||||
// TODO: set pFromUser's CS&T info for now
|
||||
pFromUser->setCAPIInfo("", password, hostname, node);
|
||||
|
||||
assert(pFromUser != 0);
|
||||
|
||||
pToUser = new User(name, email, capaddr, xitemid, iripaddr);
|
||||
assert(pToUser != 0);
|
||||
|
||||
recipients->Add(pToUser);
|
||||
|
||||
ModifierList->Add(new UnicodeString("19980220T112233Z"));
|
||||
ModifierList->Add(new UnicodeString("19980228T112233Z"));
|
||||
|
||||
/*
|
||||
TransactionObject *
|
||||
TransactionObjectFactory::Make(NSCalendar & cal,
|
||||
JulianPtrArray & CompList,
|
||||
User & user,
|
||||
JulianPtrArray & recipients,
|
||||
UnicodeString & subject,
|
||||
JulianPtrArray & modifiers,
|
||||
JulianForm * jf,
|
||||
MWContext * context,
|
||||
UnicodeString & attendeeName,
|
||||
TransactionObject::EFetchType fetchType)
|
||||
*/
|
||||
TransactionObject * gto;
|
||||
gto = TransactionObjectFactory::Make(
|
||||
*pCal, /* ical components are loaded into this calendar */
|
||||
CompList, /* a list of pointers to the components loaded */
|
||||
*pFromUser,
|
||||
*recipients,
|
||||
subject,
|
||||
*ModifierList,
|
||||
NULL,
|
||||
NULL,
|
||||
m_Name,
|
||||
GetTransactionObject::EFetchType_DateRange);
|
||||
assert(gto != 0);
|
||||
JulianPtrArray * out = new JulianPtrArray(); assert(out != 0);
|
||||
|
||||
TransactionObject::ETxnErrorCode txnStatus;
|
||||
gto->executeCAPI(out, txnStatus);
|
||||
|
||||
NSCalendar * aCal;
|
||||
char sBuf[5000];
|
||||
t_int32 size = out->GetSize();
|
||||
t_int32 eventSize = 0;
|
||||
|
||||
char * acc;
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
aCal = (NSCalendar *) out->GetAt(i);
|
||||
if (aCal->getEvents() != 0)
|
||||
eventSize = aCal->getEvents()->GetSize();
|
||||
|
||||
pMsg->SendReply(sBuf);
|
||||
acc = aCal->toICALString().toCString("")
|
||||
pMsg->SendReply(acc);
|
||||
delete [] acc;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
|
@ -104,78 +104,6 @@ nsresult NS_RegisterApplicationShellFactory()
|
|||
return res;
|
||||
}
|
||||
|
||||
/*
|
||||
* CAPI Callback used to fetch data from a general CAPI location
|
||||
* Gets nsCalStreamReader object.
|
||||
* If parse not started yet.
|
||||
* Start the parser - the parser will block automatically when
|
||||
* no more data to parse.
|
||||
* When parse is blocked, set size handled
|
||||
*/
|
||||
int RcvData(void * pData,
|
||||
char * pBuf,
|
||||
size_t iSize,
|
||||
size_t * piTransferred)
|
||||
{
|
||||
nsCalStreamReader * pCalStreamReader = (nsCalStreamReader *) pData;
|
||||
nsCapiCallbackReader * pCapiCallbackReader = pCalStreamReader->getReader();
|
||||
if (!pCalStreamReader->isParseStarted())
|
||||
{
|
||||
PRMonitor * pMon = (PRMonitor*) pCalStreamReader->getCallerData();
|
||||
pCalStreamReader->setParseStarted();
|
||||
|
||||
/*
|
||||
* Start up the thread that will receive the ical data
|
||||
*/
|
||||
PR_ExitMonitor(pMon);
|
||||
}
|
||||
|
||||
/*
|
||||
* We're going to be adding a new buffer (unicode string) to the
|
||||
* list of data. We don't want the other thread accessing the list
|
||||
* while we're doing this. So, we enter the monitor...
|
||||
*/
|
||||
PR_EnterMonitor((PRMonitor *)pCapiCallbackReader->getMonitor());
|
||||
|
||||
/*
|
||||
* if we're finished, set the CapiCallbackReader to finished.
|
||||
*/
|
||||
if (iSize == 0)
|
||||
{
|
||||
pCapiCallbackReader->setFinished();
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* XXX: may want to ensure that pBuf is 0 terminated.
|
||||
*/
|
||||
char * pBufCopy = new char[strlen(pBuf)];
|
||||
strncpy(pBufCopy, pBuf, (size_t) strlen(pBuf));
|
||||
nsCapiBufferStruct * capiBuffer = new nsCapiBufferStruct();
|
||||
capiBuffer->m_pBuf = pBufCopy;
|
||||
capiBuffer->m_pBufSize = iSize;
|
||||
pCapiCallbackReader->AddBuffer(capiBuffer);
|
||||
*piTransferred = iSize;
|
||||
}
|
||||
|
||||
/*
|
||||
* The parsing thread may be waiting on more data before it
|
||||
* can continue. When this happens, it enters a PR_WAIT for
|
||||
* this monitor. We've just finished adding more data, so we
|
||||
* want to notify the other thread now if it's waiting.
|
||||
*/
|
||||
PR_Notify((PRMonitor *)pCapiCallbackReader->getMonitor());
|
||||
PR_ExitMonitor((PRMonitor *)pCapiCallbackReader->getMonitor());
|
||||
|
||||
/*
|
||||
* Now that another buffer is available for parsing, we want
|
||||
* the parsing thread to take over. This will help keep the
|
||||
* list of unparsed buffers to a minimum.
|
||||
*/
|
||||
// PR_Sleep(PR_INTERVAL_NO_WAIT);
|
||||
return iSize > 0 ? 0 : -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* nsCalendarShell Definition
|
||||
*/
|
||||
|
@ -187,7 +115,7 @@ nsCalendarShell::nsCalendarShell()
|
|||
mDocumentContainer = nsnull ;
|
||||
mObserverManager = nsnull;
|
||||
mCAPIPassword = nsnull;
|
||||
m_pCalendar = nsnull;
|
||||
mpCalendar = nsnull;
|
||||
mpLoggedInUser = nsnull;
|
||||
mCommandServer = nsnull;
|
||||
mCAPISession = nsnull;
|
||||
|
@ -196,15 +124,15 @@ nsCalendarShell::nsCalendarShell()
|
|||
|
||||
nsCalendarShell::~nsCalendarShell()
|
||||
{
|
||||
m_SessionMgr.GetAt(0L)->mCapi->CAPI_DestroyHandles(mCAPISession, &mCAPIHandle, 1, 0L);
|
||||
mSessionMgr.GetAt(0L)->mCapi->CAPI_DestroyHandles(mCAPISession, &mCAPIHandle, 1, 0L);
|
||||
Logoff();
|
||||
|
||||
NS_IF_RELEASE(mObserverManager);
|
||||
|
||||
if (mCAPIPassword)
|
||||
PR_Free(mCAPIPassword);
|
||||
if (m_pCalendar)
|
||||
delete m_pCalendar;
|
||||
if (mpCalendar)
|
||||
delete mpCalendar;
|
||||
if (mpLoggedInUser)
|
||||
delete mpLoggedInUser;
|
||||
|
||||
|
@ -245,229 +173,31 @@ NS_IMPL_RELEASE(nsCalendarShell)
|
|||
|
||||
nsresult nsCalendarShell::Init()
|
||||
{
|
||||
mScheduler.SetShell(this);
|
||||
|
||||
/*
|
||||
* Register class factrories needed for application
|
||||
*/
|
||||
|
||||
RegisterFactories() ;
|
||||
|
||||
/*
|
||||
* Load Application Prefs
|
||||
*/
|
||||
|
||||
LoadPreferences();
|
||||
|
||||
/*
|
||||
* Logon to the system
|
||||
*/
|
||||
|
||||
Logon();
|
||||
|
||||
/*
|
||||
* Create the UI
|
||||
*/
|
||||
|
||||
LoadUI();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a useful piece of code but it's in the wrong
|
||||
* place. Given a path, it ensures that the path exists, creating
|
||||
* whatever needs to be created.
|
||||
* @return NS_OK on success
|
||||
* file creation errors otherwise.
|
||||
*/
|
||||
nsresult nsCalendarShell::EnsureUserPath( JulianString& sPath )
|
||||
{
|
||||
JulianString sTmp;
|
||||
PRInt32 i;
|
||||
nsCurlParser::ConvertToFileChars(sPath);
|
||||
for (i = 0; -1 != (i = sPath.Strpbrk(i,"/\\")); i++ )
|
||||
{
|
||||
sTmp = sPath.Left(i);
|
||||
if (PR_SUCCESS != PR_Access(sTmp.GetBuffer(), PR_ACCESS_EXISTS))
|
||||
{
|
||||
/*
|
||||
* Try to create it...
|
||||
*/
|
||||
if (PR_SUCCESS != PR_MkDir(sTmp.GetBuffer(),PR_RDWR))
|
||||
{
|
||||
PRInt32 iError = PR_GetError();
|
||||
return (nsresult) iError;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* OK, the path was there or it has been created. Now make
|
||||
* sure we can write to it.
|
||||
*/
|
||||
if (PR_SUCCESS != PR_Access(sPath.GetBuffer(), PR_ACCESS_WRITE_OK))
|
||||
{
|
||||
PRInt32 iError = PR_GetError();
|
||||
return (nsresult) iError;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* required to set gasViewPropList and giViewPropListCount for now
|
||||
* will need to change local CAPI so null gasViewPropList will return
|
||||
* all properties.
|
||||
*/
|
||||
char * gasViewPropList[10] = {
|
||||
"ATTENDEE", "DTSTART", "DTEND", "UID", "RECURRENCE-ID",
|
||||
"DTSTAMP", "SUMMARY", "DESCRIPTION", "ORGANIZER", "TRANSP"
|
||||
};
|
||||
int giViewPropListCount = 10;
|
||||
|
||||
/**
|
||||
* Given an nsICapi interface, log in and get some initial data.
|
||||
* @return NS_OK on success.
|
||||
*/
|
||||
nsresult nsCalendarShell::InitialLoadData()
|
||||
{
|
||||
nsresult res;
|
||||
ErrorCode status = ZERO_ERROR;
|
||||
DateTime d;
|
||||
char * psDTStart = 0;
|
||||
char * psDTEnd = 0;
|
||||
CAPIStream RcvStream = 0;
|
||||
CAPIStatus capiStatus;
|
||||
JulianPtrArray * pParsedCalList = new JulianPtrArray(); // destroyed
|
||||
nsCalStreamReader * pCalStreamReader = 0; // destroyed
|
||||
PRThread * parseThread = 0;
|
||||
PRThread * mainThread = 0;
|
||||
PRMonitor * pCBReaderMonitor = 0; /// destroyed
|
||||
PRMonitor *pThreadMonitor = 0; /// destroyed
|
||||
|
||||
/*
|
||||
* Select the capi interface to use for this operation...
|
||||
*/
|
||||
nsICapi* pCapi = m_SessionMgr.GetAt(0L)->mCapi;
|
||||
|
||||
/*
|
||||
* Begin a calendar for the logged in user...
|
||||
*/
|
||||
m_pCalendar = new NSCalendar(0);
|
||||
SetNSCalendar(m_pCalendar);
|
||||
|
||||
/*
|
||||
* Set up the range of time for which we'll pull events...
|
||||
*/
|
||||
int iOffset = 30;
|
||||
d.prevDay(iOffset);
|
||||
psDTStart = d.toISO8601().toCString("");
|
||||
d.nextDay(2 * iOffset);
|
||||
psDTEnd = d.toISO8601().toCString("");
|
||||
|
||||
/*
|
||||
* The data is actually read and parsed in another thread. Set it all
|
||||
* up here...
|
||||
*/
|
||||
mainThread = PR_CurrentThread();
|
||||
pCBReaderMonitor = PR_NewMonitor(); // destroyed
|
||||
nsCapiCallbackReader * capiReader = new nsCapiCallbackReader(pCBReaderMonitor);
|
||||
pThreadMonitor = ::PR_NewMonitor(); // destroyed
|
||||
PR_EnterMonitor(pThreadMonitor);
|
||||
pCalStreamReader = new nsCalStreamReader(capiReader, pParsedCalList, parseThread, pThreadMonitor);
|
||||
parseThread = PR_CreateThread(PR_USER_THREAD,
|
||||
main_CalStreamReader,
|
||||
pCalStreamReader,
|
||||
PR_PRIORITY_NORMAL,
|
||||
PR_LOCAL_THREAD,
|
||||
PR_UNJOINABLE_THREAD,
|
||||
0);
|
||||
|
||||
capiStatus = pCapi->CAPI_SetStreamCallbacks(
|
||||
mCAPISession, &RcvStream, 0,0,RcvData, pCalStreamReader,0);
|
||||
|
||||
if (CAPI_ERR_OK != capiStatus)
|
||||
return 1; /* XXX: really need to fix this up */
|
||||
|
||||
{
|
||||
/* XXX: Get rid of the local variables as soon as
|
||||
* local capi can take a null list or as soon as
|
||||
* cs&t capi can take a list.
|
||||
*/
|
||||
nsCurlParser sessionURL(msCalURL);
|
||||
char** asList = gasViewPropList;
|
||||
int iListSize = giViewPropListCount;
|
||||
|
||||
if (nsCurlParser::eCAPI == sessionURL.GetProtocol())
|
||||
{
|
||||
asList = 0;
|
||||
iListSize = 0;
|
||||
}
|
||||
|
||||
capiStatus = pCapi->CAPI_FetchEventsByRange(
|
||||
mCAPISession, &mCAPIHandle, 1, 0,
|
||||
psDTStart, psDTEnd,
|
||||
asList, iListSize, RcvStream);
|
||||
}
|
||||
|
||||
if (CAPI_ERR_OK != capiStatus)
|
||||
return 1; /* XXX: really need to fix this up */
|
||||
|
||||
/*
|
||||
* Wait here until we know the thread completed.
|
||||
*/
|
||||
if (!pCalStreamReader->isParseFinished() )
|
||||
{
|
||||
PR_EnterMonitor(pThreadMonitor);
|
||||
PR_Wait(pThreadMonitor,PR_INTERVAL_NO_TIMEOUT);
|
||||
PR_ExitMonitor(pThreadMonitor);
|
||||
}
|
||||
|
||||
/*
|
||||
* Load the retrieved events ito our calendar...
|
||||
*/
|
||||
int i,j;
|
||||
NSCalendar* pCal;
|
||||
JulianPtrArray* pEventList;
|
||||
ICalComponent* pEvent;
|
||||
for ( i = 0; i < pParsedCalList->GetSize(); i++)
|
||||
{
|
||||
pCal = (NSCalendar*)pParsedCalList->GetAt(i);
|
||||
pEventList = pCal->getEvents();
|
||||
if (0 != pEventList)
|
||||
{
|
||||
for (j = 0; j < pEventList->GetSize(); j++)
|
||||
{
|
||||
pEvent = (ICalComponent*)pEventList->GetAt(j);
|
||||
if (0 != pEvent)
|
||||
m_pCalendar->addEvent(pEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* cleanup allocated memory
|
||||
*/
|
||||
delete [] psDTStart; psDTStart = 0;
|
||||
delete [] psDTEnd; psDTEnd = 0;
|
||||
delete pCalStreamReader; pCalStreamReader = 0;
|
||||
delete capiReader; capiReader = 0;
|
||||
PR_DestroyMonitor(pThreadMonitor);
|
||||
PR_DestroyMonitor(pCBReaderMonitor);
|
||||
/* todo: need to delete calendars in pParsedCalList without deleting events in it */
|
||||
capiStatus = pCapi->CAPI_DestroyStreams(mCAPISession, &RcvStream, 1, 0);
|
||||
if (CAPI_ERR_OK != capiStatus)
|
||||
return 1; /* XXX: really need to fix this up */
|
||||
|
||||
/*
|
||||
* register the calendar...
|
||||
*/
|
||||
if (NS_OK != (res = m_CalList.Add(m_pCalendar)))
|
||||
return res;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method establishes a logged in user and opens a connection to
|
||||
* the calendar server (or local database file if they're working offline).
|
||||
|
@ -490,7 +220,7 @@ nsresult nsCalendarShell::Logon()
|
|||
/*
|
||||
* Ask the session manager for a session...
|
||||
*/
|
||||
res = m_SessionMgr.GetSession(
|
||||
res = mSessionMgr.GetSession(
|
||||
msCalURL.GetBuffer(), // may contain a password, if so it will be used
|
||||
0L,
|
||||
GetCAPIPassword(),
|
||||
|
@ -506,17 +236,23 @@ nsresult nsCalendarShell::Logon()
|
|||
sHandle.Prepend(":"); // this is disgusting. we must get cst to fix this
|
||||
}
|
||||
|
||||
s = m_SessionMgr.GetAt(0L)->mCapi->CAPI_GetHandle(mCAPISession,sHandle.GetBuffer(),0,&mCAPIHandle);
|
||||
s = mSessionMgr.GetAt(0L)->mCapi->CAPI_GetHandle(mCAPISession,sHandle.GetBuffer(),0,&mCAPIHandle);
|
||||
|
||||
if (CAPI_ERR_OK != s)
|
||||
return NS_OK;
|
||||
|
||||
switch(theURL.GetProtocol())
|
||||
/*
|
||||
* Begin a calendar for the logged in user...
|
||||
*/
|
||||
mpCalendar = new NSCalendar(0);
|
||||
SetNSCalendar(mpCalendar);
|
||||
|
||||
switch(theURL.GetProtocol())
|
||||
{
|
||||
case nsCurlParser::eFILE:
|
||||
case nsCurlParser::eCAPI:
|
||||
{
|
||||
InitialLoadData();
|
||||
mScheduler.InitialLoadData();
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -535,7 +271,7 @@ nsresult nsCalendarShell::Logoff()
|
|||
/*
|
||||
* Shut down any open CAPI sessions.
|
||||
*/
|
||||
m_SessionMgr.Shutdown();
|
||||
mSessionMgr.Shutdown();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -693,7 +429,7 @@ nsresult nsCalendarShell::LoadPreferences()
|
|||
/*
|
||||
* Add the logged in user to the user list...
|
||||
*/
|
||||
m_UserList.Add( mpLoggedInUser );
|
||||
mUserList.Add( mpLoggedInUser );
|
||||
|
||||
/*
|
||||
* Get the local cal address.
|
||||
|
@ -789,7 +525,7 @@ nsresult nsCalendarShell::LoadUI()
|
|||
return res ;
|
||||
|
||||
mDocumentContainer->SetApplicationShell((nsIApplicationShell*)this);
|
||||
//((nsCalendarContainer *)mDocumentContainer)->m_pCalendarShell = this;
|
||||
//((nsCalendarContainer *)mDocumentContainer)->mpCalendarShell = this;
|
||||
|
||||
mDocumentContainer->SetToolbarManager(mShellInstance->GetToolbarManager());
|
||||
|
||||
|
@ -875,13 +611,13 @@ CAPISession nsCalendarShell::GetCAPISession()
|
|||
|
||||
nsresult nsCalendarShell::SetNSCalendar(NSCalendar * aNSCalendar)
|
||||
{
|
||||
m_pCalendar = aNSCalendar;
|
||||
mpCalendar = aNSCalendar;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NSCalendar * nsCalendarShell::GetNSCalendar()
|
||||
{
|
||||
return (m_pCalendar);
|
||||
return (mpCalendar);
|
||||
}
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче