📄 sysinfo60container2.cpp
字号:
/*
* ============================================================================
* 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 + -