POS小商城C++


#include "syInc.h"

#ifdef 窗口交易點

    /*****************************
        點擊事件
    ******************************/
    class CPosUiTypeAddBtnClickListener:public CSyViewClickListener{
    
    public:
        // 構造
        CPosUiTypeAddBtnClickListener(CPosUiTypeAddDlg * lpclObj){
            m_lpclOuterDlg = lpclObj;
        }
        virtual ~CPosUiTypeAddBtnClickListener(){
        }
        // 點擊
        syMsgRetE onClick(CSyView * lpclView){
            CPosUiTypeAddDlg * lpclDlg = m_lpclOuterDlg;
            if(NULL != lpclView && NULL != lpclDlg){
                switch(lpclView->getID()){
                    // 功能選擇
                    case(CPosUiTypeAddDlg::CTRL_ID_FUNCTION):{
                        lpclDlg->clickFunction();
                        break;
                    }
                    // 管理主頁
                    case(CPosUiTypeAddDlg::CTRL_ID_ADMIN_INDEX):{
                        lpclDlg->clickAdminIndex();
                        break;
                    }
                    // 商店管理
                    case(CPosUiTypeAddDlg::CTRL_ID_STORE_ADMIN):{
                        lpclDlg->clickStoreAdmin();
                        break;
                    }
                    // 商品類別
                    case(CPosUiTypeAddDlg::CTRL_ID_GOODS_TYPE):{
                        lpclDlg->clickGoodsType();
                        break;
                    }
                    // 重置按鈕
                    case(CPosUiTypeAddDlg::CTRL_ID_RESET):{
                        lpclDlg->clickReset();
                        break;
                    }
                    // 退格按鈕
                    case(CPosUiTypeAddDlg::CTRL_ID_BACKSPACE):{
                        lpclDlg->clickBackspace();
                        break;
                    }
                    // 保存按鈕
                    case(CPosUiTypeAddDlg::CTRL_ID_SAVE):{
                        lpclDlg->clickSave();
                        break;
                    }
                    // 返回按鈕
                    case(CPosUiTypeAddDlg::CTRL_ID_RETURN):{
                        lpclDlg->clickReturn();
                        break;
                    }
                    // 關閉按鈕
                    case(CPosUiTypeAddDlg::CTRL_ID_CLOSE):{
                        lpclDlg->clickClose();
                        break;
                    }
                    // 類別顯示框
                    case(CPosUiTypeAddDlg::CTRL_ID_TYPE_SHOW_FRAME):{
                        lpclDlg->clickTypeShowFrame();
                        break;
                    }
                    // 類別編輯框
                    case(CPosUiTypeAddDlg::CTRL_ID_TYPE_EDIT_FRAME):{
                        lpclDlg->clickEditFrame(lpclView);
                        break;
                    }
                    // 是否啓用按鈕
                    case(CPosUiTypeAddDlg::CTRL_ID_IS_ENABLE):{
                        lpclDlg->clickIsEnable(lpclView);
                        break;
                    }
                    default:
                        break;
                }
            }
            return SY_MSG_RET_PROC_OK;
        }
    private:
        CPosUiTypeAddDlg * m_lpclOuterDlg;
    };


    /*****************************
        構造
    ******************************/
    CPosUiTypeAddDlgInstanceState::CPosUiTypeAddDlgInstanceState(){    
        m_bIsFocusShowed = CPosUiGoodsTypeDlg::FOCUS_SHOW_FLG_VALUE_ERR_NOT_EXIST;
        m_bTypeFlg = CPosUiGoodsTypeDlg::GOODS_TYPE_VALUE_ERR_NOT_EXIST;
        m_bTypeValue = CPosUiGoodsTypeDlg::TYPE_VALUE_ERR_NOT_EXIST;
        m_bGoodsTypeFirstGradeFocusViewItemCnt = 0;
        m_bGoodsTypeFirstGradeFocusPage = 0;
        m_bCurrentFocusID = 0;
        m_bCurrentParentedFocusID = 0;
        m_bGoodsTypeLastViewItemCnt = 0;
        m_bGoodsTypeLastPage = 0;
    }
    /*****************************
        析構
    ******************************/
    CPosUiTypeAddDlgInstanceState::~CPosUiTypeAddDlgInstanceState(){    
    }
    
    /*****************************
        構造
    ******************************/
    CPosUiTypeAddDlg::CPosUiTypeAddDlg(CSyViewCtx * lpclCtx):CSyViewDlg(lpclCtx){
        m_bStatusValue = ENABLE_VALUE;
    }
    /*****************************
        析構
    ******************************/
    CPosUiTypeAddDlg::~CPosUiTypeAddDlg(){    
    }    
    /*****************************
        獲得返回信息實例狀態
    ******************************/
    CSyViewDlgInstanceState * CPosUiTypeAddDlg::obtainBackInfoInstanceState(){
        
        CPosUiTypeAddDlgInstanceState * lpclState = new CPosUiTypeAddDlgInstanceState();
        if(NULL != lpclState){
            CPosUiTypeAddDlgInstanceState * lpclTypeAddState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
            if(NULL != lpclTypeAddState){
                // 類別值
                syDbgMsg("m_bTypeValue = %d\n", lpclTypeAddState->getTypeValue());
                lpclState->setTypeValue(lpclTypeAddState->getTypeValue());
                // 顯示標誌
                syDbgMsg("m_bIsFocusShowed = %d\n", lpclTypeAddState->getFocusShowFlg());
                lpclState->setFocusShowFlg(lpclTypeAddState->getFocusShowFlg());

                if(CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_ENABLE_VALUE == lpclState->getFocusShowFlg()
                   || CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_ENABLE_VALUE == lpclState->getFocusShowFlg()){
                    lpclState->setCurrentFocusID(lpclTypeAddState->getCurrentFocusID());
                }
                if(CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == lpclState->getFocusShowFlg()){
                    lpclState->setCurrentParentedFocusID(lpclTypeAddState->getCurrentParentedFocusID());
                }

                if(CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == lpclState->getFocusShowFlg()
                   || CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == lpclState->getFocusShowFlg()){
                    lpclState->setGoodsTypeLastPage(lpclTypeAddState->getGoodsTypeLastPage());
                    lpclState->setGoodsTypeLastViewItemCnt(lpclTypeAddState->getGoodsTypeLastViewItemCnt());
                }
            }
            
            // 類別顯示框    
            CSyViewText* lpclTypeShowFrameText = dynamic_cast<CSyViewText*>(this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_TYPE_SHOW_FRAME));        
            if(NULL != lpclTypeShowFrameText){
                lpclState->m_clstrTypeShowFrame.setStr(lpclTypeShowFrameText->getString());
            }
            // 類別名稱編輯區
            CSyViewText* lpclTypeEditFrameText = dynamic_cast<CSyViewText*>(this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_TYPE_EDIT_FRAME));        
            if(NULL != lpclTypeEditFrameText){
                lpclState->m_clstrTypeEditFrame.setStr(lpclTypeEditFrameText->getString());
            }            
        }
        
        return lpclState;
    }
    /*****************************
        獲得實例狀態
    ******************************/
    CPosUiTypeAddDlgInstanceState * CPosUiTypeAddDlg::obtainInstanceState(){
        CPosUiTypeAddDlgInstanceState * lpclState = new CPosUiTypeAddDlgInstanceState();
        return lpclState;
    }

    /*****************************
        創建資源
    ******************************/
    void CPosUiTypeAddDlg::onCreateRes(CSyViewDlgInstanceState * lpclInstanceState){
        // 超類
        CSyViewDlg::onCreateRes(lpclInstanceState);
        // TODO ...
        // 設定DLG尺寸        
        CPosUiTypeAddDlgBuildParam * lpclBuildPara = getAppCtx()->getSkin()->getUiTypeAddDlgBuildParam();
        if(NULL != lpclBuildPara){
            lpclBuildPara->initDlgPara(this);
            lpclBuildPara->createView(this);    
            // 創建解碼數據,提高操作性能.
            createImgDecodeData();
            
            // 點擊監聽器
            CSyView * lpclBtn = getFstChild();
            while(NULL != lpclBtn){
                lpclBtn->setClickListener(new CPosUiTypeAddBtnClickListener(this));
                lpclBtn = lpclBtn->getNextBrother();
            }

            // 獲得分類添加界面變量實例狀態
            getTypeAddInstanceState(lpclInstanceState);
        }
    }
    /*****************************
        釋放資源
    ******************************/
    void CPosUiTypeAddDlg::onReleaseRes(){    
        // 超類
        CSyViewDlg::onReleaseRes();
        // TODO ...
        // 釋放解碼數據
        releaseImgDecodeData();
    }
    /*****************************
        打開完成
    ******************************/
    void CPosUiTypeAddDlg::onOpenComplete(CSyViewDlgInstanceState * lpclInstanceState){
        // 超類
        CSyViewDlg::onOpenComplete(lpclInstanceState);
        // TODO ...
        
        // 類別編輯框獲得焦點
        CSyView * lpclFocusView = this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_TYPE_EDIT_FRAME);
        this->focusChildAndRedrawShow(lpclFocusView);
        CSyViewEdit* lpViewTypeEditFrame= dynamic_cast<CSyViewEdit *>(lpclFocusView);
        lpViewTypeEditFrame->createCaretTimer();

        this->postSwitchToNumberDlgWhenUnopened();
    }

    /*****************************
        創建圖片解碼數據
    ******************************/
    void CPosUiTypeAddDlg::createImgDecodeData(){
        this->createBgImgDecSurface(SY_TRUE, SY_TRUE, SY_FALSE);
    }
    /*****************************
        釋放圖片解碼數據
    ******************************/
    void CPosUiTypeAddDlg::releaseImgDecodeData(){
        this->deleteBgImgDecSurfaceWhenHasOtherSrc(SY_TRUE, SY_TRUE, SY_TRUE);
    }

    /*****************************
        點擊功能選擇按鈕
    ******************************/
    void CPosUiTypeAddDlg::clickFunction(){
        
        // 點擊返回按鈕切換到功能選擇頁面
        // 頁面管理器
        CSyViewDlgMgr * lpclDlgMgr = this->getViewDlgMgr();
        // 目的頁面
        CPosUiFunctionDlg * lpclDstDlg = dynamic_cast<CPosUiFunctionDlg *>(lpclDlgMgr->obtainDlgInstanceByID(CSyViewDlg::ID_UI_FUNCTION));
        if(NULL == lpclDstDlg){
            return ;
        }

        // 切換窗口
        CPosUiFunctionDlgInstanceState * lpclState = lpclDstDlg->obtainInstanceState();
        lpclState->m_enOpenMode = CSyViewDlg::OPEN_MODE_ENTER;
        this->postSwitchDlg(this, lpclDstDlg, lpclState);

        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_FUNCTION);
        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_ADMIN_INDEX);
        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_STORE_ADMIN);
        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_GOODS_TYPE);

        this->closeInputInterfaceWhenOpened();
        
    }

    /*****************************
        點擊管理主頁按鈕
    ******************************/
    void CPosUiTypeAddDlg::clickAdminIndex(){
        
        // 點擊管理主頁按鈕切換到管理主頁頁面
        // 頁面管理器
        CSyViewDlgMgr * lpclDlgMgr = this->getViewDlgMgr();
        // 目的頁面
        CPosUiAdminIndexDlg * lpclDstDlg = dynamic_cast<CPosUiAdminIndexDlg *>(lpclDlgMgr->obtainDlgInstanceByID(CSyViewDlg::ID_UI_ADMIN_INDEX));
        if(NULL == lpclDstDlg){
            return ;
        }

        // 切換窗口
        CPosUiAdminIndexDlgInstanceState * lpclState = lpclDstDlg->obtainInstanceState();
        lpclState->m_enOpenMode = CSyViewDlg::OPEN_MODE_ENTER;
        this->postSwitchDlg(this, lpclDstDlg, lpclState);

        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_ADMIN_INDEX);
        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_STORE_ADMIN);
        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_GOODS_TYPE);

        this->closeInputInterfaceWhenOpened();
    }

    /*****************************
        點擊商店管理按鈕
    ******************************/
    void CPosUiTypeAddDlg::clickStoreAdmin(){
        
        // 點擊商店管理按鈕切換到商店管理頁面
        // 頁面管理器
        CSyViewDlgMgr * lpclDlgMgr = this->getViewDlgMgr();
        // 目的頁面
        CPosUiStoreAdminDlg * lpclDstDlg = dynamic_cast<CPosUiStoreAdminDlg *>(lpclDlgMgr->obtainDlgInstanceByID(CSyViewDlg::ID_UI_STORE_ADMIN));
        if(NULL == lpclDstDlg){
            return ;
        }

        // 切換窗口
        CPosUiStoreAdminDlgInstanceState * lpclState = lpclDstDlg->obtainInstanceState();
        lpclState->m_enOpenMode = CSyViewDlg::OPEN_MODE_ENTER;
        this->postSwitchDlg(this, lpclDstDlg, lpclState);

        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_STORE_ADMIN);
        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_GOODS_TYPE);

        this->closeInputInterfaceWhenOpened();
    }

    /*****************************
        點擊商品類型按鈕
    ******************************/    
    void CPosUiTypeAddDlg::clickGoodsType(){
        this->postSwitchDlgBackAndCloseInputInterface();
    }

    /*****************************
        點擊重置按鈕
    ******************************/
    void CPosUiTypeAddDlg::clickReset(){
        CSyViewEdit * lpclFocusView = dynamic_cast<CSyViewEdit *>(getFocusChild());
        if(NULL != lpclFocusView){
            // 清空
            lpclFocusView->setText(NULL);
            // 重畫
            lpclFocusView->reDraw();
            // 顯示到屏幕
            showViewToScrn(lpclFocusView);
        }
    }

    /*****************************
        點擊退格按鈕
    ******************************/
    void CPosUiTypeAddDlg::clickBackspace(){
        CSyViewEdit * lpclFocusView = dynamic_cast<CSyViewEdit *>(getFocusChild());
        if(NULL != lpclFocusView){
            CSyString * lpclDstStr = lpclFocusView->getString();
            // 退格
            lpclDstStr->backSpace();
            // 重畫
            lpclFocusView->reDraw();
            // 顯示到屏幕
            showViewToScrn(lpclFocusView);
        }
    }

    /*****************************
            點擊保存按鈕
    ******************************/
    void CPosUiTypeAddDlg::clickSave(){
        syUpdateFileCategoryDatabaseRecordT stCategoryRecord;
        syZero(&stCategoryRecord, sizeof(syUpdateFileCategoryDatabaseRecordT));
        
        //獲取輸入的商品類別名稱
        CSyViewEdit* lpViewTypeEditFrame = dynamic_cast<CSyViewEdit *>(this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_TYPE_EDIT_FRAME));
        CSyString clUtf8TypeEditFrame;
        clUtf8TypeEditFrame.chgCharset(SY_CHARSET_UTF8);
        clUtf8TypeEditFrame.setStr(lpViewTypeEditFrame->getString());
        syDbgMsg("TypeEditFrame is :%s\n", clUtf8TypeEditFrame.getchStr());
        stCategoryRecord.lpCategoryName = clUtf8TypeEditFrame.getchStr();

        stCategoryRecord.iIsEnable = m_bStatusValue;

        INT32 isFocusShowFlg = this->getInstanceStateFocusShowFlg();
        if( CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg ){
            stCategoryRecord.iParentedId = 0;
        }
        if( CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg ){
            CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
            INT32 iGoodsTypeFirstGradeCurrentFocusID = lpclState->getCurrentParentedFocusID();
            stCategoryRecord.iParentedId = iGoodsTypeFirstGradeCurrentFocusID;
        }
        
        if( CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_ENABLE_VALUE == isFocusShowFlg 
            || CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_ENABLE_VALUE == isFocusShowFlg ){
            this->UpdateGoodsType(&stCategoryRecord, isFocusShowFlg);
        }
        if( CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg 
            ||  CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg ){        
            this->InsertIntoGoodsType(&stCategoryRecord, isFocusShowFlg);
        }    
    }

    /*****************************
        點擊返回按鈕
    ******************************/
    void CPosUiTypeAddDlg::clickReturn(){    
        this->postSwitchDlgBackAndCloseInputInterface();
    }

    /*****************************
        點擊關閉按鈕
    ******************************/
    void CPosUiTypeAddDlg::clickClose(){
        this->postSwitchDlgBackAndCloseInputInterface();
    }

    /*****************************
        點擊功能選擇按鈕
    ******************************/
    void CPosUiTypeAddDlg::clickTypeShowFrame(){

    }

    // 點擊編輯框的相應操作
    void CPosUiTypeAddDlg::clickEditFrame(CSyView * lpclView){
        this->focusChildAndRedrawShow(lpclView);
        CSyViewEdit* lpclViewEdit = dynamic_cast<CSyViewEdit *>(lpclView);
        lpclViewEdit->createCaretTimer();

        this->postSwitchToNumberDlgWhenUnopened();
    }

    //是否啓用
    void CPosUiTypeAddDlg::clickIsEnable(CSyView * lpclView){
        SY_BOOL bIsSelected = lpclView->getSelected();
        bIsSelected = (SY_TRUE == bIsSelected)?SY_FALSE:SY_TRUE;
        if( SY_TRUE == bIsSelected ){
            m_bStatusValue = UNABLE_VALUE;
        }
        if( SY_FALSE == bIsSelected ){
            m_bStatusValue = ENABLE_VALUE;
        }
        lpclView->setSelectedReDraw(bIsSelected);
        lpclView->showSelfToScrn();
        
        syDbgMsg("m_bStatusValue = %d\n\n", m_bStatusValue);
    }
    
    /***********************************************
        添加獲得焦點行的工號到收銀員增加界面的工號框內
    ***********************************************/
    void CPosUiTypeAddDlg::addTypeShowFrameText(CSyLangRes::LangItemIdxE  iItemIdx){
        CSyViewText* lpclTypeShowFrameText = dynamic_cast<CSyViewText*>(this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_TYPE_SHOW_FRAME));
        
        if(NULL != lpclTypeShowFrameText){
            // 選擇語言
            CSyLangRes * lpclLangRes = lpclTypeShowFrameText->getAppCtx()->getLangRes();
            if(NULL != lpclLangRes){
                //lpclTipsText->setText("是否刪除 ?", sizeof("是否刪除 ?"), SY_CHARSET_UTF8);
                if( NULL != lpclLangRes->getStrByItemIdx(iItemIdx) ){
                    lpclTypeShowFrameText->setText(
                        lpclLangRes->getStrByItemIdx(iItemIdx),
                        lpclLangRes->getStrSizeByItemIdx(iItemIdx),
                        lpclLangRes->getCharsetByItemIdx(iItemIdx)
                        );
                }
                else{
                    lpclTypeShowFrameText->setText(NULL);
                }
            }
            //對齊方式爲居中顯示
            lpclTypeShowFrameText->setAlign(SY_TEXT_ALIGN_CENTER);
            
            // 重畫
            lpclTypeShowFrameText->reDraw();
            // 顯示到屏幕
            showViewToScrn(lpclTypeShowFrameText);
        }
    }
    /***********************************************
        添加獲得焦點行的密碼到收銀員增加界面的密碼框內
    ***********************************************/
    void CPosUiTypeAddDlg::addTypeEditFrameText(const char * lpchStr){
        CSyViewText* lpclTypeEditFrameText = dynamic_cast<CSyViewText*>(this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_TYPE_EDIT_FRAME));
        
        if(NULL != lpclTypeEditFrameText){
            if(NULL != lpchStr){
                lpclTypeEditFrameText->setText(lpchStr, syChStrLen(lpchStr), SY_CHARSET_UTF8);
            }
            else{
                lpclTypeEditFrameText->setText(NULL);
            }
        }
    }

    // 獲得分類添加界面變量實例狀態
    void CPosUiTypeAddDlg::getTypeAddInstanceState(CSyViewDlgInstanceState * lpclInstanceState){
        CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(lpclInstanceState);
        if(NULL != lpclState){
            // 獲取類別顯示框和類別編輯區實例
            CSyViewText* lpclTypeShowFrameText = dynamic_cast<CSyViewText*>(this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_TYPE_SHOW_FRAME));        
            if(NULL != lpclTypeShowFrameText){
                lpclTypeShowFrameText->setText(&(lpclState->m_clstrTypeShowFrame));
            }
            CSyViewText* lpclTypeEditFrameText = dynamic_cast<CSyViewText*>(this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_TYPE_EDIT_FRAME));        
            if(NULL != lpclTypeEditFrameText){
                lpclTypeEditFrameText->setText(&(lpclState->m_clstrTypeEditFrame));
            }

            // 依據類別值獲取類別顯示區的顯示內容
            syDbgMsg("m_bTypeFlg = %d.\n", lpclState->getTypeFlg());
            if(lpclState->getTypeFlg() == CPosUiGoodsTypeDlg::FIRST_GRADE_VALUE){
                this->addTypeShowFrameText(CSyLangRes::lang_posFirstGradeGoodsType);
            }
            if(lpclState->getTypeFlg() == CPosUiGoodsTypeDlg::SECOND_GRADE_VALUE){
                this->addTypeShowFrameText(CSyLangRes::lang_posSecondGradeGoodsType);
            }

            // 依據顯示標誌值獲取類別名稱編輯框的顯示內容
            INT32 currentFocusID = lpclState->getCurrentFocusID();
            syDbgMsg("currentFocusID = %d.\n", currentFocusID);                
            INT32 isFocusShowFlg = lpclState->getFocusShowFlg();
            syDbgMsg("isFocusShowFlg = %d\n", isFocusShowFlg);
            if( CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_ENABLE_VALUE == isFocusShowFlg ){                    
                this->showGoodsTypeFirstGradeFocusItemInformation(currentFocusID);
            }
            if( CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_ENABLE_VALUE == isFocusShowFlg ){
                this->showGoodsTypeSecondGradeFocusItemInformation(currentFocusID);
            }
        }
    }

    /*********************************************
        獲取獲得一級分類焦點行的信息並顯示出來
    *********************************************/
    void CPosUiTypeAddDlg::showGoodsTypeFirstGradeFocusItemInformation(INT32 currentFocusID){
        // 頁面管理器
        CSyViewDlgMgr * lpclDlgMgr = this->getViewDlgMgr();
        if(NULL != lpclDlgMgr){
            // 商品類別目的頁面
            CPosUiGoodsTypeDlg * lpclDstDlg = dynamic_cast<CPosUiGoodsTypeDlg *>(lpclDlgMgr->obtainDlgInstanceByID(CSyViewDlg::ID_UI_GOODS_TYPE));
            if(NULL == lpclDstDlg){
                return ;
            }
            CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
            if(NULL != lpclState){
                
                INT32 isTypeValue = lpclState->getTypeValue();
                if( isTypeValue == CPosUiGoodsTypeDlg::TYPE_VALUE 
                    || isTypeValue == CPosUiGoodsTypeDlg::TYPE_UNABLE_VALUE ){
                    lpclDstDlg->getGoodsTypeFirstGradeByID(currentFocusID);
                }
                if( isTypeValue == CPosUiGoodsTypeDlg::SUPPLIER_VALUE 
                    || isTypeValue == CPosUiGoodsTypeDlg::SUPPLIER_UNABLE_VALUE ){
                    lpclDstDlg->getGoodsTypeFirstGradeSupplierByID(currentFocusID);
                }
                
                syDbgMsg("goodsTypeResTab[1] = %s.\n", lpclDstDlg->getGoodsTypeResTab(1));
                this->addTypeEditFrameText(lpclDstDlg->getGoodsTypeResTab(1));

                syDbgMsg("goodsTypeResTab[3] = %s.\n", lpclDstDlg->getGoodsTypeResTab(3));
                if( syAtoi(lpclDstDlg->getGoodsTypeResTab(3)) == CPosUiTypeAddDlg::UNABLE_VALUE ){
                    // 男性複選框
                    CSyView * lpclIsEnableView = this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_IS_ENABLE);
                    if(NULL != lpclIsEnableView){
                        clickIsEnable(lpclIsEnableView);
                    }
                }
            }
        }
    }

    /*********************************************
        獲取獲得二級分類焦點行的信息並顯示出來
    *********************************************/
    void CPosUiTypeAddDlg::showGoodsTypeSecondGradeFocusItemInformation(INT32 currentFocusID){
        // 頁面管理器
        CSyViewDlgMgr * lpclDlgMgr = this->getViewDlgMgr();
        if(NULL != lpclDlgMgr){
            // 商品類別目的頁面
            CPosUiGoodsTypeDlg * lpclDstDlg = dynamic_cast<CPosUiGoodsTypeDlg *>(lpclDlgMgr->obtainDlgInstanceByID(CSyViewDlg::ID_UI_GOODS_TYPE));
            if(NULL == lpclDstDlg){
                return ;
            }
            CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
            if(NULL != lpclState){
                INT32 isTypeValue = lpclState->getTypeValue();
                if( isTypeValue == CPosUiGoodsTypeDlg::TYPE_VALUE 
                    || isTypeValue == CPosUiGoodsTypeDlg::TYPE_UNABLE_VALUE ){
                    lpclDstDlg->getGoodsTypeSecondGradeByID(currentFocusID);
                }
                if( isTypeValue == CPosUiGoodsTypeDlg::SUPPLIER_VALUE 
                    || isTypeValue == CPosUiGoodsTypeDlg::SUPPLIER_UNABLE_VALUE ){
                    lpclDstDlg->getGoodsTypeSecondGradeSupplierByID(currentFocusID);
                }
                
                syDbgMsg("goodsTypeResTab[1] = %s.\n", lpclDstDlg->getGoodsTypeResTab(1));
                this->addTypeEditFrameText(lpclDstDlg->getGoodsTypeResTab(1));

                syDbgMsg("goodsTypeResTab[3] = %s.\n", lpclDstDlg->getGoodsTypeResTab(3));
                if( syAtoi(lpclDstDlg->getGoodsTypeResTab(3)) == CPosUiTypeAddDlg::UNABLE_VALUE ){
                    // 男性複選框
                    CSyView * lpclIsEnableView = this->getChildByID(CPosUiTypeAddDlg::CTRL_ID_IS_ENABLE);
                    if(NULL != lpclIsEnableView){
                        clickIsEnable(lpclIsEnableView);
                    }
                }
            }
        }
    }

    // 更新修改獲得焦點條項
    void CPosUiTypeAddDlg::UpdateGoodsType(syUpdateFileCategoryDatabaseRecordT * lpstRecord, INT32 isFocusShowFlg){
        if( CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_ENABLE_VALUE == isFocusShowFlg ){
            UpdateGoodsTypeFirstGrade(lpstRecord);
        }
        if( CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_ENABLE_VALUE == isFocusShowFlg ){
            UpdateGoodsTypeSecondGrade(lpstRecord);
        }
        
        this->postSwitchDlgBackAndCloseInputInterface();
    }
    // 更新修改一級分類中獲得焦點條項
    INT32 CPosUiTypeAddDlg::UpdateGoodsTypeFirstGrade(syUpdateFileCategoryDatabaseRecordT * lpstRecord){
        CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
        // 獲取獲得焦點行的ID
        INT32 currentFocusID = lpclState->getCurrentFocusID();
        syDbgMsg("currentFocusID = %d.\n",currentFocusID);

        if( lpclState->getTypeValue() == CPosUiGoodsTypeDlg::TYPE_VALUE 
            || lpclState->getTypeValue() == CPosUiGoodsTypeDlg::TYPE_UNABLE_VALUE ){
            this->UpdateGoodsTypeFirstGradeByID(lpstRecord, currentFocusID);
            this->UpdateGoodsTypeSecondGradeByParentedID(lpstRecord,currentFocusID);
            this->UpdateGoodsByParentedFirstGradeCategoryID(lpstRecord,currentFocusID);
        }
        if( lpclState->getTypeValue() == CPosUiGoodsTypeDlg::SUPPLIER_VALUE 
            || lpclState->getTypeValue() == CPosUiGoodsTypeDlg::SUPPLIER_UNABLE_VALUE ){
            this->UpdateGoodsTypeFirstGradeSupplierByID(lpstRecord, currentFocusID);
            this->UpdateGoodsTypeSecondGradeSupplierByParentedID(lpstRecord, currentFocusID);
            this->UpdateGoodsByParentedFirstGradeSupplierID(lpstRecord, currentFocusID);
        }

        return SY_TRUE;
    }
    // 更新修改二級分類中獲得焦點條項
    INT32 CPosUiTypeAddDlg::UpdateGoodsTypeSecondGrade(syUpdateFileCategoryDatabaseRecordT * lpstRecord){
        CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
        // 獲取獲得焦點行的ID
        INT32 currentFocusID = lpclState->getCurrentFocusID();
        syDbgMsg("currentFocusID = %d.\n",currentFocusID);

        if( lpclState->getTypeValue() == CPosUiGoodsTypeDlg::TYPE_VALUE 
            || lpclState->getTypeValue() == CPosUiGoodsTypeDlg::TYPE_UNABLE_VALUE ){
            this->UpdateGoodsTypeSecondGradeByID(lpstRecord, currentFocusID);
            this->UpdateGoodsByParentedSecondGradeCategoryID(lpstRecord, currentFocusID);
        }
        if( lpclState->getTypeValue() == CPosUiGoodsTypeDlg::SUPPLIER_VALUE 
            || lpclState->getTypeValue() == CPosUiGoodsTypeDlg::SUPPLIER_UNABLE_VALUE ){
            this->UpdateGoodsTypeSecondGradeSupplierByID(lpstRecord, currentFocusID);
            this->UpdateGoodsByParentedSecondGradeSupplierID(lpstRecord, currentFocusID);
        }

        return SY_TRUE;
    }
    // 調用數據庫,修改獲得焦點條項對應數據庫表項
    INT32 CPosUiTypeAddDlg::UpdateGoodsTypeFirstGradeByID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 修改數據庫表中獲取指定ID 的一級類型
            if(SY_FALSE == lpPosSql->UpdateGoodsTypeFirstGradeByID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsTypeFirstGradeByID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }

    // 依據獲得的二級分類父焦點ID刷新對應的二級分類
    INT32 CPosUiTypeAddDlg::UpdateGoodsTypeSecondGradeByParentedID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            //  依據所屬父類別ID刷新對應的二級類別
            if(SY_FALSE == lpPosSql->UpdateGoodsTypeSecondGradeByParentedID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsTypeSecondGradeByParentedID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }

    // 依據獲得的商品父一級分類焦點ID刷新對應的商品表項
    INT32 CPosUiTypeAddDlg::UpdateGoodsByParentedFirstGradeCategoryID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 依據所屬父一級分類ID刷新對應的商品表項
            if(SY_FALSE == lpPosSql->UpdateGoodsByParentedFirstGradeCategoryID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsByParentedFirstGradeCategoryID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }
    
    // 調用數據庫,修改獲得焦點條項對應數據庫表項
    INT32 CPosUiTypeAddDlg::UpdateGoodsTypeSecondGradeByID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            syDbgMsg("m_bStatusValue = %d.\n", m_bStatusValue);
            // 修改數據庫表中獲取指定ID 的二級類型
            if(SY_FALSE == lpPosSql->UpdateGoodsTypeSecondGradeByID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsTypeSecondGradeByID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }
    // 依據獲得的商品父二級分類焦點ID刷新對應的商品表項
    INT32 CPosUiTypeAddDlg::UpdateGoodsByParentedSecondGradeCategoryID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 依據所屬父二級分類ID刷新對應的商品表項
            if(SY_FALSE == lpPosSql->UpdateGoodsByParentedSecondGradeCategoryID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsByParentedSecondGradeCategoryID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }
    // 調用數據庫,修改獲得焦點條項對應數據庫表項
    INT32 CPosUiTypeAddDlg::UpdateGoodsTypeFirstGradeSupplierByID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 修改數據庫表中獲取指定ID 的一級供應商
            if(SY_FALSE == lpPosSql->UpdateGoodsTypeFirstGradeSupplierByID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsTypeFirstGradeSupplierByID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }
    // 依據獲得的二級供應商父焦點ID刷新對應的二級供應商
    INT32 CPosUiTypeAddDlg::UpdateGoodsTypeSecondGradeSupplierByParentedID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 依據所屬父類別ID刷新對應的二級供應商
            if(SY_FALSE == lpPosSql->UpdateGoodsTypeSecondGradeSupplierByParentedID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsTypeSecondGradeSupplierByParentedID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }

    // 依據獲得的商品父一級供應商焦點ID刷新對應的商品表項
    INT32 CPosUiTypeAddDlg::UpdateGoodsByParentedFirstGradeSupplierID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 依據所屬父一級供應商ID刷新對應的商品表項
            if(SY_FALSE == lpPosSql->UpdateGoodsByParentedFirstGradeSupplierID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsByParentedFirstGradeSupplierID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }
    // 調用數據庫,修改獲得焦點條項對應數據庫表項
    INT32 CPosUiTypeAddDlg::UpdateGoodsTypeSecondGradeSupplierByID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 修改數據庫表中獲取指定ID 的二級供應商
            if(SY_FALSE == lpPosSql->UpdateGoodsTypeSecondGradeSupplierByID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsTypeSecondGradeSupplierByID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }
    // 依據獲得的商品父二級供應商焦點ID刷新對應的商品表項
    INT32 CPosUiTypeAddDlg::UpdateGoodsByParentedSecondGradeSupplierID(syUpdateFileCategoryDatabaseRecordT * lpstRecord, int categoryID){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 依據所屬父二級供應商ID刷新對應的商品表項
            if(SY_FALSE == lpPosSql->UpdateGoodsByParentedSecondGradeSupplierID(lpstRecord, categoryID)){
                syDbgMsg("UpdateGoodsByParentedSecondGradeSupplierID function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }
    // 插入新的一行
    void CPosUiTypeAddDlg::InsertIntoGoodsType(syUpdateFileCategoryDatabaseRecordT * lpstRecord, INT32 isFocusShowFlg){
        if( CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg ){
            InsertIntoGoodsTypeFirstGrade(lpstRecord);
        }
        if( CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg ){
            InsertIntoGoodsTypeSecondGrade(lpstRecord);
        }    
        
        this->getLastPosViewAndLastPage(isFocusShowFlg);
        
        this->postSwitchToGoodsTypeDlg(isFocusShowFlg);

        this->closeInputInterfaceWhenOpened();
    }
    // 插入一級分類中新的一行
    INT32 CPosUiTypeAddDlg::InsertIntoGoodsTypeFirstGrade(syUpdateFileCategoryDatabaseRecordT * lpstRecord){
        CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
        if( lpclState->getTypeValue() == CPosUiGoodsTypeDlg::TYPE_VALUE 
            || lpclState->getTypeValue() == CPosUiGoodsTypeDlg::TYPE_UNABLE_VALUE ){
            this->InsertOneRowToGoodsTypeFirstGrade(lpstRecord);
        }
        if( lpclState->getTypeValue() == CPosUiGoodsTypeDlg::SUPPLIER_VALUE 
            || lpclState->getTypeValue() == CPosUiGoodsTypeDlg::SUPPLIER_UNABLE_VALUE ){
            this->InsertOneRowToGoodsTypeFirstGradeSupplier(lpstRecord);
        }

        return SY_TRUE;
    }
    // 插入二級分類中新的一行
    INT32 CPosUiTypeAddDlg::InsertIntoGoodsTypeSecondGrade(syUpdateFileCategoryDatabaseRecordT * lpstRecord){
        CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());    
        if( lpclState->getTypeValue() == CPosUiGoodsTypeDlg::TYPE_VALUE 
            || lpclState->getTypeValue() == CPosUiGoodsTypeDlg::TYPE_UNABLE_VALUE ){    
            this->InsertOneRowToGoodsTypeSecondGrade(lpstRecord);
        }
        if( lpclState->getTypeValue() == CPosUiGoodsTypeDlg::SUPPLIER_VALUE 
            || lpclState->getTypeValue() == CPosUiGoodsTypeDlg::SUPPLIER_UNABLE_VALUE ){
            this->InsertOneRowToGoodsTypeSecondGradeSupplier(lpstRecord);
        }

        return SY_TRUE;
    }
    // 調用數據庫,插入一行到數據庫的最後一行的下一行
    INT32 CPosUiTypeAddDlg::InsertOneRowToGoodsTypeFirstGrade(syUpdateFileCategoryDatabaseRecordT * lpstRecord){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            //  插入新的一級類型
            if(SY_FALSE == lpPosSql->InsertOneRowToGoodsTypeFirstGrade(lpstRecord)){
                syDbgMsg("InsertOneRowToGoodsTypeFirstGrade function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }
    // 調用數據庫,插入一行到數據庫的最後一行的下一行
    INT32 CPosUiTypeAddDlg::InsertOneRowToGoodsTypeSecondGrade(syUpdateFileCategoryDatabaseRecordT * lpstRecord){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            //  插入新的二級類型
            if(SY_FALSE == lpPosSql->InsertOneRowToGoodsTypeSecondGrade(lpstRecord)){
                syDbgMsg("InsertOneRowToGoodsTypeSecondGrade function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }        
    // 調用數據庫,插入一行到數據庫的最後一行的下一行
    INT32 CPosUiTypeAddDlg::InsertOneRowToGoodsTypeFirstGradeSupplier(syUpdateFileCategoryDatabaseRecordT * lpstRecord){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 插入新的一級供應商
            if(SY_FALSE == lpPosSql->InsertOneRowToGoodsTypeFirstGradeSupplier(lpstRecord)){
                syDbgMsg("InsertOneRowToGoodsTypeFirstGradeSupplier function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }
    // 調用數據庫,插入一行到數據庫的最後一行的下一行
    INT32 CPosUiTypeAddDlg::InsertOneRowToGoodsTypeSecondGradeSupplier(syUpdateFileCategoryDatabaseRecordT * lpstRecord){    

        // 創建SQL
        CPosSqlApp * lpPosSql = new CPosSqlApp();
        if(NULL != lpPosSql){
            
            // 插入新的二級供應商
            if(SY_FALSE == lpPosSql->InsertOneRowToGoodsTypeSecondGradeSupplier(lpstRecord)){
                syDbgMsg("InsertOneRowToGoodsTypeSecondGradeSupplier function Failed.\n");
                return SY_FALSE;
            }
            
            delete lpPosSql;
            lpPosSql = NULL;
        }
        
        return SY_TRUE;
    }

    void CPosUiTypeAddDlgInstanceState::setFocusShowFlg(INT32 iIsFocusShowed){
        m_bIsFocusShowed = iIsFocusShowed;
    }
    INT32 CPosUiTypeAddDlgInstanceState::getFocusShowFlg(){
        return m_bIsFocusShowed;
    }
    
    void CPosUiTypeAddDlgInstanceState::setTypeFlg(INT32 iTypeFlg){
        m_bTypeFlg = iTypeFlg;
    }
    INT32 CPosUiTypeAddDlgInstanceState::getTypeFlg(){
        return m_bTypeFlg;
    }
    
    void CPosUiTypeAddDlgInstanceState::setTypeValue(INT32 iTypeValue){
        m_bTypeValue = iTypeValue;
    }
    INT32 CPosUiTypeAddDlgInstanceState::getTypeValue(){
        return m_bTypeValue;
    }

    void CPosUiTypeAddDlgInstanceState::setGoodsTypeFirstGradeFocusViewItemCnt(INT32 iGoodsTypeFirstGradeFocusViewItemCnt){
        m_bGoodsTypeFirstGradeFocusViewItemCnt = iGoodsTypeFirstGradeFocusViewItemCnt;
    }
    INT32 CPosUiTypeAddDlgInstanceState::getGoodsTypeFirstGradeFocusViewItemCnt(){
        return m_bGoodsTypeFirstGradeFocusViewItemCnt;
    }
    void CPosUiTypeAddDlgInstanceState::setGoodsTypeFirstGradeFocusPage(INT32 iGoodsTypeFirstGradeFocusPage){
        m_bGoodsTypeFirstGradeFocusPage = iGoodsTypeFirstGradeFocusPage;
    }
    INT32 CPosUiTypeAddDlgInstanceState::getGoodsTypeFirstGradeFocusPage(){
        return m_bGoodsTypeFirstGradeFocusPage;
    }

    void CPosUiTypeAddDlgInstanceState::setCurrentFocusID(INT32 iCurrentFocusID){
        m_bCurrentFocusID = iCurrentFocusID;
    }
    INT32 CPosUiTypeAddDlgInstanceState::getCurrentFocusID(){
        return m_bCurrentFocusID;
    }
    void CPosUiTypeAddDlgInstanceState::setCurrentParentedFocusID(INT32 iCurrentParentedFocusID){
        m_bCurrentParentedFocusID = iCurrentParentedFocusID;
    }
    INT32 CPosUiTypeAddDlgInstanceState::getCurrentParentedFocusID(){
        return m_bCurrentParentedFocusID;
    }
    void CPosUiTypeAddDlgInstanceState::setGoodsTypeLastViewItemCnt(INT32 iGoodsTypeLastViewItemCnt){
        m_bGoodsTypeLastViewItemCnt = iGoodsTypeLastViewItemCnt;
    }
    INT32 CPosUiTypeAddDlgInstanceState::getGoodsTypeLastViewItemCnt(){
        return m_bGoodsTypeLastViewItemCnt;
    }
    void CPosUiTypeAddDlgInstanceState::setGoodsTypeLastPage(INT32 iGoodsTypeLastPage){
        m_bGoodsTypeLastPage = iGoodsTypeLastPage;
    }
    INT32 CPosUiTypeAddDlgInstanceState::getGoodsTypeLastPage(){
        return m_bGoodsTypeLastPage;
    }

    // 切換到商品類別列表界面
    void CPosUiTypeAddDlg::postSwitchToGoodsTypeDlg(INT32 isFocusShowFlg){
        // 切換到商品類別頁面
        // 頁面管理器
        CSyViewDlgMgr * lpclDlgMgr = this->getViewDlgMgr();
        // 目的頁面
        CPosUiGoodsTypeDlg * lpclDstDlg = dynamic_cast<CPosUiGoodsTypeDlg *>(lpclDlgMgr->obtainDlgInstanceByID(CSyViewDlg::ID_UI_GOODS_TYPE));
        if(NULL == lpclDstDlg){
            return ;
        }

        // 切換窗口
        CPosUiGoodsTypeDlgInstanceState * lpclDstState = lpclDstDlg->obtainInstanceState();
        lpclDstState->m_enOpenMode = CSyViewDlg::OPEN_MODE_ENTER;
        CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
        if( CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg ){
            syDbgMsg("m_bGoodsTypeLastPage = %d\n", lpclState->getGoodsTypeLastPage());
            lpclDstState->setGoodsTypeFirstGradeLastPage(lpclState->getGoodsTypeLastPage());        
            syDbgMsg("m_bGoodsTypeLastViewItemCnt = %d\n", lpclState->getGoodsTypeLastViewItemCnt());
            lpclDstState->setGoodsTypeFirstGradeLastViewItemCnt(lpclState->getGoodsTypeLastViewItemCnt());    
        }
        if( CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg ){
            syDbgMsg("m_bGoodsTypeFirstGradeFocusPage = %d\n", lpclState->getGoodsTypeFirstGradeFocusPage());
            lpclDstState->setGoodsTypeFirstGradeFocusPage(lpclState->getGoodsTypeFirstGradeFocusPage());
            lpclState->setGoodsTypeFirstGradeFocusPage(0);
            syDbgMsg("m_bGoodsTypeFirstGradeFocusViewItemCnt = %d\n", lpclState->getGoodsTypeFirstGradeFocusViewItemCnt());
            lpclDstState->setGoodsTypeFirstGradeFocusViewItemCnt(lpclState->getGoodsTypeFirstGradeFocusViewItemCnt());
            lpclState->setGoodsTypeFirstGradeFocusViewItemCnt(0);
            syDbgMsg("m_bGoodsTypeLastPage = %d\n", lpclState->getGoodsTypeLastPage());
            lpclDstState->setGoodsTypeSecondGradeLastPage(lpclState->getGoodsTypeLastPage());
            syDbgMsg("m_bGoodsTypeLastViewItemCnt = %d\n", lpclState->getGoodsTypeLastViewItemCnt());
            lpclDstState->setGoodsTypeSecondGradeLastViewItemCnt(lpclState->getGoodsTypeLastViewItemCnt());
        }
        syDbgMsg("m_bIsFocusShowed = %d\n", lpclState->getFocusShowFlg());
        lpclDstState->setFocusShowFlg(lpclState->getFocusShowFlg());
        syDbgMsg("m_bTypeValue = %d\n", lpclState->getTypeValue());
        lpclDstState->setTypeValue(lpclState->getTypeValue());
        this->postSwitchDlg(this, lpclDstDlg, lpclDstState);

        lpclDlgMgr->delDlgReturnInfo(CSyViewDlg::ID_UI_GOODS_TYPE);
    }
    // 切換到數字輸入法界面
    void CPosUiTypeAddDlg::postSwitchToNumberDlg(){
        // 頁面管理器
        CSyViewDlgMgr * lpclDlgMgr = this->getViewDlgMgr();
        // 目的頁面
        CPosUiNumberDlg * lpclDstDlg = dynamic_cast<CPosUiNumberDlg *>(lpclDlgMgr->obtainDlgInstanceByID(CSyViewDlg::ID_UI_NUMBER));
        if(NULL == lpclDstDlg){
            return ;
        }

        // 添加返回頁面信息
        CSyDlgReturnInfo * lpclNewReturnInfo = lpclDlgMgr->obtainDlgReturnInfo();
        if(NULL != lpclNewReturnInfo){
            lpclNewReturnInfo->setDlgID(this->getDlgID());
            lpclNewReturnInfo->setInstanceState(this->obtainBackInfoInstanceState());
            lpclDlgMgr->addTailDlgReturnInfo(lpclNewReturnInfo);
        }

        // 切換窗口
        CPosUiNumberDlgInstanceState * lpclState = lpclDstDlg->obtainInstanceState();
        lpclState->m_enOpenMode = CSyViewDlg::OPEN_MODE_ENTER;
        lpclState->setEditDstDlg( lpclDlgMgr->getTailReturnInfoDlg() );
        //lpclState->setEditDstDlg( this );
        this->postSwitchDlg(NULL, lpclDstDlg, lpclState);
    }
    // 當輸入法沒有打開時切換到數字輸入法界面
    void CPosUiTypeAddDlg::postSwitchToNumberDlgWhenUnopened(){
        INT32 iDlgID = this->getTailReturnInfoDlgID();
        if( CSyViewDlg::ID_UI_NUMBER != iDlgID 
            && CSyViewDlg::ID_UI_SPELL != iDlgID 
            && CSyViewDlg::ID_UI_WORD != iDlgID 
            && CSyViewDlg::ID_UI_HANDWRITTEN != iDlgID ){

            this->postSwitchToNumberDlg();
        }
    }
    // 關閉最後一項對應的界面
    void CPosUiTypeAddDlg::postCloseTailReturnInfoDlg(){
        CSyViewDlg * lpclTailDstDlg = this->getTailReturnInfoDlg();
        if(NULL == lpclTailDstDlg){
            return ;
        }

        // 刪除最後一項
        this->delTailDlgReturnInfo();

        // 關閉最後一行所對應的界面
        lpclTailDstDlg->postSwitchDlg(lpclTailDstDlg, NULL, NULL);
    }
    // 當輸入法打開時關閉輸入法界面
    void CPosUiTypeAddDlg::closeInputInterfaceWhenOpened(){
        INT32 iDlgID = this->getTailReturnInfoDlgID();
        if( CSyViewDlg::ID_UI_NUMBER == iDlgID 
            || CSyViewDlg::ID_UI_SPELL == iDlgID 
            || CSyViewDlg::ID_UI_WORD == iDlgID 
            || CSyViewDlg::ID_UI_HANDWRITTEN == iDlgID ){

            this->postCloseTailReturnInfoDlg();
        }
    }
    // 關閉輸入法並返回上一次頁面
    void CPosUiTypeAddDlg::postSwitchDlgBackAndCloseInputInterface(){
        INT32 iDlgID = this->getTailReturnInfoDlgID();
        if( CSyViewDlg::ID_UI_NUMBER == iDlgID 
            || CSyViewDlg::ID_UI_SPELL == iDlgID 
            || CSyViewDlg::ID_UI_WORD == iDlgID 
            || CSyViewDlg::ID_UI_HANDWRITTEN == iDlgID ){

            CSyViewDlg * lpclTailDstDlg = this->getTailReturnInfoDlg();
            if(NULL == lpclTailDstDlg){
                return ;
            }

            // 刪除最後一項
            this->delTailDlgReturnInfo();
            
            // 點擊商品列表按鈕切換到商品列表頁面
            this->postSwitchDlgBack(this, SY_TRUE);

            // 關閉數字輸入法界面
            lpclTailDstDlg->postSwitchDlg(lpclTailDstDlg, NULL, NULL);
        }
        else{
            // 點擊返回按鈕返回到上一次頁面
            this->postSwitchDlgBack(this, SY_TRUE);
        }
    }
    
    // 獲得最後一項對應的窗口
    CSyViewDlg * CPosUiTypeAddDlg::getTailReturnInfoDlg(){
        // 頁面管理器
        CSyViewDlgMgr * lpclDlgMgr = this->getViewDlgMgr();
        if( NULL == lpclDlgMgr ){
            return NULL;
        }
        CSyViewDlg * lpclTailDstDlg = lpclDlgMgr->getTailReturnInfoDlg();
        return lpclTailDstDlg;
    }
    // 獲得最後一項對應的窗口ID
    INT32 CPosUiTypeAddDlg::getTailReturnInfoDlgID(){
        CSyViewDlg * lpclTailDstDlg = this->getTailReturnInfoDlg();
        if(NULL == lpclTailDstDlg){
            return SY_FALSE;
        }

        INT32 iDlgID = lpclTailDstDlg->getDlgID();
        return iDlgID;
    }
    // 刪除最後一項
    void CPosUiTypeAddDlg::delTailDlgReturnInfo(){
        // 頁面管理器
        CSyViewDlgMgr * lpclDlgMgr = this->getViewDlgMgr();
        if( NULL == lpclDlgMgr ){
            return ;
        }

        // 刪除最後一項
        lpclDlgMgr->delTailDlgReturnInfo();
    }
    // 獲得是否顯示焦點項信息的標誌值實例
    INT32 CPosUiTypeAddDlg::getInstanceStateFocusShowFlg(){
        CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
        if(NULL == lpclState){
            return SY_ERR_NOT_EXIST;
        }
        INT32 isFocusShowFlg = lpclState->getFocusShowFlg();
        return isFocusShowFlg;
    }
    // 獲得列表視圖上的最後一行和最後一頁值
    void CPosUiTypeAddDlg::getLastPosViewAndLastPage(INT32 isFocusShowFlg){
        // 處理列表界面顯示的最後頁數和條項
        // 設定DLG尺寸        
        CPosUiGoodsTypeDlgBuildParam * lpclGoodsTypeBuildParam = getAppCtx()->getSkin()->getUiGoodsTypeDlgBuildParam();
        if(NULL != lpclGoodsTypeBuildParam){
            INT32 iPageItemCnt = 0;
            if( CPosUiGoodsTypeDlg::FIRST_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg ){
                iPageItemCnt = lpclGoodsTypeBuildParam->getGoodsTypeFirstGradeListItemCnt();
            }
            if( CPosUiGoodsTypeDlg::SECOND_GRADE_FOCUS_SHOW_FLG_UNABLE_VALUE == isFocusShowFlg ){
                iPageItemCnt = lpclGoodsTypeBuildParam->getGoodsTypeSecondGradeListItemCnt();
            }    

            CPosUiTypeAddDlgInstanceState * lpclState = dynamic_cast<CPosUiTypeAddDlgInstanceState*>(getInstanceState());
            if(NULL != lpclState){
                if(lpclState->getGoodsTypeLastViewItemCnt() == iPageItemCnt - 1){
                    lpclState->setGoodsTypeLastPage(lpclState->getGoodsTypeLastPage() + 1);
                    lpclState->setGoodsTypeLastViewItemCnt(0);
                }
                else{
                    lpclState->setGoodsTypeLastViewItemCnt(lpclState->getGoodsTypeLastViewItemCnt() + 1);
                }
                syDbgMsg("m_bGoodsTypeLastPage = %d.\n",lpclState->getGoodsTypeLastPage());
                syDbgMsg("m_bGoodsTypeLastViewItemCnt = %d.\n",lpclState->getGoodsTypeLastViewItemCnt());
            }
        }
    }

#endif //#ifdef SUPPORT 小商場架構


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章