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

📄 countdowncontainer.cpp

📁 Example_XXX为每章内容介绍所用源代码文件; Exercise_XXX为每章习题所提供的源代码样例。 包括 倒计时例程 对话框例程 动态列表例程 俄罗斯方块例程 蓝牙例程
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    {
        switch(iUi->iCurFunctionId)
        {
        case EFunLook:
            CmdLook();
            break;
        case EFunModify:
            CmdModify();
            break;
        case EFunDelete:
            CmdDelete();
            break;
        default:
            break;
        }
    }
}

void CCountDownContainer::CmdLook()
{
    TInt index = iListBox->CurrentItemIndex();
    TRecordDBStruct &db = iUi->iDB->iArrayDB->At(index);
    TTime time(db.iTime);
    TTime curTime;
    curTime.HomeTime();
    TInt days = GetDays(time, curTime);

    TName info,tips;
    CEikonEnv::Static()->ReadResource(info, R_STR_CD_TIPS);
    tips.Format(info, &db.iName, days);
    ShowNotify(tips);
    //CEikonEnv::Static()->AlertWin(db.iName, db.iName);
}

TInt CCountDownContainer::GetInsertPos(TTime &aTime)
{
    TInt ret = 0;
    TInt count = iUi->iDB->iArrayDB->Count();
    TInt pos = 0;
    for(TInt i=0;i<count;i++)
    {
        TRecordDBStruct &db = iUi->iDB->iArrayDB->At(i);
        TInt value = GetDays(aTime, db.iTime);
        if(value==0)
        {
            ret = i;
            break;
        }
        else if(value>0)
        {
            if(i==(count-1))
            {
                ret = i + 1;
                break;
            }
            else
            {
                TRecordDBStruct &nextDb = iUi->iDB->iArrayDB->At(i+1);
                value = GetDays(aTime, nextDb.iTime);
                if(value<=0)
                {
                    ret = i + 1;
                    break;
                }

            }
        }
        else
        {
        }
    }
    return ret;
}

TBool CCountDownContainer::CheckSameItem(TDesC &aName, TInt aIndex)
{
    TBool b = EFalse;
    TInt count = iUi->iDB->iArrayDB->Count();
    for(TInt i=0;i<count;i++)
    {
        TRecordDBStruct &db = iUi->iDB->iArrayDB->At(i);
        if(aIndex==i)
        {
            continue;
        }
        else
        {
            if(db.iName.Compare(aName)==0)
            {
                b = ETrue;
                break;
            }
        }
    }
    return b;
}

