?? meglistview.cpp
字號:
/*
* ============================================================================
* Name : CMegListView from CAknView
* Part of : Hello
* Copyright (c) 2003 Nokia. All rights reserved.
* ============================================================================
*/
// INCLUDE FILES
#include <aknviewappui.h>
#include <avkon.hrh>
#include <EveryDay.rsg>
#include "EveryDay.hrh"
#include "MegListView.h"
#include "MegListContainer.h"
#include "EveryDayAppUi.h"
#include <badesca.h> // CDesCArrayFlat
#include <msvapi.h> // MMsvSessionObserver
#include "MtmsEngine.h"
#include <akntitle.h>
#include <akncontext.h>
#include <aknnotewrappers.h>
#include <msvids.h>
#include "EveryDay.pan"
#include "MegView.h"
#include "MegListView.h"
#include "MegInfoView.h"
#include "EveryDay.mbg"
#include "common.h"
#include <StringLoader.h>
// ================= MEMBER FUNCTIONS =======================
// C++ default constructor can NOT contain any code, that
// might leave.
//
CMegListView* CMegListView::NewL(MNify* abserver)
{
CMegListView* self = NewLC(abserver);
CleanupStack::Pop(self);
return self;
}
CMegListView* CMegListView::NewLC(MNify* abserver)
{
CMegListView* self = new (ELeave) CMegListView(abserver);
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CMegListView::CMegListView(MNify* abserver)
{
iMessage = abserver;
m_plistEngine = NULL;
}
// EPOC default constructor can leave.
void CMegListView::ConstructL()
{
BaseConstructL(R_MEGLIST_VIEW);
m_plistEngine = CMtmsEngine::NewL(*this);
}
// Destructor
CMegListView::~CMegListView()
{
MEM_FREE(m_plistEngine);
}
// ---------------------------------------------------------
// TUid CMegListView::Id()
// Returns Id of the view.
// ---------------------------------------------------------
TUid CMegListView::Id() const
{
return KViewId13;
}
// ---------------------------------------------------------
// CMegListView::HandleCommandL(TInt aCommand)
// Handles commands
// ---------------------------------------------------------
void CMegListView::HandleCommandL(TInt aCommand)
{
switch(aCommand)
{
case EMessageOpen:
{
iMessage->GetMessage(EOpen, iFoldState, iContainer->GetListCount());
TInt num = iContainer->GetListCount();
if (num>=0)
{
iMessage->sendate(*iListIdArray,num);
AppUi()->ActivateLocalViewL(KViewId14);
}
break;
}
case EMessageWrite:
{
/*iMessage->GetMessage(EWriteSms, iFoldState, 0);*/
((CMegInfoView*)AppUi()->View(KViewId14))->SetMessageInfoState(EWriteSms);
((CMegInfoView*)AppUi()->View(KViewId14))->SetFoldInfoState(iFoldState);
AppUi()->ActivateLocalViewL(KViewId14);
break;
}
case EMessageSendfrom:
{
iMessage->GetMessage(ESendFrom, iFoldState, iContainer->GetListCount());
TInt num = iContainer->GetListCount();
if (num>=0)
{
iMessage->sendate(*iListIdArray,num);
AppUi()->ActivateLocalViewL(KViewId14);
}
break;
}
case EMessageAnyDel:
{
TInt count = iContainer->GetListCount();
if(count>=0)
{
TInt anresult;
iContainer->GetListDelete(anresult);
if(anresult)
{
m_plistEngine->DeleteMessageL(count);
iContainer->DelInforFromList(count);
}
}
break;
}
case EAknSoftkeyBack:
{
AppUi()->ActivateLocalViewL(KViewId12);
break;
}
default:
{
AppUi()->HandleCommandL(aCommand);
break;
}
}
}
// ---------------------------------------------------------
// CMegListView::HandleClientRectChange()
// Handles client rect change.
// ---------------------------------------------------------
void CMegListView::HandleClientRectChange()
{
if (iContainer)
{
iContainer->SetRect(ClientRect());
}
}
// ---------------------------------------------------------
// CMegListView::DoActivateL(...)
// Creates the Container class object.
// ---------------------------------------------------------
void CMegListView::DoActivateL(const TVwsViewId& ,TUid ,const TDesC8&)
{
iContainer = new (ELeave) CMegListContainer();
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 ( SListNum = 0)
// {
// iFoldState = EMtmWriteInfo;
// }
// if(SListNum = 1)
// {
// iFoldState = EMtmInbox;
// }
// if(SListNum = 2)
// {
// iFoldState = EMtmDraft;
// }
// if(SListNum = 3)
// {
// iFoldState = EMtmSended;
// }
if ( iFoldState == EMtmInbox )
{
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);
}
else if ( iFoldState == EMtmDraft )
{
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);
}
else if ( iFoldState == EMtmSended )
{
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);
}
else if (iFoldState == 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);
}
UpDataForList();
m_nIndex = 0;
}
// ---------------------------------------------------------
// CMegListView::DoDeactivate()
// Deletes the Container class object.
// ---------------------------------------------------------
void CMegListView::DoDeactivate()
{
if (iContainer)
{
AppUi()->RemoveFromStack(iContainer);
delete iContainer;
iContainer = NULL;
}
}
void CMegListView::SetFoldState(TFoldState aMtmState )
{
iFoldState = aMtmState;
//SListNum = anum;
}
void CMegListView::HandleMessageSentL(TInt aError)
{
if (aError == KErrNone)
{
CAknInformationNote* note = new (ELeave) CAknInformationNote;
note->ExecuteLD(_L("Succeed!"));
}
}
void CMegListView::UpDataForList()
{
CDesCArrayFlat* isRead = new(ELeave) CDesCArrayFlat(10);
CDesCArrayFlat* mobile = new(ELeave) CDesCArrayFlat(10);
CDesCArrayFlat* message = new(ELeave) CDesCArrayFlat(10);
if (iFoldState == EMtmInbox)
{
m_plistEngine->GetFolderSMSMessageInformation(KMsvGlobalInBoxIndexEntryId,isRead,mobile,message);
}
else if (iFoldState == EMtmDraft)
{
m_plistEngine->GetFolderSMSMessageInformation(KMsvDraftEntryId,isRead,mobile,message);
}
else if (iFoldState == EMtmSended)
{
m_plistEngine->GetFolderSMSMessageInformation(KMsvGlobalOutBoxIndexEntryId,isRead,mobile,message);
}
iListIdArray = m_plistEngine->GetMessageIds();
for ( TInt i=0; i<iListIdArray->Count(); i++ )
{
TInt num=(*mobile)[i].Length();
if( (*mobile)[i].Length() != 0 || (*message)[i].Length() != 0 )
{
iContainer->AddInfoToList((*mobile)[i],(*message)[i]);
}
}
MEM_FREE(isRead);
MEM_FREE(mobile);
MEM_FREE(message);
}
// End of File
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -