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