📄 smseditview.cpp
字号:
/* Copyright (c) 2007, Nokia. All rights reserved */
#include <gulicon.h>
#include <eikseced.h>
#include <eikccpu.h>
#include <coemain.h>
#include <aknnotewrappers.h>
#include <eikspane.h>
#include <akntitle.h>
#include <akncontext.h> //CAknContextPane
#include <MSVIDS.H> //MtmEngine ID
#include <aknviewappui.h>
#include <avkon.hrh>
#include <eikmenup.h> //for CEikMenuPane
/*#include <Team1.rsg>*/
#include <akntitle.h>
#include <akncontext.h>
#include "SMSEditView.h"
#include "SMSEditContainer.h"
#include "AssistantAppUi.h"
#include "SMSMainView.h"
#include "Assistant.rsg"
#include "Assistant.hrh"
_LIT(KInvalidMessage, "Message is invalid");
_LIT(KMessageSent, "Message sent!");
_LIT(KMessageUnsent, "Message unsent: %d");
CSMSEditView* CSMSEditView::NewL()
{
CSMSEditView* self = NewLC();
CleanupStack::Pop(self);
return self;
}
CSMSEditView* CSMSEditView::NewLC()
{
CSMSEditView* self = new (ELeave) CSMSEditView();
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
void CSMSEditView::ConstructL()
{
BaseConstructL(R_ASSISTANT_MESSAGE);
m_Status = EAssistantStatusNew;
m_pMtmEngine = CMtmEngine::NewL(*this);
}
CSMSEditView::CSMSEditView()
{
m_pAppContainer = NULL;
m_pMobile = NULL;
m_pContent = NULL;
}
CSMSEditView::~CSMSEditView()
{
MEMORY_FREE(m_pMtmEngine);
}
TUid CSMSEditView::Id() const
{
return TUid::Uid(9);
}
void CSMSEditView::HandleCommandL(TInt aCommand)
{
HBufC* mobile = HBufC::NewLC(15);
HBufC* content = HBufC::NewLC(100);
// TBuf<20> mobile;
// TBuf<70> content;
TBuf<32> sTmpTitle;
TInt aSMSEditID;
switch (aCommand)
{
case EAssistantSend:
{
//获取手机号、内容 并发送信息
m_pAppContainer->GetData(mobile->Des(),content->Des());
if(mobile->Length() != 0)
{
m_pMtmEngine->CreateSMSMessageL(mobile->Des(),content->Des());
if(m_pMtmEngine->ValidateCreatedSMS())
{
m_pMtmEngine->SendSMSL();
}
AppUi()->ActivateLocalViewL(TUid::Uid(7));
}
else
{
CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_ASSISTANT_EMPTY);
CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
informationNote->ExecuteLD(sTmpTitle);
}
}
break;
case EAssistantClose:
{
m_pAppContainer->GetData(mobile->Des(),content->Des()); //获取手机号、内容保存到草稿箱
if (mobile->Length() != 0 || content->Length() != 0)
{
m_pMtmEngine->CreateSMSMessageL(mobile->Des(),content->Des());
}
AppUi()->ActivateLocalViewL(TUid::Uid(7));
}
case EAssistantReply:
{
this->Cba()->SetCommandSetL(R_CBA_MESSAGE);
this->Cba()->DrawNow(); //(改变CBA)
//获取当前信息的手机号码
m_Status = EAssistantStatusNew;
m_pAppContainer->SetReadOnly(m_Status);
m_pAppContainer->GetData(mobile->Des(),content->Des());
content->Des().Zero();
m_pAppContainer->SetData(mobile->Des(),content->Des());
}
break;
case EAssistantForward:
{
this->Cba()->SetCommandSetL(R_CBA_MESSAGE);
this->Cba()->DrawNow(); //(改变CBA)
//获取当前信息的手机内容
m_Status = EAssistantStatusNew;
m_pAppContainer->SetReadOnly(m_Status);
m_pAppContainer->GetData(mobile->Des(),content->Des());
mobile->Des().Zero();
m_pAppContainer->SetData(mobile->Des(),content->Des());
}
break;
case EAssistantDelete:
{
TBuf<32> sTmpTitle; //删除框
CAknNoteDialog* note = new (ELeave) CAknNoteDialog;
note->PrepareLC(R_DELETE_MESSAGE_NOTE);
CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_ASSISTANT_DELETEMESSAGE);
note->SetTextL(sTmpTitle);
if(note->RunLD())
{
m_pMtmEngine->DeleteMessageL(m_MessageId); //通过引擎删除
AppUi()->ActivateLocalViewL(TUid::Uid(8));
}
}
break;
case EAssistantMove:
{
m_pMtmEngine->MoveToFolderL(m_MessageId,KMsvDraftEntryId); //通过引擎移动
AppUi()->ActivateLocalViewL(TUid::Uid(8));
}
break;
case EAssistantOk:
{
m_pBook->SetStatus(EAssistantStatusMessage);
AppUi()->ActivateLocalViewL(TUid::Uid(10));
}
break;
case EAssistantExit:
{
AppUi()->HandleCommandL(aCommand);
}
break;
case EAssistantBack:
AppUi()->ActivateLocalViewL(TUid::Uid(8));
break;
default:
break;
}
CleanupStack::PopAndDestroy(2);
}
void CSMSEditView::HandleClientRectChange()
{
if(m_pAppContainer)
{
m_pAppContainer->SetRect(ClientRect());
}
}
void CSMSEditView::DoActivateL(const TVwsViewId&, TUid, const TDesC8&)
{
m_pAppContainer = new( ELeave ) CSMSEditContainer();
m_pAppContainer->SetMopParent(this);
TRect rc;
rc.SetRect(ClientRect().iTl, TSize(176,144));
m_pAppContainer->ConstructL( rc,this );
AppUi()->AddToStackL( *this, m_pAppContainer );
m_pAppContainer->SetReadOnly(m_Status);
if(!m_pMobile)
{
m_pMobile = HBufC::NewL(1);
m_pMobile->Des().Copy(_L(""));
}
if (!m_pContent)
{
m_pContent = HBufC::NewL(1);
m_pContent->Des().Copy(_L(""));
}
m_pAppContainer->SetData(m_pMobile->Des(),m_pContent->Des());
CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane();
//Set View icon
CAssistantAppUi* pApp = (CAssistantAppUi*)CEikonEnv::Static()->AppUi();
CFbsBitmap* pIcon = pApp->LoadGraphicsL1(1);
CAknContextPane* contextPane = (CAknContextPane*) sp->ControlL(TUid::Uid(EEikStatusPaneUidContext));
contextPane->SetPicture(pIcon);
//Set View Title
TBuf<32> sTmpTitle;
CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_ASSISTANT_SHORTMESSAGE);
CAknTitlePane* tp=(CAknTitlePane*)sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
tp->SetTextL(sTmpTitle);
if(m_Status == EAssistantStatusInBox || m_Status == EAssistantStatusSendBox)
{
this->Cba()->SetCommandSetL(R_CBA_OPTION);
this->Cba()->DrawNow(); //(改变CBA)
if (m_Status == EAssistantStatusInBox )
m_pAppContainer->ChangeLabel();
}
else
{
this->Cba()->SetCommandSetL(R_CBA_MESSAGE);
this->Cba()->DrawNow(); //(改变CBA)
}
}
void CSMSEditView::DoDeactivate()
{
if(m_pAppContainer)
{
AppUi()->RemoveFromStack( m_pAppContainer );
delete m_pAppContainer;
}
MEMORY_FREE(m_pMobile);
MEMORY_FREE(m_pContent);
}
void CSMSEditView::SetMobile(const TDesC& aMobile)
{
MEMORY_FREE(m_pMobile);
m_pMobile = HBufC::NewL(aMobile.Length());
m_pMobile->Des().Copy(aMobile);
}
void CSMSEditView::SetContent(const TDesC& aContent)
{
MEMORY_FREE(m_pContent);
m_pContent = HBufC::NewL(aContent.Length());
m_pContent->Des().Copy(aContent);
}
void CSMSEditView::SetStatus(TInt aStatus)
{
m_Status = aStatus;
}
void CSMSEditView::SetMessageId( TMsvId aMessageId)
{
m_MessageId = aMessageId;
}
void CSMSEditView::SetBookStatusPtr(MStatus* aPtr)
{
m_pBook = aPtr;
}
void CSMSEditView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
{
if(aResourceId != R_ASSISTANT_MESSAGE_MENU)
return ;
if(m_Status == EAssistantStatusSendBox)
{
aMenuPane->SetItemDimmed(EAssistantReply,ETrue);
}
m_Status = EAssistantStatusNew;
}
void CSMSEditView::HandleMessageSentL(TInt aError)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -