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

📄 classscheduleappui.cpp

📁 《基于symbian os的手机开发与应用》
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/*
* ============================================================================
*  Name     : CClassScheduleAppUi from ClassScheduleAppUi.cpp
*  Part of  : ClassSchedule
*  Created  : 2005-8-30 by 
*  Implementation notes:
*     Initial content was generated by Series 60 AppWizard.
*  Version  :
*  Copyright: 
* ============================================================================
*/

// INCLUDE FILES
#include "ClassScheduleAppUi.h"
#include "ClassScheduleContainer.h" 
#include "ClassScheduleDB.h"
#include "ClassSchedule.hrh"

#include <aknlists.h>
#include <aknPopup.h> 
#include <eikbtgpc.h>
#include <ClassSchedule.rsg>
#include <avkon.hrh>
#include <aknquerydialog.h> 
#include <aknglobalnote.h> 
#include <aknmessagequerydialog.h> 
#include <eikmenup.h>
#include <akntitle.h>

_LIT(KColon, ": ");
_LIT(KEnter, "\n");

//-----------------------------------------------
//显示提示信息
//-----------------------------------------------

void ShowNotify(TDesC &aBuf)    
{
    TRequestStatus status;	  //TRequestStatus:当操作完成的时候请求的状态也随之完成终结  
    CAknGlobalNote* globalNote = CAknGlobalNote::NewLC();
    globalNote->ShowNoteL(status, EAknGlobalInformationNote, aBuf );	//显示提示信息
    User::WaitForRequest(status);										//等待请求
    CleanupStack::PopAndDestroy();
}

// ================= MEMBER FUNCTIONS =======================
//
// ----------------------------------------------------------
// CClassScheduleAppUi::ConstructL()
// ?implementation_description
// ----------------------------------------------------------

void CClassScheduleAppUi::ConstructL()
{
    iDB = new(ELeave) CClassScheduleDB();	//给成员变量分配空间 
    
    BaseConstructL();						//调用基类的第二阶段构造函数
    
    CEikStatusPane* sp = StatusPane();

    iNaviPane = (CAknNavigationControlContainer*)sp->ControlL( 
        TUid::Uid(EEikStatusPaneUidNavi)); 
	//返回一个CEikStatusPane类型的ID号,强制转换成CAknNavigationControlContainer类型
    
    iDecoratedTabGroup = iNaviPane->ResourceDecorator();
    if (iDecoratedTabGroup)
    {
        iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl();
		//在导航窗格中得到当前标签组(控制中的)
    }
    
    iTabGroup->SetActiveTabByIndex(iDB->iWeekId);			//加亮活跃标签
    
    iAppContainer = new (ELeave) CClassScheduleContainer;
    iAppContainer->SetMopParent(this);						//设置父类
    iAppContainer->ConstructL( ClientRect(), this);
    AddToStackL( iAppContainer );
    
    CheckCurCourse();										//检查当前课程
}

// ----------------------------------------------------
// CClassScheduleAppUi::~CClassScheduleAppUi()
// Destructor
// Frees reserved resources
// ----------------------------------------------------

CClassScheduleAppUi::~CClassScheduleAppUi()
{
    delete iDecoratedTabGroup;
    
    if (iAppContainer)
    {
        RemoveFromStack( iAppContainer );
        delete iAppContainer;
    }
    delete iDB;
}

// ------------------------------------------------------------------------------
// CClassScheduleAppUi::::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
// 这个函数仅在显示菜单前被 EIKON 结构调用。它的默认命令空,可以忽略不记。
//应用程序可以根据应用程序数据的状态激活菜单的各个项。
// 包含处理菜单条的亮/ 暗
// ------------------------------------------------------------------------------

void CClassScheduleAppUi::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
{
    if(aResourceId==R_CLASSSCHEDULE_MENU)
    {
        if(iIsSearchStatus)
        {
            aMenuPane->SetItemDimmed(EClassScheduleCmdAppModify, ETrue);
            aMenuPane->SetItemDimmed(EClassScheduleCmdAppDelete, ETrue);
            aMenuPane->SetItemDimmed(EClassScheduleCmdAppDeleteAll, ETrue);
            aMenuPane->SetItemDimmed(EClassScheduleCmdAppSearch, ETrue);
        }
    }
}

// ----------------------------------------------------
// CClassScheduleAppUi::HandleKeyEventL(
//     const TKeyEvent& aKeyEvent,TEventCode /*aType*/)
// ?implementation_description
// ----------------------------------------------------

TKeyResponse CClassScheduleAppUi::HandleKeyEventL(
                                  const TKeyEvent& aKeyEvent,TEventCode /*aType*/)
{
    if ( iTabGroup == NULL )
    {
        return EKeyWasNotConsumed;
    }
    
    TInt active = iTabGroup->ActiveTabIndex();	//返回当前活跃标签的索引
    TInt count = iTabGroup->TabCount();			//标签数组中标签的个数
    
    switch ( aKeyEvent.iCode )
    {
    case EKeyLeftArrow:
        if ( active > 0 )
        {
            active--;
            iTabGroup->SetActiveTabByIndex( active );
        }
        break;
    case EKeyRightArrow:
        if( (active + 1) < count )
        {
            active++;
            iTabGroup->SetActiveTabByIndex( active );
        }
        break;
    default:
        return EKeyWasNotConsumed;
        break;
    }
    
    return EKeyWasConsumed;
}

// ----------------------------------------------------
// CClassScheduleAppUi::HandleCommandL(TInt aCommand)
// ?implementation_description
// ----------------------------------------------------

void CClassScheduleAppUi::HandleCommandL(TInt aCommand)
{
    switch ( aCommand )
    {
    case EAknSoftkeyExit:   //back键
        if(iIsSearchStatus)
        {
            iAppContainer->CreateListBoxL();
            iAppContainer->SetCurrentItemIndex(0);
            CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
            TName title;
            CAknTitlePane* iTitlePane = (CAknTitlePane *)sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
            CEikonEnv::Static()->ReadResource(title, R_QTN_APP_CAPTION_STRING);   
			//从资源文件获取title的信息

            iTitlePane->SetTextL(title);
            break;
        }
    case EEikCmdExit:
        Exit();
        break;
    case EClassScheduleCmdAppDetail:
        if(iIsSearchStatus)     //查寻详细信息
            CmdSearchDetail();
        else
            CmdDetail();
        break;
    case EClassScheduleCmdAppModify:
        CmdModify();
        break;
    case EClassScheduleCmdAppDelete:
        CmdDelete();
        break;
    case EClassScheduleCmdAppDeleteAll:
        CmdDeleteAll();
        break;
    case EClassScheduleCmdAppSearchForName:
        CmdSearchForName();
        break;
    case EClassScheduleCmdAppSearchForAddr:
        CmdSearchForAddr();
        break;
    case EClassScheduleCmdAppSearchForTime:
        CmdSearchForTime();
        break;
    case EClassScheduleCmdAppSearchForTeacher:
        CmdSearchForTeacher();
        break;
    case EClassScheduleCmdAppSearchForRemark:
        CmdSearchForRemark();
        break;
    default:
        break;      
    }
}

//----------------------------------------------
//向前
//----------------------------------------------

void CClassScheduleAppUi::CmdPrev()
{
    TInt active = iTabGroup->ActiveTabIndex();	//返回当前活跃标签的索引
    TInt count = iTabGroup->TabCount();			//标签数组中标签的个数
    
    if(active > 0)
    {
        active --;
    }
    else
    {
        active = count - 1;
    }
    iTabGroup->SetActiveTabByIndex(active);		//加亮活跃标签

    iDB->iWeekId = (TWeekId)active;				//iweekId TInt 型记录星期的值

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -