зеркало из https://github.com/mozilla/pjs.git
176 строки
4.3 KiB
C++
176 строки
4.3 KiB
C++
/* -*- 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.
|
|
*/
|
|
|
|
#include "prmem.h"
|
|
#include "nsxpfcCIID.h"
|
|
#include "nsxpfcutil.h"
|
|
#include "nsXPFCDataCollectionManager.h"
|
|
#include "nsIApplicationShell.h"
|
|
|
|
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
|
|
static NS_DEFINE_IID(kCXPFCDataCollectionManagerCID, NS_XPFCDATACOLLECTION_MANAGER_CID);
|
|
static NS_DEFINE_IID(kIXPFCDataCollectionManagerIID, NS_IXPFCDATACOLLECTION_MANAGER_IID);
|
|
|
|
typedef struct Data_ManagerList
|
|
{
|
|
nsString* HandlerName;
|
|
nsIApplicationShell* HandleShell;
|
|
} DataManagerListStruct, *DataManagerList;
|
|
|
|
nsXPFCDataCollectionManager :: nsXPFCDataCollectionManager()
|
|
{
|
|
NS_INIT_REFCNT();
|
|
}
|
|
|
|
nsXPFCDataCollectionManager :: ~nsXPFCDataCollectionManager()
|
|
{
|
|
if (mDataHands != nsnull)
|
|
{
|
|
for(PRInt32 x = 0;
|
|
x < mDataHands->Count();
|
|
x++)
|
|
{
|
|
DataManagerList dml = (DataManagerList)(mDataHands->ElementAt(x));
|
|
PR_DELETE(dml);
|
|
}
|
|
mDataHands->RemoveAll();
|
|
NS_RELEASE(mDataHands);
|
|
}
|
|
}
|
|
|
|
NS_IMPL_QUERY_INTERFACE(nsXPFCDataCollectionManager, kIXPFCDataCollectionManagerIID)
|
|
NS_IMPL_ADDREF(nsXPFCDataCollectionManager)
|
|
NS_IMPL_RELEASE(nsXPFCDataCollectionManager)
|
|
|
|
nsresult nsXPFCDataCollectionManager :: Init()
|
|
{
|
|
static NS_DEFINE_IID(kCVectorCID, NS_ARRAY_CID);
|
|
nsresult res = nsRepository::CreateInstance(kCVectorCID,
|
|
nsnull,
|
|
kCVectorCID,
|
|
(void **)&mDataHands);
|
|
|
|
if (NS_OK != res)
|
|
return res ;
|
|
|
|
mDataHands->Init();
|
|
|
|
return NS_OK ;
|
|
}
|
|
|
|
nsresult
|
|
nsXPFCDataCollectionManager::AddDataCollection(nsString& DataHandlerName, nsIApplicationShell *aHostShell)
|
|
{
|
|
DataManagerList dml = PR_NEW(DataManagerListStruct);
|
|
|
|
if (dml)
|
|
{
|
|
dml->HandleShell = aHostShell;
|
|
dml->HandlerName = new nsString(DataHandlerName);
|
|
mDataHands->Append((void *)dml);
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
nsXPFCDataCollectionManager :: CallDataHandler(nsString& DataHandlerName, nsICollectedData* TheCollectedData)
|
|
{
|
|
for(PRInt32 x = 0; x < mDataHands->Count(); x++)
|
|
{
|
|
DataManagerList dml;
|
|
|
|
dml = (DataManagerList)(mDataHands->ElementAt(x));
|
|
if ((*dml->HandlerName) == DataHandlerName)
|
|
{
|
|
TheCollectedData->SetDataHandlerType(DataHandlerName);
|
|
(dml->HandleShell)->ReceiveCallback(*TheCollectedData);
|
|
}
|
|
}
|
|
|
|
return NS_OK ;
|
|
}
|
|
|
|
/********************************************************************************************
|
|
***
|
|
Collected Data Code
|
|
***
|
|
********************************************************************************************/
|
|
static NS_DEFINE_IID(kICollectedDataIID, NS_IXPFCDATACOLLECTION_MANAGER_IID);
|
|
|
|
nsCollectedData::nsCollectedData()
|
|
{
|
|
NS_INIT_REFCNT();
|
|
}
|
|
|
|
nsCollectedData::~nsCollectedData()
|
|
{
|
|
}
|
|
|
|
NS_IMPL_QUERY_INTERFACE(nsCollectedData, kICollectedDataIID)
|
|
NS_IMPL_ADDREF(nsCollectedData)
|
|
NS_IMPL_RELEASE(nsCollectedData)
|
|
|
|
nsresult
|
|
nsCollectedData::Init()
|
|
{
|
|
return NS_OK ;
|
|
}
|
|
|
|
nsVoidArray*
|
|
nsCollectedData::GetDataArray()
|
|
{
|
|
return &theDataSource;
|
|
}
|
|
|
|
nsresult
|
|
nsCollectedData::FindValueInCollectedData(nsString& Label, nsString& result)
|
|
{
|
|
result = "";
|
|
|
|
for(PRInt32 x = 0; x < theDataSource.Count(); x++)
|
|
{
|
|
nsString a,b;
|
|
CollectedDataPtr c;
|
|
c = (CollectedDataPtr)(theDataSource.ElementAt(x));
|
|
a = c->LabelName;
|
|
b = c->Value;
|
|
|
|
if (a.RFind(Label, PR_TRUE) != -1)
|
|
{
|
|
result = b;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
nsString
|
|
nsCollectedData::GetDataHandlerType()
|
|
{
|
|
return DataHandlerType;
|
|
}
|
|
|
|
nsresult
|
|
nsCollectedData::SetDataHandlerType(nsString& TypeString)
|
|
{
|
|
DataHandlerType = TypeString;
|
|
return NS_OK;
|
|
}
|