imuserloginview.cpp
来自「国内著名嵌入式培训机构内部资料,内含一些实例代码,包括技术专题书籍」· C++ 代码 · 共 238 行
CPP
238 行
/*
============================================================================
Author : hou maoqing
Version : 1.0
Copyright : Copyright (c) Hou maoqing 2008
Mail : houmqing@163.com
============================================================================
*/
#include <aknviewappui.h>
#include <avkon.hrh>
#include <stringloader.h>
#include <aknquerydialog.h>
#include <ImClientExam.rsg>
#include "socketsappui.h"
#include "ImUserLoginView.h"
#include "ImUserLoginContainer.h"
#include "sockets.hrh"
#include "SocketsEngine.h"
#include "ImMsgCommandID.h"
#include "ImMsg.h"
#include "ImRegistryReq.h"
#include "ImUserLoginReq.h"
// ================= MEMBER FUNCTIONS =======================
// ---------------------------------------------------------
// CImUserLoginView::ConstructL(const TRect& aRect)
// EPOC two-phased constructor
// ---------------------------------------------------------
//
void CImUserLoginView::ConstructL()
{
BaseConstructL( R_IMCLIENT_IMUSERLOGINVIEW );
}
// ---------------------------------------------------------
// CImUserLoginView::~CImUserLoginView()
// destructor
// ---------------------------------------------------------
//
CImUserLoginView::~CImUserLoginView()
{
if ( iContainer )
{
AppUi()->RemoveFromViewStack( *this, iContainer );
}
delete iContainer;
}
// ---------------------------------------------------------
// TUid CImUserLoginView::Id()
//
// ---------------------------------------------------------
//
TUid CImUserLoginView::Id() const
{
return KImUserLoginViewViewId;
}
// ---------------------------------------------------------
// CImUserLoginView::HandleCommandL(TInt aCommand)
// takes care of view command handling
// ---------------------------------------------------------
//
void CImUserLoginView::HandleCommandL(TInt aCommand)
{
switch ( aCommand )
{
case EImCmdRegister:
{
TBuf<30> bufPassword;
CAknTextQueryDialog* pInputNameQuery = CAknTextQueryDialog::NewL(bufPassword);
CleanupStack::PushL(pInputNameQuery);
HBufC* prompt;
prompt = StringLoader::LoadLC(R_REGISTER_INPUT_PROMPT); // Pushes prompt onto the Cleanup Stack.
pInputNameQuery->SetPromptL(*prompt);
CleanupStack::PopAndDestroy(prompt);
CleanupStack::Pop(pInputNameQuery);
if (pInputNameQuery->ExecuteLD(R_REGISTER_INPUT_QUERY))
{
this->SendRegisterMessage(bufPassword);
}
}
break;
case EImCmdLogin:
{
TBuf<10> bufAcc,bufPw;
iContainer->GetUserAccAndPassword(bufAcc,bufPw);
//bufAcc.Copy(_L("10001"));
//bufPw.Copy(_L("12345"));
SendLoginMessage(bufAcc,bufPw);
((CSocketsAppUi*)AppUi())->m_bufMyAcc.Copy(bufAcc);
break;
}
case EAknSoftkeyOk:
{
iEikonEnv->InfoMsg( _L("view1 ok") );
break;
}
case EAknSoftkeyBack:
{
AppUi()->HandleCommandL(EEikCmdExit);
break;
}
default:
{
//AppUi()->HandleCommandL( aCommand );
break;
}
}
}
// ---------------------------------------------------------
// CImUserLoginView::HandleClientRectChange()
// ---------------------------------------------------------
//
void CImUserLoginView::HandleClientRectChange()
{
if ( iContainer )
{
iContainer->SetRect( ClientRect() );
}
}
// ---------------------------------------------------------
// CImUserLoginView::DoActivateL(...)
//
// ---------------------------------------------------------
//
void CImUserLoginView::DoActivateL(
const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
const TDesC8& /*aCustomMessage*/)
{
if (!iContainer)
{
iContainer = new (ELeave) CImUserLoginContainer;
iContainer->SetMopParent(this);
iContainer->ConstructL( ClientRect() );
AppUi()->AddToStackL( *this, iContainer );
}
}
// ---------------------------------------------------------
// CImUserLoginView::DoDeactivate()
//
// ---------------------------------------------------------
//
void CImUserLoginView::DoDeactivate()
{
if ( iContainer )
{
AppUi()->RemoveFromViewStack( *this, iContainer );
}
delete iContainer;
iContainer = NULL;
}
void CImUserLoginView::SendRegisterMessage(const TDesC& desPassword)
{
CImMsg* pImMsg=CImMsg::NewL();
CleanupStack::PushL(pImMsg);
pImMsg->m_nCommandID=ImRegisterUserReq;
pImMsg->m_nSeqNo=1;
memset(pImMsg->m_strSrcUser,0,11);
memset(pImMsg->m_strDstUser,0,11);
pImMsg->m_nRespResult=0;
HBufC8* pPassword=HBufC8::NewLC(desPassword.Length());
TPtr8 ptrPassword=pPassword->Des();
ptrPassword.Append(desPassword);
CImRegistryReq* pReq=new (ELeave) CImRegistryReq();
memset(pReq->m_strPassword,0,11);
memcpy(pReq->m_strPassword,ptrPassword.Ptr(),ptrPassword.Length());
pImMsg->m_pBody=pReq;
//发送消息
CSocketsAppUi* pAppUi=(CSocketsAppUi*)AppUi();
TUint8* pMsgBuf=NULL;
TInt nMsgLen=0;
pImMsg->Encode(&pMsgBuf,nMsgLen);
CleanupStack::PushL(pMsgBuf);
TPtrC8 ptr8(pMsgBuf,nMsgLen);
pAppUi->iSocketsEngine->WriteL(ptr8);
CleanupStack::PopAndDestroy(3);
}
void CImUserLoginView::SendLoginMessage(
const TDesC& desUserAcc,const TDesC& desPassword)
{
HBufC8* pUser=HBufC8::NewLC(desUserAcc.Length());
TPtr8 ptrUser=pUser->Des();
ptrUser.Append(desUserAcc);
HBufC8* pPassword=HBufC8::NewLC(desPassword.Length());
TPtr8 ptrPassword=pPassword->Des();
ptrPassword.Append(desPassword);
//--------------------------------------------
//构建请求消息
CImMsg* pImMsg=CImMsg::NewL();
CleanupStack::PushL(pImMsg);
pImMsg->m_nCommandID=ImUserLoginReq;
pImMsg->m_nSeqNo=1;
memset(pImMsg->m_strSrcUser,0,11);
memset(pImMsg->m_strDstUser,0,11);
pImMsg->m_nRespResult=0;
CImUserLoginReq* pReq=new (ELeave) CImUserLoginReq();
memcpy(pReq->m_strUserAcc,ptrUser.Ptr(),ptrUser.Length());
memcpy(pReq->m_strPassword,ptrPassword.Ptr(),ptrPassword.Length());
pImMsg->m_pBody=pReq;
//发送消息
CSocketsAppUi* pAppUi=(CSocketsAppUi*)AppUi();
TUint8* pMsgBuf=NULL;
TInt nMsgLen=0;
pImMsg->Encode(&pMsgBuf,nMsgLen);
CleanupStack::PushL(pMsgBuf);
TPtrC8 ptr8(pMsgBuf,nMsgLen);
pAppUi->iSocketsEngine->WriteL(ptr8);
CleanupStack::PopAndDestroy(3);
}
// End of File
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?