--- a/uifw/eikctl/src/EIKMFNE.CPP Thu Jul 15 18:56:19 2010 +0300
+++ b/uifw/eikctl/src/EIKMFNE.CPP Thu Aug 19 10:11:06 2010 +0300
@@ -104,6 +104,128 @@
User::Panic(KPanicCat, aPanic);
}
+NONSHARABLE_CLASS(CEikTimeEditorExtension) : public CBase,
+ public CAknExtendedInputCapabilities::MAknEventObserver
+ {
+public:
+ static CEikTimeEditorExtension* NewL();
+ virtual ~CEikTimeEditorExtension();
+private:
+ CEikTimeEditorExtension();
+
+ void ConstructL();
+public:
+ /**
+ * From CAknExtendedInputCapabilities::MAknEventObserver
+ * Handle an event
+ *
+ * @since S60 v9.2
+ * @param aEvent An event, see TInputCapabilitiesEvent
+ * @param aParams Event dependent parameters
+ */
+
+ void HandleInputCapabilitiesEventL( TInt aEvent, TAny* aParams );
+public:
+ CEikTimeEditor * iEditor;
+ };
+
+CEikTimeEditorExtension* CEikTimeEditorExtension::NewL()
+ {
+ CEikTimeEditorExtension* self = new (ELeave) CEikTimeEditorExtension();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+CEikTimeEditorExtension::~CEikTimeEditorExtension()
+ {
+
+ }
+
+CEikTimeEditorExtension::CEikTimeEditorExtension()
+ {
+ }
+
+void CEikTimeEditorExtension::ConstructL()
+ {
+ }
+
+void CEikTimeEditorExtension::HandleInputCapabilitiesEventL( TInt aEvent, TAny* /*aParams*/ )
+ {
+ switch ( aEvent )
+ {
+ case CAknExtendedInputCapabilities::MAknEventObserver::EChangeAmPm:
+ if ( iEditor )
+ {
+ iEditor->ChangeAmPm();
+ }
+ break;
+ }
+ return;
+ }
+
+
+NONSHARABLE_CLASS(CEikTimeAndDateEditorExtension) : public CBase,
+ public CAknExtendedInputCapabilities::MAknEventObserver
+ {
+public:
+ static CEikTimeAndDateEditorExtension* NewL();
+ virtual ~CEikTimeAndDateEditorExtension();
+private:
+ CEikTimeAndDateEditorExtension();
+
+ void ConstructL();
+public:
+ /**
+ * From CAknExtendedInputCapabilities::MAknEventObserver
+ * Handle an event
+ *
+ * @since S60 v9.2
+ * @param aEvent An event, see TInputCapabilitiesEvent
+ * @param aParams Event dependent parameters
+ */
+
+ void HandleInputCapabilitiesEventL( TInt aEvent, TAny* aParams );
+public:
+ CEikTimeAndDateEditor * iEditor;
+ };
+
+CEikTimeAndDateEditorExtension* CEikTimeAndDateEditorExtension::NewL()
+ {
+ CEikTimeAndDateEditorExtension* self = new (ELeave) CEikTimeAndDateEditorExtension();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+CEikTimeAndDateEditorExtension::~CEikTimeAndDateEditorExtension()
+ {
+
+ }
+
+CEikTimeAndDateEditorExtension::CEikTimeAndDateEditorExtension()
+ {
+ }
+
+void CEikTimeAndDateEditorExtension::ConstructL()
+ {
+ }
+
+void CEikTimeAndDateEditorExtension::HandleInputCapabilitiesEventL( TInt aEvent, TAny* /*aParams*/ )
+ {
+ switch ( aEvent )
+ {
+ case CAknExtendedInputCapabilities::MAknEventObserver::EChangeAmPm:
+ if ( iEditor )
+ {
+ iEditor->ChangeAmPm();
+ }
+ break;
+ }
+ return;
+ }
NONSHARABLE_CLASS(CEikMfneExtension) : public CBase, public MCoeFepAwareTextEditor
{
public:
@@ -165,6 +287,7 @@
MTouchFeedback* iFeedback;
TBool iLaunchPenInputAutomatic;
TBool iPartialScreenInput;
+ TBool iChangeAmPm;
};
// Implementation of the extension
@@ -1930,6 +2053,7 @@
iExtension->iDisablePenInput = !( iExtension->iFingerSupport );
iExtension->iFingerParam = aFeatureParam;
iExtension->iHighlightAll = ( iExtension->iFingerSupport &&
+ !iExtension->iTouchActivated &&
aFeatureParam == EnableWithAllHighlight );
}
else
@@ -1967,6 +2091,26 @@
ret = KErrGeneral;
}
break;
+ case EChangeAmPm:
+ if ( iExtension )
+ {
+ iExtension->iChangeAmPm = aFeatureParam;
+ TUint caps( iExtension->iExtendedInputCapabilities->Capabilities() );
+ if ( aFeatureParam )
+ {
+ caps |= CAknExtendedInputCapabilities::EInputEditorAmPm;
+ }
+ else
+ {
+ caps &= ~CAknExtendedInputCapabilities::EInputEditorAmPm;
+ }
+ iExtension->iExtendedInputCapabilities->SetCapabilities( caps );
+ }
+ else
+ {
+ ret = KErrGeneral;
+ }
+ break;
default:
ret = KErrNotSupported;
break;
@@ -2039,6 +2183,16 @@
ret = KErrGeneral;
}
break;
+ case EChangeAmPm:
+ if ( iExtension )
+ {
+ aFeatureParam = iExtension->iChangeAmPm;
+ }
+ else
+ {
+ ret = KErrGeneral;
+ }
+ break;
default:
ret = KErrNotSupported;
break;
@@ -2059,7 +2213,8 @@
EDisablePenInput,
EFingerSupport,
ELaunchPenInputAutomatic,
- EPartialScreenInput
+ EPartialScreenInput,
+ EChangeAmPm
};
TBool ret = EFalse;
@@ -2448,6 +2603,8 @@
}
else
{
+
+
// Note!! This is taking responsibility away from the CEikMfne Field for drawing
// Skin background is drawn for the fields here
if( SkinningBackground() && !iFlags[EUseOverrideColors] )
@@ -3150,7 +3307,8 @@
void SetUninitialised(TBool aUninitialised);
TBool IsUninitialised() const;
void RefreshFromLocale(const CFont& aFont);
-
+ void ChangeAmPm();
+ TBool HasAmPm();
private:
void AddAmPmFieldsIfNecessaryL(CEikMfne& aOwner, TAmPm aAmPm, TLocalePos aPos);
private:
@@ -3421,7 +3579,25 @@
(iAmPm && iAmPm->IsUninitialised());
}
-
+void CTimeEditor::ChangeAmPm()
+ {
+ if ( iAmPm && HasAmPm() )
+ {
+ if ( iAmPm->IdOfCurrentSymbolicItem() == EPm )
+ {
+ iAmPm->SetCurrentSymbolicItemToId(EAm);
+ }
+ else
+ {
+ iAmPm->SetCurrentSymbolicItemToId(EPm);
+ }
+ }
+ }
+
+TBool CTimeEditor::HasAmPm()
+ {
+ return iAmPm && ( iFlags&EIn12HourFormat );
+ }
// CDateEditor
class CDateEditor : public CBase
@@ -3819,7 +3995,9 @@
EXPORT_C CEikTimeEditor::~CEikTimeEditor()
{
AKNTASHOOK_REMOVE();
+ iExtension->iExtendedInputCapabilities->UnregisterObserver(iTimeExtension);
delete iTimeEditor;
+ delete iTimeExtension;
}
EXPORT_C void CEikTimeEditor::ConstructL(const TTime& aMinimumTime, const TTime& aMaximumTime, const TTime& aInitialTime, TUint32 aFlags)
@@ -3830,6 +4008,10 @@
iTimeEditor->ConstructFieldsL(*this, aInitialTime, *Font());
iTimeEditor->RefreshFromLocale(*Font());
DoSetMinimumAndMaximum(aMinimumTime, aMaximumTime);
+ iTimeExtension = CEikTimeEditorExtension::NewL();
+ iTimeExtension->iEditor = this;
+ iExtension->iExtendedInputCapabilities->RegisterObserver(iTimeExtension);
+ SetFeature( CEikMfne::EChangeAmPm, iTimeEditor->HasAmPm() );
}
EXPORT_C void CEikTimeEditor::SetMinimumAndMaximum(const TTime& aMinimumTime, const TTime& aMaximumTime)
@@ -3925,6 +4107,19 @@
return iTimeEditor->IsUninitialised();
}
+void CEikTimeEditor::ChangeAmPm( )
+ {
+ TInt para( 0 );
+ GetFeature( CEikMfne::EChangeAmPm, para );
+ if ( para )
+ {
+ iTimeEditor->ChangeAmPm();
+ DrawDeferred();
+ TRAP_IGNORE ( ReportEventL( MCoeControlObserver::EEventStateChanged ) );
+ ReportUpdate();
+ }
+ return;
+ }
// CEikDateEditor
EXPORT_C CEikDateEditor::CEikDateEditor()
@@ -4107,8 +4302,10 @@
EXPORT_C CEikTimeAndDateEditor::~CEikTimeAndDateEditor()
{
AKNTASHOOK_REMOVE();
+ iExtension->iExtendedInputCapabilities->UnregisterObserver(iTimeDateExtension);
delete iTimeEditor;
delete iDateEditor;
+ delete iTimeDateExtension;
}
EXPORT_C void CEikTimeAndDateEditor::ConstructL(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate,
@@ -4154,6 +4351,10 @@
// do stuff that can only be done when all leaving functions have successfully been done
if (aInterveningText)
interveningText->SetText(aInterveningText);
+ iTimeDateExtension = CEikTimeAndDateEditorExtension::NewL();
+ iTimeDateExtension->iEditor = this;
+ iExtension->iExtendedInputCapabilities->RegisterObserver(iTimeDateExtension);
+ SetFeature( CEikMfne::EChangeAmPm, iTimeEditor->HasAmPm() );
}
EXPORT_C void CEikTimeAndDateEditor::SetMinimumAndMaximum(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate)
@@ -4293,6 +4494,19 @@
{
}
+void CEikTimeAndDateEditor::ChangeAmPm( )
+ {
+ TInt para( 0 );
+ GetFeature( CEikMfne::EChangeAmPm, para );
+ if ( para )
+ {
+ iTimeEditor->ChangeAmPm();
+ DrawDeferred();
+ TRAP_IGNORE ( ReportEventL( MCoeControlObserver::EEventStateChanged ) );
+ ReportUpdate();
+ }
+ return;
+ }
// CEikDurationEditor