notedisplayview.cpp

来自「symbian 2rd 备忘录」· C++ 代码 · 共 231 行

CPP
231
字号
/* Copyright (c) 2007, Nokia. All rights reserved */
#include <gulicon.h>
#include <eikseced.h>
#include <eikccpu.h>
#include <aknnotewrappers.h>
#include <eikspane.h>
#include <akntitle.h> 

#include <akncontext.h>
#include "NoteDisplayView.h"
#include "NoteDisplayContainer.h"
#include "AssistantAppUi.h"
#include "Assistant.rsg"
#include "Assistant.hrh"

CNoteDisplayView* CNoteDisplayView::NewL()
{
    CNoteDisplayView* self = NewLC();
    CleanupStack::Pop(self);
    return self;
}

CNoteDisplayView* CNoteDisplayView::NewLC()
{
    CNoteDisplayView* self = new (ELeave) CNoteDisplayView();
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
}

void CNoteDisplayView::ConstructL()
{
	BaseConstructL(R_ASSISTANT_EDIT);
	m_pEditInfoManage = CNoteInfoManage::NewL();
}


CNoteDisplayView::CNoteDisplayView()
{
	m_pAppContainer = NULL;
	m_pEditInfoManage = NULL;

	m_Status = EAssistantStatusMain;
}


CNoteDisplayView::~CNoteDisplayView()
{
	MEMORY_FREE(m_pEditInfoManage);
}

TUid CNoteDisplayView::Id() const
{
	return TUid::Uid(5);
}

void CNoteDisplayView::HandleCommandL(TInt aCommand)
{	
	HBufC* m_pTitle = HBufC::NewL(32);
	HBufC* m_pDate = HBufC::NewL(32);
	HBufC* m_pContent = HBufC::NewL(512);
		
	m_nIndex = m_pAppContainer->GetIndex();
	switch(aCommand)
	{
	case EAssistantNew:
		{
			m_Status = EAssistantStatusNew;
			m_pEditDataTransimit->SetData(EAssistantStatusNew);
			AppUi()->ActivateLocalViewL(TUid::Uid(6));
		}
		break;
	case EAssistantOpen:
		{
			m_Status = EAssistantStatusOpen;
			m_pEditInfoManage->GetNoteInfo(m_nIndex,m_pDate->Des(),m_pTitle->Des(), m_pContent->Des());
			
			m_pEditDataTransimit->SetData(EAssistantStatusOpen, m_pTitle->Des(), m_pContent->Des());
			AppUi()->ActivateLocalViewL(TUid::Uid(6));
		}
		break;
	case EAssistantModify:
		{
			m_Status = EAssistantStatusModify;
			
			m_pEditInfoManage->GetNoteInfo(m_nIndex,m_pDate->Des(),m_pTitle->Des(), m_pContent->Des());
			
			m_pEditDataTransimit->SetData(EAssistantStatusModify, m_pTitle->Des(), m_pContent->Des());
			AppUi()->ActivateLocalViewL(TUid::Uid(6));
		}
		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_pAppContainer->DelTnforFromList(m_nIndex);
				m_pEditInfoManage->Delete(m_nIndex);
			}
		}
		break;
	case EAssistantHelp:
		{
			m_pHelpStatus->SetStatus(EAssistantStatusEdit);
		//	AppUi()->ActivateLocalViewL(TUid::Uid(4));
		}
		break;
	case EAknSoftkeyBack:
	case EAssistantBack:
		{
			m_pEditInfoManage->SaveNoteInfo();
			m_Status = EAssistantStatusMain;
			AppUi()->ActivateLocalViewL(TUid::Uid(3));
		}
		break;
	default:
		AppUi()->HandleCommandL(aCommand);
		break;
	}
	MEMORY_FREE(m_pDate);
	MEMORY_FREE(m_pTitle);
	MEMORY_FREE(m_pContent);
}

void CNoteDisplayView::HandleClientRectChange()
{
	if(m_pAppContainer)
	{
		m_pAppContainer->SetRect(ClientRect());
	}
}

