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

📄 sysinfoview.cpp

📁 手机文件浏览器 Here are the sources to SMan v1.2c 1.2 is a major jump from v1.1. You will see this from the
💻 CPP
字号:
#include "sysinfoview.h"
#include "sman.h"
#include <SMan.rsg>
#include <plpvariant.h>		// PlpVariant

/*************************************************************
*
* Sysinfo view.
*
**************************************************************/

CSMan2SysInfoView::CSMan2SysInfoView(CConfig *cData) : CViewBase(cData)
{
}

TBool CSMan2SysInfoView::ViewScreenModeCompatible(TInt aScreenMode)
{
	return (aScreenMode == 0);
}

TVwsViewIdAndMessage CSMan2SysInfoView::ViewScreenDeviceChangedL()
{
	return TVwsViewIdAndMessage(TVwsViewId(KUidSMan2App, KUidFlipclosedView));
}

void CSMan2SysInfoView::ViewDeactivated()
{
	activateCount--;
	if (activateCount <= 0)
	{
		MakeVisible(EFalse);
		static_cast<CEikAppUi*>(iEikonEnv->AppUi())->RemoveFromStack(this);
		cSysInfoListBox->Reset();
		cSysInfoListBox->HandleItemAdditionL();
	}
}

void CSMan2SysInfoView::ViewActivatedL(const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/)
{
	doViewActivated();
	refreshSysInfo();
}

TVwsViewId CSMan2SysInfoView::ViewId() const
{
	return TVwsViewId(KUidSMan2App, KUidSysInfoView);
}

CSMan2SysInfoView::~CSMan2SysInfoView()
{
}

void CSMan2SysInfoView::showDetail()
{
	// Pop up the detail view for that item
	HBufC* dataBuffer = CEikonEnv::Static()->AllocReadResourceL(R_TBUF_MISC_INFO_TITLE);
	TPtrC currentItem, itemName, itemValue;
	
	/*
	TBuf<25> title;
	TBuf<256> message;
	CEikonEnv::Static()->ReadResource(title, R_TBUF_MISC_INFO_TITLE);
	*/
	
	currentItem.Set(cSysInfoListBox->Model()->ItemTextArray()->MdcaPoint(cSysInfoListBox->View()->CurrentItemIndex()));
	TextUtils::ColumnText(itemName, 0, &currentItem);
	TextUtils::ColumnText(itemValue, 1, &currentItem);

	HBufC *message = HBufC::NewL(itemName.Length() + itemValue.Length() + 5);
	message->Des().Copy(itemName);
	message->Des().Append(CEditableText::ELineBreak);
	message->Des().Append(itemValue);
	iEikonEnv->InfoWinL(*dataBuffer, *message);

	delete dataBuffer;
	delete message;

	/*
	message.Copy(itemName);
	message.Append(CEditableText::ELineBreak);
	message.Append(itemValue);
	iEikonEnv->InfoWinL(title, message);
	*/
}

TKeyResponse CSMan2SysInfoView::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
{
	TKeyResponse retVal = cSysInfoListBox->OfferKeyEventL(aKeyEvent, aType);
	if ((retVal == EKeyWasConsumed) && (aType == EEventKey) && (aKeyEvent.iCode == EQuartzKeyConfirm))
		showDetail();
	return retVal;
}

void CSMan2SysInfoView::HandlePointerEventL(const TPointerEvent& aPointerEvent)
{
	CCoeControl::HandlePointerEventL(aPointerEvent);
	if (aPointerEvent.iType == TPointerEvent::EButton1Up)
	{
		TInt theItem;
		TBool pointValid = cSysInfoListBox->View()->XYPosToItemIndex(aPointerEvent.iPosition, theItem);
		if (pointValid)
			showDetail();
	}
}

void CSMan2SysInfoView::refreshSysInfo()
{
	CDesCArray *iArray;
	TInt halInt;
	TBuf<256> tempText;
	TBuf<10> generalBuffer;
	TBuf<15> hexConvertBuffer;
	TLocale local;

	CEikonEnv::Static()->BusyMsgL(_L("Busy..."), TGulAlignment(EHRightVTop));
	
	cSysInfoListBox->ClearSelection();
	iArray = ((CDesCArray *) cSysInfoListBox->Model()->ItemTextArray());
	iArray->Reset();
	
	cSysInfoListBox->HandleItemRemovalL();

	// CPU Speed
	HAL::Get(HALData::ECPUSpeed, halInt);
	tempText.Format(_L("CPU Speed%c%dMhz"), KColumnListSeparator, TInt(halInt / 1000));
	iArray->AppendL(tempText);

	// Manufacturer
	tempText.Format(_L("Manufacturer UID%c"), KColumnListSeparator);
	HAL::Get(HALData::EManufacturer, halInt);
	switch (halInt)
	{
		case HALData::EManufacturer_Ericsson : tempText.Append(_L("Ericsson")); break;
		case HALData::EManufacturer_Motorola : tempText.Append(_L("Motorola")); break;
		case HALData::EManufacturer_Nokia : tempText.Append(_L("Nokia")); break;
		case HALData::EManufacturer_Psion : tempText.Append(_L("Psion")); break;
		case HALData::EManufacturer_Intel : tempText.Append(_L("Intel")); break;
		case 0x101F6CED : tempText.Append(_L("SonyEricsson")); break;
		default : 
			{
				hexConvertBuffer.Format(_L("0x%x"), halInt);
				tempText.Append(hexConvertBuffer);
				break;
			}
	}
	iArray->AppendL(tempText);
	
	// Machine UID
	tempText.Format(_L("Machine UID%c"), KColumnListSeparator);
	HAL::Get(HALData::EMachineUid, halInt);
	switch (halInt)
	{
		case HALData::EMachineUid_Win32Emulator : tempText.Append(_L("Win32 Emulator")); break;
		case 0x101F408B : tempText.Append(_L("P800")); break;
		case 0x101FB2AE : tempText.Append(_L("P900")); break;
		case 0x101F6B26 : tempText.Append(_L("A920")); break;
		default : 
			{
				hexConvertBuffer.Format(_L("0x%x"), halInt);
				tempText.Append(hexConvertBuffer);
				break;
			}
	}
	iArray->AppendL(tempText);

	// Device family
	tempText.Format(_L("Device family%c"), KColumnListSeparator);
	HAL::Get(HALData::EDeviceFamily, halInt);
	switch (halInt)
	{
		case HALData::EDeviceFamily_Crystal : tempText.Append(_L("Crystal")); break;
		case HALData::EDeviceFamily_Quartz : tempText.Append(_L("Quartz")); break;
		case HALData::EDeviceFamily_Pearl : tempText.Append(_L("Pearl")); break;
		default :
			{
				hexConvertBuffer.Format(_L("0x%x"), halInt);
				tempText.Append(hexConvertBuffer);
				break;
			}
	}
	iArray->AppendL(tempText);
	
	// Device family revision
	HAL::Get(HALData::EDeviceFamilyRev, halInt);
	tempText.Format(_L("Device family revision%c%d"), KColumnListSeparator, halInt);
	iArray->AppendL(tempText);
	
	// CPU type
	tempText.Format(_L("CPU type%c"), KColumnListSeparator);
	HAL::Get(HALData::ECPU, halInt);
	switch (halInt)
	{
		case HALData::ECPU_ARM : tempText.Append(_L("ARM")); break;
		case HALData::ECPU_MCORE : tempText.Append(_L("MCORE")); break;
		case HALData::ECPU_X86 : tempText.Append(_L("X86")); break;
		default : 
			{
				hexConvertBuffer.Format(_L("0x%x"), halInt);
				tempText.Append(hexConvertBuffer);
				break;
			}
	}
	iArray->AppendL(tempText);

	// CPU ABI...whatever ABI stands for. :)
	tempText.Format(_L("CPU ABI%c"), KColumnListSeparator);
	HAL::Get(HALData::ECPUABI, halInt);
	switch (halInt)
	{
		case HALData::ECPUABI_ARM4 : tempText.Append(_L("ARM4")); break;
		case HALData::ECPUABI_ARMI : tempText.Append(_L("ARMI")); break;
		case HALData::ECPUABI_THUMB : tempText.Append(_L("THUMB")); break;
		case HALData::ECPUABI_ARM5T : tempText.Append(_L("ARM5T")); break;
		default :
			{
				hexConvertBuffer.Format(_L("0x%x"), halInt);
				tempText.Append(hexConvertBuffer);
				break;
			}
	}
	iArray->AppendL(tempText);
	
	// Startup reason
	tempText.Format(_L("Startup reason%c"), KColumnListSeparator);
	HAL::Get(HALData::ESystemStartupReason, halInt);
	switch (halInt)
	{
		case HALData::ESystemStartupReason_Cold : tempText.Append(_L("Cold boot")); break;
		case HALData::ESystemStartupReason_Warm : tempText.Append(_L("Warm boot")); break;
		case HALData::ESystemStartupReason_Fault : tempText.Append(_L("Fault")); break;
		default :
			{
				hexConvertBuffer.Format(_L("0x%x"), halInt);
				tempText.Append(hexConvertBuffer);
				break;
			}
	}
	iArray->AppendL(tempText);
	
	// Keyboard type
	tempText.Format(_L("Keyboard type%c"), KColumnListSeparator);
	HAL::Get(HALData::EKeyboard, halInt);
	switch (halInt)
	{
		case HALData::EKeyboard_Keypad : tempText.Append(_L("Keypad")); break;
		case HALData::EKeyboard_Full : tempText.Append(_L("Full")); break;
		default : 
			{
				hexConvertBuffer.Format(_L("0x%x"), halInt);
				tempText.Append(hexConvertBuffer);
				break;
			}
	}
	iArray->AppendL(tempText);
	
	// Ticks
	HAL::Get(HALData::ESystemTickPeriod, halInt);
	tempText.Format(_L("Tick period%c%d"), KColumnListSeparator, halInt);
	iArray->AppendL(tempText);

	// ROM size
	HAL::Get(HALData::EMemoryROM, halInt);
	tempText.Format(_L("ROM size%c%dMB"), KColumnListSeparator, TInt(halInt / (1024 * 1024)));
	iArray->AppendL(tempText);

	// RAM size
	HAL::Get(HALData::EMemoryRAM, halInt);
	tempText.Format(_L("RAM size%c%dMB"), KColumnListSeparator, TInt(halInt / (1024 * 1024)));
	iArray->AppendL(tempText);

	// Display X pixels
	HAL::Get(HALData::EDisplayXPixels, halInt);
	tempText.Format(_L("Display X-pixels%c%d"), KColumnListSeparator, halInt);
	iArray->AppendL(tempText);

	// Display Y pixels
	HAL::Get(HALData::EDisplayYPixels, halInt);
	tempText.Format(_L("Display Y-pixels%c%d"), KColumnListSeparator, halInt);
	iArray->AppendL(tempText);

	// Display X twips
	HAL::Get(HALData::EDisplayXTwips, halInt);
	tempText.Format(_L("Display X-twips%c%d"), KColumnListSeparator, halInt);
	iArray->AppendL(tempText);

	// Display Y twips
	HAL::Get(HALData::EDisplayYTwips, halInt);
	tempText.Format(_L("Display Y-twips%c%d"), KColumnListSeparator, halInt);
	iArray->AppendL(tempText);
	
	// Colors
	HAL::Get(HALData::EDisplayColors, halInt);
	tempText.Format(_L("Colors%c%d"), KColumnListSeparator, halInt);
	iArray->AppendL(tempText);

	// Num drives
	RFs fs;
	if (fs.Connect() == KErrNone)
	{
		TDriveList aList;
		TInt numDrives;
		TVolumeInfo volInfo;
		TInt err;
		
		if (fs.DriveList(aList) == KErrNone)
		{
			numDrives = 0;
			for (halInt = 0; halInt < KMaxDrives; halInt++)
			{
				if (aList[halInt] != 0)
				{
					err = iEikonEnv->FsSession().Volume(volInfo, EDriveA + halInt);
					numDrives++;
					if (err == KErrNone)
						tempText.Format(_L("%c: size%c%dMB"), 0x41 + halInt, KColumnListSeparator, TInt64(volInfo.iSize / 1024 / 1024).GetTInt());
					else
						tempText.Format(_L("%c: size%cUnknown"), 0x41 + halInt, KColumnListSeparator);
					iArray->AppendL(tempText);
				}
			}
			generalBuffer.Num(numDrives);
			tempText.Format(_L("Total drives%c"), KColumnListSeparator);
			tempText.Append(generalBuffer);
		}
		else
		{
			tempText.Format(_L("Total drives%cError querying"), KColumnListSeparator);
		}
		iArray->AppendL(tempText);
		fs.Close();
	}
	else
		tempText.Append(_L("Error querying"));
	
	// Apps installed
	tempText.Format(_L("Installed apps%c"), KColumnListSeparator);
	
	RApaLsSession mySession;
	TApaAppCapabilityBuf aCapabilityBuf;
	TApaAppInfo aInfo;
			
	// Bounce the app server
	static_cast<CSMan2AppUi*>(CEikonEnv::Static()->AppUi())->FindApp(KUidControlPanel, &aInfo);
	
	halInt = 0;
	if (mySession.Connect() == KErrNone)
	{
		if (mySession.GetAllApps() == KErrNone)
		{
			while (mySession.GetNextApp(aInfo) == KErrNone)
			{
				if (mySession.GetAppCapability(aCapabilityBuf, aInfo.iUid) == KErrNone)
				{
					if (aCapabilityBuf().iAppIsHidden == EFalse)
						halInt++;
				}				
			}
			mySession.Close();
			generalBuffer.Num(halInt);
			tempText.Append(generalBuffer);
		}
		else
			tempText.Append(_L("Error querying"));
	}
	else
		tempText.Append(_L("Error querying"));
	iArray->AppendL(tempText);

	// Locale - Country code
	halInt = local.CountryCode();
	tempText.Format(_L("Country Code%c%d"), KColumnListSeparator, halInt);
	iArray->AppendL(tempText);

	// Locale - Clock type
	tempText.Format(_L("Clock type%c"), KColumnListSeparator); 
	TClockFormat cFormat = local.ClockFormat();
	switch (cFormat)
	{
		case EClockAnalog : tempText.Append(_L("Analog")); break;
		case EClockDigital : tempText.Append(_L("Digital")); break;
		default : tempText.Append(_L("Unknown")); 
	}
	iArray->AppendL(tempText);

	// Locale - Daylight saving at home
	tempText.Format(_L("Home daylight saving%c"), KColumnListSeparator);
	if (local.QueryHomeHasDaylightSavingOn())
		tempText.Append(_L("Enabled"));
	else
		tempText.Append(_L("Disabled"));
	iArray->AppendL(tempText);
	
	// Locale - Date format
	tempText.Format(_L("Date format%c"), KColumnListSeparator);
	TDateFormat dtFormat = local.DateFormat();
	switch (dtFormat)
	{
		case EDateAmerican : tempText.Append(_L("mm/dd/yyyy")); break;
		case EDateEuropean : tempText.Append(_L("dd/mm/yyyy")); break;
		case EDateJapanese : tempText.Append(_L("yyyy/mm/dd")); break;
	}
	iArray->AppendL(tempText);

	// Locale - Time format
	tempText.Format(_L("Time format%c"), KColumnListSeparator);
	TTimeFormat tmFormat = local.TimeFormat();
	switch (tmFormat)
	{
		case ETime12 : tempText.Append(_L("12 hour")); break;
		case ETime24 : tempText.Append(_L("24 hour")); break;
	}
	iArray->AppendL(tempText);

	// IMEI number
	tempText.Format(_L("IMEI%c"), KColumnListSeparator);
	TPlpVariantMachineId machineId;
	PlpVariant::GetMachineIdL(machineId);
	tempText.Append(machineId);
	iArray->AppendL(tempText);

	CEikonEnv::Static()->BusyMsgCancel();
	
	// Cleanup and display
	cSysInfoListBox->HandleItemAdditionL();
	cSysInfoListBox->SetFocus(ETrue, EDrawNow);
}

void CSMan2SysInfoView::ConstructL(const TRect& aRect)
{
	CreateWindowL();
	SetExtent(aRect.iTl, aRect.Size());

	// Initialize listbox
	cSysInfoListBox = new(ELeave) CEikColumnListBox;
	cSysInfoListBox->ConstructL(this, 0);
	CColumnListBoxData* listBoxColumns = ((CColumnListBoxItemDrawer*)cSysInfoListBox->ItemDrawer())->ColumnData();
	listBoxColumns->SetColumnWidthPixelL(0, int(Size().iWidth * 0.48));
	listBoxColumns->SetColumnWidthPixelL(1, int(Size().iWidth * 0.40));
	listBoxColumns->SetColumnAlignmentL(0, CGraphicsContext::ELeft);
	listBoxColumns->SetColumnAlignmentL(1, CGraphicsContext::ERight);
	cSysInfoListBox->CreateScrollBarFrameL();
	cSysInfoListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto);
	cSysInfoListBox->SetExtent(TPoint(0, 0), TSize(Size().iWidth, Size().iHeight - 10));
	controlsArray->AppendL(cSysInfoListBox);

	viewId = CSMan2AppUi::EViewSysInfo;
	bjackIconPosition = TPoint(2, cSysInfoListBox->Position().iY + cSysInfoListBox->Size().iHeight);
	initBJackIcon();
	
	EnableDragEvents();
	SetZoomLevel(configData->zoomSysInfo);

	//refreshSysInfo();

	MakeVisible(EFalse);
	ActivateL();
}

void CSMan2SysInfoView::SetZoomLevel(TInt zoomLevel)
{
	generateZoomFont(zoomLevel);
	CTextListItemDrawer* itemDrawer = ((CTextListItemDrawer*)cSysInfoListBox->View()->ItemDrawer());
	itemDrawer->SetFont(font);
	cSysInfoListBox->SetItemHeightL(font->HeightInPixels() + cSysInfoListBox->VerticalInterItemGap());
	configData->zoomSysInfo = zoomLevel;
	releaseFont();
}

void CSMan2SysInfoView::HandleControlEventL(CCoeControl* /*aControl*/, TCoeEvent /*aEventType*/)
{
}

⌨️ 快捷键说明

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