102 { |
102 { |
103 _LIT(KPanicCat,"EIKON-MFNE"); |
103 _LIT(KPanicCat,"EIKON-MFNE"); |
104 User::Panic(KPanicCat, aPanic); |
104 User::Panic(KPanicCat, aPanic); |
105 } |
105 } |
106 |
106 |
|
107 NONSHARABLE_CLASS(CEikTimeEditorExtension) : public CBase, |
|
108 public CAknExtendedInputCapabilities::MAknEventObserver |
|
109 { |
|
110 public: |
|
111 static CEikTimeEditorExtension* NewL(); |
|
112 virtual ~CEikTimeEditorExtension(); |
|
113 private: |
|
114 CEikTimeEditorExtension(); |
|
115 |
|
116 void ConstructL(); |
|
117 public: |
|
118 /** |
|
119 * From CAknExtendedInputCapabilities::MAknEventObserver |
|
120 * Handle an event |
|
121 * |
|
122 * @since S60 v9.2 |
|
123 * @param aEvent An event, see TInputCapabilitiesEvent |
|
124 * @param aParams Event dependent parameters |
|
125 */ |
|
126 |
|
127 void HandleInputCapabilitiesEventL( TInt aEvent, TAny* aParams ); |
|
128 public: |
|
129 CEikTimeEditor * iEditor; |
|
130 }; |
|
131 |
|
132 CEikTimeEditorExtension* CEikTimeEditorExtension::NewL() |
|
133 { |
|
134 CEikTimeEditorExtension* self = new (ELeave) CEikTimeEditorExtension(); |
|
135 CleanupStack::PushL( self ); |
|
136 self->ConstructL(); |
|
137 CleanupStack::Pop(); |
|
138 return self; |
|
139 } |
|
140 |
|
141 CEikTimeEditorExtension::~CEikTimeEditorExtension() |
|
142 { |
|
143 |
|
144 } |
|
145 |
|
146 CEikTimeEditorExtension::CEikTimeEditorExtension() |
|
147 { |
|
148 } |
|
149 |
|
150 void CEikTimeEditorExtension::ConstructL() |
|
151 { |
|
152 } |
|
153 |
|
154 void CEikTimeEditorExtension::HandleInputCapabilitiesEventL( TInt aEvent, TAny* /*aParams*/ ) |
|
155 { |
|
156 switch ( aEvent ) |
|
157 { |
|
158 case CAknExtendedInputCapabilities::MAknEventObserver::EChangeAmPm: |
|
159 if ( iEditor ) |
|
160 { |
|
161 iEditor->ChangeAmPm(); |
|
162 } |
|
163 break; |
|
164 } |
|
165 return; |
|
166 } |
|
167 |
|
168 |
|
169 NONSHARABLE_CLASS(CEikTimeAndDateEditorExtension) : public CBase, |
|
170 public CAknExtendedInputCapabilities::MAknEventObserver |
|
171 { |
|
172 public: |
|
173 static CEikTimeAndDateEditorExtension* NewL(); |
|
174 virtual ~CEikTimeAndDateEditorExtension(); |
|
175 private: |
|
176 CEikTimeAndDateEditorExtension(); |
|
177 |
|
178 void ConstructL(); |
|
179 public: |
|
180 /** |
|
181 * From CAknExtendedInputCapabilities::MAknEventObserver |
|
182 * Handle an event |
|
183 * |
|
184 * @since S60 v9.2 |
|
185 * @param aEvent An event, see TInputCapabilitiesEvent |
|
186 * @param aParams Event dependent parameters |
|
187 */ |
|
188 |
|
189 void HandleInputCapabilitiesEventL( TInt aEvent, TAny* aParams ); |
|
190 public: |
|
191 CEikTimeAndDateEditor * iEditor; |
|
192 }; |
|
193 |
|
194 CEikTimeAndDateEditorExtension* CEikTimeAndDateEditorExtension::NewL() |
|
195 { |
|
196 CEikTimeAndDateEditorExtension* self = new (ELeave) CEikTimeAndDateEditorExtension(); |
|
197 CleanupStack::PushL( self ); |
|
198 self->ConstructL(); |
|
199 CleanupStack::Pop(); |
|
200 return self; |
|
201 } |
|
202 |
|
203 CEikTimeAndDateEditorExtension::~CEikTimeAndDateEditorExtension() |
|
204 { |
|
205 |
|
206 } |
|
207 |
|
208 CEikTimeAndDateEditorExtension::CEikTimeAndDateEditorExtension() |
|
209 { |
|
210 } |
|
211 |
|
212 void CEikTimeAndDateEditorExtension::ConstructL() |
|
213 { |
|
214 } |
|
215 |
|
216 void CEikTimeAndDateEditorExtension::HandleInputCapabilitiesEventL( TInt aEvent, TAny* /*aParams*/ ) |
|
217 { |
|
218 switch ( aEvent ) |
|
219 { |
|
220 case CAknExtendedInputCapabilities::MAknEventObserver::EChangeAmPm: |
|
221 if ( iEditor ) |
|
222 { |
|
223 iEditor->ChangeAmPm(); |
|
224 } |
|
225 break; |
|
226 } |
|
227 return; |
|
228 } |
107 NONSHARABLE_CLASS(CEikMfneExtension) : public CBase, public MCoeFepAwareTextEditor |
229 NONSHARABLE_CLASS(CEikMfneExtension) : public CBase, public MCoeFepAwareTextEditor |
108 { |
230 { |
109 public: |
231 public: |
110 static CEikMfneExtension* NewL(); |
232 static CEikMfneExtension* NewL(); |
111 virtual ~CEikMfneExtension(); |
233 virtual ~CEikMfneExtension(); |
153 CEikMfne* iEditor; // not owned |
275 CEikMfne* iEditor; // not owned |
154 CAknExtendedInputCapabilities::CAknExtendedInputCapabilitiesProvider* |
276 CAknExtendedInputCapabilities::CAknExtendedInputCapabilitiesProvider* |
155 iExtendedInputCapabilitiesProvider; |
277 iExtendedInputCapabilitiesProvider; |
156 TInt iClipGcToRect; // Mainly for 0/1 values |
278 TInt iClipGcToRect; // Mainly for 0/1 values |
157 TInt iDisablePenInput; // Mainly for 0/1 values |
279 TInt iDisablePenInput; // Mainly for 0/1 values |
158 TBool iTwiceTap; |
|
159 TBool iCursorShown; |
280 TBool iCursorShown; |
160 TBool iFingerSupport; |
281 TBool iFingerSupport; |
161 TInt iFingerParam; |
282 TInt iFingerParam; |
162 TBool iHighlightAll; |
283 TBool iHighlightAll; |
163 TBool iTouchActivated; |
284 TBool iTouchActivated; |
164 TCallBack iValidateValueCallBack; |
285 TCallBack iValidateValueCallBack; |
165 |
286 |
166 MTouchFeedback* iFeedback; |
287 MTouchFeedback* iFeedback; |
167 TBool iLaunchPenInputAutomatic; |
288 TBool iLaunchPenInputAutomatic; |
168 TBool iPartialScreenInput; |
289 TBool iPartialScreenInput; |
|
290 TBool iChangeAmPm; |
169 }; |
291 }; |
170 |
292 |
171 // Implementation of the extension |
293 // Implementation of the extension |
172 CEikMfneExtension* CEikMfneExtension::NewL() |
294 CEikMfneExtension* CEikMfneExtension::NewL() |
173 { |
295 { |
1610 const TInt code=aKeyEvent.iCode; |
1732 const TInt code=aKeyEvent.iCode; |
1611 |
1733 |
1612 if ( !ConsumesUpAndDownKeys() && (code==EKeyDownArrow || code==EKeyUpArrow)) |
1734 if ( !ConsumesUpAndDownKeys() && (code==EKeyDownArrow || code==EKeyUpArrow)) |
1613 return EKeyWasNotConsumed; |
1735 return EKeyWasNotConsumed; |
1614 |
1736 |
1615 if ((aType==EEventKey) && (iCurrentField!=ENullIndex) && |
1737 if ((aType==EEventKey) && (iCurrentField!=ENullIndex) && iExtension && |
1616 ( aKeyEvent.iRepeats == 0 || code == EKeyLeftArrow || |
1738 ( aKeyEvent.iRepeats == 0 || code == EKeyLeftArrow || |
1617 code == EKeyRightArrow || code == EKeyDownArrow || code == EKeyUpArrow ) ) |
1739 code == EKeyRightArrow || code == EKeyDownArrow || code == EKeyUpArrow ) ) |
1618 { |
1740 { |
1619 iExtension->iHighlightAll = EFalse; |
1741 iExtension->iHighlightAll = EFalse; |
1620 const CFont& font=*Font(); |
1742 const CFont& font=*Font(); |
1740 EXPORT_C void CEikMfne::HandleInteraction(TBool aHandleDeHighlight, TInt aNewCurrentField, TInt aOldWidthInPixelsOfOldCurrentField, |
1862 EXPORT_C void CEikMfne::HandleInteraction(TBool aHandleDeHighlight, TInt aNewCurrentField, TInt aOldWidthInPixelsOfOldCurrentField, |
1741 CEikMfneField::THighlightType aOldHighlightTypeOfOldCurrentField, TBool& aDataAltered, TBool& aError) |
1863 CEikMfneField::THighlightType aOldHighlightTypeOfOldCurrentField, TBool& aDataAltered, TBool& aError) |
1742 { |
1864 { |
1743 const CFont& font=*Font(); |
1865 const CFont& font=*Font(); |
1744 TBool drawAllFields = ETrue; |
1866 TBool drawAllFields = ETrue; |
1745 if (aHandleDeHighlight) |
1867 if ( aHandleDeHighlight && iExtension ) |
1746 { |
1868 { |
1747 iFields[iCurrentField]->HandleDeHighlight(font, *iEikonEnv, aDataAltered, aError); |
1869 iFields[iCurrentField]->HandleDeHighlight(font, *iEikonEnv, aDataAltered, aError); |
1748 iExtension->iValidateValueCallBack.CallBack(); |
1870 iExtension->iValidateValueCallBack.CallBack(); |
1749 if (aError) |
1871 if (aError) |
1750 aNewCurrentField=iCurrentField; |
1872 aNewCurrentField=iCurrentField; |
1929 { |
2051 { |
1930 iExtension->iFingerSupport = ( TBool )( aFeatureParam ); |
2052 iExtension->iFingerSupport = ( TBool )( aFeatureParam ); |
1931 iExtension->iDisablePenInput = !( iExtension->iFingerSupport ); |
2053 iExtension->iDisablePenInput = !( iExtension->iFingerSupport ); |
1932 iExtension->iFingerParam = aFeatureParam; |
2054 iExtension->iFingerParam = aFeatureParam; |
1933 iExtension->iHighlightAll = ( iExtension->iFingerSupport && |
2055 iExtension->iHighlightAll = ( iExtension->iFingerSupport && |
|
2056 !iExtension->iTouchActivated && |
1934 aFeatureParam == EnableWithAllHighlight ); |
2057 aFeatureParam == EnableWithAllHighlight ); |
1935 } |
2058 } |
1936 else |
2059 else |
1937 { |
2060 { |
1938 ret = KErrGeneral; |
2061 ret = KErrGeneral; |
1958 caps |= CAknExtendedInputCapabilities::EInputEditorPartialScreen; |
2081 caps |= CAknExtendedInputCapabilities::EInputEditorPartialScreen; |
1959 } |
2082 } |
1960 else |
2083 else |
1961 { |
2084 { |
1962 caps &= ~CAknExtendedInputCapabilities::EInputEditorPartialScreen; |
2085 caps &= ~CAknExtendedInputCapabilities::EInputEditorPartialScreen; |
|
2086 } |
|
2087 iExtension->iExtendedInputCapabilities->SetCapabilities( caps ); |
|
2088 } |
|
2089 else |
|
2090 { |
|
2091 ret = KErrGeneral; |
|
2092 } |
|
2093 break; |
|
2094 case EChangeAmPm: |
|
2095 if ( iExtension ) |
|
2096 { |
|
2097 iExtension->iChangeAmPm = aFeatureParam; |
|
2098 TUint caps( iExtension->iExtendedInputCapabilities->Capabilities() ); |
|
2099 if ( aFeatureParam ) |
|
2100 { |
|
2101 caps |= CAknExtendedInputCapabilities::EInputEditorAmPm; |
|
2102 } |
|
2103 else |
|
2104 { |
|
2105 caps &= ~CAknExtendedInputCapabilities::EInputEditorAmPm; |
1963 } |
2106 } |
1964 iExtension->iExtendedInputCapabilities->SetCapabilities( caps ); |
2107 iExtension->iExtendedInputCapabilities->SetCapabilities( caps ); |
1965 } |
2108 } |
1966 else |
2109 else |
1967 { |
2110 { |
2251 } |
2405 } |
2252 leftPositionOfThisField+=widthOfThisFieldInPixels; |
2406 leftPositionOfThisField+=widthOfThisFieldInPixels; |
2253 } |
2407 } |
2254 if (newField==ENullIndex) |
2408 if (newField==ENullIndex) |
2255 newField=iCurrentField; |
2409 newField=iCurrentField; |
2256 if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) |
|
2257 { |
|
2258 iExtension->iTwiceTap = ( iExtension->iFingerSupport ? ETrue : |
|
2259 newField == iCurrentField ); |
|
2260 } |
|
2261 |
2410 |
2262 if (iExtension && aPointerEvent.iType == TPointerEvent::EButton1Down) |
2411 if (iExtension && aPointerEvent.iType == TPointerEvent::EButton1Down) |
2263 { |
2412 { |
2264 // Edit feedback on down event in current field, |
2413 // Edit feedback on down event in current field, |
2265 // Edit feedback when changing fields |
2414 // Edit feedback when changing fields |
2266 TTouchLogicalFeedback feedback = |
2415 TTouchLogicalFeedback feedback = ETouchFeedbackEdit; |
2267 ( iExtension->iTwiceTap ? ETouchFeedbackEditor : ETouchFeedbackEditor ); |
|
2268 iExtension->iFeedback->InstantFeedback( this, feedback ); |
2416 iExtension->iFeedback->InstantFeedback( this, feedback ); |
2269 } |
2417 } |
2270 TBool createPopoutIfRequired=((newField==iCurrentField) && aPointerEvent.iType==TPointerEvent::EButton1Down && IsFocused()); |
2418 TBool createPopoutIfRequired=((newField==iCurrentField) && aPointerEvent.iType==TPointerEvent::EButton1Down && IsFocused()); |
2271 TBool dataAltered=EFalse; |
2419 TBool dataAltered=EFalse; |
2272 TBool error=EFalse; |
2420 TBool error=EFalse; |
2277 ReportEventL( MCoeControlObserver::EEventStateChanged ); |
2425 ReportEventL( MCoeControlObserver::EEventStateChanged ); |
2278 ReportUpdate(); |
2426 ReportUpdate(); |
2279 } |
2427 } |
2280 else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) |
2428 else if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) |
2281 { |
2429 { |
2282 if ( iExtension && !iExtension->iDisablePenInput && iExtension->iTwiceTap ) |
2430 if ( iExtension && !iExtension->iDisablePenInput ) |
2283 { |
2431 { |
2284 iExtension->iFeedback->InstantFeedback( this, |
2432 iExtension->iFeedback->InstantFeedback( this, |
2285 ETouchFeedbackEditor, |
2433 ETouchFeedbackEdit, |
2286 ETouchFeedbackVibra, |
2434 ETouchFeedbackVibra, |
2287 aPointerEvent ); |
2435 aPointerEvent ); |
2288 LaunchPenInputL(); |
2436 LaunchPenInputL(); |
2289 } |
2437 } |
2290 } |
2438 } |
2444 TBool focused = IsFocused(); |
2592 TBool focused = IsFocused(); |
2445 for (TInt i=0; i<=aLastField; ++i) |
2593 for (TInt i=0; i<=aLastField; ++i) |
2446 { |
2594 { |
2447 if (i>=aFirstField) |
2595 if (i>=aFirstField) |
2448 { |
2596 { |
2449 if (focused && ( iExtension->iHighlightAll || ( i == iCurrentField |
2597 if (focused && iExtension && ( iExtension->iHighlightAll || ( i == iCurrentField |
2450 && iFields[i]->HighlightType() == CEikMfneField::EInverseVideo |
2598 && iFields[i]->HighlightType() == CEikMfneField::EInverseVideo |
2451 && iFields[i]->FieldText().Length() > 0 ) ) && !isEmpty ) |
2599 && iFields[i]->FieldText().Length() > 0 ) ) && !isEmpty ) |
2452 { |
2600 { |
2453 // Currently no skin effect for the highlighted field drawing |
2601 // Currently no skin effect for the highlighted field drawing |
2454 SetGcToInverseVideo(aGc); |
2602 SetGcToInverseVideo(aGc); |
2455 } |
2603 } |
2456 else |
2604 else |
2457 { |
2605 { |
2458 if (IsDimmed()) |
2606 |
2459 SetGcToDimmedVideo(aGc); |
|
2460 else |
|
2461 SetGcToNormalVideo(aGc); |
|
2462 |
2607 |
2463 // Note!! This is taking responsibility away from the CEikMfne Field for drawing |
2608 // Note!! This is taking responsibility away from the CEikMfne Field for drawing |
2464 // Skin background is drawn for the fields here |
2609 // Skin background is drawn for the fields here |
2465 if( SkinningBackground() && !iFlags[EUseOverrideColors] ) |
2610 if( SkinningBackground() && !iFlags[EUseOverrideColors] ) |
2466 { |
2611 { |
2490 } |
2635 } |
2491 } |
2636 } |
2492 |
2637 |
2493 // Set up null brush GC here for the upcoming draw |
2638 // Set up null brush GC here for the upcoming draw |
2494 aGc.SetBrushStyle(CGraphicsContext::ENullBrush); |
2639 aGc.SetBrushStyle(CGraphicsContext::ENullBrush); |
|
2640 } |
|
2641 // set aGc for drawing field text |
|
2642 if ( IsDimmed() ) |
|
2643 { |
|
2644 SetGcToDimmedVideo( aGc ); |
|
2645 } |
|
2646 else |
|
2647 { |
|
2648 SetGcToNormalVideo( aGc ); |
2495 } |
2649 } |
2496 } |
2650 } |
2497 // This draw must only draw the text with a null brush or draw block highlight |
2651 // This draw must only draw the text with a null brush or draw block highlight |
2498 iFields[i]->Draw(aGc, font, topLeftOfField); |
2652 iFields[i]->Draw(aGc, font, topLeftOfField); |
2499 } |
2653 } |
2701 TPoint cursorPosition( 0, 0 ); |
2855 TPoint cursorPosition( 0, 0 ); |
2702 |
2856 |
2703 GetCursorInfo( cursorPosition, cursorHeight, cursorWidth, cursorAscent ); |
2857 GetCursorInfo( cursorPosition, cursorHeight, cursorWidth, cursorAscent ); |
2704 |
2858 |
2705 iEikonEnv->DrawCursor(this, cursorPosition, cursorWidth, cursorAscent, cursorHeight); |
2859 iEikonEnv->DrawCursor(this, cursorPosition, cursorWidth, cursorAscent, cursorHeight); |
2706 iExtension->iCursorShown = ETrue; |
2860 if ( iExtension ) |
|
2861 { |
|
2862 iExtension->iCursorShown = ETrue; |
|
2863 } |
2707 } |
2864 } |
2708 |
2865 |
2709 void CEikMfne::HideCursor() |
2866 void CEikMfne::HideCursor() |
2710 { |
2867 { |
2711 if ( iExtension->iCursorShown ) |
2868 if ( iExtension && iExtension->iCursorShown ) |
2712 { |
2869 { |
2713 iEikonEnv->HideCursor(this); |
2870 iEikonEnv->HideCursor(this); |
2714 iExtension->iCursorShown = EFalse; |
2871 iExtension->iCursorShown = EFalse; |
2715 } |
2872 } |
2716 } |
2873 } |
3148 TInt aSecondMin,TInt aSecondMax,const CFont& aFont); |
3305 TInt aSecondMin,TInt aSecondMax,const CFont& aFont); |
3149 TTime Time() const; |
3306 TTime Time() const; |
3150 void SetUninitialised(TBool aUninitialised); |
3307 void SetUninitialised(TBool aUninitialised); |
3151 TBool IsUninitialised() const; |
3308 TBool IsUninitialised() const; |
3152 void RefreshFromLocale(const CFont& aFont); |
3309 void RefreshFromLocale(const CFont& aFont); |
3153 |
3310 void ChangeAmPm(); |
|
3311 TBool HasAmPm(); |
3154 private: |
3312 private: |
3155 void AddAmPmFieldsIfNecessaryL(CEikMfne& aOwner, TAmPm aAmPm, TLocalePos aPos); |
3313 void AddAmPmFieldsIfNecessaryL(CEikMfne& aOwner, TAmPm aAmPm, TLocalePos aPos); |
3156 private: |
3314 private: |
3157 enum // these are needed in case the OS locale changes between NumFieldsRequired and ConstructFieldsL being called |
3315 enum // these are needed in case the OS locale changes between NumFieldsRequired and ConstructFieldsL being called |
3158 { |
3316 { |
3419 (iMinute && iMinute->IsUninitialised()) || |
3577 (iMinute && iMinute->IsUninitialised()) || |
3420 (iHour && iHour->IsUninitialised()) || |
3578 (iHour && iHour->IsUninitialised()) || |
3421 (iAmPm && iAmPm->IsUninitialised()); |
3579 (iAmPm && iAmPm->IsUninitialised()); |
3422 } |
3580 } |
3423 |
3581 |
3424 |
3582 void CTimeEditor::ChangeAmPm() |
|
3583 { |
|
3584 if ( iAmPm && HasAmPm() ) |
|
3585 { |
|
3586 if ( iAmPm->IdOfCurrentSymbolicItem() == EPm ) |
|
3587 { |
|
3588 iAmPm->SetCurrentSymbolicItemToId(EAm); |
|
3589 } |
|
3590 else |
|
3591 { |
|
3592 iAmPm->SetCurrentSymbolicItemToId(EPm); |
|
3593 } |
|
3594 } |
|
3595 } |
|
3596 |
|
3597 TBool CTimeEditor::HasAmPm() |
|
3598 { |
|
3599 return iAmPm && ( iFlags&EIn12HourFormat ); |
|
3600 } |
3425 // CDateEditor |
3601 // CDateEditor |
3426 |
3602 |
3427 class CDateEditor : public CBase |
3603 class CDateEditor : public CBase |
3428 { |
3604 { |
3429 public: |
3605 public: |
3817 } |
3993 } |
3818 |
3994 |
3819 EXPORT_C CEikTimeEditor::~CEikTimeEditor() |
3995 EXPORT_C CEikTimeEditor::~CEikTimeEditor() |
3820 { |
3996 { |
3821 AKNTASHOOK_REMOVE(); |
3997 AKNTASHOOK_REMOVE(); |
|
3998 iExtension->iExtendedInputCapabilities->UnregisterObserver(iTimeExtension); |
3822 delete iTimeEditor; |
3999 delete iTimeEditor; |
|
4000 delete iTimeExtension; |
3823 } |
4001 } |
3824 |
4002 |
3825 EXPORT_C void CEikTimeEditor::ConstructL(const TTime& aMinimumTime, const TTime& aMaximumTime, const TTime& aInitialTime, TUint32 aFlags) |
4003 EXPORT_C void CEikTimeEditor::ConstructL(const TTime& aMinimumTime, const TTime& aMaximumTime, const TTime& aInitialTime, TUint32 aFlags) |
3826 { |
4004 { |
3827 iTimeEditor=new(ELeave) CTimeEditor; |
4005 iTimeEditor=new(ELeave) CTimeEditor; |
3828 //CreateFieldArrayL(iTimeEditor->NumFieldsRequired(aWithoutSecondsField? CTimeEditor::EWithoutSecondsField: 0)); |
4006 //CreateFieldArrayL(iTimeEditor->NumFieldsRequired(aWithoutSecondsField? CTimeEditor::EWithoutSecondsField: 0)); |
3829 CreateFieldArrayL(iTimeEditor->NumFieldsRequired(aFlags)); |
4007 CreateFieldArrayL(iTimeEditor->NumFieldsRequired(aFlags)); |
3830 iTimeEditor->ConstructFieldsL(*this, aInitialTime, *Font()); |
4008 iTimeEditor->ConstructFieldsL(*this, aInitialTime, *Font()); |
3831 iTimeEditor->RefreshFromLocale(*Font()); |
4009 iTimeEditor->RefreshFromLocale(*Font()); |
3832 DoSetMinimumAndMaximum(aMinimumTime, aMaximumTime); |
4010 DoSetMinimumAndMaximum(aMinimumTime, aMaximumTime); |
|
4011 iTimeExtension = CEikTimeEditorExtension::NewL(); |
|
4012 iTimeExtension->iEditor = this; |
|
4013 iExtension->iExtendedInputCapabilities->RegisterObserver(iTimeExtension); |
|
4014 SetFeature( CEikMfne::EChangeAmPm, iTimeEditor->HasAmPm() ); |
3833 } |
4015 } |
3834 |
4016 |
3835 EXPORT_C void CEikTimeEditor::SetMinimumAndMaximum(const TTime& aMinimumTime, const TTime& aMaximumTime) |
4017 EXPORT_C void CEikTimeEditor::SetMinimumAndMaximum(const TTime& aMinimumTime, const TTime& aMaximumTime) |
3836 { |
4018 { |
3837 // __ASSERT_ALWAYS((aMinimumTime>=iMinimumTime) && (aMaximumTime<=iMaximumTime), Panic(EEikPanicTimeEditorBadMinimumAndMaximum1)); |
4019 // __ASSERT_ALWAYS((aMinimumTime>=iMinimumTime) && (aMaximumTime<=iMaximumTime), Panic(EEikPanicTimeEditorBadMinimumAndMaximum1)); |
3923 EXPORT_C TBool CEikTimeEditor::IsUninitialised() const |
4105 EXPORT_C TBool CEikTimeEditor::IsUninitialised() const |
3924 { |
4106 { |
3925 return iTimeEditor->IsUninitialised(); |
4107 return iTimeEditor->IsUninitialised(); |
3926 } |
4108 } |
3927 |
4109 |
|
4110 void CEikTimeEditor::ChangeAmPm( ) |
|
4111 { |
|
4112 TInt para( 0 ); |
|
4113 GetFeature( CEikMfne::EChangeAmPm, para ); |
|
4114 if ( para ) |
|
4115 { |
|
4116 iTimeEditor->ChangeAmPm(); |
|
4117 DrawDeferred(); |
|
4118 TRAP_IGNORE ( ReportEventL( MCoeControlObserver::EEventStateChanged ) ); |
|
4119 ReportUpdate(); |
|
4120 } |
|
4121 return; |
|
4122 } |
3928 // CEikDateEditor |
4123 // CEikDateEditor |
3929 |
4124 |
3930 EXPORT_C CEikDateEditor::CEikDateEditor() |
4125 EXPORT_C CEikDateEditor::CEikDateEditor() |
3931 { |
4126 { |
3932 __DECLARE_NAME(_S("CEikDateEditor")); |
4127 __DECLARE_NAME(_S("CEikDateEditor")); |
3987 TTime CEikDateEditor::GetTTime() const |
4182 TTime CEikDateEditor::GetTTime() const |
3988 { |
4183 { |
3989 return(Date()); |
4184 return(Date()); |
3990 } |
4185 } |
3991 |
4186 |
3992 EXPORT_C TKeyResponse CEikDateEditor::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) |
4187 EXPORT_C TKeyResponse CEikDateEditor::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) |
3993 { |
4188 { |
3994 if (iDateEditor->OfferKeyEventL(aKeyEvent, aType)==EKeyWasConsumed) |
4189 TKeyResponse ret = EKeyWasNotConsumed; |
3995 return EKeyWasConsumed; |
4190 if ( iDateEditor->OfferKeyEventL( aKeyEvent, aType ) == EKeyWasConsumed ) |
3996 if ( ( aType==EEventKey)&& |
|
3997 ( aKeyEvent.iCode == EKeyLeftArrow || aKeyEvent.iCode == EKeyRightArrow || |
|
3998 aKeyEvent.iCode == EKeyDownArrow || aKeyEvent.iCode == EKeyUpArrow ) ) |
|
3999 { |
4191 { |
4000 iDateEditor->UpdateMaxDay( *Font() ); |
4192 ret = EKeyWasConsumed; |
4001 } |
4193 } |
4002 |
4194 else |
4003 return CEikMfne::OfferKeyEventL(aKeyEvent, aType); |
4195 { |
|
4196 ret = CEikMfne::OfferKeyEventL( aKeyEvent, aType ); |
|
4197 if ( ( aType == EEventKey ) && |
|
4198 ( aKeyEvent.iCode == EKeyDownArrow || aKeyEvent.iCode == EKeyUpArrow ) ) |
|
4199 { |
|
4200 iDateEditor->UpdateMaxDay( *Font() ); |
|
4201 this->DrawDeferred(); |
|
4202 } |
|
4203 } |
|
4204 return ret; |
4004 } |
4205 } |
4005 |
4206 |
4006 EXPORT_C void CEikDateEditor::ConstructFromResourceL(TResourceReader& aResourceReader) |
4207 EXPORT_C void CEikDateEditor::ConstructFromResourceL(TResourceReader& aResourceReader) |
4007 { |
4208 { |
4008 TTime minimumDate=ReadDate(aResourceReader); |
4209 TTime minimumDate=ReadDate(aResourceReader); |
4099 } |
4300 } |
4100 |
4301 |
4101 EXPORT_C CEikTimeAndDateEditor::~CEikTimeAndDateEditor() |
4302 EXPORT_C CEikTimeAndDateEditor::~CEikTimeAndDateEditor() |
4102 { |
4303 { |
4103 AKNTASHOOK_REMOVE(); |
4304 AKNTASHOOK_REMOVE(); |
|
4305 iExtension->iExtendedInputCapabilities->UnregisterObserver(iTimeDateExtension); |
4104 delete iTimeEditor; |
4306 delete iTimeEditor; |
4105 delete iDateEditor; |
4307 delete iDateEditor; |
|
4308 delete iTimeDateExtension; |
4106 } |
4309 } |
4107 |
4310 |
4108 EXPORT_C void CEikTimeAndDateEditor::ConstructL(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate, |
4311 EXPORT_C void CEikTimeAndDateEditor::ConstructL(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate, |
4109 const TTime& aInitialTimeAndDate,TUint32 aFlags, HBufC* aInterveningText) |
4312 const TTime& aInitialTimeAndDate,TUint32 aFlags, HBufC* aInterveningText) |
4110 { |
4313 { |
4146 |
4349 |
4147 DoSetMinimumAndMaximum(aMinimumTimeAndDate, aMaximumTimeAndDate); |
4350 DoSetMinimumAndMaximum(aMinimumTimeAndDate, aMaximumTimeAndDate); |
4148 // do stuff that can only be done when all leaving functions have successfully been done |
4351 // do stuff that can only be done when all leaving functions have successfully been done |
4149 if (aInterveningText) |
4352 if (aInterveningText) |
4150 interveningText->SetText(aInterveningText); |
4353 interveningText->SetText(aInterveningText); |
|
4354 iTimeDateExtension = CEikTimeAndDateEditorExtension::NewL(); |
|
4355 iTimeDateExtension->iEditor = this; |
|
4356 iExtension->iExtendedInputCapabilities->RegisterObserver(iTimeDateExtension); |
|
4357 SetFeature( CEikMfne::EChangeAmPm, iTimeEditor->HasAmPm() ); |
4151 } |
4358 } |
4152 |
4359 |
4153 EXPORT_C void CEikTimeAndDateEditor::SetMinimumAndMaximum(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate) |
4360 EXPORT_C void CEikTimeAndDateEditor::SetMinimumAndMaximum(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate) |
4154 { |
4361 { |
4155 // __ASSERT_ALWAYS((aMinimumTimeAndDate>=iMinimumTimeAndDate) && (aMaximumTimeAndDate<=iMaximumTimeAndDate), Panic(EEikPanicTimeAndDateEditorBadMinimumAndMaximum1)); |
4362 // __ASSERT_ALWAYS((aMinimumTimeAndDate>=iMinimumTimeAndDate) && (aMaximumTimeAndDate<=iMaximumTimeAndDate), Panic(EEikPanicTimeAndDateEditorBadMinimumAndMaximum1)); |
4576 } |
4796 } |
4577 |
4797 |
4578 EXPORT_C void CEikMfne::MakeVisible( TBool aVisible ) |
4798 EXPORT_C void CEikMfne::MakeVisible( TBool aVisible ) |
4579 { |
4799 { |
4580 CEikBorderedControl::MakeVisible( aVisible ); |
4800 CEikBorderedControl::MakeVisible( aVisible ); |
4581 if ( !aVisible && iExtension->iCursorShown ) |
4801 if ( !aVisible && iExtension && iExtension->iCursorShown ) |
4582 { |
4802 { |
4583 HideCursor(); |
4803 HideCursor(); |
|
4804 } |
|
4805 |
|
4806 if ( iExtension && !aVisible ) |
|
4807 { |
|
4808 TRAP_IGNORE ( |
|
4809 iExtension->iExtendedInputCapabilities->ReportEventL( |
|
4810 CAknExtendedInputCapabilities::MAknEventObserver::EClosePenInputRequest, |
|
4811 0 ); |
|
4812 ) |
4584 } |
4813 } |
4585 } |
4814 } |
4586 |
4815 |
4587 void CEikMfne::SetValidateCallBack( TCallBack aCallBack ) |
4816 void CEikMfne::SetValidateCallBack( TCallBack aCallBack ) |
4588 { |
4817 { |