📄 griddemocontainer.cpp
字号:
return EFalse;
}
void CGridDemoContainer::FindFileBy(const TDesC& aPrevString, CDesCArray* aDisplayArray, CDesCArray* aFileArray)
{
CDir* aFileList;
aDisplayArray->Reset();
aFileArray->Reset();
if (iMyAppUi->FsSession().GetDir(KDefaultDataFolder, KEntryAttMaskSupported,EDirsFirst|ESortByName,aFileList)!=KErrNone)
return;
TBuf<32> myDatFile;
myDatFile = aPrevString;
myDatFile.Append(_L("*.dat"));
TBuf<32> format;
iEikonEnv->ReadResource(format, R_FILE_FORMAT);
for (TInt i=0;i<aFileList->Count();i++)
{
TEntry anEntry = (*aFileList)[i];
TBuf<256> item;
if (!anEntry.IsDir())
{
if(anEntry.iName.MatchF(myDatFile) == KErrNotFound)
continue;
TPtrC ptr = anEntry.iName.Mid(aPrevString.Length(), anEntry.iName.Length() - aPrevString.Length() - 4);
if(ptr.Length() < 6)
{
if(ptr.Length() == 0)
{
iEikonEnv->ReadResource(item, R_THIS_MONTH);
aDisplayArray->InsertL(0, item);
aFileArray->InsertL(0, anEntry.iName);
}
continue;
}
item.Format(format ,&ptr.Left(4), &ptr.Right(2));
aDisplayArray->AppendL(item);
aFileArray->AppendL(anEntry.iName);
}
}
delete aFileList;
}
//订单采集调用此函数
void CGridDemoContainer::HandleFunctionOrderCall()
{
CDesCArray* array = new (ELeave) CDesCArrayFlat(3);
TBuf<32> buf;
iEikonEnv->ReadResourceL(buf, R_ORDER1);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_ORDER2);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_ORDER3);
array->AppendL(buf);
MDesCArray* list = STATIC_CAST(MDesCArray*,array);
iEikonEnv->ReadResource(buf, R_FUNCTION1);
buf.Delete(0,1);
TInt idx = iMyAppUi->ShowListQueryL(buf, list);
if(idx == 0)
HandleFunctionOrderInputCall();
else if(idx == 1)
HandleFunctionOrderViewCall();
else if(idx == 2)
HandleFunctionOrderSumCall();
array->Reset();
delete array;
}
//订单录入
void CGridDemoContainer::HandleFunctionOrderInputCall()
{
TTime time;
time.HomeTime();
TDateTime dt = time.DateTime();
TInt y = dt.Year();
TInt m = dt.Month();
TInt y2;
TInt m2;
TInt day = dt.Day() ;
// if (y>=2007)
// if (m>=3)
// if (day>=9)
// return;
y2 = y;
if(m == 11)
{
y2 = y+1;
m2 = 1;
}
else
m2 = m+2;
TBuf<256> thisMonthFile;
TBuf<256> nextMonthFile;
_LIT(KFileNameFormat, "flow%4d%02d.dat");
nextMonthFile.Format(KFileNameFormat, y2, m2);
iMyAppUi->CompleteWithDataPath(nextMonthFile);
TBool nextMonthFileExists = BaflUtils::FileExists(iMyAppUi->FsSession(), nextMonthFile);
y = dt.Year();
m = dt.Month();
thisMonthFile.Format(KFileNameFormat, y, m + 1);
iMyAppUi->CompleteWithDataPath(thisMonthFile);
TBool thisMonthFileExists = BaflUtils::FileExists(iMyAppUi->FsSession(), thisMonthFile);
TInt idx;
if(thisMonthFileExists && nextMonthFileExists)
{
CDesCArray* monthArray = new (ELeave) CDesCArrayFlat(2);
TBuf<32> bf;
iEikonEnv->ReadResource(bf, R_THIS_MONTH);
monthArray->AppendL(bf);
iEikonEnv->ReadResource(bf, R_NEXT_MONTH);
monthArray->AppendL(bf);
MDesCArray* monthList = STATIC_CAST(MDesCArray*,monthArray);
TBuf<32> buf;
iEikonEnv->ReadResource(buf, R_SELECT_ORDER);
idx = iMyAppUi->ShowListQueryL(buf, monthList) ;
monthArray->Reset();
delete monthArray;
if(idx == KErrNotFound)
return ;
if(idx == 0)
iTempFilename = thisMonthFile;
else
iTempFilename = nextMonthFile;
}
else if(nextMonthFileExists)
{
iTempFilename = nextMonthFile;
}
else if(thisMonthFileExists)
{
iTempFilename = thisMonthFile;
}
else
{
iMyAppUi->ShowInformationNoteL(R_FILE_NO_FOUND);
return;
}
idx = GetFlowViewMode();
if(idx == KErrNotFound)
return;
//按用户编号查看订单数据
if(idx == 0)
{
TSmokeUser* user = iMyAppUi->SelectUser();
if(user)
{
// LoadFlowSum(iTempFilename);
if(!LoadFlowNoIndex(iTempFilename))
{
iMyAppUi->ShowInformationNoteL(R_INDEX_ERROR);
return;
}
if(!LoadFlow(iTempFilename, user->iNo, ETrue))
{
iMyAppUi->ShowInformationNoteL(R_FILE_NO_FOUND);
return;
}
//统计订单数据
SumFlowData2();
if(ShowSmokeFlowSheet())
{
//UpdateSumText();
UpdateSumText2();
iAllowEdit = ETrue;
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
}
}
//按烟查询订单数据
else if(idx == 1)
{
TSmokeType* type = iMyAppUi->SelectSmoke();
if(type)
{
//LoadFlowSum(iTempFilename);
if(!LoadFlowCodeIndex(iTempFilename))
{
iMyAppUi->ShowInformationNoteL(R_INDEX_ERROR);
return;
}
if(!LoadFlow(iTempFilename, type->iCode, EFalse))
{
iMyAppUi->ShowInformationNoteL(R_FILE_NO_FOUND);
return;
}
if(ShowSmokeFlowSheet())
{
//UpdateSumText();
iAllowEdit = ETrue;
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
}
}
}
TBool CGridDemoContainer::LoadFlow(const TDesC& aFilename, const TDesC& aFilterCode, TBool aIsUser)
{
TInt i,j;
iIndexArray.Reset();
TBuf<32> tmpBuf;
if(aIsUser)
{
for(i=0; i<iSmokeFlowNoIndex.Count(); i++)
{
tmpBuf.Copy(iSmokeFlowNoIndex[i]->iNo);
if(tmpBuf.Compare(aFilterCode) == 0)
{
for(j=0; j<iSmokeFlowNoIndex[i]->iLineArray.Count(); j++)
iIndexArray.Append( iSmokeFlowNoIndex[i]->iLineArray[j] );
return ETrue;
}
}
}
else
{
for(i=0; i<iSmokeFlowCodeIndex.Count(); i++)
{
tmpBuf.Copy(iSmokeFlowCodeIndex[i]->iCode);
if(tmpBuf.Compare(aFilterCode) == 0)
{
for(j=0; j<iSmokeFlowCodeIndex[i]->iLineArray.Count(); j++)
iIndexArray.Append( iSmokeFlowCodeIndex[i]->iLineArray[j] );
return ETrue;
}
}
}
return EFalse;
}
//选择按编号查用户订单数据或是按烟查订单数据
TInt CGridDemoContainer::GetFlowViewMode()
{
CDesCArray* monthArray = new (ELeave) CDesCArrayFlat(2);
TBuf<32> buf;
iEikonEnv->ReadResource(buf, R_INPUT_MODE_NO);
monthArray->AppendL(buf);
iEikonEnv->ReadResource(buf, R_INPUT_MODE_TYPE);
monthArray->AppendL(buf);
MDesCArray* monthList = STATIC_CAST(MDesCArray*,monthArray);
TInt idx;
iEikonEnv->ReadResource(buf, R_SELECT_ORDER);
idx = iMyAppUi->ShowListQueryL(buf, monthList) ;
monthArray->Reset();
delete monthArray;
return idx;
}
//订单查询
void CGridDemoContainer::HandleFunctionOrderViewCall()
{
CDesCArray* monthArray = new (ELeave) CDesCArrayFlat(10);
CDesCArray* fileArray = new (ELeave) CDesCArrayFlat(10);
FindFileBy(_L("flow"), monthArray, fileArray);
MDesCArray* monthList = STATIC_CAST(MDesCArray*,monthArray);
TBuf<32> buf;
TInt idx;
iEikonEnv->ReadResource(buf, R_SELECT_ORDER);
idx = iMyAppUi->ShowListQueryL(buf, monthList) ;
if(idx != KErrNotFound)
{
TSmokeUser* user = iMyAppUi->SelectUser();
if(user)
{
iTempFilename = (*fileArray)[idx];
iMyAppUi->CompleteWithDataPath(iTempFilename);
if(!LoadFlowNoIndex(iTempFilename))
{
iMyAppUi->ShowInformationNoteL(R_INDEX_ERROR);
return;
}
if(!LoadFlow(iTempFilename, user->iNo, ETrue))
{
iMyAppUi->ShowInformationNoteL(R_FILE_NO_FOUND);
return;
}
if(ShowSmokeFlowSheet())
{
iAllowEdit = EFalse;
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
}
}
monthArray->Reset();
delete monthArray;
fileArray->Reset();
delete fileArray;
}
//订单统计
void CGridDemoContainer::HandleFunctionOrderSumCall()
{
CDesCArray* monthArray = new (ELeave) CDesCArrayFlat(10);
CDesCArray* fileArray = new (ELeave) CDesCArrayFlat(10);
FindFileBy(_L("flow"), monthArray, fileArray);
MDesCArray* monthList = STATIC_CAST(MDesCArray*,monthArray);
TBuf<32> buf;
TInt idx;
iEikonEnv->ReadResource(buf, R_SELECT_ORDER);
idx = iMyAppUi->ShowListQueryL(buf, monthList) ;
if(idx != KErrNotFound)
{
iTempFilename = (*fileArray)[idx];
iMyAppUi->CompleteWithDataPath(iTempFilename);
if(ShowSmokeFlowSumSheet(iTempFilename))
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
monthArray->Reset();
delete monthArray;
fileArray->Reset();
delete fileArray;
}
//台帐查询
void CGridDemoContainer::HandleFunctionAccountCall()
{
CDesCArray* array = new (ELeave) CDesCArrayFlat(3);
TBuf<32> buf;
iEikonEnv->ReadResourceL(buf, R_TZ_MONTH);
array->AppendL(buf);
iEikonEnv->ReadResourceL(buf, R_TZ_YEAR);
array->AppendL(buf);
MDesCArray* list = STATIC_CAST(MDesCArray*,array);
iEikonEnv->ReadResource(buf, R_FUNCTION2);
TInt idx = iMyAppUi->ShowListQueryL(buf, list) ;
if(idx != KErrNotFound)
{
if(idx == 0)
HandleFunctionMonthAccountCall();
else
HandleFunctionYearAccountCall();
}
array->Reset();
delete array;
}
//月台帐查询
void CGridDemoContainer::HandleFunctionMonthAccountCall()
{
CDesCArray* monthArray = new (ELeave) CDesCArrayFlat(10);
CDesCArray* fileArray = new (ELeave) CDesCArrayFlat(10);
FindFileBy(_L("month"), monthArray, fileArray);
MDesCArray* monthList = STATIC_CAST(MDesCArray*,monthArray);
TBuf<32> buf;
TInt idx;
iEikonEnv->ReadResource(buf, R_TZ_MONTH);
idx = iMyAppUi->ShowListQueryL(buf, monthList) ;
if(idx != KErrNotFound)
{
if(InputCodeAndFind())
{
iTempFilename = (*fileArray)[idx];
iMyAppUi->CompleteWithDataPath(iTempFilename);
if(ShowSmokeMonthSheet(iTempFilename))
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
}
monthArray->Reset();
delete monthArray;
fileArray->Reset();
delete fileArray;
}
//年台帐查询
void CGridDemoContainer::HandleFunctionYearAccountCall()
{
CDesCArray* yearArray = new (ELeave) CDesCArrayFlat(3);
TBuf<32> buf;
TInt idx;
iEikonEnv->ReadResource(buf, R_ACCOUNT_PH_YEAR);
yearArray->AppendL(buf);
iEikonEnv->ReadResource(buf, R_ACCOUNT_LH_YEAR);
yearArray->AppendL(buf);
MDesCArray* yearList = STATIC_CAST(MDesCArray*,yearArray);
iEikonEnv->ReadResource(buf, R_TZ_YEAR);
idx = iMyAppUi->ShowListQueryL(buf, yearList) ;
if(idx != KErrNotFound)
{
if(InputCodeAndFind())
{
iYearAccountFlag = idx;
if(ShowSmokeYearSheet(iYearAccountFlag))
iMyAppUi->ChangeCBA(R_SHEET_CBA, R_SHEET_MENUBAR);
}
}
yearArray->Reset();
delete yearArray;
}
void CGridDemoContainer::ShowFunctionList()
{
ResetSheet();
InitFunctionList();
iListBox->HandleItemAdditionL();
iListBox->SetCurrentItemIndex(iFunctionIndex);
iFunctionShowType = EFunctionTypeMain;
iSheetContainer->MakeVisible(EFalse);
iStatusContainer->MakeVisible(EFalse);
iListBox->MakeVisible(ETrue);
if(iFileIsOpen)
{
iFile.Close();
iFileIsOpen = EFalse;
}
iFileSize = 0;
iRecordRowCount = 0;
}
void CGridDemoContainer::ResetSheet()
{
iStartNumber = 0;
iRecordRowOffset = 0;
iRecordRowCount = 0;
iSheetContainer->Reset();
iSheetShowType = EShowSheetSmokeNone;
}
TBool CGridDemoContainer::ShowSmokePlanSheet()
{
if(iSheetShowType != EShowSheetSmokePlan)
{
TBuf<32> buf;
TInt idx;
CDesCArray* planArray = new (ELeave) CDesCArrayFlat(10);
CDesCArray* fileArray = new (ELeave) CDesCArrayFlat(10);
FindFileBy(_L("smokeplan"), planArray, fileArray);
MDesCArray* planList = STATIC_CAST(MDesCArray*,planArray);
iEikonEnv->ReadResource(buf, R_FUNCTION6);
buf.Delete(0,1);
idx = iMyAppUi->ShowListQueryL(buf, planList) ;
if(idx == KErrNotFound)
{
planArray->Reset();
delete planArray;
fileArray->Reset();
delete fileArray;
return EFalse;
}
TPtrC ptr = (*fileArray)[idx];
if(iFileIsOpen)
{
iFile.Close();
iFileIsOpen = EFalse;
}
TBuf<256> filename;
filename = (*fileArray)[idx];
iMyAppUi->CompleteWithDataPath(filename);
planArray->Reset();
delete planArray;
fileArray->Reset();
delete fileArray;
if(!BaflUtils::FileExists(iMyAppUi->FsSession(), filename))
{
iMyAppUi->ShowInformationNoteL(R_FILE_NO_FOUND);
return EFalse;
}
User::LeaveIfError(iFile.Open(iMyAppUi->FsSession(), filename, EFileRead));
iFile.Size(iFileSize);
iRecordRowCount = iFileSize / TSmokePlan::Size();
if(iRecordRowCount == 0)
{
iMyAppUi->ShowInformationNoteL(R_FILE_SIZE_ERROR);
iFile.Close();
return EFalse;
}
iFileIsOpen = ETrue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -