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

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

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

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

@ -18,26 +18,81 @@
#include <stdio.h> #include <stdio.h>
#include "nsCalendarUser.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) nsCalendarUser::nsCalendarUser(nsISupports* outer)
{ {
NS_INIT_REFCNT(); NS_INIT_REFCNT();
mUserSupports = nsnull;
mUser = nsnull;
} }
NS_IMPL_QUERY_INTERFACE(nsCalendarUser, kICalendarUserIID) NS_IMPL_QUERY_INTERFACE(nsCalendarUser, kICalendarUserIID)
// if (nsnull != mWidgetSupports)
// return mWidgetSupports->QueryInterface(aIID, aInstancePtr);
NS_IMPL_ADDREF(nsCalendarUser) NS_IMPL_ADDREF(nsCalendarUser)
NS_IMPL_RELEASE(nsCalendarUser) NS_IMPL_RELEASE(nsCalendarUser)
nsCalendarUser::~nsCalendarUser() nsCalendarUser::~nsCalendarUser()
{ {
NS_IF_RELEASE(mUserSupports);
mUser = nsnull; // Do Not Release
} }
nsresult nsCalendarUser::Init() 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___ #define nsCalCanvas_h___
#include "nsXPFCCanvas.h" #include "nsXPFCCanvas.h"
#include "nsICalendarUser.h"
class nsCalCanvas : public nsXPFCCanvas class nsCalCanvas : public nsXPFCCanvas
@ -31,9 +32,15 @@ public:
NS_IMETHOD Init(); NS_IMETHOD Init();
NS_IMETHOD GetUser(nsICalendarUser *& aUser);
NS_IMETHOD SetUser(nsICalendarUser * aUser);
protected: protected:
~nsCalCanvas(); ~nsCalCanvas();
protected:
nsICalendarUser * mUser;
}; };
#endif /* nsCalCanvas_h___ */ #endif /* nsCalCanvas_h___ */

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

@ -25,10 +25,12 @@ static NS_DEFINE_IID(kCalCanvasCID, NS_CAL_CANVAS_CID);
nsCalCanvas :: nsCalCanvas(nsISupports* outer) : nsXPFCCanvas(outer) nsCalCanvas :: nsCalCanvas(nsISupports* outer) : nsXPFCCanvas(outer)
{ {
NS_INIT_REFCNT(); NS_INIT_REFCNT();
mUser = nsnull;
} }
nsCalCanvas :: ~nsCalCanvas() nsCalCanvas :: ~nsCalCanvas()
{ {
NS_IF_RELEASE(mUser);
} }
nsresult nsCalCanvas::QueryInterface(REFNSIID aIID, void** aInstancePtr) nsresult nsCalCanvas::QueryInterface(REFNSIID aIID, void** aInstancePtr)
@ -59,3 +61,15 @@ nsresult nsCalCanvas :: Init()
return NS_OK; 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___ #define nsUser_h___
#include "nsIUser.h" #include "nsIUser.h"
#include "nsAgg.h"
class nsUser : public nsIUser class nsUser : public nsIUser
@ -27,7 +28,7 @@ class nsUser : public nsIUser
public: public:
nsUser(nsISupports* outer); nsUser(nsISupports* outer);
NS_DECL_ISUPPORTS NS_DECL_AGGREGATED
NS_IMETHOD Init(); NS_IMETHOD Init();

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

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