📄 griddemocontainer.cpp
字号:
/**
*
* @brief Definition of CGridDemoContainer
*
* Copyright (c) EMCC Software Ltd 2003
* @version 1.0
*/
// INCLUDE FILES
// Class include
#include "GridDemoContainer.h"
// System includes
#include <akniconarray.h>
#include <aknlists.h>
#include <barsread.h>
#include <eikclbd.h>
#include <eikmenub.h>
#include <GridDemo.rsg>
#include <stringloader.h>
#include <uikon.hrh>
#include <bautils.h>
#include "GridDemo.hrh"
#include "GridDemoAppUi.h"
CGridDemoContainer* CGridDemoContainer::NewL(const TRect& aRect)
{
CGridDemoContainer* self = CGridDemoContainer::NewLC(aRect);
CleanupStack::Pop(self);
return self;
}
CGridDemoContainer* CGridDemoContainer::NewLC(const TRect& aRect)
{
CGridDemoContainer* self = new (ELeave) CGridDemoContainer;
CleanupStack::PushL(self);
self->ConstructL(aRect);
return self;
}
void CGridDemoContainer::ConstructL(const TRect& aRect)
{
CreateWindowL();
iCanUpdate = EFalse;
iTextArray = new (ELeave) CDesCArrayFlat(10);
CreateListL();
iListBox->SetListBoxObserver(this);
SetupScrollBarsL();
iSheetContainer = new (ELeave) CSheetContainer(*this);
CleanupStack::PushL(iSheetContainer);
iSheetContainer->ConstructL(aRect, this);
iSheetContainer->MakeVisible(EFalse);
CleanupStack::Pop(iSheetContainer);
iStatusContainer = new (ELeave) CStatusContainer();
CleanupStack::PushL(iStatusContainer);
iStatusContainer->ConstructL(aRect, this);
iStatusContainer->MakeVisible(EFalse);
CleanupStack::Pop(iStatusContainer);
iNumberEditor = new (ELeave) CEditContainer;
CleanupStack::PushL(iNumberEditor);
iNumberEditor->ConstructL(aRect, this);
iNumberEditor->MakeVisible(EFalse);
CleanupStack::Pop(iNumberEditor);
SetRect(aRect);
ActivateL();
iCanUpdate = ETrue;
iEditFlow = NULL;
}
void CGridDemoContainer::CreateListL()
{
iListBox = new (ELeave) CAknSingleStyleListBox;
iListBox->SetContainerWindowL(*this);
iListBox->ConstructL( this, 0 );
iFunctionShowType = EFunctionTypeMain;
InitFunctionList();
iListBox->Model()->SetItemTextArray( iTextArray );
iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
}
// 绘制主界面功能菜单
void CGridDemoContainer::InitFunctionList()
{
iMyAppUi->SetNavigationLabelL(R_MAIN_TITLE);
iTextArray->Reset();
TBuf<32> buf;
iEikonEnv->ReadResourceL(buf, R_FUNCTION1);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_FUNCTION2);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_FUNCTION3);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_FUNCTION4);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_FUNCTION5);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_FUNCTION6);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_FUNCTION7);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_FUNCTION8);
iTextArray->AppendL(buf);
}
//订单录入,查询,统计菜单,按订单采集功能调用些函数.
void CGridDemoContainer::InitOrderFormList()
{
iMyAppUi->SetNavigationLabelL(R_FUNCTION1);
iTextArray->Reset();
TBuf<32> buf;
iEikonEnv->ReadResourceL(buf, R_ORDER1);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_ORDER2);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_ORDER3);
iTextArray->AppendL(buf);
}
//月台帐,年台帐,按台帐查询调用此功能.
void CGridDemoContainer::InitAccountList()
{
iMyAppUi->SetNavigationLabelL(R_FUNCTION2);
iTextArray->Reset();
TBuf<32> buf;
iEikonEnv->ReadResourceL(buf, R_TZ_MONTH);
iTextArray->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_TZ_YEAR);
iTextArray->AppendL(buf);
}
//月帐查看
void CGridDemoContainer::InitMonthAccountList()
{
iMyAppUi->SetNavigationLabelL(R_TZ_MONTH);
iTextArray->Reset();
TBuf<32> buf;
iEikonEnv->ReadResourceL(buf, R_ORDER1);
iTextArray->AppendL(buf);
}
//年帐查看
void CGridDemoContainer::InitYearAccountList()
{
iMyAppUi->SetNavigationLabelL(R_TZ_YEAR);
iTextArray->Reset();
TBuf<32> buf;
iEikonEnv->ReadResourceL(buf, R_ORDER1);
iTextArray->AppendL(buf);
}
//设置主界面滚动
void CGridDemoContainer::SetupScrollBarsL()
{
iListBox->CreateScrollBarFrameL(ETrue);
iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
}
void CGridDemoContainer::SetupListIconsL()
{
}
//创建一个查询窗口
CAknSearchField* CGridDemoContainer::CreateFindBoxL(CEikListBox* aListBox, CTextListBoxModel* aModel, CAknSearchField::TSearchFieldStyle aStyle )
{
CAknSearchField* findbox = NULL;
if ( aListBox && aModel )
{
CAknFilteredTextListBoxModel* model =
STATIC_CAST( CAknFilteredTextListBoxModel*, aModel );
findbox = CAknSearchField::NewL( *this,
aStyle,
NULL,
20 );
CleanupStack::PushL(findbox);
model->CreateFilterL( aListBox, findbox );
CleanupStack::Pop(findbox);
}
return findbox;
}
CGridDemoContainer::~CGridDemoContainer()
{
delete iListBox;
delete iSheetContainer;
delete iStatusContainer;
delete iNumberEditor;
iSmokeYearIndex.ResetAndDestroy();
iSmokeMonthIndex.ResetAndDestroy();
iSmokeRealInfoIndex.ResetAndDestroy();
iSmokeFlowNoIndex.ResetAndDestroy();
iSmokeFlowCodeIndex.ResetAndDestroy();
iSmokeFlowSum.ResetAndDestroy();
iSmokeFlow.ResetAndDestroy();
iTextArray->Reset();
delete iTextArray;
iIndexArray.Reset();
if(iEditFlow)
delete iEditFlow;
iEditFlow = NULL;
if(iFileIsOpen)
{
iFile.Close();
iFileIsOpen = EFalse;
}
}
void CGridDemoContainer::SizeChanged()
{
TRect rect = Rect();
iListBox->SetRect(rect);
if(iIsShowStatus || iIsShowNumberEditor)
{
TInt x = rect.Height() / (ITEM_DEFAULT_HEIGHT-1);
x = (x-1) * (ITEM_DEFAULT_HEIGHT - 1) + 2 ;
rect.iBr.iY = x;
iSheetContainer->SetRect(rect);
rect = Rect();
rect.iTl.iY = x;
iStatusContainer->SetRect(rect);
iNumberEditor->SetRect(rect);
}
else
{
iSheetContainer->SetRect(rect);
iStatusContainer->SetRect(TRect(0,0,0,0));
iNumberEditor->SetRect(TRect(0,0,0,0));
}
DrawDeferred();
}
void CGridDemoContainer::ShowStatus(TBool aVisible)
{
iIsShowStatus = aVisible;
if(iIsShowStatus)
iStatusContainer->MakeVisible(ETrue);
else
iStatusContainer->MakeVisible(EFalse);
SizeChanged();
}
TInt CGridDemoContainer::CountComponentControls() const
{
return 4; // return number of controls inside this container
}
CCoeControl* CGridDemoContainer::ComponentControl(TInt aIndex) const
{
switch (aIndex)
{
case 0:
return iListBox;
case 1:
return iSheetContainer;
case 2:
return iStatusContainer;
case 3:
return iNumberEditor;
default:
return NULL;
}
}
//主容器按键触发事件
TKeyResponse CGridDemoContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
{
if(iNumberEditor->IsVisible())
{
if(aType == EEventKey && aKeyEvent.iCode == EKeyOK)
{
HandleEditOk();
return EKeyWasConsumed;
}
else
{
return iNumberEditor->OfferKeyEventL(aKeyEvent, aType);
}
}
else if(iSheetContainer->IsVisible())
{
if(iAllowEdit && aType == EEventKey)
{
if(aKeyEvent.iCode == EKeyUpArrow || aKeyEvent.iCode == EKeyDownArrow)
{
iSheetContainer->OfferKeyEventL(aKeyEvent, aType);
//UpdateSumText();
return EKeyWasConsumed;
}
}
return iSheetContainer->OfferKeyEventL(aKeyEvent, aType);
}
else
{
return iListBox->OfferKeyEventL (aKeyEvent, aType);
}
}
//选择不同的烟调用此函数更新最上方的数值
void CGridDemoContainer::UpdateSumText()
{
TPoint pos = iSheetContainer->GetCurrentPos();
TPtrC ptr = iSheetContainer->GetText(TPoint(3, pos.iY));
TSmokeFlowSum* flowSum = FindFlowSum(ptr);
TBuf <128> nText;
if(flowSum)
{
nText.Num(flowSum->iCount2);
nText.Append(_L(","));
nText.AppendNum(flowSum->iCount3);
nText.Append(_L(","));
nText.AppendNum(flowSum->iCount8);
nText.Append(_L(","));
nText.AppendNum(flowSum->iCount11);
}
else
{
nText.Copy(_L(""));
}
iMyAppUi->SetNavigationLabelL(nText);
}
void CGridDemoContainer::UpdateSumText2()
{
TBuf <128> nText;
nText.Num(iSmokeFlowSum2.iCount1);
nText.Append(_L(","));
nText.AppendNum(iSmokeFlowSum2.iCount3);
nText.Append(_L(","));
nText.AppendNum(iSmokeFlowSum2.iCount2);
nText.Append(_L(","));
nText.AppendNum(iSmokeFlowSum2.iCount8);
iMyAppUi->SetNavigationLabelL(nText);
}
//主界面功能菜单的选择后调用此方法
void CGridDemoContainer::HandleFunctionCall()
{
iFunctionIndex = iListBox->CurrentItemIndex();
iAllowEdit = EFalse;
switch(iFunctionIndex)
{
case 0:
HandleFunctionOrderCall();
break;
case 1:
HandleFunctionAccountCall();
break;
case 2:
HandleFunctionTypeCall();
break;
case 3:
iStartNumber = 0;
if( ShowUserSheet() )
{
iMyAppUi->SetNavigationLabelL(R_FUNCTION4);
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
break;
case 4:
{
if(InputCodeAndFind())
{
iStartNumber = 0;
if( ShowSmokeRealInfoSheet() )
{
iMyAppUi->SetNavigationLabelL(R_FUNCTION5);
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
}
}
break;
case 5:
iMyAppUi->LoadSmokeInfo();
HandleFunctionInfoCall();
break;
case 6:
iStartNumber = 0;
if ( ShowSmokePlanSheet() )
{
iMyAppUi->SetNavigationLabelL(R_FUNCTION6);
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
break;
case 7:
iStartNumber = 0;
if( ShowSmokeCampaignSheet() )
{
iMyAppUi->SetNavigationLabelL(R_FUNCTION7);
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
break;
default:
break;
}
}
//烟查看功能调用此函数
void CGridDemoContainer::HandleFunctionTypeCall()
{
CDesCArray* array = new (ELeave) CDesCArrayFlat(3);
TBuf<32> buf;
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_ALL);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_1);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_2);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_3);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_4);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_5);
array->AppendL(buf);
MDesCArray* list = STATIC_CAST(MDesCArray*,array);
iEikonEnv->ReadResource(buf, R_SMOKE_TYPE_TITLE);
TInt idx = iMyAppUi->ShowListQueryL(buf, list);
if(idx != KErrNotFound)
{
iIndexArray.Reset();
if(idx == 0)
{
for(TInt i=0; i<iMyAppUi->iSmokeTypes.Count(); i++)
iIndexArray.Append(i);
}
else
{
buf.Zero();
buf.AppendNum(idx);
for(TInt i=0; i<iMyAppUi->iSmokeTypes.Count(); i++)
{
if(iMyAppUi->iSmokeTypes[i]->iType.Compare(buf) == 0)
iIndexArray.Append(i);
}
}
iStartNumber = 0;
ShowTypeSheet();
iMyAppUi->SetNavigationLabelL(R_FUNCTION3);
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
array->Reset();
delete array;
}
//可供货信息查看功能
void CGridDemoContainer::HandleFunctionInfoCall()
{
CDesCArray* array = new (ELeave) CDesCArrayFlat(3);
TBuf<32> buf;
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_ALL);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_1);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_2);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_3);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_4);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_SMOKE_TYPE_5);
array->AppendL(buf);
MDesCArray* list = STATIC_CAST(MDesCArray*,array);
iEikonEnv->ReadResource(buf, R_SMOKE_TYPE_TITLE);
TInt idx = iMyAppUi->ShowListQueryL(buf, list);
if(idx != KErrNotFound)
{
iIndexArray.Reset();
if(idx == 0)
{
for(TInt i=0; i<iMyAppUi->iSmokeInfos.Count(); i++)
iIndexArray.Append(i);
}
else
{
buf.Zero();
buf.AppendNum(idx);
for(TInt i=0; i<iMyAppUi->iSmokeInfos.Count(); i++)
{
TSmokeType* type = iMyAppUi->FindSmokeType(iMyAppUi->iSmokeInfos[i]->iCode);
if(type)
{
if(type->iType.Compare(buf) == 0)
iIndexArray.Append(i);
else
RDebug::Print(_L("type->iType=%S<"), &type->iType);
}
}
}
iStartNumber = 0;
ShowSmokeInfoSheet();
iMyAppUi->SetNavigationLabelL(R_FUNCTION4);
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
array->Reset();
delete array;
}
//输入编码查找用户
TBool CGridDemoContainer::InputCodeAndFind()
{
iOperaterName.Set(0,0);
iOperaterCode.Zero();
TSmokeUser* user = iMyAppUi->SelectUser();
if(user)
{
iOperaterCode.Copy(user->iNo);
iOperaterName.Set(user->iName);
iMyAppUi->SetStatusPaneTitleL(iOperaterName);
return ETrue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -