⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classscheduleappui.cpp

📁 《基于symbian os 的手机开发与应用》 源代码 何伟 著
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    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 + -