void CCountDownContainer::CmdAdd()
{
    TName info;
    TBuf<128> textData;
    TRecordDBStruct db;
    for(;;)
    {
        CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL(db.iName, CAknQueryDialog::ENoTone);
        CEikonEnv::Static()->ReadResource(info, R_STR_INPUT_CD_NAME);
        dlg->SetPromptL(info);
        if(dlg->ExecuteLD(R_DIALOG_INPUT))
        {
            if(CheckSameItem(db.iName))
            {
                CEikonEnv::Static()->ReadResource(info, R_STR_SAME_TIPS);
                textData.Format(info, &db.iName);
                ShowNotify(textData);
            }
            else
            {
                TTime value;
                value.HomeTime();
                for(;;)
                {
                    CAknTimeQueryDialog* dlg;
                    {
                        TBuf<128> prompt;
                        iCoeEnv->ReadResource( prompt, R_STR_INPUT_CD_DATE);
                        dlg = CAknTimeQueryDialog::NewL( value, CAknQueryDialog::ENoTone );
                        CleanupStack::PushL(dlg);
                        dlg->SetPromptL(prompt);
                        CleanupStack::Pop(); //dlg
                    }
                    if(dlg->ExecuteLD( R_CD_DATE_QUERY ))
                    {
                        TTime curTime;
                        curTime.HomeTime();
                        TInt days = GetDays(value, curTime.Int64());
                        if(days>0)
                        {
                            db.iTime.Set(value.Int64().High(), value.Int64().Low());
                            iUi->iDB->iArrayDB->InsertL(GetInsertPos(value), db);
                            iUi->iDB->SaveDBL();
                            CEikonEnv::Static()->ReadResource(info, R_STR_ADD_OK);
                            ShowNotify(info);
                            iUi->iDB->SaveRscL();
                            return ;
                        }
                        else
                        {
                            _LIT(KFormatTxt,"%/0%1%/1%2%/2%3%/3");
                            curTime.FormatL(textData,KFormatTxt); 
                            TName tips;
                            CEikonEnv::Static()->ReadResource(info, R_STR_ERR_TIME_TIPS);
                            tips.Format(info, &textData);
                            ShowNotify(tips);
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
        else
        {
            break;
        }
    }
}

void CCountDownContainer::CmdModify()
{
    TInt index = iListBox->CurrentItemIndex();
	TRecordDBStruct &db = iUi->iDB->iArrayDB->At(index);
    TName info, tips;
    TBuf<128> name(db.iName);
    TBuf<128> textData;
            
    for(;;)
    {
        CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL(name, CAknQueryDialog::ENoTone);
        CEikonEnv::Static()->ReadResource(info, R_STR_MODIFY_NAME);
        tips.Format(info, &name);
        dlg->SetPromptL(tips);
        if (dlg->ExecuteLD(R_DIALOG_INPUT))
        {
            if(CheckSameItem(name, index))
            {
                CEikonEnv::Static()->ReadResource(info, R_STR_SAME_TIPS);
                textData.Format(info, &db.iName);
                ShowNotify(textData);
            }
            else
            {
                
                TTime value(db.iTime);
                for(;;)
                {
                    _LIT(KFormatTxt,"%/0%1%/1%2%/2%3%/3");
                    value.FormatL(textData,KFormatTxt); 
                    
                    CAknTimeQueryDialog* dlg;
                    {
                        TBuf<128> prompt;
                        iCoeEnv->ReadResource( prompt, R_STR_MIDIFY_DATE);
                        dlg = CAknTimeQueryDialog::NewL( value, CAknQueryDialog::ENoTone );
                        CleanupStack::PushL(dlg);
                        tips.Format(prompt, &textData);
                        dlg->SetPromptL(tips);
                        CleanupStack::Pop(); //dlg
                    }
                    
                    if(dlg->ExecuteLD( R_CD_DATE_QUERY ))
                    {
                        TTime curTime;
                        curTime.HomeTime();
                        if(GetDays(value, curTime)>0)
                        {
                            TRecordDBStruct newdb;
                            newdb.iName.Copy(name);
                            newdb.iTime.Set(value.Int64().High(), value.Int64().Low());
                            iUi->iDB->iArrayDB->Delete(index);
                            iUi->iDB->iArrayDB->InsertL(GetInsertPos(value), newdb);
                            iUi->iDB->SaveDBL();
                            CEikonEnv::Static()->ReadResource(info, R_STR_SUCESSFULLY);
                            ShowNotify(info);
                            CreateRecordListBoxL();
                            return;
                        }
                        else
                        {
                            _LIT(KFormatTxt,"%/0%1%/1%2%/2%3%/3");
                            curTime.FormatL(textData,KFormatTxt); 
                            CEikonEnv::Static()->ReadResource(info, R_STR_ERR_TIME_TIPS);
                            tips.Format(info, &textData);
                            ShowNotify(tips);
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
        else
        {
            break;
        }
    }
}

void CCountDownContainer::CmdDelete()
{
    TName info, tips;
    CEikonEnv::Static()->ReadResource(info, R_STR_DELETE_QUERY);
    TInt index = iListBox->CurrentItemIndex();
	TRecordDBStruct &db = iUi->iDB->iArrayDB->At(index);
    tips.Format(info, &db.iName);
    CAknQueryDialog* dlg = new(ELeave) CAknQueryDialog(tips,CAknQueryDialog::EWarningTone);
    if(dlg->ExecuteLD(R_DIALOG_DELETE_QUERY))
    {
        TInt index = iListBox->CurrentItemIndex();
        TName name(db.iName);
        iUi->iDB->iArrayDB->Delete(index);
        iUi->iDB->SaveDBL();
        CEikonEnv::Static()->ReadResource(info, R_STR_DELETE_TIPS);
        tips.Format(info, &name);
        ShowNotify(tips);
        if(iUi->iDB->iArrayDB->Count()==0)
        {
            CEikonEnv::Static()->ReadResource(info, R_STR_NO_CD_TIPS);
            ShowNotify(info);
			CreateFunctionListBoxL();
        }
        else
        {
            CreateRecordListBoxL();
        }
    }
}


// End of File  

⌨️ 快捷键说明

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