chxavaccesspointdb.cpp
来自「symbian 下的helix player源代码」· C++ 代码 · 共 325 行
CPP
325 行
/************************************************************************
* chxavaccesspointdb.cpp
* ----------------------
*
* Synopsis:
* Access point utility routines implementation.
*
*
* Target:
* Symbian OS
*
*
* (c) 1995-2003 RealNetworks, Inc. Patents pending. All rights reserved.
*
************************************************************************/
// Symbian includes...
#include <aputils.h>
// Helix includes...
#include "hxslist.h"
#include "hxstring.h"
// Includes from this project...
#include "chxavaccesspointdb.h"
#include "chxavstringutils.h"
#include "chxavcleanupstack.h"
/*
* CHXAvAccessPointDB
* ------------------
* Ctor
*
*/
CHXAvAccessPointDB::CHXAvAccessPointDB() : m_accessPoints(NULL), m_isOpen(FALSE)
{
}
void CHXAvAccessPointDB::ConstructL()
{
m_accessPoints = new (ELeave) CHXSimpleList;
OpenDBL();
}
/*
* ~CHXAvAccessPointDB
* -------------------
* Dtor...close db if still open.
*
*/
CHXAvAccessPointDB::~CHXAvAccessPointDB()
{
ClearAccessPointsList();
if (m_accessPoints != NULL) delete m_accessPoints;
if (m_isOpen) CloseDB();
}
/*
* OpenDB
* ------
* Open the access point database and prepare for transactions.
* False returned if unsuccessful.
*
*/
bool
CHXAvAccessPointDB::OpenDBL()
{
if (m_isOpen) return true;
bool ret = FALSE;
m_spDatabase = CCommsDatabase::NewL(EDatabaseTypeIAP);
m_isOpen = TRUE;
return ret;
}
/*
* CloseDB
* ------
* Clean up a little.
*
*/
void
CHXAvAccessPointDB::CloseDB()
{
m_isOpen = FALSE;
}
/*
* GetIapIDFromNameL
* -----------------
* Copy out the id that corresponds to the given name.
*
*/
TUint32
CHXAvAccessPointDB::GetIapIDFromNameL(const CHXString& name)
{
GetAllAccessPointsL();
// Go through the list...
LISTPOSITION pos = m_accessPoints->GetHeadPosition();
while (pos != NULL)
{
AccessPointInfoPtr info = (AccessPointInfoPtr)(m_accessPoints->GetNext(pos));
if (info != NULL)
{
if (info->name.CompareNoCase(name) == 0)
{
return info->id;
}
}
}
return 0;
}
/*
* GetAllAccessPointsL
* ------------------
* Populates the accesspoint list with the current set of access points.
*
*/
void
CHXAvAccessPointDB::GetAllAccessPointsL()
{
ClearAccessPointsList();
// Open a view on the access point table...
m_spTable = m_spDatabase->OpenTableLC(TPtrC(IAP));
CleanupStack::Pop();
CApUtils* pUtils = CApUtils::NewLC(*m_spDatabase);
AUTO_POP_DEL(pUtils);
// Now that we have a table view...we will navigate it...
TInt err = m_spTable->GotoFirstRecord();
while (err == KErrNone)
{
// Get the Id of this record...
TUint32 id = 0;
m_spTable->ReadUintL(TPtrC(COMMDB_ID), id);
// Get the nave of this record...
HBufC *name = NULL;
name = m_spTable->ReadLongTextLC(TPtrC(COMMDB_NAME));
AUTO_POP_DEL(name);
CHXString nameStr = CHXAvStringUtils::DescToString(name->Des());
// Get the service id...
TUint32 iapService = 0;
m_spTable->ReadUintL(TPtrC(IAP_SERVICE), iapService);
// Save these values in the list...
AccessPointInfoPtr info = new (ELeave) AccessPointInfo;
info->id = id;
info->service = iapService;
info->name = nameStr;
TBool exists = pUtils->IAPExistsL(id);
if (exists)
info->wapId = pUtils->WapIdFromIapIdL(id);
m_accessPoints->AddTail((void *)info);
// Advance to the next record...
err = m_spTable->GotoNextRecord();
}
}
/*
* GetAPInfo
* ---------
* Return true if internet AP exists
*
*/
bool
CHXAvAccessPointDB::IsValidL(TUint32 iapId)
{
CApUtils* pUtils = CApUtils::NewLC(*m_spDatabase);
AUTO_POP_DEL(pUtils);
return pUtils->IAPExistsL(iapId);
}
/*
* GetAPInfo
* ---------
* Returns the info struct of the record by it's id.
*
*/
AccessPointInfoPtr
CHXAvAccessPointDB::GetAPInfo(TUint32 iapId)
{
LISTPOSITION pos = m_accessPoints->GetHeadPosition();
while (pos != NULL)
{
AccessPointInfoPtr info = (AccessPointInfoPtr)(m_accessPoints->GetNext(pos));
if (info->id == iapId)
return info;
}
return NULL;
}
/*
* ClearAccessPointsList
* ---------------------
* Clear the list.
*
*/
void
CHXAvAccessPointDB::ClearAccessPointsList()
{
LISTPOSITION pos = NULL;
pos = m_accessPoints->GetHeadPosition();
while (pos != NULL)
{
AccessPointInfoPtr info = (AccessPointInfoPtr)(m_accessPoints->GetNext(pos));
delete info;
}
m_accessPoints->RemoveAll();
}
/*
* AllocAccessPointNameL
* ---------------------
* Get the name given the access point id.
*
*/
HBufC*
CHXAvAccessPointDB::AllocAccessPointNameL(TUint32 iapId)
{
CApUtils* pUtils = CApUtils::NewLC(*m_spDatabase);
AUTO_POP_DEL(pUtils);
// AccessPointInfoPtr info = GetAPInfo(iapId);
// HX_ASSERT(info != NULL);
HBufC* pbuff = HBufC::NewL(KModifiableTextLength);
AUTO_PUSH_POP(pbuff);
TPtr ptr = pbuff->Des();
TRAPD(err, pUtils->NameL(GetWapIdFromAPIdL(iapId), ptr));
return pbuff;
}
/*
* SupportsInternetAccessL
* ------------------
* Return true if given wap ap id supports IP connections
*
*/
bool
CHXAvAccessPointDB::SupportsInternetAccessL(TUint32 wapApId)
{
HX_ASSERT(wapApId);
bool bSupportsInternet = false;
if(wapApId != 0)
{
CApUtils* pUtils = CApUtils::NewLC(*m_spDatabase);
AUTO_POP_DEL(pUtils);
TCommsDbIspType ispType;
pUtils->ISPTypeL(wapApId, ispType);
bSupportsInternet = (EIspTypeInternetOnly == ispType || EIspTypeInternetAndWAP == ispType);
}
return bSupportsInternet;
}
TUint32 CHXAvAccessPointDB::GetAPIdFromWapIdL(TUint32 wapApId)
{
TUint32 iapId = 0;
if(wapApId != 0)
{
CApUtils* pUtils = CApUtils::NewLC(*m_spDatabase);
AUTO_POP_DEL(pUtils);
iapId = pUtils->IapIdFromWapIdL(wapApId);
}
return iapId;
}
TUint32 CHXAvAccessPointDB::GetWapIdFromAPIdL(TUint32 iapId)
{
TUint32 wapApId = 0;
if(iapId != 0)
{
CApUtils* pUtils = CApUtils::NewLC(*m_spDatabase);
AUTO_POP_DEL(pUtils);
wapApId = pUtils->WapIdFromIapIdL(iapId);
}
return wapApId;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?