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