uifw/eikctl/src/EIKMFNE.CPP
branchRCL_3
changeset 18 fcdfafb36fe7
parent 15 c52421ed5f07
child 19 aecbbf00d063
equal deleted inserted replaced
17:a1caeb42b3a3 18:fcdfafb36fe7
   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();
   163     TCallBack iValidateValueCallBack;
   285     TCallBack iValidateValueCallBack;
   164     
   286     
   165     MTouchFeedback* iFeedback;
   287     MTouchFeedback* iFeedback;
   166     TBool iLaunchPenInputAutomatic;
   288     TBool iLaunchPenInputAutomatic;
   167     TBool iPartialScreenInput;
   289     TBool iPartialScreenInput;
       
   290     TBool iChangeAmPm;
   168     };
   291     };
   169 
   292 
   170 // Implementation of the extension
   293 // Implementation of the extension
   171 CEikMfneExtension* CEikMfneExtension::NewL()
   294 CEikMfneExtension* CEikMfneExtension::NewL()
   172     {
   295     {
  1928                     {
  2051                     {
  1929                     iExtension->iFingerSupport = ( TBool )( aFeatureParam );
  2052                     iExtension->iFingerSupport = ( TBool )( aFeatureParam );
  1930                     iExtension->iDisablePenInput = !( iExtension->iFingerSupport );                    
  2053                     iExtension->iDisablePenInput = !( iExtension->iFingerSupport );                    
  1931                     iExtension->iFingerParam = aFeatureParam; 
  2054                     iExtension->iFingerParam = aFeatureParam; 
  1932                     iExtension->iHighlightAll = ( iExtension->iFingerSupport &&
  2055                     iExtension->iHighlightAll = ( iExtension->iFingerSupport &&
       
  2056                         !iExtension->iTouchActivated &&
  1933                         aFeatureParam == EnableWithAllHighlight );                  
  2057                         aFeatureParam == EnableWithAllHighlight );                  
  1934                     }
  2058                     }
  1935                 else
  2059                 else
  1936                     {
  2060                     {
  1937                     ret = KErrGeneral;
  2061                     ret = KErrGeneral;
  1957                         caps |= CAknExtendedInputCapabilities::EInputEditorPartialScreen;
  2081                         caps |= CAknExtendedInputCapabilities::EInputEditorPartialScreen;
  1958                         }
  2082                         }
  1959                     else
  2083                     else
  1960                         {
  2084                         {
  1961                         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;
  1962                         }
  2106                         }
  1963                     iExtension->iExtendedInputCapabilities->SetCapabilities( caps );
  2107                     iExtension->iExtendedInputCapabilities->SetCapabilities( caps );
  1964                     }
  2108                     }
  1965                 else
  2109                 else
  1966                     {
  2110                     {
  2037                 else
  2181                 else
  2038                     {
  2182                     {
  2039                     ret = KErrGeneral;
  2183                     ret = KErrGeneral;
  2040                     }
  2184                     }
  2041                 break;
  2185                 break;
       
  2186             case EChangeAmPm:
       
  2187                 if ( iExtension )
       
  2188                     {
       
  2189                     aFeatureParam = iExtension->iChangeAmPm;
       
  2190                     }
       
  2191                 else
       
  2192                     {
       
  2193                     ret = KErrGeneral;
       
  2194                     }
       
  2195                 break;
  2042             default:
  2196             default:
  2043                 ret = KErrNotSupported;
  2197                 ret = KErrNotSupported;
  2044                 break;
  2198                 break;
  2045             }
  2199             }
  2046         }
  2200         }
  2057         {
  2211         {
  2058         EClipGcToRect,
  2212         EClipGcToRect,
  2059         EDisablePenInput,
  2213         EDisablePenInput,
  2060         EFingerSupport,
  2214         EFingerSupport,
  2061         ELaunchPenInputAutomatic,
  2215         ELaunchPenInputAutomatic,
  2062         EPartialScreenInput
  2216         EPartialScreenInput,
       
  2217         EChangeAmPm
  2063         };
  2218         };
  2064         
  2219         
  2065     TBool ret = EFalse;
  2220     TBool ret = EFalse;
  2066     
  2221     
  2067     for ( TInt i = 0; i < sizeof( supportedFeatures ) / sizeof( TInt ); ++i )
  2222     for ( TInt i = 0; i < sizeof( supportedFeatures ) / sizeof( TInt ); ++i )
  2446                     // Currently no skin effect for the highlighted field drawing
  2601                     // Currently no skin effect for the highlighted field drawing
  2447                     SetGcToInverseVideo(aGc);
  2602                     SetGcToInverseVideo(aGc);
  2448                     }
  2603                     }
  2449                 else 
  2604                 else 
  2450                     {
  2605                     {
       
  2606 
       
  2607 
  2451                     // 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
  2452                     // Skin background is drawn for the fields here
  2609                     // Skin background is drawn for the fields here
  2453                     if( SkinningBackground() && !iFlags[EUseOverrideColors] )
  2610                     if( SkinningBackground() && !iFlags[EUseOverrideColors] )
  2454                         {
  2611                         {
  2455                         // Note that in case EUseOverrideColors is up, there is no need
  2612                         // Note that in case EUseOverrideColors is up, there is no need
  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"));
  4105     }
  4300     }
  4106 
  4301 
  4107 EXPORT_C CEikTimeAndDateEditor::~CEikTimeAndDateEditor()
  4302 EXPORT_C CEikTimeAndDateEditor::~CEikTimeAndDateEditor()
  4108     {
  4303     {
  4109     AKNTASHOOK_REMOVE();
  4304     AKNTASHOOK_REMOVE();
       
  4305     iExtension->iExtendedInputCapabilities->UnregisterObserver(iTimeDateExtension);
  4110     delete iTimeEditor;
  4306     delete iTimeEditor;
  4111     delete iDateEditor;
  4307     delete iDateEditor;
       
  4308     delete iTimeDateExtension;
  4112     }
  4309     }
  4113 
  4310 
  4114 EXPORT_C void CEikTimeAndDateEditor::ConstructL(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate,
  4311 EXPORT_C void CEikTimeAndDateEditor::ConstructL(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate,
  4115                                     const TTime& aInitialTimeAndDate,TUint32 aFlags, HBufC* aInterveningText)
  4312                                     const TTime& aInitialTimeAndDate,TUint32 aFlags, HBufC* aInterveningText)
  4116     {
  4313     {
  4152 
  4349 
  4153     DoSetMinimumAndMaximum(aMinimumTimeAndDate, aMaximumTimeAndDate);
  4350     DoSetMinimumAndMaximum(aMinimumTimeAndDate, aMaximumTimeAndDate);
  4154     // 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
  4155     if (aInterveningText)
  4352     if (aInterveningText)
  4156         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() );
  4157     }
  4358     }
  4158 
  4359 
  4159 EXPORT_C void CEikTimeAndDateEditor::SetMinimumAndMaximum(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate)
  4360 EXPORT_C void CEikTimeAndDateEditor::SetMinimumAndMaximum(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate)
  4160     {
  4361     {
  4161     // __ASSERT_ALWAYS((aMinimumTimeAndDate>=iMinimumTimeAndDate) && (aMaximumTimeAndDate<=iMaximumTimeAndDate), Panic(EEikPanicTimeAndDateEditorBadMinimumAndMaximum1));
  4362     // __ASSERT_ALWAYS((aMinimumTimeAndDate>=iMinimumTimeAndDate) && (aMaximumTimeAndDate<=iMaximumTimeAndDate), Panic(EEikPanicTimeAndDateEditorBadMinimumAndMaximum1));
  4291 
  4492 
  4292 EXPORT_C void CEikTimeAndDateEditor::CEikMfne_Reserved()
  4493 EXPORT_C void CEikTimeAndDateEditor::CEikMfne_Reserved()
  4293     {
  4494     {
  4294     }
  4495     }
  4295 
  4496 
       
  4497 void CEikTimeAndDateEditor::ChangeAmPm( )
       
  4498 	{
       
  4499 	TInt para( 0 );
       
  4500     GetFeature( CEikMfne::EChangeAmPm, para );
       
  4501 	if ( para )
       
  4502 		{
       
  4503 	    iTimeEditor->ChangeAmPm();
       
  4504 	    DrawDeferred();
       
  4505 	    TRAP_IGNORE ( ReportEventL( MCoeControlObserver::EEventStateChanged ) );
       
  4506         ReportUpdate();
       
  4507 		}
       
  4508 	return;
       
  4509 	}
  4296 
  4510 
  4297 // CEikDurationEditor
  4511 // CEikDurationEditor
  4298 
  4512 
  4299 EXPORT_C CEikDurationEditor::CEikDurationEditor()
  4513 EXPORT_C CEikDurationEditor::CEikDurationEditor()
  4300     {
  4514     {