📄 worldview.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 + -