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

📄 worldview.cpp

📁 symbian电话簿引擎的经典例子
💻 CPP
字号:
/*
* ============================================================================
*  Name     : CWorldView from CAknView
*  Part of  : World
*  Copyright (c) 2003 Nokia. All rights reserved.
* ============================================================================
*/

// INCLUDE FILES
#include <aknviewappui.h>
#include <avkon.hrh>

#include <LDN02.rsg>
#include "LDN02.hrh"
#include "WorldView.h"
#include "WorldContainer.h"
#include "common.h"
#include <LDN02.mbg> //from mbm
#include <akncontext.h>
#include <akntitle.h>
#include <aknnotewrappers.h>
#include "HelloView.h"
#include "LDN02AppUi.h"


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

// C++ default constructor can NOT contain any code, that
// might leave.
//
CWorldView* CWorldView::NewL(CMTrans* aTrans)
{
    CWorldView* self = NewLC(aTrans);
    CleanupStack::Pop(self);
    return self;
}

CWorldView* CWorldView::NewLC(CMTrans* aTrans)
{
    
	CWorldView* self = new (ELeave) CWorldView(aTrans);
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
}

CWorldView::CWorldView(CMTrans* aTrans)
{
	m_pTrans = aTrans;
}

// EPOC default constructor can leave.
void CWorldView::ConstructL()
{
   	BaseConstructL(R_WORLD_VIEW);
}

// Destructor
CWorldView::~CWorldView()
{
	//MEM_FREE(m_pTrans);
}

// ---------------------------------------------------------
// TUid CWorldView::Id()
// Returns Id of the view.
// ---------------------------------------------------------
TUid CWorldView::Id() const
{
    return KViewId3;
}
// ---------------------------------------------------------
// 
//接收函数
// ---------------------------------------------------------
/*void CWorldView::SendOid (TInt aFlag, TDesC& aSurName, TDesC& aName, TDesC& aNum)
{
	m_SurName.Copy(aSurName);
	m_Name.Copy(aName);
	m_Number.Copy(aNum);
	mFlag = aFlag;
}	*/
// ---------------------------------------------------------
// CWorldView::HandleCommandL(TInt aCommand)
// Handles commands
// ---------------------------------------------------------
void CWorldView::HandleCommandL(TInt aCommand)
{ 
	switch (aCommand)
	{
	case EAknSoftkeyOk:
		{
			TBuf<10> surName,Name,Number;
			
			iContainer->GetSurName(surName);
			iContainer->GetName(Name);
			iContainer->GetNumber(Number);
			//测试显示
			//CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
            //informationNote->ExecuteLD(Number);
		
			switch(mFlag)
			{
			case 1://新建
				{
					m_pTrans->SendData(surName,Name,Number);
					TBuf8<1> buf;
					AppUi()->ActivateLocalViewL(KViewId2,KViewId2,buf);
					break;
				}
				
			case 2://查看
				{
					TBuf8<1> buf;
					TUid KViewId1 = {1}; //临时处理,以后优化
					AppUi()->ActivateLocalViewL(KViewId2,KViewId1,buf);
					break;
				}
			case 3://修改
				{
					m_pTrans->SendData(surName,Name,Number);
					TBuf8<1> buf;
					AppUi()->ActivateLocalViewL(KViewId2,KViewId3,buf);
					break;
				}
			}
			break;
		}
	case EAknSoftkeyBack:
		{
			AppUi()->ActivateLocalViewL(KViewId2);
			break;
		}
	default:
		{
			AppUi()->HandleCommandL(aCommand);
			break;
		}
	}
}

// ---------------------------------------------------------
// CWorldView::HandleClientRectChange()
// Handles client rect change.
// ---------------------------------------------------------
void CWorldView::HandleClientRectChange()
{
    if (iContainer)
	{
        iContainer->SetRect(ClientRect());
	}
}

// ---------------------------------------------------------
// CWorldView::DoActivateL(...)
// Creates the Container class object.
// ---------------------------------------------------------
void CWorldView::DoActivateL(const TVwsViewId& /*aPrevViewId*/,
							 TUid /*aCustomMessageId*/,
							 const TDesC8& aCustomMessage)
{
	
	TViewPara info;//若放到条件里则会报错,但放外不好
	if( aCustomMessage.Length() > 2 )
 	{
 		
 		TPckgBuf< TViewPara > package( info );
 		package.Copy( aCustomMessage );
		info = package();
		//接收数据
//		m_SurName.Copy(info.m_SurName);
//		m_Name.Copy(info.m_Name);
//		m_Number.Copy(info.m_Number);
		mFlag = info.mFlag;
 		//info = package();     //iInfo是TViewPara类型的数据成员
 	}
	else 
	{	
		mFlag = 1; //长度小于2就默认为添加
	}
    iContainer = new (ELeave) CWorldContainer;
    iContainer->SetMopParent(this);
	
	//调用赋值函数完成传值
	if (mFlag == 2 || mFlag == 3 )
	{
	iContainer->SetData(info.m_SurName, info.m_Name, info.m_Number,mFlag);
	}
    TRect rc;
	rc.SetRect(ClientRect().iTl, TSize(176, 144));
    iContainer->ConstructL(rc);
    AppUi()->AddToStackL(*this, iContainer);
	TBuf<KMaxPath> pathMbm;
#ifdef __WINS__
	pathMbm.Copy(_L("z:\\system\\apps\\LDN02\\LDN02.mbm"));
#else
	CLDN02AppUi* pApp = (CLDN02AppUi*)CEikonEnv::Static()->AppUi();
	pApp->GetAppPath(pathMbm);
	pathMbm.Append(_L("LDN02.mbm"));
#endif
	
	CEikStatusPane* statusPane = StatusPane();
	//set icon
	CAknContextPane* contextPane = (CAknContextPane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidContext));
	
	//load chinese words
	TBuf<32> sTmpTitle;
	switch (mFlag)//只取前一位
	{
	case 1:
		{
			CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmLdn02Ldn02icon);
			CFbsBitmap* bitmapMask = iEikonEnv->CreateBitmapL(pathMbm, EMbmLdn02Ldn02iconmask);
			contextPane->SetPicture(bitmap, bitmapMask);
			CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_LD_WORLD_TITLE_NEW);
			break;
		}
	case 2:
		{
			
			CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmLdn02Find);
			CFbsBitmap* bitmapMask = iEikonEnv->CreateBitmapL(pathMbm, EMbmLdn02Find_mask);
			contextPane->SetPicture(bitmap, bitmapMask);
			CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_LD_WORLD_TITLE_FIND);
			break;
		}
	case 3:
		{
			
			CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmLdn02Ldn02icon);
			CFbsBitmap* bitmapMask = iEikonEnv->CreateBitmapL(pathMbm, EMbmLdn02Ldn02iconmask);
			contextPane->SetPicture(bitmap, bitmapMask);
			CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_LD_WORLD_TITLE_MODIFY);
			break;
		}
	}
	CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
	titlePane->SetTextL(sTmpTitle);
}

// ---------------------------------------------------------
// CWorldView::DoDeactivate()
// Deletes the Container class object.
// ---------------------------------------------------------
void CWorldView::DoDeactivate()
{
    if (iContainer)
	{
		AppUi()->RemoveFromStack(iContainer);
		delete iContainer;
		iContainer = NULL;
	}
}

// End of File

⌨️ 快捷键说明

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