📄 classscheduleappui.cpp
字号:
iAppContainer->CreateListBoxL();
iAppContainer->SetCurrentItemIndex(0);
}
//----------------------------------------------
//向后
//----------------------------------------------
void CClassScheduleAppUi::CmdNext()
{
TInt active = iTabGroup->ActiveTabIndex(); //返回当前活跃标签的索引
TInt count = iTabGroup->TabCount(); //标签数组中标签的个数
if( (active + 1) < count )
{
active ++;
}
else
{
active = 0;
}
iTabGroup->SetActiveTabByIndex( active ); //加亮活跃标签
iDB->iWeekId = (TWeekId)active; //iweekId TInt 型记录星期的值
iAppContainer->CreateListBoxL();
iAppContainer->SetCurrentItemIndex(0);
}
//--------------------------------------------------
//修改
//--------------------------------------------------
void CClassScheduleAppUi::CmdModify()
{
TName tips;
TInt courseInfoId = 0;
for(;;)
{
if(ShowPopListBox(R_STR_MODIFY, &courseInfoId)) //两个TInt 参数分别表示:题目资源Id 和选择的索引
{
CArrayFixFlat<TClassScheduleDBStruct>* arrayDay = (CArrayFixFlat<TClassScheduleDBStruct>*)iDB->iArray->At(iDB->iWeekId);
TClassScheduleDBStruct &db = arrayDay->At(iAppContainer->GetCurrentItemIndex());
// arrayDay 在数据库中定义 CArrayFixFlat<TClassScheduleDBStruct>* arrayDay = NULL;
if(courseInfoId==ECourseTime) //如果选择了修改时间
{
TTime value(db.iTime);
CAknTimeQueryDialog* dlg = CAknTimeQueryDialog::NewL( value, CAknQueryDialog::ENoTone );
CleanupStack::PushL(dlg);
CEikonEnv::Static()->ReadResource(tips, courseInfoId+R_STR_COURSE_NAME);
dlg->SetPromptL(tips);
CleanupStack::Pop(); //dlg
if(dlg->ExecuteLD( R_DIALOG_TIME_QUERY ))
{
db.iTime = value.Int64(); //将输入的时间赋给数据库成员变量
iDB->SaveDBL(); //调用数据库中的保存
}
}
else //其余项保持不变
{
TName name;
switch(courseInfoId)
{
case ECourseName:
name.Copy(db.iName);
break;
case ECourseAddr:
name.Copy(db.iAddr);
break;
case ECourseTeacher:
name.Copy(db.iTeacher);
break;
case ECourseRemark:
name.Copy(db.iRemark);
break;
}
CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL(name, CAknQueryDialog::ENoTone);
CEikonEnv::Static()->ReadResource(tips, courseInfoId+R_STR_COURSE_NAME);
dlg->SetPromptL(tips);
if (dlg->ExecuteLD(R_DIALOG_INPUT)) //修改课程名\上课时间\地点\任课教师\备注
{
switch(courseInfoId)
{
case ECourseName:
db.iName = name;
break;
case ECourseAddr:
db.iAddr = name;
break;
case ECourseTeacher:
db.iTeacher = name;
break;
case ECourseRemark:
db.iRemark = name;
break;
}
iDB->SaveDBL();
}
}
}
else //不做修改时的情况
{
iAppContainer->CreateListBoxL();
break;
}
}
}
//------------------------------------------------------
// 详细信息
//------------------------------------------------------
void CClassScheduleAppUi::CmdDetail()
{
DetailDB(iDB->iWeekId, iAppContainer->GetCurrentItemIndex());
//参数表示:星期几第几节课
}
void CClassScheduleAppUi::DetailDB(TInt aWeekId, TInt aLessonId)
{
TName tips;
TBuf<32> noneText;
CEikonEnv::Static()->ReadResource(noneText, R_STR_NONE);
CArrayFixFlat<TClassScheduleDBStruct>* arrayDay = (CArrayFixFlat<TClassScheduleDBStruct>*)iDB->iArray->At(aWeekId); //从数据库中读取选择的是星期几
TClassScheduleDBStruct &db = arrayDay->At(aLessonId); //所选择的课程信息赋给db
HBufC *text = HBufC::NewL(1024); //分配一个HBufC类型的,1024个字节大小的text 描述符,用来装要查看的课程信息
CEikonEnv::Static()->ReadResource(tips, R_STR_COURSE_NAME); //从资源文件中获取: "课程名"
text->Des().Copy(tips); //把从资源文件中读取的"课程名"拷贝的text中
text->Des().Append(KColon); //在"课程名后"加上冒号
if(db.iName.Length()==0) //如果选择课程为空加上一个空的信息
text->Des().Append(noneText);
else //如果有信息从数据库中获取查询的课程名添加在冒号后
text->Des().Append(db.iName);
text->Des().Append(KEnter); // 回车换行
CEikonEnv::Static()->ReadResource(tips, R_STR_COURSE_TIME); //从资源文件中获取: "上课时间"
text->Des().Append(tips); //把从资源文件中获取的"上课时间"添加到text末尾
text->Des().Append(KColon); //在"上课时间"后加上冒号
tips.Copy(GetTimeStringFromTInt64(db.iTime)); //从数据库中获取要查询的课程的上课时间拷贝到tips
text->Des().Append(tips); //将tips 中的信息添加在text末尾
text->Des().Append(KEnter); //回车换行
CEikonEnv::Static()->ReadResource(tips, R_STR_COURSE_CLASSROOM); //从资源文件中获取: "上课地点"
text->Des().Append(tips); //把从资源文件中读取的"上课地点"添加到text末尾
text->Des().Append(KColon); //在"上课地点"后加上冒号
if(db.iAddr.Length()==0) //如果上课地点信息为空
text->Des().Append(noneText); //在冒号后加上空信息(显示信息为空白)
else //如果有信息
text->Des().Append(db.iAddr); //从数据库中获取上课地点并且加到text末尾
text->Des().Append(KEnter); //回车换行
CEikonEnv::Static()->ReadResource(tips, R_STR_COURSE_TEACHER); //从资源文件中获取: "授课教师"
text->Des().Append(tips); //把从资源文件中读取的"授课教师"添加到text末尾
text->Des().Append(KColon); //在"授课教师"后加上冒号
if(db.iTeacher.Length()==0) //如果授课教师信息为空
text->Des().Append(noneText); //在冒号后加上空信息(显示信息为空白)
else //如果有信息
text->Des().Append(db.iTeacher);//从数据库中获取授课教师并且加到text末尾
text->Des().Append(KEnter); //回车换行
CEikonEnv::Static()->ReadResource(tips, R_STR_COURSE_REMARK);//从资源文件中获取: "备注"
text->Des().Append(tips); //把从资源文件中读取的"备注"添加到text末尾
text->Des().Append(KColon); //在"备注"后加上冒号
if(db.iRemark.Length()==0) //如果备注信息为空
text->Des().Append(noneText); //在冒号后加上空信息(显示信息为空白)
else //如果备注中有信息
text->Des().Append(db.iRemark); //从数据库中获取备注并且加到text末尾
CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL(text->Des()); //定义一个显示信息的查询对话框
dlg->PrepareLC(R_MESSAGE_QUERY); //准备对话框,从指定的资源中构造它
TBuf<32> headText;
CEikonEnv::Static()->ReadResource(headText, aWeekId+R_STR_WEEK_1); //从资源文件中获取要查询的星期的信息
tips.Copy(headText); //把从资源文件中获取的星期的信息拷贝到tips
CEikonEnv::Static()->ReadResource(headText, aLessonId+R_STR_LESSON_01); //从资源文件中要查询的课程是改天的第几节课程的信息
tips.Append(_L(" ")); //在星期后加上空格
tips.Append(headText); // 把从资源文件获取的第几节课的信息加到空格的后面
dlg->QueryHeading()->SetTextL(tips);//返回指针: 查询的标题或null
dlg->RunLD(); //显示和摧毁对话框
delete text; //删除text
}
void CClassScheduleAppUi::CmdSearchDetail()
{
TInt weekid = EWeek1;
TInt lessonid = ECourse01;
TInt i = 0;
for(weekid=EWeek1; weekid<=EWeek7; weekid++) //循环从周一到周末
{
for(lessonid=ECourse01;lessonid<=ECourse10;lessonid++) //循环从第一节课到第十节课
{
if(iIsSearchFlag[weekid][lessonid]) //如果查询的课程合法
{
if(i==iCurSearchItemIndex) //如果找到查询的课程的索引
{
DetailDB(weekid, lessonid); //显示详细信息
return;
}
else // 如果没有找到i++ 继续查找
i ++;
}
}
}
}
//------------------------------------------------------
//删除信息
//------------------------------------------------------
void CClassScheduleAppUi::CmdDelete()
{
TName tips, text;
CArrayFixFlat<TClassScheduleDBStruct>* arrayDay = (CArrayFixFlat<TClassScheduleDBStruct>*)iDB->iArray->At(iDB->iWeekId);
TClassScheduleDBStruct &db = arrayDay->At(iAppContainer->GetCurrentItemIndex());
CEikonEnv::Static()->ReadResource(tips, R_STR_DELETE_TIPS);
//从资源文件获取"是否删除'显示你要删除的课程名'"
text.Format(tips, &db.iName);
CAknQueryDialog* dlg = new(ELeave) CAknQueryDialog(text,CAknQueryDialog::EWarningTone); //定义一个CAknQueryDialog类型的对话框变量
if(dlg->ExecuteLD(R_DIALOG_DELETE_QUERY)) //如果点击Yes/OK
{
db.iAddr.SetLength(0); //将上课地点的数据长度置为0
db.iName.SetLength(0); //将课程名的数据长度置为0
db.iTeacher.SetLength(0); // 将授课教师的数据长度置为0
db.iRemark.SetLength(0); //将备注的数据长度置为0
db.iTime.Set(0, 0); //将时间的值置为0
iDB->SaveDBL(); //保存到数据库中
CEikonEnv::Static()->ReadResource(tips, R_STR_DELETE_OK); //从资源文件获取"删除成功"
ShowNotify(tips); //显示提示对话框
iAppContainer->CreateListBoxL();
}
}
void CClassScheduleAppUi::CmdDeleteAll()
{
TName tips;
CEikonEnv::Static()->ReadResource(tips, R_STR_DELETE_ALL); //从资源文件获取"是否全部删除"
CAknQueryDialog* dlg = new(ELeave) CAknQueryDialog(tips,CAknQueryDialog::EWarningTone); //定义一个CAknQueryDialog 类型的对话框变量
if(dlg->ExecuteLD(R_DIALOG_DELETE_QUERY)) //如果点击Yes/OK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -