?? meginfoview.cpp
字號:
/*
* ============================================================================
* Name : CMegInfoView from CAknView
* Part of : Hello
* Copyright (c) 2003 Nokia. All rights reserved.
* ============================================================================
*/
// INCLUDE FILES
#include <aknviewappui.h>
#include <avkon.hrh>
#include <aknnotewrappers.h> // CAknErrorNote, CAknInformationNote
#include <EveryDay.rsg>
#include "EveryDay.mbg"
#include "EveryDay.hrh"
#include "MegInfoView.h"
#include "MegInfoContainer.h"
#include "EveryDayAppUi.h"
#include "MtmsEngine.h"
#include "MegListView.h"
#include <smuthdr.h> // CSmsHeader
#include "common.h"
#include "MegView.h"
#include <akntitle.h>
#include <akncontext.h>
#include <aknnotewrappers.h>
// ================= MEMBER FUNCTIONS =======================
// C++ default constructor can NOT contain any code, that
// might leave.
//
CMegInfoView* CMegInfoView::NewL()
{
CMegInfoView* self = NewLC();
CleanupStack::Pop(self);
return self;
}
CMegInfoView* CMegInfoView::NewLC()
{
CMegInfoView* self = new (ELeave) CMegInfoView;
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CMegInfoView::CMegInfoView()
{
iMessageState = EWriteSms;
iEngine = NULL;
}
// EPOC default constructor can leave.
void CMegInfoView::ConstructL()
{
BaseConstructL(R_MEG_INFO_VIEW);
//BaseConstructL();
iEngine = CMtmsEngine::NewL(*this);
}
// Destructor
CMegInfoView::~CMegInfoView()
{
MEM_FREE(iEngine);
}
// ---------------------------------------------------------
// TUid CMegInfoView::Id()
// Returns Id of the view.
// ---------------------------------------------------------
TUid CMegInfoView::Id() const
{
return KViewId14;
}
// ---------------------------------------------------------
// CMegInfoView::HandleCommandL(TInt aCommand)
// Handles commands
// ---------------------------------------------------------
void CMegInfoView::HandleCommandL(TInt aCommand)
{
switch(aCommand)
{
case EMegInfoSend:
{
TBuf<16> address;
TBuf<128> message;
iContainer->GetAddress(address,message);
if(address.Length()==0)
{
TBuf<16> empty;
CEikonEnv::Static()->ReadResource(empty,R_MESSAGE_EMPTY);
CAknInformationNote* note = new (ELeave) CAknInformationNote;
note->ExecuteLD(empty);
break;
}
mindexEntry = iEngine->CreateSMSMessageL(address,message);
if(!iEngine->ValidateCreatedSMS())
{
TBuf<32> validate;
CEikonEnv::Static()->ReadResource(validate,R_MESSAGE_NOTRINHT);
CAknInformationNote* note = new (ELeave) CAknInformationNote;
note->ExecuteLD(validate);
}
else
{
iEngine->SendSMSL();
}
AppUi()->ActivateLocalViewL(KViewId12);
break;
}
case EMegInfoSave:
{
TBuf<16> address;
TBuf<128> message;
iContainer->GetAddress(address,message);
iEngine->CreateSMSMessageL(address,message);
iEngine->SaveMessageInfoL();
AppUi()->ActivateLocalViewL(KViewId12);
break;
}
case EAknSoftkeyBack:
{
if (iMtmState == EMtmInbox ||iMtmState == EMtmDraft || iMtmState == EMtmSended)
{
AppUi()->ActivateLocalViewL(KViewId13);
}
else
{
AppUi()->ActivateLocalViewL(KViewId12);
}
break;
}
default:
{
AppUi()->HandleCommandL(aCommand);
break;
}
}
}
// ---------------------------------------------------------
// CMegInfoView::HandleClientRectChange()
// Handles client rect change.
// ---------------------------------------------------------
void CMegInfoView::HandleClientRectChange()
{
if (iContainer)
{
iContainer->SetRect(ClientRect());
}
}
// ---------------------------------------------------------
// CMegInfoView::DoActivateL(...)
// Creates the Container class object.
// ---------------------------------------------------------
void CMegInfoView::DoActivateL(const TVwsViewId& ,
TUid ,
const TDesC8& )
{
iContainer = new (ELeave) CMegInfoContainer;
iContainer->SetMopParent(this);
TRect rc;
rc.SetRect(ClientRect().iTl, TSize(176, 144));
iContainer->ConstructL(rc);
AppUi()->AddToStackL(*this, iContainer);
TBuf<KMaxPath> path;
#ifdef __WINS__
path.Copy(_L("z:\\system\\apps\\EveryDay\\EveryDay.mbm"));
#else
CEveryDayAppUi* pApp = (CEveryDayAppUi*)CEikonEnv::Static()->AppUi();
pApp->GetAppPath(path);
path.Append(_L("EveryDay.mbm"));
#endif
if (iMessageState == EOpen)
{
if ( iMtmState == EMtmInbox )
{
iContainer->SetInfo(m_address,m_message);
CEikStatusPane* statusPane = StatusPane();
CAknContextPane* contextPane = (CAknContextPane*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(path,EMbmEverydayInboxsmall);
contextPane->SetPicture(bitmap);
TBuf<32> sTitle;
CEikonEnv::Static()->ReadResource(sTitle, R_INBOX_TITLE);
CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTitle);
iContainer->SetEditReadOnly();
Cba()->SetCommandSetL(R_MESSAGE_OPEN_CBA);
Cba()->DrawNow();
}
if ( iMtmState == EMtmDraft )
{
iContainer->SetInfo(m_address,m_message);
CEikStatusPane* statusPane = StatusPane();
CAknContextPane* contextPane = (CAknContextPane*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(path,EMbmEverydayDraft);
contextPane->SetPicture(bitmap);
TBuf<32> sTitle;
CEikonEnv::Static()->ReadResource(sTitle, R_DRAFT_TITLE);
CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTitle);
iContainer->SetEditReadOnly();
Cba()->SetCommandSetL(R_MESSAGE_OPEN_CBA);
Cba()->DrawNow();
}
if( iMtmState == EMtmSended )
{
iContainer->SetInfo(m_address,m_message);
CEikStatusPane* statusPane = StatusPane();
CAknContextPane* contextPane = (CAknContextPane*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(path,EMbmEverydayOutbox);
contextPane->SetPicture(bitmap);
TBuf<32> sTitle;
CEikonEnv::Static()->ReadResource(sTitle, R_SEND_TITLE);
CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTitle);
iContainer->SetEditReadOnly();
Cba()->SetCommandSetL(R_MESSAGE_OPEN_CBA);
Cba()->DrawNow();
}
if (iMtmState == EMtmWriteInfo)
{
CEikStatusPane* statusPane = StatusPane();
CAknContextPane* contextPane = (CAknContextPane*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(path,EMbmEverydayWritemessagesmall);
contextPane->SetPicture(bitmap);
TBuf<32> sTitle;
CEikonEnv::Static()->ReadResource(sTitle, R_WRITE_TITLE);
CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTitle);
}
}
if (iMessageState == ESendFrom)
{
if ( iMtmState == EMtmInbox )
{
iContainer->SetInfo(m_address,m_message);
CEikStatusPane* statusPane = StatusPane();
CAknContextPane* contextPane = (CAknContextPane*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(path,EMbmEverydayInboxsmall);
contextPane->SetPicture(bitmap);
TBuf<32> sTitle;
CEikonEnv::Static()->ReadResource(sTitle, R_INBOX_TITLE);
CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTitle);
Cba()->SetCommandSetL(R_CBA_MEG_INFO);
Cba()->DrawNow();
}
if ( iMtmState == EMtmDraft )
{
iContainer->SetInfo(m_address,m_message);
CEikStatusPane* statusPane = StatusPane();
CAknContextPane* contextPane = (CAknContextPane*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(path,EMbmEverydayDraft);
contextPane->SetPicture(bitmap);
TBuf<32> sTitle;
CEikonEnv::Static()->ReadResource(sTitle, R_DRAFT_TITLE);
CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTitle);
Cba()->SetCommandSetL(R_CBA_MEG_INFO);
Cba()->DrawNow();
}
if( iMtmState == EMtmSended )
{
iContainer->SetInfo(m_address,m_message);
CEikStatusPane* statusPane = StatusPane();
CAknContextPane* contextPane = (CAknContextPane*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(path,EMbmEverydayOutbox);
contextPane->SetPicture(bitmap);
TBuf<32> sTitle;
CEikonEnv::Static()->ReadResource(sTitle, R_SEND_TITLE);
CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTitle);
Cba()->SetCommandSetL(R_CBA_MEG_INFO);
Cba()->DrawNow();
}
if (iMtmState == EMtmWriteInfo)
{
CEikStatusPane* statusPane = StatusPane();
CAknContextPane* contextPane = (CAknContextPane*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(path,EMbmEverydayWritemessagesmall);
contextPane->SetPicture(bitmap);
TBuf<32> sTitle;
CEikonEnv::Static()->ReadResource(sTitle, R_WRITE_TITLE);
CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTitle);
Cba()->SetCommandSetL(R_CBA_MEG_INFO);
Cba()->DrawNow();
}
}
if(iMessageState == EWriteSms)
{
CEikStatusPane* statusPane = StatusPane();
CAknContextPane* contextPane = (CAknContextPane*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(path,EMbmEverydayWritemessagesmall);
contextPane->SetPicture(bitmap);
TBuf<32> sTitle;
CEikonEnv::Static()->ReadResource(sTitle, R_WRITE_TITLE);
CAknTitlePane* titlePane = (CAknTitlePane*)statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTitle);
Cba()->SetCommandSetL(R_CBA_MEG_INFO);
Cba()->DrawNow();
}
}
// ---------------------------------------------------------
// CMegInfoView::DoDeactivate()
// Deletes the Container class object.
// ---------------------------------------------------------
void CMegInfoView::DoDeactivate()
{
if (iContainer)
{
AppUi()->RemoveFromStack(iContainer);
delete iContainer;
iContainer = NULL;
}
}
void CMegInfoView::HandleMessageSentL(TInt aError)
{
if (aError == KErrNone)
{
TBuf<16> success;
CEikonEnv::Static()->ReadResource(success,R_MESSAGE_SUCCESS);
CAknInformationNote* note = new (ELeave) CAknInformationNote;
note->ExecuteLD(success);
iEngine->MoveToFolderL(mindexEntry.Id(),KMsvGlobalOutBoxIndexEntryId);
}
else
{
TBuf<16> fail;
CEikonEnv::Static()->ReadResource(fail,R_MESSAGE_SENDFAIL);//若發送不成功,顯示不成功的標志
CAknInformationNote* note = new (ELeave) CAknInformationNote;
note->ExecuteLD(fail);
}
}
void CMegInfoView::GetMessage(TMessageState aMessageState, TFoldState aMtmState, TInt aIndex)
{
iMessageState = aMessageState;
iMtmState = aMtmState;
iIndex = aIndex;
}
void CMegInfoView::sendate(RArray<TMsvId>& aArray, TInt aNum)
{
m_address.Copy(_L(""));
m_message.Copy(_L(""));
iEngine->GetMessageAddressL(aArray[aNum],m_address);
iEngine->GetMessageL(aArray[aNum],m_message);
}
void CMegInfoView::SetFoldInfoState(TFoldState aMtmState)
{
iMtmState = aMtmState;;
}
void CMegInfoView::SetMessageInfoState(TMessageState aMessageState)
{
iMessageState = aMessageState;;
}
// End of File
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -