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