void CNoteDisplayView::DoActivateL(const TVwsViewId&, TUid, const TDesC8&)
{
	m_pAppContainer = new( ELeave ) CNoteDisplayContainer();
	m_pAppContainer->SetMopParent(this);
	TRect rc;
	rc.SetRect(ClientRect().iTl, TSize(176, 144));
	m_pAppContainer->ConstructL( rc );	
	AppUi()->AddToStackL( *this, m_pAppContainer );
	
	CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane();
	
	
	CAssistantAppUi* pApp = (CAssistantAppUi*)CEikonEnv::Static()->AppUi();
	CFbsBitmap* pIcon = pApp->LoadGraphicsL1(0);
	CFbsBitmap* pMask = pApp->LoadGraphicsL1(29);
	CAknContextPane* contextPane = (CAknContextPane*) sp->ControlL(TUid::Uid(EEikStatusPaneUidContext));
	contextPane->SetPicture(pIcon,pMask);

	HBufC* m_pDate = HBufC::NewL(32);
	HBufC* m_pTitle = HBufC::NewL(32);
	HBufC* m_pContent = HBufC::NewL(512);

	//Set View Title
	TBuf<32> sTmpTitle;
	CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_ASSISTANT_EDIT);
	CAknTitlePane* tp=(CAknTitlePane*)sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
	tp->SetTextL(sTmpTitle);
	
	if(m_Status == EAssistantStatusNew || m_Status == EAssistantStatusModify)
	{	
		m_pEditDataTransimit->GetData(m_Status, m_pTitle->Des(), m_pContent->Des());
		
		if(m_Status != EAssistantStatusCancel)
		{
			TTime tTime;
			tTime.HomeTime();
			tTime.FormatL(m_pDate->Des(), _L("%M%Y%/0%4%/1%5%/3"));
			if(m_Status == EAssistantStatusNew)
			{
				m_pEditInfoManage->Add(m_pDate->Des(), m_pTitle->Des(), m_pContent->Des());
			}
			else if(m_Status == EAssistantStatusModify)
			{
				m_pEditInfoManage->Modify(m_nIndex ,m_pTitle->Des(), m_pContent->Des());
			}
		}
	}	
	for(TInt i=0; i<m_pEditInfoManage->GetCount(); i++)
	{
		m_pEditInfoManage->GetNoteInfo(i,m_pDate->Des(),m_pTitle->Des(),m_pContent->Des());
		m_pAppContainer->AddInfoToList(m_pDate->Des(), m_pTitle->Des());
	}
	MEMORY_FREE(m_pDate);
	MEMORY_FREE(m_pTitle);
	MEMORY_FREE(m_pContent);
	
}

void CNoteDisplayView::DoDeactivate()
{
	if(m_pAppContainer)
	{
		AppUi()->RemoveFromStack( m_pAppContainer );
		delete m_pAppContainer;
	}

}
void CNoteDisplayView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
{
	if(aResourceId != R_ASSISTANT_EDIT_MENU) return;
	
	if(m_pEditInfoManage->GetCount() == 0)
	{
		aMenuPane->SetItemDimmed(EAssistantOpen,ETrue);
		aMenuPane->SetItemDimmed(EAssistantModify,ETrue);
		aMenuPane->SetItemDimmed(EAssistantDelete,ETrue);
	}
	else
	{
		aMenuPane->SetItemDimmed(EAssistantOpen,EFalse);
		aMenuPane->SetItemDimmed(EAssistantModify,EFalse);
		aMenuPane->SetItemDimmed(EAssistantDelete,EFalse);
	}
}

void CNoteDisplayView::SetMEditDataTransmitPtr(MEditDataTransmit * aPtr)
{
	m_pEditDataTransimit = aPtr;
}

void CNoteDisplayView::SetHelpStatusPtr(MStatus* aPtr)
{
	m_pHelpStatus = aPtr;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?