大头贴对话框类(abandoned)
来源:互联网 发布:mac 移动文件夹 编辑:程序博客网 时间:2024/06/11 17:16
.H
==============================================================
// 大头贴对话框类(在对话框中显示大头贴控件)
class CDymBigHeadDialog : public CAknDialog
{
public:
CDymBigHeadDialog();
~CDymBigHeadDialog();
void PreLayoutDynInitL();
TInt CountComponentControls() const;
CCoeControl* ComponentControl(TInt aIndex) const;
void SizeChanged();
void CancelL();
void SetContainer(CDymBigHeadContainer* aContainer);
protected:
virtual TBool OkToExitL( TInt aBuDymonId );
virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
private:
void SeDymimerL(DymimeIntervalMicroSeconds32 aInterval);
void DestroyTimer();
static TInt TimerCallBack(TAny* aPtr);
public:
CDymPodAppUi* iDymPodAppUi;
private:
TSize iLastSize;
CDymBigHeadContainer* iContainer;
CPeriodic* iTimer;
};
// 大头贴对话框帮助类(帮组弹出对话框)
class CDymBigHeadDialogHelper
{
public:
CDymBigHeadDialogHelper(CDymPodHelper* aHelper);
void DisplayDialogL();
private:
CDymPodHelper* iHelper;
};
=======================================================================================
.cpp
=========================================================================================
////////////////////////CDymBigHeadDialog///////////////////////////////////////////////
CDymBigHeadDialog::CDymBigHeadDialog()
:iContainer(NULL)
,iTimer(NULL)
{
iDymPodAppUi = (CDymPodAppUi*)CEikonEnv::Static()->AppUi();
}
CDymBigHeadDialog::~CDymBigHeadDialog()
{
DestroyTimer();
if(iContainer != NULL)
{
if (iContainer->Canvas())
{
iContainer->Canvas()->DestroyBackgroundBitmap();
}
iContainer->HandleForegroundEvent(EFalse);
}
}
void CDymBigHeadDialog::PreLayoutDynInitL()
{
CAknDialog::PreLayoutDynInitL();
if(iContainer)
{
iContainer->SetMopParent(this);
iContainer->ConstructL(iDymPodAppUi->ApplicationRect());
if (iContainer->Canvas())
{
iContainer->Canvas()->CreateBackgroundBitmapL(iDymPodAppUi->iCurrentContainer->BackgroundBitmap()
,iDymPodAppUi->iCurrentContainer->BackgroundBitmap()->SizeInPixels());
}
iContainer->HandleForegroundEvent(ETrue);
}
SeDymimerL(50000);
}
TInt CDymBigHeadDialog::CountComponentControls() const
{
if(iContainer)
{
return 1;
}
return 0;
}
CCoeControl* CDymBigHeadDialog::ComponentControl( TInt aIndex ) const
{
if(0 == aIndex)
{
return iContainer;
}
return NULL;
}
void CDymBigHeadDialog::SizeChanged()
{
CAknDialog::SizeChanged();
TSize size = iDymPodAppUi->ApplicationRect().Size();
if(size != iLastSize && iContainer)
{
iContainer->ChangeLayout();
CDymCanvas* canvas = iContainer->Canvas();
if (canvas)
{
canvas->DestroyBackgroundBitmap();
CFbsBitmap* bmpBkg = iDymPodAppUi->iCurrentContainer->BackgroundBitmap();
if(bmpBkg)
{
canvas->CreateBackgroundBitmapL(bmpBkg,bmpBkg->SizeInPixels());
}
}
if(iLastSize != TSize(0,0))//是否横竖屏变更?
{
iContainer->HandleForegroundEvent(ETrue);
}
iLastSize = size;
}
DrawNow();
}
void CDymBigHeadDialog::CancelL()
{
TryExitL(EAknSoftkeyBack);
}
void CDymBigHeadDialog::SetContainer( CDymBigHeadContainer* aContainer )
{
iContainer = aContainer;
}
TBool CDymBigHeadDialog::OkToExitL( TInt aBuDymonId )
{
if(aBuDymonId == EAknSoftkeyBack)
{
return ETrue;
}
return CAknDialog::OkToExitL(aBuDymonId);
}
TKeyResponse CDymBigHeadDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType )
{
if(iContainer)
{
return iContainer->OfferKeyEventL(aKeyEvent,aType);
}
return EKeyWasConsumed;
}
void CDymBigHeadDialog::SeDymimerL( DymimeIntervalMicroSeconds32 aInterval )
{
DestroyTimer();
iTimer = CPeriodic::NewL(CActive::EPriorityStandard);
iTimer->Start(aInterval,aInterval,TCallBack(TimerCallBack,this));
}
void CDymBigHeadDialog::DestroyTimer()
{
if(iTimer)
{
iTimer->Cancel();
}
SAFE_DELETE(iTimer);
}
TInt CDymBigHeadDialog::TimerCallBack( TAny* aPtr )
{
CDymBigHeadDialog* me = reinterpret_cast<CDymBigHeadDialog*>(aPtr);
if(me && me->iContainer)
{
me->iContainer->HandleCallBack();
}
return KErrNone;
}
//////////////////////CDymBigHeadDialogHelper///////////////////////////////////////////////////
CDymBigHeadDialogHelper::CDymBigHeadDialogHelper( CDymPodHelper* aHelper )
:iHelper(aHelper)
{
}
void CDymBigHeadDialogHelper::DisplayDialogL()
{
CDymBigHeadDialog* dlg = new(ELeave) CDymBigHeadDialog();
if(dlg->iDymPodAppUi==NULL || dlg->iDymPodAppUi->iHelper==NULL)
{
SAFE_DELETE(dlg);
return;
}
dlg->PrepareLC(R_DIALOG_CUSTOM);
CDymBigHeadContainer* container = new(ELeave) CDymBigHeadContainer(dlg->iDymPodAppUi->iHelper);
dlg->SetContainer(container);
dlg->RunLD();
SAFE_DELETE(container);
}
- 大头贴对话框类(abandoned)
- 快乐大头贴 免费
- FluorineFx Sample (大头贴)
- 菜鸟大头贴
- 大头贴机(转)
- 可怕的大头贴诅咒
- 快乐吧大头贴 官网
- 情人节,让我们来DIY情人大头贴
- 精科大头贴 怎么用
- 教你制作个性大头贴
- 全面剖析FLASH在线大头贴
- 全面剖析FLASH在线大头贴
- 爱拍就拍大头贴 v3.2 免费下载
- [推荐]在线照相大头贴功能
- 符号打印机:1975年的大头贴
- ubuntu摄像头软件--茄子大头贴
- android 来电大头贴显示流程
- 基于Html5的网页大头贴
- Liferay 6.0??
- BurstNET VPS搭建OpenVPN全程实录[原创]
- 考研
- Metatable In Lua 浅尝辄止
- 使用maven生成javadocs
- 大头贴对话框类(abandoned)
- 期待《Apprenticeship Patterns》中译本的出版
- Flash AS3.0 Socket资源
- ORA-25153: Temporary Tablespace is Empty
- 不用重启windows就更新环境变量
- resin安装成windows服务
- Lua的多任务机制——协程(coroutine)
- BasicEditField的layout
- 【java】FCKEditor开发感悟心得之图片缩放篇