00001
00002
00003
00004
00005
00006 #include <aknviewappui.h>
00007 #include <AknQueryDialog.h>
00008 #include <CalendarAPIexample.rsg>
00009 #include "CalendarAPIexampleEntriesView.h"
00010 #include "CalendarAPIexampleEntriesContainer.h"
00011 #include "CalendarAPIexample.hrh"
00012 #include "CalendarAPIexampleSearchView.h"
00013 #include "CalendarAPIexampleEntryView.h"
00014 #include "CalendarAPIexampleDocument.h"
00015
00016
00017 _LIT(KDeleteConfirmation, "Delete the selected anniversary?");
00018
00019
00020
00021
00022
00023 CCalendarAPIexampleEntriesView* CCalendarAPIexampleEntriesView::NewL(MCalendarEngineCommandsInterface& aEngine)
00024 {
00025 CCalendarAPIexampleEntriesView* self = CCalendarAPIexampleEntriesView::NewLC(aEngine);
00026 CleanupStack::Pop(self);
00027 return self;
00028 }
00029
00030
00031 CCalendarAPIexampleEntriesView* CCalendarAPIexampleEntriesView::NewLC(MCalendarEngineCommandsInterface& aEngine)
00032 {
00033 CCalendarAPIexampleEntriesView* self = new (ELeave) CCalendarAPIexampleEntriesView(aEngine);
00034 CleanupStack::PushL(self);
00035 self->ConstructL();
00036 return self;
00037 }
00038
00039
00040 CCalendarAPIexampleEntriesView::CCalendarAPIexampleEntriesView(
00041 MCalendarEngineCommandsInterface& aEngine) : iEngine(aEngine)
00042 {
00043
00044 }
00045
00046
00047
00048
00049 CCalendarAPIexampleEntriesView::~CCalendarAPIexampleEntriesView()
00050 {
00051 delete iContainer;
00052 iContainer = NULL;
00053 }
00054
00055
00056 void CCalendarAPIexampleEntriesView::ConstructL()
00057 {
00058 BaseConstructL(R_CALENDARAPIEXAMPLE_ENTRIES_VIEW);
00059 }
00060
00061
00062
00063
00064
00065
00066 TUid CCalendarAPIexampleEntriesView::Id() const
00067 {
00068 return KEntriesViewId;
00069 }
00070
00071
00072
00073
00074
00075
00076 void CCalendarAPIexampleEntriesView::HandleCommandL( TInt aCommand )
00077 {
00078 switch (aCommand)
00079 {
00080 case ECalendarAPIexampleCmdEdit:
00081 DoEditL();
00082 break;
00083 case ECalendarAPIexampleCmdDelete:
00084 DoDeleteL();
00085 break;
00086 case EAknSoftkeyBack:
00087 AppUi()->ActivateLocalViewL(KSearchViewId);
00088 break;
00089 default:
00090 break;
00091 }
00092 }
00093
00094
00095
00096
00097
00098
00099
00100
00101 void CCalendarAPIexampleEntriesView::DoActivateL(
00102 const TVwsViewId& ,
00103 TUid ,
00104 const TDesC8& )
00105 {
00106 if ( !iContainer )
00107 {
00108 iContainer = CCalendarAPIexampleEntriesContainer::NewL(
00109 ClientRect(), *this, iEngine);
00110 iContainer->SetMopParent(this);
00111
00112
00113 AppUi()->AddToStackL( *this, iContainer );
00114
00115
00116 iContainer->MakeVisible( ETrue );
00117 }
00118 }
00119
00120
00121
00122
00123
00124
00125
00126
00127 void CCalendarAPIexampleEntriesView::DoDeactivate()
00128 {
00129 if ( iContainer )
00130 {
00131
00132 AppUi()->RemoveFromStack(iContainer );
00133 }
00134
00135 delete iContainer;
00136 iContainer = NULL;
00137
00138 }
00139
00140
00141
00142
00143
00144
00145
00146
00147 void CCalendarAPIexampleEntriesView::DoDeleteL()
00148 {
00149 CAknQueryDialog* query = CAknQueryDialog::NewL();
00150 CleanupStack::PushL(query);
00151 query->SetPromptL(KDeleteConfirmation);
00152 CleanupStack::Pop(query);
00153 if (query->ExecuteLD(R_CALENDARAPIEXAMPLE_CONFIRMATION_QUERY))
00154 {
00155 iEngine.DeleteEntryL(iContainer->CurrentItemIndex());
00156
00157
00158 if (iEngine.EntryCount() == 0)
00159 {
00160 AppUi()->ActivateLocalViewL(KSearchViewId);
00161 }
00162
00163 else
00164 {
00165 iContainer->PopulateListBoxL();
00166 }
00167 }
00168 }
00169
00170
00171
00172
00173
00174
00175
00176 void CCalendarAPIexampleEntriesView::DoEditL()
00177 {
00178 iEngine.SetModifyIndex(iContainer->CurrentItemIndex());
00179 AppUi()->ActivateLocalViewL(KEntryViewId);
00180 }
00181
00182