00001
00002
00003
00004
00005
00006 #include <aknviewappui.h>
00007 #include <aknnotewrappers.h>
00008 #include <CalendarAPIexample.rsg>
00009
00010
00011 #include "CalendarAPIexampleEntryView.h"
00012 #include "CalendarAPIexampleEntryContainer.h"
00013 #include "CalendarAPIexampleEntriesView.h"
00014 #include "CalendarAPIexampleSearchView.h"
00015
00016 #include "CalendarAPIexampleEngine.h"
00017
00018
00019 _LIT(KDeleteConfirmation, "Delete this anniversary?");
00020
00021
00022
00023
00024 CCalendarAPIexampleEntryView* CCalendarAPIexampleEntryView::NewL(MCalendarEngineCommandsInterface& aEngine)
00025 {
00026 CCalendarAPIexampleEntryView* self = CCalendarAPIexampleEntryView::NewLC(aEngine);
00027 CleanupStack::Pop(self);
00028 return self;
00029 }
00030
00031
00032 CCalendarAPIexampleEntryView* CCalendarAPIexampleEntryView::NewLC(MCalendarEngineCommandsInterface& aEngine)
00033 {
00034 CCalendarAPIexampleEntryView* self = new (ELeave) CCalendarAPIexampleEntryView(aEngine);
00035 CleanupStack::PushL(self);
00036 self->ConstructL();
00037 return self;
00038 }
00039
00040
00041 CCalendarAPIexampleEntryView::CCalendarAPIexampleEntryView(
00042 MCalendarEngineCommandsInterface& aEngine) : iEngine(aEngine)
00043 {
00044
00045 }
00046
00047
00048 CCalendarAPIexampleEntryView::~CCalendarAPIexampleEntryView()
00049 {
00050 delete iContainer;
00051 iContainer = NULL;
00052 }
00053
00054
00055 void CCalendarAPIexampleEntryView::ConstructL()
00056 {
00057 BaseConstructL(R_CALENDARAPIEXAMPLE_ENTRY_VIEW);
00058 }
00059
00060
00061
00062
00063
00064
00065 TUid CCalendarAPIexampleEntryView::Id() const
00066 {
00067 return KEntryViewId;
00068 }
00069
00070
00071
00072
00073
00074
00075 void CCalendarAPIexampleEntryView::HandleCommandL( TInt aCommand )
00076 {
00077
00078
00079
00080 switch (aCommand)
00081 {
00082 case ECalendarAPIexampleCmdDelete:
00083 DoDeleteL();
00084 break;
00085 case EAknSoftkeyDone:
00086 DoSaveL();
00087 break;
00088 default:
00089 break;
00090 }
00091 }
00092
00093
00094
00095
00096
00097
00098
00099
00100 void CCalendarAPIexampleEntryView::DoActivateL(
00101 const TVwsViewId& ,
00102 TUid ,
00103 const TDesC8& )
00104 {
00105 if ( !iContainer )
00106 {
00107
00108 TBuf<KMaxNameLength> name;
00109 TTime date;
00110 TBool alarm;
00111 TTime alarmTime;
00112 TInt synchronizationMethod;
00113
00114 iEngine.CreateEntryForModificationL(iModify);
00115
00116 iEngine.GetValuesToSet(name,date,alarm,alarmTime,
00117 synchronizationMethod);
00118
00119 iContainer = CCalendarAPIexampleEntryContainer::NewL(
00120 ClientRect(),name,date.DateTime(),alarm,alarmTime.DateTime(),
00121 synchronizationMethod);
00122
00123 iContainer->SetMopParent(this);
00124
00125
00126 AppUi()->AddToStackL( *this, iContainer );
00127
00128
00129 iContainer->MakeVisible( ETrue );
00130 }
00131 }
00132
00133
00134
00135
00136
00137
00138
00139
00140 void CCalendarAPIexampleEntryView::DoDeactivate()
00141 {
00142 if ( iContainer )
00143 {
00144
00145 AppUi()->RemoveFromStack(iContainer );
00146 }
00147
00148 delete iContainer;
00149 iContainer = NULL;
00150
00151 }
00152
00153
00154
00155
00156
00157
00158
00159
00160 void CCalendarAPIexampleEntryView::DoSaveL()
00161 {
00162 TBuf<KMaxNameLength> name;
00163 TTime date;
00164 TBool alarm;
00165 TTime alarmTime;
00166 TInt sync;
00167
00168 iContainer->SaveL();
00169
00170
00171 iContainer->GetValues( name, date, alarm,
00172 alarmTime, sync );
00173
00174
00175 TDateTime dateTime = date.DateTime();
00176 TDateTime alarmDateTime = alarmTime.DateTime();
00177
00178 TBool valuesOk = iEngine.SetValuesToNewEntry(name,dateTime,alarm,
00179 alarmDateTime,sync);
00180
00181
00182 if ( !valuesOk )
00183 {
00184 CAknInformationNote* note = new (ELeave) CAknInformationNote;
00185 HBufC* errorMsg = CCoeEnv::Static()->AllocReadResourceLC(
00186 R_CALENDARAPIEXAMPLE_INVALID_DATA);
00187 note->ExecuteLD(*errorMsg);
00188 CleanupStack::PopAndDestroy(errorMsg);
00189 }
00190
00191 else
00192 {
00193 iEngine.DoSaveL();
00194
00195
00196 if (iModify)
00197 {
00198
00199
00200 if (iEngine.EntryCount() > 0)
00201 {
00202 AppUi()->ActivateLocalViewL(KEntriesViewId);
00203 }
00204
00205
00206 else
00207 {
00208 AppUi()->ActivateLocalViewL(KSearchViewId);
00209 }
00210 }
00211
00212 else
00213 {
00214 AppUi()->ActivateLocalViewL(KSearchViewId);
00215 }
00216 }
00217 }
00218
00219
00220
00221
00222
00223
00224 void CCalendarAPIexampleEntryView::DoDeleteL()
00225 {
00226
00227 CAknQueryDialog* query = CAknQueryDialog::NewL();
00228 CleanupStack::PushL(query);
00229 query->SetPromptL(KDeleteConfirmation);
00230 CleanupStack::Pop(query);
00231 if (query->ExecuteLD(R_CALENDARAPIEXAMPLE_CONFIRMATION_QUERY))
00232 {
00233
00234 if (iModify)
00235 {
00236 iEngine.ExecuteDeletionL();
00237 }
00238
00239 else
00240 {
00241 AppUi()->ActivateLocalViewL(KSearchViewId);
00242 }
00243 }
00244 }
00245
00246
00247