⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysinfo60container2.cpp

📁 基于SYMBIAN OS 的Moblile硬件管理器. 支持series 70平台
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*
* ============================================================================
*  Name     : CSYSINFO60Container2 from SYSINFO60Container2.cpp
*  Part of  : SYSINFO60
*  Created  : 10.05.2003 by Petri-Veikko Alaj鋜vi OH1GIU
*  Implementation notes:
*     Initial content was generated by Series 60 AppWizard.
*  Version  :
*  Copyright: (c) 2003, Petri-Veikko Alaj鋜vi OH1GIU
* ============================================================================
*/

// INCLUDE FILES
#include "SYSINFO60Container2.h"
#include <ir_sock.h>
#include <eiklabel.h>

// ================= MEMBER FUNCTIONS =======================

// ---------------------------------------------------------
// CSYSINFO60Container2::ConstructL(const TRect& aRect)
// EPOC two phased constructor
// ---------------------------------------------------------
//
void CSYSINFO60Container2::ConstructL(const TRect& aRect)
    {
    CreateWindowL();
	iTimeOut = KTimeOut;

    iEikLabelAddr = new (ELeave) CEikLabel;
    iEikLabelAddr->SetContainerWindowL( *this );
    iEikLabelAddr->SetTextL( _L("") );
        
	iEikLabelSniff = new (ELeave) CEikLabel;
    iEikLabelSniff->SetContainerWindowL( *this );
    iEikLabelSniff->SetTextL( _L("") );
    
	iEikLabelVer = new (ELeave) CEikLabel;
    iEikLabelVer->SetContainerWindowL( *this );
    iEikLabelVer->SetTextL( _L("") );
    
	iEikLabelNoOfBytes = new (ELeave) CEikLabel;
    iEikLabelNoOfBytes->SetContainerWindowL( *this );
    iEikLabelNoOfBytes->SetTextL( _L("") );
    
	iEikLabelServByte1 = new (ELeave) CEikLabel;
    iEikLabelServByte1->SetContainerWindowL( *this );
    iEikLabelServByte1->SetTextL( _L("") );
    
	iEikLabelServByte2 = new (ELeave) CEikLabel;
    iEikLabelServByte2->SetContainerWindowL( *this );
    iEikLabelServByte2->SetTextL( _L("") );

	iEikLabelCharSet = new (ELeave) CEikLabel;
    iEikLabelCharSet->SetContainerWindowL( *this );
    iEikLabelCharSet->SetTextL( _L("") );

    iEikLabelName = new (ELeave) CEikLabel;
    iEikLabelName->SetContainerWindowL( *this );
    iEikLabelName->SetTextL( _L("") );

    iEikLabelFlags = new (ELeave) CEikLabel;
    iEikLabelFlags->SetContainerWindowL( *this );
    iEikLabelFlags->SetTextL( _L("") );

    SetRect(aRect);
    ActivateL();
    }

// Destructor
CSYSINFO60Container2::~CSYSINFO60Container2()
    {
    delete iEikLabelAddr;
	delete iEikLabelSniff;
	delete iEikLabelVer;
	delete iEikLabelNoOfBytes;
	delete iEikLabelServByte1;
	delete iEikLabelServByte2;
	delete iEikLabelCharSet;
	delete iEikLabelName;
	delete iEikLabelFlags;
    }

// ---------------------------------------------------------
// CSYSINFO60Container2::SizeChanged()
// Called by framework when the view size is changed
// ---------------------------------------------------------
//
void CSYSINFO60Container2::SizeChanged()
    {
    iEikLabelAddr->SetExtent( TPoint(4, 10), iEikLabelAddr->MinimumSize() );
	iEikLabelSniff->SetExtent( TPoint(4, 24), iEikLabelSniff->MinimumSize() );
	iEikLabelVer->SetExtent( TPoint(4, 38), iEikLabelVer->MinimumSize() );
	iEikLabelNoOfBytes->SetExtent( TPoint(4, 52), iEikLabelNoOfBytes->MinimumSize() );
	iEikLabelServByte1->SetExtent( TPoint(4, 66), iEikLabelServByte1->MinimumSize() );
	iEikLabelServByte2->SetExtent( TPoint(4, 80), iEikLabelServByte2->MinimumSize() );
	iEikLabelCharSet->SetExtent( TPoint(4, 94), iEikLabelCharSet->MinimumSize() );
	iEikLabelName->SetExtent( TPoint(4, 108), iEikLabelName->MinimumSize() );
	iEikLabelFlags->SetExtent( TPoint(4, 122), iEikLabelFlags->MinimumSize() );
    }

// ---------------------------------------------------------
// CSYSINFO60Container2::CountComponentControls() const
// ---------------------------------------------------------
//
TInt CSYSINFO60Container2::CountComponentControls() const
    {
    return 9; // return nbr of controls inside this container
    }

// ---------------------------------------------------------
// CSYSINFO60Container2::ComponentControl(TInt aIndex) const
// ---------------------------------------------------------
//
CCoeControl* CSYSINFO60Container2::ComponentControl(TInt aIndex) const
    {
    switch ( aIndex )
        {
        case 0:
            return iEikLabelAddr;
        case 1:
            return iEikLabelSniff;
        case 2:
            return iEikLabelVer;
        case 3:
            return iEikLabelNoOfBytes;
        case 4:
            return iEikLabelServByte1;
        case 5:
            return iEikLabelServByte2;
        case 6:
            return iEikLabelCharSet;
        case 7:
            return iEikLabelName;
		case 8:
			return iEikLabelFlags;
        default:
            return NULL;
        }
    }

// ---------------------------------------------------------
// CSYSINFO60Container2::Draw(const TRect& aRect) const
// ---------------------------------------------------------
//
void CSYSINFO60Container2::Draw(const TRect& aRect) const
    {
    CWindowGc& gc = SystemGc();
    gc.SetPenStyle(CGraphicsContext::ENullPen);
    gc.SetBrushColor(KRgbGray);
    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
    gc.DrawRect(aRect);
    }

// ---------------------------------------------------------
// CSYSINFO60Container2::HandleControlEventL(
//     CCoeControl* aControl,TCoeEvent aEventType)
// ---------------------------------------------------------
//
void CSYSINFO60Container2::HandleControlEventL(
    CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
    {
    // TODO: Add your control event handler code here
    }

void CSYSINFO60Container2::IrDiscL(const TInt aMode)
{
	ClearScreen();
	RSocketServ ss;
	User::LeaveIfError(ss.Connect());
	CleanupClosePushL(ss);

	TProtocolDesc pInfo;
	TBuf<8> proto(KTinyTP);
	User::LeaveIfError(ss.FindProtocol(proto, pInfo));
	/*if (ret != KErrNone)
	{
		ss.Close();
		User::Leave(ret);
	}*/

	RHostResolver hr1;
	User::LeaveIfError(hr1.Open(ss, pInfo.iAddrFamily, pInfo.iProtocol));
	CleanupClosePushL(hr1);
	/*if (ret != KErrNone)
	{
		ss.Close();
		User::Leave(ret);
	}*/

    // created host resolver: pInfo.iName
    // address family is: pInfo.iAddrFamily
    // socket type is: pInfo.iSockType
    // protocol is: pInfo.iProtocol
	//
	// MAKING SOCKET
	//
	RSocket sock1;
	User::LeaveIfError(sock1.Open(ss, pInfo.iAddrFamily, pInfo.iSockType, pInfo.iProtocol));
	CleanupClosePushL(sock1);
	/*if (ret != KErrNone)
	{
		hr1.Close();
		ss.Close();
		User::Leave(ret);
	}*/

	//
	// SET OPTION ON 1 SLOT DISCOVERY
	//
	TPckgBuf<TUint> buf(1);
	sock1.SetOpt(KDiscoverySlotsOpt, KLevelIrlap,buf);
	//
	// GET HOST BY NAME
	//
	TNameEntry log;
	THostName name;
	TInt ret = hr1.GetByName(name, log);	// Finds all IrLAP stations.
	TIrdaSockAddr addr(log().iAddr);		// Takes a TSockAddr and
	if (ret == KErrNone)					// casts it to a TIrdaSockAddr.
    {
		TBuf<128> devInfo(_L(""));
		TUint8 servBytes = 0;
		TUint8 retValue	 = 0;
		switch (aMode)
		{
		case EIr:
		{
			devInfo.Format(_L("Dev addr: %d"), addr.GetRemoteDevAddr());
			//devInfo.AppendNum(addr.GetRemoteDevAddr());
			iEikLabelAddr->SetTextL(devInfo);
			devInfo.Copy(_L("Sniff capable: "));
			if ( addr.GetSniffStatus() )
				devInfo.Append(_L("YES"));
			else
				devInfo.Append(_L("NO"));
			iEikLabelSniff->SetTextL(devInfo);
			devInfo.Copy(_L("IrLap version: "));
			TInt irLapVersion = static_cast<TInt>(addr.GetIrlapVersion()); 
			if (irLapVersion == 0)
				devInfo.AppendNum(1);
			else
				devInfo.AppendNum(irLapVersion);
			iEikLabelVer->SetTextL(devInfo);
			devInfo.Copy(_L("No of serv bytes: "));
			servBytes = addr.GetServiceHintByteCount();
			devInfo.AppendNum(static_cast<TInt>(servBytes));
			iEikLabelNoOfBytes->SetTextL(devInfo);
			devInfo.Copy(_L("1st serv byte: "));
			retValue = addr.GetFirstServiceHintByte();
			devInfo.AppendNum(static_cast<TInt>(retValue));
			iEikLabelServByte1->SetTextL(devInfo);
			if (servBytes == 2)
			{
				devInfo.Copy(_L("2nd serv byte: "));
				devInfo.AppendNum(static_cast<TInt>(addr.GetSecondServiceHintByte()));
				iEikLabelServByte2->SetTextL(devInfo);
			}
			devInfo.Copy(_L("Character set: "));
			retValue = addr.GetCharacterSet();
			switch (retValue)
			{
			case EIASCharSetUserStringASCII:
				devInfo.Append(_L("ASCII"));
				break;
			case EIASCharSetUserStringISO_8859_1:
				devInfo.Append(_L("ISO Latin-1"));
				break;
			case EIASCharSetUserStringISO_8859_2:
				devInfo.Append(_L("ISO Latin-2"));
				break;
			case EIASCharSetUserStringISO_8859_3:
				devInfo.Append(_L("ISO Latin-3"));
				break;
			case EIASCharSetUserStringISO_8859_4:
				devInfo.Append(_L("ISO Latin-4"));
				break;
			case EIASCharSetUserStringISO_8859_5:
				devInfo.Append(_L("ISO-8859-5"));
				break;
			case EIASCharSetUserStringISO_8859_6:
				devInfo.Append(_L("ISO-8859-6"));
				break;
			case EIASCharSetUserStringISO_8859_7:
				devInfo.Append(_L("ISO-8859-7"));
				break;
			case EIASCharSetUserStringISO_8859_8:
				devInfo.Append(_L("ISO-8859-8"));
				break;
			case EIASCharSetUserStringISO_8859_9:
				devInfo.Append(_L("ISO Latin-5"));
				break;
			case EIASCharSetUserStringUnicode:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -