Final implementation and hookup of user, layer and calcanvas

interfaces
This commit is contained in:
spider%netscape.com 1998-09-15 22:05:48 +00:00
Родитель bf13a91cef
Коммит 4b016b7b52
7 изменённых файлов: 108 добавлений и 29 удалений

Просмотреть файл

@ -20,6 +20,8 @@
#define nsCalendarUser_h___
#include "nsICalendarUser.h"
#include "nsIUser.h"
#include "nsILayer.h"
class nsCalendarUser : public nsICalendarUser
{
@ -32,6 +34,14 @@ public:
NS_IMETHOD Init();
NS_IMETHOD GetLayer(nsILayer *& aLayer);
NS_IMETHOD SetLayer(nsILayer* aLayer);
protected:
nsISupports * mUserSupports;
nsIUser * mUser;
nsILayer * mLayer;
};
#endif //nsCalendarUser_h___

Просмотреть файл

@ -19,6 +19,7 @@
#define nsICalendarUser_h___
#include "nsISupports.h"
#include "nsILayer.h"
//2fa12310-4cd8-11d2-924a-00805f8a7ab6
#define NS_ICALENDAR_USER_IID \
@ -31,6 +32,9 @@ class nsICalendarUser : public nsISupports
public:
NS_IMETHOD Init() = 0;
NS_IMETHOD GetLayer(nsILayer *& aLayer) = 0;
NS_IMETHOD SetLayer(nsILayer* aLayer) = 0;
};

Просмотреть файл

@ -18,26 +18,81 @@
#include <stdio.h>
#include "nsCalendarUser.h"
#include "nsCoreCIID.h"
#include "nsxpfcCIID.h"
static NS_DEFINE_IID(kICalendarUserIID, NS_ICALENDAR_USER_IID);
static NS_DEFINE_IID(kICalendarUserIID, NS_ICALENDAR_USER_IID);
static NS_DEFINE_IID(kIUserIID, NS_IUSER_IID);
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kCUserCID, NS_USER_CID);
nsCalendarUser::nsCalendarUser(nsISupports* outer)
{
NS_INIT_REFCNT();
mUserSupports = nsnull;
mUser = nsnull;
}
NS_IMPL_QUERY_INTERFACE(nsCalendarUser, kICalendarUserIID)
// if (nsnull != mWidgetSupports)
// return mWidgetSupports->QueryInterface(aIID, aInstancePtr);
NS_IMPL_ADDREF(nsCalendarUser)
NS_IMPL_RELEASE(nsCalendarUser)
nsCalendarUser::~nsCalendarUser()
{
NS_IF_RELEASE(mUserSupports);
mUser = nsnull; // Do Not Release
}
nsresult nsCalendarUser::Init()
{
nsresult res;
nsISupports * supports ;
res = QueryInterface(kISupportsIID, (void **) &supports);
if (NS_OK != res)
return res;
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
res = nsRepository::CreateInstance(kCUserCID,
supports,
kISupportsIID,
(void**)&mUserSupports);
if (NS_OK == res)
{
res = mUserSupports->QueryInterface(kIUserIID, (void**)&mUser);
if (NS_OK != res)
{
mUserSupports->Release();
mUserSupports = NULL;
}
else
{
mUser->Release();
}
}
return res;
return (NS_OK);
}
NS_IMETHODIMP nsCalendarUser :: GetLayer(nsILayer *& aLayer)
{
aLayer = mLayer;
return NS_OK;
}
NS_IMETHODIMP nsCalendarUser :: SetLayer(nsILayer* aLayer)
{
mLayer = aLayer;
return NS_OK;
}

Просмотреть файл

@ -20,6 +20,7 @@
#define nsCalCanvas_h___
#include "nsXPFCCanvas.h"
#include "nsICalendarUser.h"
class nsCalCanvas : public nsXPFCCanvas
@ -31,9 +32,15 @@ public:
NS_IMETHOD Init();
NS_IMETHOD GetUser(nsICalendarUser *& aUser);
NS_IMETHOD SetUser(nsICalendarUser * aUser);
protected:
~nsCalCanvas();
protected:
nsICalendarUser * mUser;
};
#endif /* nsCalCanvas_h___ */

Просмотреть файл

@ -25,10 +25,12 @@ static NS_DEFINE_IID(kCalCanvasCID, NS_CAL_CANVAS_CID);
nsCalCanvas :: nsCalCanvas(nsISupports* outer) : nsXPFCCanvas(outer)
{
NS_INIT_REFCNT();
mUser = nsnull;
}
nsCalCanvas :: ~nsCalCanvas()
{
NS_IF_RELEASE(mUser);
}
nsresult nsCalCanvas::QueryInterface(REFNSIID aIID, void** aInstancePtr)
@ -59,3 +61,15 @@ nsresult nsCalCanvas :: Init()
return NS_OK;
}
nsresult nsCalCanvas :: GetUser(nsICalendarUser *& aUser)
{
aUser = mUser;
return NS_OK;
}
nsresult nsCalCanvas :: SetUser(nsICalendarUser * aUser)
{
mUser = aUser;
return NS_OK;
}

Просмотреть файл

@ -20,6 +20,7 @@
#define nsUser_h___
#include "nsIUser.h"
#include "nsAgg.h"
class nsUser : public nsIUser
@ -27,7 +28,7 @@ class nsUser : public nsIUser
public:
nsUser(nsISupports* outer);
NS_DECL_ISUPPORTS
NS_DECL_AGGREGATED
NS_IMETHOD Init();

Просмотреть файл

@ -26,7 +26,7 @@ static NS_DEFINE_IID(kCIUserIID, NS_IUSER_IID);
nsUser :: nsUser(nsISupports* outer)
{
NS_INIT_REFCNT();
NS_INIT_AGGREGATED(outer);
mUserName = "";
}
@ -34,33 +34,21 @@ nsUser :: ~nsUser()
{
}
nsresult nsUser::QueryInterface(REFNSIID aIID, void** aInstancePtr)
{
if (NULL == aInstancePtr) {
return NS_ERROR_NULL_POINTER;
}
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kClassIID, kCUserCID);
if (aIID.Equals(kClassIID)) {
*aInstancePtr = (void*) (nsUser *)this;
AddRef();
return NS_OK;
}
if (aIID.Equals(kCIUserIID)) {
*aInstancePtr = (void*) (nsIUser *)this;
AddRef();
return NS_OK;
}
if (aIID.Equals(kISupportsIID)) {
*aInstancePtr = (void*) (this);
AddRef();
return NS_OK;
}
return (NS_ERROR_NO_INTERFACE);
NS_IMPL_AGGREGATED(nsUser);
NS_METHOD nsUser::AggregatedQueryInterface(const nsIID& aIID, void** aInstancePtr)
{
if (NULL == aInstancePtr) {
return NS_ERROR_NULL_POINTER;
}
if (aIID.Equals(kCIUserIID) || aIID.Equals(kISupportsIID) || aIID.Equals(kCUserCID)) {
*aInstancePtr = (void*) this;
AddRef();
return NS_OK;
}
return NS_NOINTERFACE;
}
NS_IMPL_ADDREF(nsUser)
NS_IMPL_RELEASE(nsUser)
nsresult nsUser :: Init()
{