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 #include <barsread.h>
00031 #include <CalendarAPIexample.rsg>
00032 #include "CalendarAPIexampleSearchContainer.h"
00033 #include "CalendarAPIexample.pan"
00034 #include "CalendarAPIexampleAppUi.h"
00035 #include "CalendarAPIexampleSearchView.h"
00036
00037
00038
00039
00040
00041 CCalendarAPIexampleSearchContainer::CCalendarAPIexampleSearchContainer(CCalendarAPIexampleSearchView& aView)
00042 : iSearchView(aView)
00043 {
00044 }
00045
00046
00047 CCalendarAPIexampleSearchContainer::~CCalendarAPIexampleSearchContainer()
00048 {
00049 }
00050
00051
00052 CCalendarAPIexampleSearchContainer* CCalendarAPIexampleSearchContainer::NewL(const TRect& aRect,
00053 CCalendarAPIexampleSearchView& aView)
00054 {
00055 CCalendarAPIexampleSearchContainer* self = new (ELeave) CCalendarAPIexampleSearchContainer(aView);
00056 CleanupStack::PushL(self);
00057 self->ConstructL(aRect);
00058 CleanupStack::Pop(self);
00059 return self;
00060 }
00061
00062
00063 void CCalendarAPIexampleSearchContainer::ConstructL(const TRect& aRect)
00064 {
00065 CreateWindowL();
00066
00067
00068 InitComponentArrayL();
00069
00070 iSearchListBox = new (ELeave) CAknSingleStyleListBox;
00071 iSearchListBox->SetContainerWindowL(*this);
00072
00073 TResourceReader reader;
00074 CEikonEnv::Static()->CreateResourceReaderLC(reader, R_CALENDARAPIEXAMPLE_SEARCH_LIST);
00075 iSearchListBox->ConstructFromResourceL(reader);
00076 CleanupStack::PopAndDestroy();
00077
00078 iSearchListBox->SetListBoxObserver(this);
00079 iSearchListBox->CreateScrollBarFrameL(ETrue);
00080 iSearchListBox->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
00081 CEikScrollBarFrame::EAuto);
00082
00083 Components().AppendLC(iSearchListBox,1);
00084 CleanupStack::Pop( iSearchListBox );
00085
00086 SetRect(aRect);
00087 ActivateL();
00088 }
00089
00090
00091
00092
00093
00094
00095
00096 void CCalendarAPIexampleSearchContainer::SizeChanged()
00097 {
00098 if (iSearchListBox)
00099 {
00100 iSearchListBox->SetRect(Rect());
00101 }
00102 }
00103
00104 void CCalendarAPIexampleSearchContainer::HandleResourceChange(TInt aType)
00105 {
00106 CCoeControl::HandleResourceChange(aType);
00107 if ( aType==KEikDynamicLayoutVariantSwitch )
00108 {
00109 TRect rect;
00110 AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect);
00111 SetRect(rect);
00112 }
00113 }
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124 TKeyResponse CCalendarAPIexampleSearchContainer::OfferKeyEventL(
00125 const TKeyEvent& aKeyEvent,TEventCode aType)
00126 {
00127 if(aType != EEventKey)
00128 {
00129 return EKeyWasNotConsumed;
00130 }
00131 else if(iSearchListBox)
00132 {
00133 return iSearchListBox->OfferKeyEventL( aKeyEvent, aType );
00134 }
00135 else
00136 {
00137 return EKeyWasNotConsumed;
00138 }
00139 }
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149 void CCalendarAPIexampleSearchContainer::Draw(const TRect& aRect) const
00150 {
00151
00152 CWindowGc& gc = SystemGc();
00153 gc.SetPenStyle( CGraphicsContext::ENullPen );
00154 gc.SetBrushColor( KRgbWhite );
00155 gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
00156 gc.DrawRect( aRect );
00157
00158 }
00159
00160
00161
00162
00163
00164
00165 TSearchType CCalendarAPIexampleSearchContainer::SearchType() const
00166 {
00167 switch (iSearchListBox->CurrentItemIndex())
00168 {
00169 case 0:
00170 return EWeek;
00171 case 1:
00172 return EMonth;
00173 case 2:
00174 return ESixMonths;
00175 case 3:
00176 return EYear;
00177 default:
00178 Panic(EUnSupportedSearchType);
00179 break;
00180 }
00181 return EWeek;
00182 }
00183
00184
00185
00186
00187
00188
00189
00190 void CCalendarAPIexampleSearchContainer::HandleListBoxEventL(CEikListBox* , TListBoxEvent aEventType)
00191 {
00192 if (aEventType == EEventEnterKeyPressed || aEventType == EEventItemDoubleClicked)
00193 {
00194 iSearchView.HandleCommandL(ECalendarAPIexampleCmdSearch);
00195 }
00196 }
00197
00198
00199