00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "ControlFrameworkAppUi.h"
00017 #include "ControlFrameworkView.h"
00018 #include "ControlFramework.hrh"
00019 #include "uikon.hrh"
00020
00021
00022 CControlFrameworkAppUi::CControlFrameworkAppUi()
00023 {
00024 }
00025
00026 CControlFrameworkAppUi::~CControlFrameworkAppUi()
00027 {
00028
00029
00030 TInt view = iAppViews.Count();
00031 while (view--)
00032 {
00033 CControlFrameworkView* v = iAppViews[view];
00034 RemoveFromStack(v);
00035 DeregisterView(*v);
00036 }
00037 iAppViews.ResetAndDestroy();
00038 }
00039
00040
00041
00042
00043
00044 void CControlFrameworkAppUi::ConstructL()
00045 {
00046 BaseConstructL(CEikAppUi::EStandardApp);
00047
00048
00049 CControlFrameworkView* view = CControlFrameworkView::NewLC(*this);
00050 AddViewL(view);
00051 CleanupStack::Pop(view);
00052 }
00053
00054
00055
00056
00057 void CControlFrameworkAppUi::HandleCommandL(TInt aCommandId)
00058 {
00059 CControlFrameworkView& view = *iAppViews[EExampleView];
00060 switch (aCommandId)
00061 {
00062
00063 case ECmdToggleBoldFont:
00064 view.ToggleBold();
00065 break;
00066
00067 case ECmdToggleItalicFont:
00068 view.ToggleItalic();
00069 break;
00070
00071 case ECmdToggleUnderline:
00072 view.ToggleUnderline();
00073 break;
00074
00075 case ECmdToggleStrikethrough:
00076 view.ToggleStrikethrough();
00077 break;
00078
00079 default:
00080 case EEikCmdExit:
00081 Exit();
00082 }
00083 }
00084
00085
00086 static void CleanupRemoveFromStack(TAny* aView)
00087 {
00088 static_cast<CEikAppUi*>(CCoeEnv::Static()->AppUi())->RemoveFromStack(static_cast<CControlFrameworkView*>(aView));
00089 }
00090
00091 static void CleanupDeregisterView(TAny* aView)
00092 {
00093 static_cast<CEikAppUi*>(CCoeEnv::Static()->AppUi())->DeregisterView(*static_cast<CControlFrameworkView*>(aView));
00094 }
00095
00096
00097
00098 void CControlFrameworkAppUi::AddViewL(CControlFrameworkView* aView)
00099 {
00100 ASSERT(aView);
00101 ASSERT(KErrNotFound == iAppViews.Find(aView));
00102
00103 RegisterViewL(*aView);
00104 CleanupStack::PushL(TCleanupItem(CleanupDeregisterView,aView));
00105
00106 AddToStackL(*aView, aView);
00107 CleanupStack::PushL(TCleanupItem(CleanupRemoveFromStack, aView));
00108
00109 iAppViews.AppendL(aView);
00110 CleanupStack::Pop(2);
00111 }