📄 mementoeditview.cpp
字号:
/*
* ============================================================================
* Name : CMementoEditView from CAknView
* Part of : CMementoEditView
* Copyright (c) 2003 Nokia. All rights reserved.
* ============================================================================
*/
// INCLUDE FILES
#include <aknviewappui.h>
#include <avkon.hrh>
#include <Memento.rsg>
#include "Memento.hrh"
#include "MementoEditView.h"
#include "MementoEditContainer.h"
//Myself MBM
#include "Memento.mbg"//for mbm
#include <akncontext.h>//for CAknContextPane
#include "akntitle.h"//for CAknTitlePane
#include "MementoAppUi.h"
//end
#include <aknnotewrappers.h> //?
// ================= MEMBER FUNCTIONS =======================
// C++ default constructor can NOT contain any code, that
// might leave.
//
CMementoEditView* CMementoEditView::NewL()
{
CMementoEditView* self = NewLC();
CleanupStack::Pop(self);
return self;
}
CMementoEditView* CMementoEditView::NewLC()
{
CMementoEditView* self = new (ELeave) CMementoEditView;
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CMementoEditView::CMementoEditView()
{
}
// EPOC default constructor can leave.
void CMementoEditView::ConstructL()
{
BaseConstructL(R_EDIT_VIEW);//把Add的CBA传入
}
// Destructor
CMementoEditView::~CMementoEditView()
{
}
// ---------------------------------------------------------
// TUid CMementoEditView::Id()
// Returns Id of the view.
// ---------------------------------------------------------
TUid CMementoEditView::Id() const
{
return KViewId4;
}
// ---------------------------------------------------------
// CMementoEditView::HandleCommandL(TInt aCommand)
// Handles commands
// ---------------------------------------------------------
void CMementoEditView::HandleCommandL(TInt aCommand)
{
switch(aCommand)
{
case EMyeditCmdSaveofAdd://保存用户输入
{
if(iContainer->GetTitleEdwin()->TextLength()<=0 || iContainer->GetTitleEdwin()->TextLength() >10)
{
TBuf<32> Error4;
CEikonEnv::Static()->ReadResource(Error4, R_QTN_MH_EDIT_REEOR5);
// _LIT(Error4, "yumen!");
CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
informationNote->ExecuteLD(Error4);
break;
}
else
{
if(iState1 == EModify)
{
CMementoAppUi* pUI = (CMementoAppUi*)CEikonEnv::Static()->AppUi();
CDataManage* pDataMangae = pUI->GetDataManage();
HBufC* BufTitle = HBufC::NewL(iContainer->GetTitleEdwin()->TextLength());
HBufC* BufContent = HBufC::NewL(iContainer->GetContentEdwin()->TextLength());
iContainer->GetTitleEdwin()->GetText(BufTitle->Des());
iContainer->GetContentEdwin()->GetText(BufContent->Des());
pDataMangae->SetUserFileInfo(iFileIndex,*BufTitle,*BufContent);
delete BufTitle;
delete BufContent;
pDataMangae->SaveFileData();
// Cba()->SetCommandSetL(R_LOG_CBA);
// Cba()->DrawNow();
AppUi()->ActivateLocalViewL(KViewId2);
break;
}
else if(iState1 == ENew)
{
CMementoAppUi* pUI = (CMementoAppUi*)CEikonEnv::Static()->AppUi();
CDataManage* pDataMangae = pUI->GetDataManage();
HBufC* BufTitle = HBufC::NewL(iContainer->GetTitleEdwin()->TextLength());
HBufC* BufContent = HBufC::NewL(iContainer->GetContentEdwin()->TextLength());
iContainer->GetTitleEdwin()->GetText(BufTitle->Des());
iContainer->GetContentEdwin()->GetText(BufContent->Des());
pDataMangae->CreateUserFileInfoL(BufTitle->Des(),BufContent->Des());
delete BufTitle;
delete BufContent;
pDataMangae->SaveFileData();
AppUi()->ActivateLocalViewL(KViewId2);
break;
}
Cba()->SetCommandSetL(R_LOG_CBA);
Cba()->DrawNow();
}
break;
}
case EMementoReturn:
{
// iContainer->setHelp(EFalse);
Cba()->SetCommandSetL(R_LOG_CBA);
Cba()->DrawNow();
AppUi()->ActivateLocalViewL(KViewId2);
break;
}
case EAknSoftkeyExit:
{
// CEikStatusPane* statusPane = StatusPane();
//
// //set icon 在.mmp中加库文件 LIBRARY eikcoctl.lib
// CAknContextPane* contextPane = (CAknContextPane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidContext));
// CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmMementoSnoopy_11_icon);//图片名_在symbain目录下LDD2.bmg中得到
// CFbsBitmap* bitmapMask = iEikonEnv->CreateBitmapL(pathMbm, EMbmMementoSnoopy_11_mask);//掩码名_在symbain目录下LDD2.bmg中得到
//
// //contextPane->SetPicture(bitmap);
// contextPane->SetPicture(bitmap, bitmapMask);
//
// //set title
// // CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
// // titlePane->SetTextL(_L("Hello view!"));//显示英文
//
// //load chinese words//显示中文
// TBuf<32> sTmpTitle;
// CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_MH_EDIT_TITLE);//读入内存可在下面的show中显示——ReadResource()是个重要的函数。所有的中文都可以由它读到内存中再操作
//
// CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
// titlePane->SetTextL(sTmpTitle);
AppUi()->ActivateLocalViewL(KViewId2);
break;
}
default:
{
break;
}
}
}
// ---------------------------------------------------------
// CMementoEditView::HandleClientRectChange()
// Handles client rect change.
// ---------------------------------------------------------
void CMementoEditView::HandleClientRectChange()
{
if (iContainer)
{
iContainer->SetRect(ClientRect());
}
}
// ---------------------------------------------------------
// CMementoEditView::DoActivateL(...)
// Creates the Container class object.
// ---------------------------------------------------------
void CMementoEditView::DoActivateL(const TVwsViewId& /*aPrevViewId*/,
TUid /*aCustomMessageId*/,
const TDesC8& /*aCustomMessage*/)
{
iContainer = new (ELeave) CMementoEditContainer;
iContainer->SetMopParent(this);
// iContainer->ConstructL(ClientRect());
// AppUi()->AddToStackL(*this, iContainer);// 下面对显示区域重做调整
TRect rc;
rc.SetRect(ClientRect().iTl, TSize(176, 144));
iContainer->ConstructL(rc);
AppUi()->AddToStackL(*this, iContainer);
TBuf<KMaxPath> pathMbm;
#ifdef __WINS__
pathMbm.Copy(_L("z:\\system\\apps\\Memento\\Memento.mbm"));
#else
CMementoAppUi* pApp = (CMementoAppUi*)CEikonEnv::Static()->AppUi();
pApp->GetAppPath(pathMbm);//自己写的函数,在*ui.h中定义,在*ui.cpp中实现。所以这个文件要包含*ui.h
pathMbm.Append(_L("Memento.mbm"));
#endif
switch(iState1)
{
case ENew:
{
// iContainer->SetStata(CMementoEditContainer::ENew);//设置Edit的属性,然后显示Add的Edit
CEikStatusPane* statusPane = StatusPane();
//set icon 在.mmp中加库文件 LIBRARY eikcoctl.lib
CAknContextPane* contextPane = (CAknContextPane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmMementoSnoopy_11_icon);//图片名_在symbain目录下LDD2.bmg中得到
CFbsBitmap* bitmapMask = iEikonEnv->CreateBitmapL(pathMbm, EMbmMementoSnoopy_11_mask);//掩码名_在symbain目录下LDD2.bmg中得到
//contextPane->SetPicture(bitmap);
contextPane->SetPicture(bitmap, bitmapMask);
//set title
// CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
// titlePane->SetTextL(_L("Hello view!"));//显示英文
//load chinese words//显示中文
TBuf<32> sTmpTitle;
CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_MH_EDIT_TITLE);//读入内存可在下面的show中显示——ReadResource()是个重要的函数。所有的中文都可以由它读到内存中再操作
CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTmpTitle);
iContainer->GetTitleEdwin()->SetFocus(ETrue);
Cba()->SetCommandSetL(R_CBA_EDIT);
Cba()->DrawNow();
break;
}
case EOpens:
{
// iContainer->SetStata(CMementoEditContainer::EOpens);//设置Edit的属性,然后显示Look的Edit
CEikStatusPane* statusPane = StatusPane();
//set icon 在.mmp中加库文件 LIBRARY eikcoctl.lib
CAknContextPane* contextPane = (CAknContextPane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmMementoSnoopy_12_icon);//图片名_在symbain目录下LDD2.bmg中得到
CFbsBitmap* bitmapMask = iEikonEnv->CreateBitmapL(pathMbm, EMbmMementoSnoopy_12_mask);//掩码名_在symbain目录下LDD2.bmg中得到
//contextPane->SetPicture(bitmap);
contextPane->SetPicture(bitmap, bitmapMask);
//set title
// CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
// titlePane->SetTextL(_L("Hello view!"));//显示英文
//load chinese words//显示中文
TBuf<32> sTmpTitle;
CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_MH_LOOK_TITLE);//读入内存可在下面的show中显示——ReadResource()是个重要的函数。所有的中文都可以由它读到内存中再操作
CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTmpTitle);
CMementoAppUi* pUI = (CMementoAppUi*)CEikonEnv::Static()->AppUi();
CDataManage* pDataMangae = pUI->GetDataManage();
TInt nn = pDataMangae->GetUserDirInfo().Count();
iContainer->GetTitleEdwin()->SetTextL(&(pDataMangae->GetUserDirInfo().At(iFileIndex)->GetFileTitle()));
iContainer->GetTitleEdwin()->SetReadOnly(ETrue);
iContainer->GetTitleEdwin()->SetFocus(EFalse);
iContainer->GetContentEdwin()->SetTextL(&(pDataMangae->GetUserDirInfo().At(iFileIndex)->GetFileConstext()));
iContainer->GetContentEdwin()->SetReadOnly(ETrue);
iContainer->GetContentEdwin()->SetFocus(EFalse);
Cba()->SetCommandSetL(R_CBA_HELP);
Cba()->DrawNow();
break;
}
case EModify:
{
// iContainer->SetStata(CMementoEditContainer::EModify);//设置Edit的属性,然后显示Change的Edit
CEikStatusPane* statusPane = StatusPane();
//set icon 在.mmp中加库文件 LIBRARY eikcoctl.lib
CAknContextPane* contextPane = (CAknContextPane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmMementoSnoopy_13_icon);//图片名_在symbain目录下LDD2.bmg中得到
CFbsBitmap* bitmapMask = iEikonEnv->CreateBitmapL(pathMbm, EMbmMementoSnoopy_13_mask);//掩码名_在symbain目录下LDD2.bmg中得到
//contextPane->SetPicture(bitmap);
contextPane->SetPicture(bitmap, bitmapMask);
//set title
// CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
// titlePane->SetTextL(_L("Hello view!"));//显示英文
//load chinese words//显示中文
TBuf<32> sTmpTitle;
CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_MH_CHANGE_TITLE);//读入内存可在下面的show中显示——ReadResource()是个重要的函数。所有的中文都可以由它读到内存中再操作
CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTmpTitle);
CMementoAppUi* pUI = (CMementoAppUi*)CEikonEnv::Static()->AppUi();
CDataManage* pDataMangae = pUI->GetDataManage();
TInt nn = pDataMangae->GetUserDirInfo().Count();
iContainer->GetTitleEdwin()->SetTextL(&(pDataMangae->GetUserDirInfo().At(iFileIndex)->GetFileTitle()));
iContainer->GetContentEdwin()->SetTextL(&(pDataMangae->GetUserDirInfo().At(iFileIndex)->GetFileConstext()));
iContainer->GetTitleEdwin()->SetFocus(ETrue);
iContainer->GetContentEdwin()->SetFocus(EFalse);
Cba()->SetCommandSetL(R_CBA_EDIT);
Cba()->DrawNow();
break;
}
default:
{
break;
}
}
/*
CEikStatusPane* statusPane = StatusPane();
//set icon 在.mmp中加库文件 LIBRARY eikcoctl.lib
CAknContextPane* contextPane = (CAknContextPane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidContext));
CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmCmementoeditviewSnoopy_1_icon);//图片名_在symbain目录下LDD2.bmg中得到
CFbsBitmap* bitmapMask = iEikonEnv->CreateBitmapL(pathMbm, EMbmCmementoeditviewSnoopy_1_mask);//掩码名_在symbain目录下LDD2.bmg中得到
//contextPane->SetPicture(bitmap);
contextPane->SetPicture(bitmap, bitmapMask);
//set title
// CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
// titlePane->SetTextL(_L("Hello view!"));//显示英文
//load chinese words//显示中文
TBuf<32> sTmpTitle;
CEikonEnv::Static()->ReadResource(sTmpTitle, R_QTN_MH_EDIT_TITLE);//读入内存可在下面的show中显示——ReadResource()是个重要的函数。所有的中文都可以由它读到内存中再操作
CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
titlePane->SetTextL(sTmpTitle);
//show
// CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
// informationNote->ExecuteLD(sTmpTitle);
*/
}
// ---------------------------------------------------------
// CMementoEditView::DoDeactivate()
// Deletes the Container class object.
// ---------------------------------------------------------
void CMementoEditView::DoDeactivate()
{
if (iContainer)
{
AppUi()->RemoveFromStack(iContainer);
delete iContainer;
iContainer = NULL;
}
}
void CMementoEditView::SetStata(TState1 aFlag)
{
iState1 = aFlag;
}
void CMementoEditView::SetEditText(TInt aIndex)
{
iFileIndex = aIndex;
}
CMementoEditContainer* CMementoEditView::getConPtr()
{
return iContainer;
}
// End of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -