# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1277123939 -10800 # Node ID bf573002ff72b16d78048751c04b8cba9bf5777d # Parent 9c5b1510919f537852e27fe9b9680c4935bdde6c Revision: 201023 Kit: 2010125 diff -r 9c5b1510919f -r bf573002ff72 calendarengines/caleninterimutils/inc/CalenInterimUtils2Impl.h --- a/calendarengines/caleninterimutils/inc/CalenInterimUtils2Impl.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarengines/caleninterimutils/inc/CalenInterimUtils2Impl.h Mon Jun 21 15:38:59 2010 +0300 @@ -35,6 +35,20 @@ class CCalInstance; class CCalenEComWatcher; // Watches for installed MR solutions + +/** +* This structure contains UUID info +*/ +typedef struct + { + TUint32 time_low; + TUint16 time_mid; + TUint16 time_high_and_version; + TUint8 clock_seq_hi_and_reserved; + TUint8 clock_seq_low; + TUint8 node[6]; + } SUuid; + // CLASS DECLARATION /** @@ -248,6 +262,9 @@ // Just a wrapper for leaves void DoMRViewersEnabledL(); + + // get system time + void GetSystemTime(TInt64& aTimeStamp); private: //Default Constructor @@ -268,6 +285,11 @@ TInt64 iImeiNode; TBool iMrEnabled; TBool iMrEnabledCheck; + + TUint64 iTimeLast; + TUint16 iThisTick; + TBool iInited ; + }; #endif // __CALENINTERIMUTILS2IMPL_H__ diff -r 9c5b1510919f -r bf573002ff72 calendarengines/caleninterimutils/src/CalenInterimUtils2Impl.cpp --- a/calendarengines/caleninterimutils/src/CalenInterimUtils2Impl.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarengines/caleninterimutils/src/CalenInterimUtils2Impl.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -45,6 +45,13 @@ #include "CalenEcomWatcher.h" // Watches for ECOM registry changes // CONSTANTS + +/* set the following to the number of 100ns ticks of the actual + resolution of your system's clock. + 800MHZ means 1s->800*(10^6) clock cycles + 100ns->80 clock cycles*/ +const TUint16 UUIDS_PER_TICK = 80; + /// Unnamed namespace for local definitions namespace { @@ -53,8 +60,7 @@ #endif const TInt KImeiLength = 15; // 15 chars from left of imei - - const TInt KAsciiFirstNumber = 48; // ASCII character 48 = '0'. + const TInt KAsciiFirstNumber = 48; // ASCII character 48 = '0'. const TInt KAsciiFirstLowercaseLetter = 97; // ASCII character 97 = 'a'. } // namespace @@ -91,8 +97,8 @@ TRACE_ENTRY_POINT; iMrEnabledCheck = ETrue; - iMrEnabled = EFalse; - + iMrEnabled = EFalse; + iInited = EFalse; TRACE_EXIT_POINT; } @@ -279,15 +285,17 @@ // http://www.webdav.org/specs/draft-leach-uuids-guids-01.txt // Number of 100ns ticks since Oct 15 1582. - TInt64 timeStamp = GetTicksFromGregorianCalendarStartL(); - + TInt64 timeStamp; + GetSystemTime(timeStamp); + // This differs slightly from the spec in that the clock sequence is just a pseudo-random number. - TUint32 clockSeq = Math::Random(); - // IMEI is read the first time this is called, and stored for subsequent calls. - if(!iImeiNode) - { - iImeiNode = GetImeiAsNodeValueL(); - } + TUint32 clockSeq = Math::Random(); + + // IMEI is read the first time this is called, and stored for subsequent calls. + if(!iImeiNode) + { + iImeiNode = GetImeiAsNodeValueL(); + } HBufC8* resultBuf = DoCreateUidLC(clockSeq, timeStamp, iImeiNode); CleanupStack::Pop(resultBuf); @@ -313,7 +321,46 @@ TTimeIntervalMicroSeconds msDifference = timeNow.MicroSecondsFrom(gregorianStart); TRACE_EXIT_POINT; - return msDifference.Int64() * 10; // * 10 to convert from micro sec (==1000 ns) count to 100ns count. + return ( timeNow.Int64() + msDifference.Int64() ) * 10; // * 10 to convert from micro sec (==1000 ns) count to 100ns count. + } + +// ----------------------------------------------------------------------------- +// CCalenInterimUtils2Impl::GetSystemTime() +// This function returns the system time. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CCalenInterimUtils2Impl::GetSystemTime(TInt64& aTimeStamp) + { + TRACE_ENTRY_POINT; + + if (!iInited) + { + aTimeStamp = GetTicksFromGregorianCalendarStartL(); + iThisTick = UUIDS_PER_TICK; + iInited = ETrue; + } + for( ; ; ) + { + aTimeStamp = GetTicksFromGregorianCalendarStartL(); + //if clock reading changed since last UUID generated... + if( iTimeLast != aTimeStamp ) + { + //reset count of uuids gen'd with this clock reading + iThisTick = 0; + iTimeLast = aTimeStamp; + break; + } + if( iThisTick < UUIDS_PER_TICK ) + { + iThisTick++; + break; + } + } + //add the count of uuids to low order bits of the clock reading + aTimeStamp += iThisTick; + + TRACE_EXIT_POINT; } // ----------------------------------------------------------------------------- @@ -370,104 +417,58 @@ TRACE_ENTRY_POINT; // The roast beef of the algorithm. Does all the shifting about as described in the web draft. - TUint32 time_low = aTimeStamp & 0xFFFFFFFF; - TUint16 time_mid = (aTimeStamp >> 32) & 0xFFFF; - TUint16 time_high = (aTimeStamp >> 48) & 0x0FFF; - time_high |= (1 << 12); - TUint8 clock_seq_low = aClockSeq & 0xFF; - TUint8 clock_seq_high = (aClockSeq & 0x3F00) >> 8; - clock_seq_high |= 0x80; - - // Can't use RArray as that's set up for minimum 4 bytes per item. - CArrayFixFlat *node = new (ELeave) CArrayFixFlat(6); - CleanupStack::PushL(node); - - // The rest of the function is mapping the 64, 32 and 16 bit numbers to 8 bit numbers - // while losing as little data as possible. - + SUuid uuid; + TUint8 hash[16]; + + uuid.time_low = aTimeStamp & 0xFFFFFFFF; + uuid.time_mid = (aTimeStamp >> 32) & 0xFFFF; + uuid.time_high_and_version = (aTimeStamp >> 48) & 0x0FFF; + uuid.time_high_and_version |= (1 << 12); + uuid.clock_seq_low = aClockSeq & 0xFF; + uuid.clock_seq_hi_and_reserved = (aClockSeq & 0x3F00) >> 8; + uuid.clock_seq_hi_and_reserved |= 0x80; + TUint64 mask = 0xFF0000000000; for(TInt i=0; i<=6; ++i) { TInt64 temp = aNodeValue & mask; temp >>= ((5-i)*8); - node->AppendL(temp); + uuid.node[i] = temp; mask = mask >> 8; } - TBuf8<16> rawOutput; - - rawOutput.Append( (time_low & 0xFF000000) >> 24 ); - rawOutput.Append( (time_low & 0x00FF0000) >> 16 ); - rawOutput.Append( (time_low & 0x0000FF00) >> 8 ); - rawOutput.Append( (time_low & 0x000000FF) ); - - rawOutput.Append( (time_mid & 0xFF00) >> 8 ); - rawOutput.Append( (time_mid & 0x00FF) ); - - rawOutput.Append( (time_high & 0xFF00) >> 8 ); - rawOutput.Append( (time_high & 0x00FF) ); - - rawOutput.Append( clock_seq_low ); - rawOutput.Append( clock_seq_high ); - - for(TInt i=0; i<6; ++i) - { - rawOutput.Append( node->At(i) ); - } - CleanupStack::PopAndDestroy(); // node - - TUint8 digest[16]; - HBufC8* resultBuf = rawOutput.AllocLC(); - TPtr8 resultBufPtr = resultBuf->Des(); - TUint length = resultBufPtr.Length(); - - // Create a new buffer to provide space for '\0' - HBufC8* newBuf = HBufC8::NewLC( length + 1 );//+1 space for '\0' - TPtr8 newBufPtr = newBuf->Des(); - newBufPtr.Copy(resultBufPtr); - - // Appends a zero terminator onto the end of this descriptor's data - // and returns a pointer to the data. - char* chPtrTemp = ( char*)newBufPtr.PtrZ(); - char* chPtr = ( char*) User::AllocL( length + 1 ); - strcpy( chPtr , chPtrTemp ); - - //md5 context - MD5_CTX* context = new MD5_CTX(); + //md5 context + MD5_CTX context; //initialize the context - MD5_Init(context); + MD5_Init(&context); //Append a string to the message - MD5_Update(context, chPtr, length ); + MD5_Update(&context, &uuid, sizeof(uuid) ); //Finish the message and return the digest. - MD5_Final(digest, context ); - + MD5_Final(hash, &context ); // Add the version field in the msb 4 bits. The value of version is 3. - digest[6] = digest[6] & 0x0F; - digest[6] |= (3 << 4); + hash[6] = hash[6] & 0x0F; + hash[6] |= (3 << 4); //Add the variant field in the msb 2 bits. The value of variant is 2. - digest[9] = digest[9] & 0x3F; - digest[9] |= 0x80; - - delete chPtr; - delete context; - CleanupStack::PopAndDestroy( newBuf ); - CleanupStack::PopAndDestroy( resultBuf ); + hash[8] = hash[8] & 0x3F; + hash[8] |= 0x80; + TBuf8<36> output; TInt i; for(i=0; i<16; ++i) - { - output.Append( ConvertToCharacterL( FirstFourBits( digest[i] ) ) ); - output.Append( ConvertToCharacterL( LastFourBits( digest[i] ) ) ); - if(i == 3 || i == 5 || i == 7 ||i == 9) - { - output.Append( '-' ); - } - } - HBufC8* md5ResultBuf = output.AllocLC(); + { + output.Append( ConvertToCharacterL( FirstFourBits( hash[i] ) ) ); + output.Append( ConvertToCharacterL( LastFourBits( hash[i] ) ) ); + if(i == 3 || i == 5 || i == 7 ||i == 9) + { + output.Append( '-' ); + } + } + HBufC8* retBuf = output.AllocLC(); TRACE_EXIT_POINT; - return md5ResultBuf; + return retBuf; + } // ----------------------------------------------------------------------------- diff -r 9c5b1510919f -r bf573002ff72 calendarengines/calenlauncher/src/CalenLauncherImpl.cpp --- a/calendarengines/calenlauncher/src/CalenLauncherImpl.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarengines/calenlauncher/src/CalenLauncherImpl.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -448,7 +448,7 @@ { const TUid dummyUID = { 0x0 }; calenTask.SendMessage(dummyUID, *iLaunchParams); - calenTask.BringToForeground(); + //calenTask.BringToForeground(); } // If Calendar is not running we launch from the command line diff -r 9c5b1510919f -r bf573002ff72 calendarui/application/data/CalenSettings.ra --- a/calendarui/application/data/CalenSettings.ra Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/application/data/CalenSettings.ra Mon Jun 21 15:38:59 2010 +0300 @@ -345,6 +345,64 @@ // ------------------------- +// Week Number setting +// ------------------------- + +RESOURCE TBUF r_calen_setting_weeknumber_title + { + buf = qtn_cale_set_show_wk_number; + } + +RESOURCE AVKON_SETTING_PAGE r_calen_setting_weeknumber + { + label = qtn_cale_set_show_wk_number; + softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; + type = EAknCtPopupSettingList; + editor_resource_id= r_calen_setting_listbox; + } + +RESOURCE ARRAY r_calendar_weeknumber_choicelist + { + items = + { + LBUF + { + txt = qtn_cale_set_show_wk_number_no; + }, + LBUF + { + txt = qtn_cale_set_show_wk_number_yes; + } + }; + } + + +// Defines list for setting page +RESOURCE ARRAY r_calendar_weeknumber_array + { + items = + { + AVKON_ENUMERATED_TEXT + { + value = 0; + text = qtn_cale_set_show_wk_number_no; + }, + AVKON_ENUMERATED_TEXT + { + value = 1; + text = qtn_cale_set_show_wk_number_yes; + } + }; + } + +// Defines list for setting page +RESOURCE AVKON_POPUP_SETTING_TEXTS r_calen_weeknumber_texts + { + setting_texts_resource = r_calendar_weeknumber_array; + popped_up_texts_resource = r_calendar_weeknumber_choicelist; + } + +// ------------------------- // Week title setting // ------------------------- diff -r 9c5b1510919f -r bf573002ff72 calendarui/application/data/Calendar.rss --- a/calendarui/application/data/Calendar.rss Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/application/data/Calendar.rss Mon Jun 21 15:38:59 2010 +0300 @@ -2499,31 +2499,7 @@ // It's based on layout. max_view_height_in_lines = 0; }; - }, - DLG_LINE - { - type = EEikCtEdwin; - prompt = qtn_cale_multidb_synchronization; - id = ECalenMultiDbSyncStatus; - itemflags = EEikDlgItemTakesEnterKey; - control = EDWIN - { - flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable | - EEikEdwinNoAutoSelection | EEikEdwinReadOnly| - EEikEdwinAvkonDisableCursor|EEikEdwinAvkonNotEditable |EEikEdwinDisplayOnly ; - maxlength = 160; - default_case = EAknEditorTextCase; - allowed_case_modes = EAknEditorAllCaseModes; - numeric_keymap = EAknEditorStandardNumberModeKeymap; - special_character_table = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG; - avkon_flags = EAknEditorFlagUseSCTNumericCharmap | - EAknEditorFlagDefault | - EAknEditorFlagEnablePictographInput; - // let Avkon decide which is maximum number of lines - // It's based on layout. - max_view_height_in_lines = 0; - }; - } + } }; } @@ -3109,6 +3085,4 @@ buf = qtn_cale_max_attachment_size; } - - // End of File diff -r 9c5b1510919f -r bf573002ff72 calendarui/application/group/iconlist.txt --- a/calendarui/application/group/iconlist.txt Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/application/group/iconlist.txt Mon Jun 21 15:38:59 2010 +0300 @@ -32,3 +32,4 @@ -c8,8 qgn_stat_sync.svg -c8,8 qgn_indi_cale_tb_today.svg -c8,8 qgn_indi_cale_tb_changeview.svg +-c8,8 qgn_indi_navi_color.svg diff -r 9c5b1510919f -r bf573002ff72 calendarui/cenrep/CalendarInternalCRKeys.h --- a/calendarui/cenrep/CalendarInternalCRKeys.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/cenrep/CalendarInternalCRKeys.h Mon Jun 21 15:38:59 2010 +0300 @@ -139,5 +139,10 @@ */ const TUint32 KCalendarAvailableValue = 0x00000010; +/** +* Boolean value containing week Number ON/OFF +* Default value:"0" +*/ +const TUint32 KCalendarWeekViewNumber = 0x000000011; #endif // CALENDARINTERNALCRKEYS_H diff -r 9c5b1510919f -r bf573002ff72 calendarui/commonutils/bwins/calencommonutilsu.def --- a/calendarui/commonutils/bwins/calencommonutilsu.def Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/commonutils/bwins/calencommonutilsu.def Mon Jun 21 15:38:59 2010 +0300 @@ -137,3 +137,4 @@ ?GetNextAvailableCalFileL@CCalenMultiCalUtil@@SAPAVHBufC16@@XZ @ 136 NONAME ; class HBufC16 * CCalenMultiCalUtil::GetNextAvailableCalFileL(void) ?AttachmentOpen@CCalenAttachmentModel@@QAEXAAH@Z @ 137 NONAME ; void CCalenAttachmentModel::AttachmentOpen(int &) ?IsAttachmentOpen@CCalenAttachmentModel@@QAEHXZ @ 138 NONAME ; int CCalenAttachmentModel::IsAttachmentOpen(void) + ?ShowNaviPaneL@CCalenStatusPaneUtils@@QAEPAVCAknNavigationDecorator@@ABVTDesC16@@VTRgb@@@Z @ 139 NONAME ; class CAknNavigationDecorator * CCalenStatusPaneUtils::ShowNaviPaneL(class TDesC16 const &, class TRgb) diff -r 9c5b1510919f -r bf573002ff72 calendarui/commonutils/eabi/calencommonutilsu.def --- a/calendarui/commonutils/eabi/calencommonutilsu.def Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/commonutils/eabi/calencommonutilsu.def Mon Jun 21 15:38:59 2010 +0300 @@ -150,4 +150,5 @@ _ZN18CCalenMultiCalUtil24GetNextAvailableCalFileLEv @ 149 NONAME _ZN21CCalenAttachmentModel14AttachmentOpenERi @ 150 NONAME _ZN21CCalenAttachmentModel16IsAttachmentOpenEv @ 151 NONAME + _ZN21CCalenStatusPaneUtils13ShowNaviPaneLERK7TDesC164TRgb @ 152 NONAME diff -r 9c5b1510919f -r bf573002ff72 calendarui/commonutils/group/commonutils.mmp --- a/calendarui/commonutils/group/commonutils.mmp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/commonutils/group/commonutils.mmp Mon Jun 21 15:38:59 2010 +0300 @@ -56,6 +56,7 @@ SOURCE calentitlepane.cpp SOURCE calenmulticalutil.cpp +SOURCE calencustomnavilabel.cpp LIBRARY caleninterimutils2.lib LIBRARY avkon.lib diff -r 9c5b1510919f -r bf573002ff72 calendarui/commonutils/inc/CalenStatusPaneUtilsImpl.h --- a/calendarui/commonutils/inc/CalenStatusPaneUtilsImpl.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/commonutils/inc/CalenStatusPaneUtilsImpl.h Mon Jun 21 15:38:59 2010 +0300 @@ -25,6 +25,7 @@ class CEikStatusPane; class CAknNavigationDecorator; class CCalenTitlePane; +class TRgb; NONSHARABLE_CLASS( CCalenStatusPaneUtilsImpl ) : public CBase { @@ -40,6 +41,7 @@ void UnderLineTitleText( TBool aUnderline ); CAknNavigationDecorator* ShowNaviPaneL( const TTime& aActiveDay ); + CAknNavigationDecorator* ShowNaviPaneL( const TDesC& aName, const TRgb aColor ); void HideNaviPane(); diff -r 9c5b1510919f -r bf573002ff72 calendarui/commonutils/inc/calencustomnavilabel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/commonutils/inc/calencustomnavilabel.h Mon Jun 21 15:38:59 2010 +0300 @@ -0,0 +1,95 @@ +/* +* Copyright (c) 2002, 2003 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Navi control for eventview + * +*/ +#ifndef CCALENCUSTOMNAVICONTROL_H +#define CCALENCUSTOMNAVICONTROL_H + +// INCLUDES +#include +#include + + + +// CLASS DECLARATION +NONSHARABLE_CLASS( CCustomNaviControl ) : public CCoeControl + { +public: + /** + * First phase constructor + * @param aName Calendar name + * @param aColor Calendar color + */ + static CCustomNaviControl* NewL(const TDesC& aName, const TRgb aColor); + + /** + * Destructor. + */ + virtual ~CCustomNaviControl(); + + /** + * Sets the Calendar name and color + * @param aName Calendar name + * @param aColor Calendar color + */ + void SetCalendarNameAndColor(const TDesC& aName, const TRgb aColor); + +private: + + /** + * From CCoeControl + */ + void Draw(const TRect& /*aRect*/) const; + + /** + * From CCoeControl, child control was resized. + */ + void SizeChanged(); + + /** + * From CCoeControl, return child control count. + * @return Control count + */ + TInt CountComponentControls() const; + + /** + * From CCoeControl, return child control pointer. + * @param aIndex Child control index + * @return Child control pointer. + */ + CCoeControl* ComponentControl(TInt aIndex) const; + +private: // own methods + /** + * C++ constructor. + */ + CCustomNaviControl(); + + /** + * Second phase constructor + */ + void ConstructL(const TDesC& aName, const TRgb aColor); + +private: + CFbsBitmap* iBitmap; + CFbsBitmap* iMask; + CAknsBasicBackgroundControlContext* iBgContext; // for skins support + HBufC *iCalendarName; + TRgb iCalendarColor; + + }; +#endif // CCALENCUSTOMNAVICONTROL_H + +// end of file diff -r 9c5b1510919f -r bf573002ff72 calendarui/commonutils/src/CalenStatusPaneUtils.cpp --- a/calendarui/commonutils/src/CalenStatusPaneUtils.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/commonutils/src/CalenStatusPaneUtils.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -18,6 +18,7 @@ //debug #include "calendarui_debug.h" #include + #include #include "CalenStatusPaneUtilsImpl.h" @@ -49,6 +50,19 @@ TRACE_EXIT_POINT; return iStatusPaneUtils->ShowNaviPaneL( aActiveDay ); } + // ----------------------------------------------------------------------------- + // CCalenStatusPaneUtils::ShowNaviPaneL + // Sets the calendar name and icon in the navi pane + // (other items were commented in a header). + // ----------------------------------------------------------------------------- + // + EXPORT_C CAknNavigationDecorator* CCalenStatusPaneUtils::ShowNaviPaneL( const TDesC& aName, const TRgb aColor ) + { + TRACE_ENTRY_POINT; + + TRACE_EXIT_POINT; + return iStatusPaneUtils->ShowNaviPaneL( aName, aColor ); + } // ----------------------------------------------------------------------------- // ?classname::?member_function diff -r 9c5b1510919f -r bf573002ff72 calendarui/commonutils/src/CalenStatusPaneUtilsImpl.cpp --- a/calendarui/commonutils/src/CalenStatusPaneUtilsImpl.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/commonutils/src/CalenStatusPaneUtilsImpl.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -20,6 +20,7 @@ #include "calencontext.h" #include "CalenStatusPaneUtilsImpl.h" #include "calentitlepane.h" + #include "calencustomnavilabel.h" #include #include @@ -102,7 +103,13 @@ AknTextUtils::DisplayTextLanguageSpecificNumberConversion(naviDes); iNaviLabel = iNaviContainer->Top(); - if(iNaviLabel != NULL) + if(iNaviLabel != NULL && iNaviLabel->ControlType() != CAknNavigationDecorator::ENaviLabel) + { + HideNaviPane(); + } + // iNaviLabel should be of type CAknNavigationDecorator::ENaviLabel for + // displaying date in navi pane. + if(iNaviLabel != NULL && iNaviLabel->ControlType() == CAknNavigationDecorator::ENaviLabel) { CCoeControl* coeRes = iNaviLabel->DecoratedControl(); CAknNaviLabel *actualLabel = static_cast(coeRes); @@ -130,6 +137,48 @@ TRACE_EXIT_POINT; return iNaviLabel; } + // ----------------------------------------------------------------------------- + // ?classname::?member_function + // ?implementation_description + // (other items were commented in a header). + // ----------------------------------------------------------------------------- + // + CAknNavigationDecorator* CCalenStatusPaneUtilsImpl::ShowNaviPaneL( const TDesC& aName, const TRgb aColor ) + { + TRACE_ENTRY_POINT; + + iNaviLabel = iNaviContainer->Top(); + if(iNaviLabel != NULL && iNaviLabel->ControlType() != CAknNavigationDecorator::ENotSpecified) + { + HideNaviPane(); + } + // iNaviLabel should be of type CAknNavigationDecorator::ENotSpecified for + // displaying calendar name and icon in navi pane. + if(iNaviLabel != NULL && iNaviLabel->ControlType() == CAknNavigationDecorator::ENotSpecified) + { + CCoeControl* coeRes = iNaviLabel->DecoratedControl(); + CCustomNaviControl *actualLabel = static_cast(coeRes); + actualLabel->SetCalendarNameAndColor(aName, aColor); + actualLabel->DrawDeferred(); + iNaviContainer->ReplaceL(*iNaviLabel, *iNaviLabel); + } + else + { + CCustomNaviControl *customControl = CCustomNaviControl::NewL(aName, aColor); + CleanupStack::PushL(customControl); + customControl->SetContainerWindowL(*iNaviContainer); + CleanupStack::Pop( customControl ); // customControl + + iNaviLabel = CAknNavigationDecorator::NewL(iNaviContainer, customControl, CAknNavigationDecorator::ENotSpecified); + + iNaviLabel->SetContainerWindowL( *iNaviContainer ); + iNaviLabel->SetControlContext( iNaviContainer ); + iNaviLabel->MakeScrollButtonVisible(EFalse); + iNaviContainer->PushL(*iNaviLabel); + } + TRACE_EXIT_POINT; + return iNaviLabel; + } // ----------------------------------------------------------------------------- // ?classname::?member_function diff -r 9c5b1510919f -r bf573002ff72 calendarui/commonutils/src/calencustomnavilabel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/commonutils/src/calencustomnavilabel.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -0,0 +1,209 @@ +/* +* Copyright (c) 2002, 2003 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Navi decorated control for eventview + * +*/ + +#include "calencustomnavilabel.h" +#include "calendarui_debug.h" + +#include +#include +#include +#include +#include +#include +#include +#include + + +// ---------------------------------------------------------------------------- +// CCustomNaviControl::NewL +// First stage construction +// ---------------------------------------------------------------------------- +CCustomNaviControl* CCustomNaviControl::NewL(const TDesC& aName, const TRgb aColor) + { + TRACE_ENTRY_POINT; + CCustomNaviControl* self = new(ELeave)CCustomNaviControl(); + CleanupStack::PushL(self); + self->ConstructL( aName, aColor ); + CleanupStack::Pop(self); + TRACE_EXIT_POINT; + return self; + } + +// ---------------------------------------------------------------------------- +// CCustomNaviControl::~CCustomNaviControl +// Destructor +// ---------------------------------------------------------------------------- +CCustomNaviControl::~CCustomNaviControl() + { + TRACE_ENTRY_POINT; + if(iBitmap) + { + delete iBitmap; + iBitmap = NULL; + } + if(iMask) + { + delete iMask; + iMask = NULL; + } + + if(iCalendarName) + { + delete iCalendarName; + } + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCustomNaviControl::SetCalendarNameAndColor +// Sets the Calendar name and Color. +// ---------------------------------------------------------------------------- +void CCustomNaviControl::SetCalendarNameAndColor(const TDesC& aName, const TRgb aColor) + { + TRACE_ENTRY_POINT; + delete iCalendarName; + iCalendarColor = aColor; + iCalendarName = aName.AllocL(); + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCustomNaviControl::CCustomNaviControl +// Constructor +// ---------------------------------------------------------------------------- +CCustomNaviControl::CCustomNaviControl() + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCustomNaviControl::ConstructL +// Second stage construction +// ---------------------------------------------------------------------------- +void CCustomNaviControl::ConstructL(const TDesC& aName, const TRgb aColor) + { + TRACE_ENTRY_POINT; + iCalendarColor = aColor; + iCalendarName = aName.AllocL(); + CreateWindowL(); + iBgContext = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgNavipaneSolid, + Rect(), + ETrue ); + // Create an icon + TFileName IconFile; + IconFile = ((CEikAppUi*)CCoeEnv::Static()->AppUi())->Application()->BitmapStoreName(); + AknIconUtils::CreateIconL(iBitmap, iMask,IconFile, + EMbmCalendarQgn_indi_navi_color, + EMbmCalendarQgn_indi_navi_color_mask); + TRect naviPane; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::ENaviPane, naviPane ); + SetRect(naviPane); + ActivateL(); + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCustomNaviControl::Draw +// (other items were commented in a header). +// ---------------------------------------------------------------------------- +// +void CCustomNaviControl::Draw(const TRect& /*aRect*/) const + { + TRACE_ENTRY_POINT; + + TSize navi_pane_size; + AknLayoutUtils::LayoutMetricsSize (AknLayoutUtils::ENaviPane, navi_pane_size); + TRect navi_pane(navi_pane_size); + TAknLayoutRect navi_cale_icon_pane; + navi_cale_icon_pane.LayoutRect(navi_pane, + AknLayoutScalable_Apps::navi_pane_bcale_mc_g1().LayoutLine() ); + TRect navi_cale_icon_ev2_pane = navi_cale_icon_pane.Rect(); + + CWindowGc& gc = SystemGc(); + AknIconUtils::SetSize(iBitmap, navi_cale_icon_ev2_pane.Size()); + AknIconUtils::SetIconColor(iBitmap,iCalendarColor); + gc.BitBlt(navi_cale_icon_ev2_pane.iTl,iBitmap); + TAknTextLineLayout navi_cale_text_pane_t1 = + AknLayoutScalable_Apps::navi_pane_bcale_mc_t1(0).LayoutLine(); + + // Get heading layout properties + // from field_cale_ev2_pane_t1 with list_cale_ev2_pane as parent + TAknLayoutText headingTextLayout; + headingTextLayout.LayoutText(navi_pane, navi_cale_text_pane_t1); + + const CFont* font = CCoeEnv::Static()->NormalFont(); + gc.UseFont(font); + // If you see bright red text, the skins api is broken! + TRgb textColourFromSkin(255,0,0); + // Does not transfer ownership. + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + AknsUtils::GetCachedColor(skin, + textColourFromSkin, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG2); + TCharFormat charFormat; + TCharFormatMask charFormatMask; + // Set the text colour we found. + charFormat.iFontPresentation.iTextColor = TLogicalRgb(textColourFromSkin); + charFormatMask.SetAttrib(EAttColor); + gc.SetPenColor(charFormat.iFontPresentation.iTextColor); + gc.DrawText(*(iCalendarName),TPoint(headingTextLayout.TextRect().iTl.iX, + headingTextLayout.TextRect().iBr.iY)); + gc.DiscardFont(); + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCustomNaviControl::Sizechanged +// Child control was resized. +// (other items were commented in a header) +// ---------------------------------------------------------------------------- +// +void CCustomNaviControl::SizeChanged() + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCustomNaviControl::CountComponentControls +// Return child control count. +// (other items were commented in a header). +// ---------------------------------------------------------------------------- +// +TInt CCustomNaviControl::CountComponentControls() const + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + + return 0; + } + +// ---------------------------------------------------------------------------- +// CCustomNaviControl::ComponentControl +// Return child control pointer. +// (other items were commented in a header). +// ---------------------------------------------------------------------------- +// +CCoeControl* CCustomNaviControl::ComponentControl(TInt /*aIndex*/) const + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + + return NULL; + } + +// end of file diff -r 9c5b1510919f -r bf573002ff72 calendarui/conf/calendarUI.confml Binary file calendarui/conf/calendarUI.confml has changed diff -r 9c5b1510919f -r bf573002ff72 calendarui/conf/calendarUI_101F874B.crml Binary file calendarui/conf/calendarUI_101F874B.crml has changed diff -r 9c5b1510919f -r bf573002ff72 calendarui/controller/src/calenalarmmanager.cpp --- a/calendarui/controller/src/calenalarmmanager.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/controller/src/calenalarmmanager.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -49,6 +49,8 @@ #include "calenattachmentmodel.h" static const TUint32 KMaxMissedAlarms = 10; +// Order of calendar window(at front) after Stop/Snooze of alarm from event viewer. +static const TInt KCalendarWindowOnFront(0); // ---------------------------------------------------------------------------- // CCalenAlarmManager::NewL @@ -103,10 +105,9 @@ } delete iMissedAlarmStore; - if(iMissedAlarmList.Count()) - { - iMissedAlarmList.Close(); - } + + iMissedAlarmList.Close(); + TRACE_EXIT_POINT; } @@ -288,6 +289,16 @@ HandleMissedAlarmViewClosedL(); } break; + case ECalenNotifyClearMissedAlarms: + { + TVwsViewId activeView; + iController.AppUi().GetActiveViewId(activeView); + if(activeView.iViewUid == KUidCalenMissedAlarmsView) + { + OnCmdClearAllMissedAlarmsL(); + } + } + break; case ECalenNotifyMissedEventViewClosed: { HandleMissedEventViewClosedL(); @@ -448,7 +459,7 @@ // restore window group priority RWindowGroup& windowGroup = CCoeEnv::Static()->RootWin(); - PIM_ASSERT( windowGroup.SetOrdinalPositionErr( iOrigWGPos, iOrigWGPrio ) ); + PIM_ASSERT( windowGroup.SetOrdinalPositionErr( KCalendarWindowOnFront, iOrigWGPrio ) ); //Close Event View if(aCloseEventView) @@ -480,7 +491,7 @@ // restore window group priority RWindowGroup& windowGroup = CCoeEnv::Static()->RootWin(); - PIM_ASSERT( windowGroup.SetOrdinalPositionErr( iOrigWGPos, iOrigWGPrio ) ); + PIM_ASSERT( windowGroup.SetOrdinalPositionErr( KCalendarWindowOnFront, iOrigWGPrio ) ); // After auto snooze, stop the alarm and open the event viewer in normal mode. iController.BroadcastNotification( ECalenNotifyStopAlarm ); @@ -607,8 +618,18 @@ TRACE_ENTRY_POINT; // Clear all the missed alarm events from cenrep - iMissedAlarmStore->RemoveAllL(); - + + RPointerArray missedAlarmArray; + CleanupResetAndDestroyPushL( missedAlarmArray ); + iMissedAlarmStore->GetL(missedAlarmArray); + for(TInt index = 0;index < missedAlarmArray.Count();index++) + { + // remove from cenrep + iMissedAlarmStore->RemoveL(*missedAlarmArray[index]); + } + + CleanupStack::PopAndDestroy(); // aMissedAlarmArray + if(iMissedAlarmList.Count()) { iMissedAlarmList.Close(); @@ -731,8 +752,8 @@ { TRACE_ENTRY_POINT; - // remove all the viewed events - RemoveAllViewedEventsL(); + // remove all the missed alarms + OnCmdClearAllMissedAlarmsL(); if(iPreviousToMissedAlarmView.iViewUid!=KNullUid) { @@ -916,20 +937,20 @@ { TRACE_ENTRY_POINT; - RPointerArray aMissedAlarmArray; - CleanupResetAndDestroyPushL( aMissedAlarmArray ); - iMissedAlarmStore->GetL(aMissedAlarmArray); + RPointerArray missedAlarmArray; + CleanupResetAndDestroyPushL( missedAlarmArray ); + iMissedAlarmStore->GetL(missedAlarmArray); TBool retValue = EFalse; - for(TInt index = 0;index < aMissedAlarmArray.Count();index++) + for(TInt index = 0;index < missedAlarmArray.Count();index++) { - if( aEntryLocalUid == aMissedAlarmArray[index]->iLuid ) + if( aEntryLocalUid == missedAlarmArray[index]->iLuid ) { - CCalSession &session = iController.Services().SessionL( aMissedAlarmArray[index]->iCalFileName ); + CCalSession &session = iController.Services().SessionL( missedAlarmArray[index]->iCalFileName ); TCalCollectionId colid = session.CollectionIdL(); if( colid == aColid) { // remove from cenrep - iMissedAlarmStore->RemoveL(*aMissedAlarmArray[index]); + iMissedAlarmStore->RemoveL(*missedAlarmArray[index]); retValue = ETrue; break; } diff -r 9c5b1510919f -r bf573002ff72 calendarui/controller/src/calencmdlinelauncher.cpp --- a/calendarui/controller/src/calencmdlinelauncher.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/controller/src/calencmdlinelauncher.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -306,6 +306,7 @@ if( iController.ViewManager().ViewsActivated() ) { iController.IssueCommandL( ECalenEventView ); + iController.SetLaunchFromExternalApp( ETrue ); } else { diff -r 9c5b1510919f -r bf573002ff72 calendarui/controller/src/calencontroller.cpp --- a/calendarui/controller/src/calencontroller.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/controller/src/calencontroller.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -254,6 +254,7 @@ notificationArray.Append(ECalenNotifyLostAlarms); notificationArray.Append(ECalenNotifyMissedAlarmViewClosed); + notificationArray.Append(ECalenNotifyClearMissedAlarms); notificationArray.Append(ECalenNotifyMissedEventViewClosed); notificationArray.Append(ECalenNotifyEntryDeleted); notificationArray.Append(ECalenNotifyInstanceDeleted); diff -r 9c5b1510919f -r bf573002ff72 calendarui/controller/src/calenmultidbeditor.cpp --- a/calendarui/controller/src/calenmultidbeditor.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/controller/src/calenmultidbeditor.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -164,16 +164,7 @@ iPicture = new( ELeave )CDbColorPicture( TSize( 0, 0 ) ); iPicture->SetRgbColorsL(iChoosenColor); - //set sync value - // ESyncStatus - TBuf8 keyBuff; - keyBuff.AppendNum(ESyncStatus); - TPckgC pkgSyncStatus(iSyncStatus); - TRAPD(err,pkgSyncStatus.Set(iCalendarInfo.PropertyValueL(keyBuff))); - if( KErrNone == err ) - { - iSyncStatus = pkgSyncStatus(); - } + LoadColorsL(); @@ -247,12 +238,7 @@ case EAknSoftkeyChange: { - if( ECalenMultiDbSyncStatus == IdOfFocusControl() ) - { - SetSyncFieldL( !iSyncStatus ); - iSyncStatus = !iSyncStatus; - } - else if( ECalenMultiDbHiddenVisible == IdOfFocusControl() ) + if( ECalenMultiDbHiddenVisible == IdOfFocusControl() ) { iCalendarStatus = iCalendarInfo.Enabled(); @@ -375,13 +361,8 @@ case EAknSoftkeyChange: { isExitForm=EFalse; - if( ECalenMultiDbSyncStatus == IdOfFocusControl() ) - { - SetSyncFieldL( !iSyncStatus ); - iSyncStatus = !iSyncStatus; - } - else if( ECalenMultiDbHiddenVisible == IdOfFocusControl() ) - { + if( ECalenMultiDbHiddenVisible == IdOfFocusControl() ) + { iCalendarStatus = iCalendarInfo.Enabled(); if( ECalenMultiDbHidden == iCalendarStatus ) @@ -483,25 +464,7 @@ { TRACE_ENTRY_POINT; - if(iEditFlag) - { - TBuf8 keyBuff; - keyBuff.AppendNum(ESyncConfigEnabled); - TBool syncConfigEnabled = EFalse; - TPckgC pkgSyncConfigEnabled(syncConfigEnabled); - - TRAPD(err,pkgSyncConfigEnabled.Set(iCalendarInfo.PropertyValueL(keyBuff))); - syncConfigEnabled = pkgSyncConfigEnabled(); - - //If this sync property(ESyncConfigEnabled) is set and enabled , - //then sync on/off should not be shown be to the user. - //This behaviour is only for certain calendars created - //from device sync with this property set. - if(err == KErrNone && syncConfigEnabled) - { - DeleteLine(ECalenMultiDbSyncStatus); - } - } + // Set data to controls in the editor. SetDataToFormL(); @@ -581,8 +544,7 @@ iCalendarStatus = iCalendarInfo.Enabled(); - //Set the the sync status - SetSyncFieldL(iSyncStatus); + if( ECalenMultiDbHidden == iCalendarStatus ) { @@ -797,16 +759,7 @@ iCalendarInfo.SetColor(iColVal); } - //Filling the sync value into metadata - if(ControlOrNull(ECalenMultiDbSyncStatus)) - { - TBuf8 keyBuff; - keyBuff.Zero(); - keyBuff.AppendNum(ESyncStatus); - - TPckgC pkgSyncStatus(iSyncStatus); - iCalendarInfo.SetPropertyL(keyBuff, pkgSyncStatus); - } + if( IsVisiblityFieldEditedL( iCalendarStatus ) ) { @@ -1007,12 +960,7 @@ } break; - case ECalenMultiDbSyncStatus: - { - SetSyncFieldL( !iSyncStatus ); - iSyncStatus = !iSyncStatus; - } - break; + case ECalenMultiDbHiddenVisible: { @@ -1069,7 +1017,6 @@ case ECalenMultiDbColor: case ECalenMultiDbHiddenVisible: - case ECalenMultiDbSyncStatus: { resId = R_CALEN_MULTIDB_MSK_CHANGE_CBA; } diff -r 9c5b1510919f -r bf573002ff72 calendarui/controller/src/calenmultipledbui.cpp --- a/calendarui/controller/src/calenmultipledbui.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/controller/src/calenmultipledbui.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -766,12 +766,7 @@ iCalendarInfoOriginal->SetColor(iCalendarInfoEdited->Color()); iCalendarInfoOriginal->SetEnabled(iCalendarInfoEdited->Enabled()); TBuf8 keyBuff; - TBool syncstatus = EFalse; - keyBuff.Zero(); - keyBuff.AppendNum( ESyncStatus ); - TPckgC pckgSyncStatusValue(syncstatus); - TRAP_IGNORE(pckgSyncStatusValue.Set(iCalendarInfoEdited->PropertyValueL( keyBuff ))); - iCalendarInfoOriginal->SetPropertyL( keyBuff, pckgSyncStatusValue ); + iDbEditor = CCalenMultiDBEditor::NewL(*this,*iCalendarInfoEdited, iController, ETrue); @@ -867,21 +862,10 @@ TBool changed = EFalse; HBufC* editedName = aCalendarInfoModified.NameL().AllocLC(); - TBool syncstatusOriginal; - TBool syncstatusModified; - TBuf8 keyBuff; - keyBuff.Zero(); - keyBuff.AppendNum( ESyncStatus ); - TPckgC pckgSyncStatusValueOriginal(syncstatusOriginal); - pckgSyncStatusValueOriginal.Set(aCalendarInfoOriginal.PropertyValueL( keyBuff )); - TPckgC pckgSyncStatusValueModified(syncstatusModified); - TRAP_IGNORE(pckgSyncStatusValueModified.Set(aCalendarInfoModified.PropertyValueL( keyBuff ))); - syncstatusOriginal = pckgSyncStatusValueOriginal(); - syncstatusModified = pckgSyncStatusValueModified(); + if (editedName->Compare(aCalendarInfoOriginal.NameL()) || aCalendarInfoModified.Color() != aCalendarInfoOriginal.Color() - || aCalendarInfoModified.Enabled()!= aCalendarInfoOriginal.Enabled() - || syncstatusOriginal != syncstatusModified) + || aCalendarInfoModified.Enabled()!= aCalendarInfoOriginal.Enabled()) { changed = ETrue; } @@ -925,16 +909,16 @@ CleanupClosePushL(calendarInfoList); if(calendarInfoList.Count()) { - TInt currentIndex = iListBox->CurrentItemIndex(); + TInt currentIndex = iCurrentIndex = iListBox->CurrentItemIndex(); HBufC* calendarFileName = calendarInfoList[currentIndex]->FileNameL().AllocLC(); - if (calendarFileName->CompareF( - _L("c:Calendar1"))) + if ((calendarFileName->CompareF( + iController.Services().SessionL().DefaultFileNameL()))) { DeleteItemL(); } CleanupStack::PopAndDestroy(calendarFileName); - } + } CleanupStack::PopAndDestroy(&calendarInfoList); exitCode = EKeyWasConsumed; } @@ -1349,8 +1333,13 @@ _LIT8( KCalendarOwnerName, "myself" ); aCalendarInfo.SetPropertyL(keyBuff, KCalendarOwnerName); } - - + + TBool syncstatus = ETrue; + keyBuff.Zero(); + keyBuff.AppendNum( ESyncStatus ); + TPckgC pckgSyncStatusValue(syncstatus); + aCalendarInfo.SetPropertyL( keyBuff, pckgSyncStatusValue ); + TRACE_EXIT_POINT } diff -r 9c5b1510919f -r bf573002ff72 calendarui/controller/src/calensettingsstate.cpp --- a/calendarui/controller/src/calensettingsstate.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/controller/src/calensettingsstate.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -153,8 +153,7 @@ ActivateCurrentStateL(aStateMachine); } break; - case ECalenNotifySettingsChanged: - break; + default: // default is defer all other notifications when we are in setting state iOutstandingNotifications.InsertL(aNotification); diff -r 9c5b1510919f -r bf573002ff72 calendarui/editors/inc/CalenEditorDataHandler.h --- a/calendarui/editors/inc/CalenEditorDataHandler.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/editors/inc/CalenEditorDataHandler.h Mon Jun 21 15:38:59 2010 +0300 @@ -340,11 +340,6 @@ */ TBool LocationEnabledInUiL(); - /** - * @brief Returns ETrue if the user is creating a new entry, EFalse if the user - * is editing an existing entry. - */ - TBool IsCreatingNew() const; /** * @brief Sets the default values when creating a new entry. @@ -485,6 +480,11 @@ public: + /** + * @brief Returns ETrue if the user is creating a new entry, EFalse if the user + * is editing an existing entry. + */ + TBool IsCreatingNew() const; /** * @brief Set if calendar is been edited or not with previous and current collection id diff -r 9c5b1510919f -r bf573002ff72 calendarui/editors/inc/calenreminderfield.h --- a/calendarui/editors/inc/calenreminderfield.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/editors/inc/calenreminderfield.h Mon Jun 21 15:38:59 2010 +0300 @@ -192,6 +192,12 @@ * before start time */ TTimeIntervalMinutes iAlarmOffset; + /** + * @var isAllDayInitialOffsetSet + * @brief To check if initial offset + * for all day event is set correctly + */ + TBool isAllDayInitialOffsetSet; }; #endif // CALENALARMFIELDS_H diff -r 9c5b1510919f -r bf573002ff72 calendarui/editors/src/calenreminderfield.cpp --- a/calendarui/editors/src/calenreminderfield.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/editors/src/calenreminderfield.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -85,6 +85,7 @@ TRACE_ENTRY_POINT; iIsAlarmOnOff = CCalenReminderField::EAlarmNoAlarm; + isAllDayInitialOffsetSet = EFalse; TRACE_EXIT_POINT; } @@ -233,11 +234,23 @@ { TRACE_ENTRY_POINT; - // Updating operation is executed only if alarm date/time field exists. - if( iUnifiedEditor.Edited().IsAlarmActivated() ) - { - TTime start = iUnifiedEditor.Edited().EventDateTime(); - TTime alarm = start + iAlarmOffset; + // Updating operation is executed only if alarm date/time field exists. + if( iUnifiedEditor.Edited().IsAlarmActivated() ) + { + TTime start = iUnifiedEditor.Edited().EventDateTime(); + TTime alarm; + //For a new allday event when the start time is changed for the first time + //alarm time must be updated correctly + if(iUnifiedEditor.Edited().IsAllDayEvent() && !isAllDayInitialOffsetSet + && iUnifiedEditor.EditorDataHandler().IsCreatingNew()) + { + alarm = CalenDateUtils::DefaultTime(start)+iAlarmOffset; + isAllDayInitialOffsetSet = ETrue; + } + else + { + alarm = start + iAlarmOffset; + } alarm = CalenDateUtils::LimitToValidTime( alarm ); iUnifiedEditor.Edited().SetAlarmDateTimeL( alarm ); SetDataToEditorL(); diff -r 9c5b1510919f -r bf573002ff72 calendarui/editors/src/calenunifiededitor.cpp --- a/calendarui/editors/src/calenunifiededitor.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/editors/src/calenunifiededitor.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -1287,7 +1287,7 @@ aMenuPane->AddMenuItemsL( R_CALEN_UNIFIED_EDITOR_DEFAULT_MENUPANE ); - if( !CCalenLocationUtil::IsMapProviderAvailableL() ) + if( (iEntryType == CCalEntry::ETodo) || !(CCalenLocationUtil::IsMapProviderAvailableL()) ) { aMenuPane->DeleteMenuItem( ECalenGetLocation ); } diff -r 9c5b1510919f -r bf573002ff72 calendarui/editors/src/calenunifiededitorcontrol.cpp --- a/calendarui/editors/src/calenunifiededitorcontrol.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/editors/src/calenunifiededitorcontrol.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -676,6 +676,12 @@ TRACE_ENTRY_POINT; iAllDayField->SetAllDayEvent( aActive ); + //set defalut alarmtime when allday field is activated/deactivated + if(iUnifiedEditor.EditorFields().IsAlarmActiveInForm()) + { + iUnifiedEditor.EditorDataHandler().SetDefaultAlarmDateTimeL(); + iReminderField->SetDataToEditorL(); + } TRACE_EXIT_POINT } diff -r 9c5b1510919f -r bf573002ff72 calendarui/globaldata/src/calenglobaldata.cpp --- a/calendarui/globaldata/src/calenglobaldata.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/globaldata/src/calenglobaldata.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -330,6 +330,11 @@ delete iCalSession; } + if (iCalendarInfoList.Count()) + { + iCalendarInfoList.ResetAndDestroy(); + } + if( iFileMappingArray.Count() ) { iFileMappingArray.ResetAndDestroy(); @@ -341,11 +346,6 @@ Dll::SetTls(NULL); - if (iCalendarInfoList.Count()) - { - iCalendarInfoList.ResetAndDestroy(); - } - if (iCalendarsSession) { delete iCalendarsSession; diff -r 9c5b1510919f -r bf573002ff72 calendarui/inc/calendar.hrh --- a/calendarui/inc/calendar.hrh Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/inc/calendar.hrh Mon Jun 21 15:38:59 2010 +0300 @@ -91,6 +91,7 @@ ECalenSnoozeTimeItemId, ECalenDefaultViewItemId, ECalenWeekFormatItemId, + ECalenWeekNumberItemId, ECalenWeekTitleItemId, ECalenExtCalendarItemId, ECalenDefaultMailboxId, diff -r 9c5b1510919f -r bf573002ff72 calendarui/loc/calendar.loc --- a/calendarui/loc/calendar.loc Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/loc/calendar.loc Mon Jun 21 15:38:59 2010 +0300 @@ -2639,5 +2639,23 @@ //w: //r:9.2 #define qtn_todo_all_task_updated "All to-do notes updated" + +//d:Confirmation note shown, when tasks are updated +//l:list_setting_pane_t1/opt1 +//w: +//r:9.2 +#define qtn_cale_set_show_wk_number "Show week number" + +//d:Confirmation note shown, when tasks are updated +//l:list_set_graphic_pane_t1 +//w: +//r:9.2 +#define qtn_cale_set_show_wk_number_yes "Yes" + +//d:Confirmation note shown, when tasks are updated +//l:list_set_graphic_pane_t1 +//w: +//r:9.2 +#define qtn_cale_set_show_wk_number_no "No" // End of File diff -r 9c5b1510919f -r bf573002ff72 calendarui/organizerplugin/aiagendaplugin2/src/aicalendarplugin2.cpp --- a/calendarui/organizerplugin/aiagendaplugin2/src/aicalendarplugin2.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/organizerplugin/aiagendaplugin2/src/aicalendarplugin2.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -673,6 +673,7 @@ Clean( EAICalendarPlugin2EventTimeStart, lineUsage + 1 ); Clean( EAICalendarPlugin2EventTimeEnd, lineUsage + 1 ); Clean( EAICalendarPlugin2EventTextSecondLine, lineUsage + 1 ); + Clean( EAICalendarPlugin2TimeStartAndSubject, lineUsage + 1 ); if( ( iEventData->TomorrowEventArray().Count() > 0 ) && ( iConstantData->iDaysToHandleAsNotToday == KAIRangeTomorrowOnly ) ) @@ -804,8 +805,11 @@ // some languages needs two rows for publishing cleanInfo = EFalse; // display "Next event on: [day of the week] [date]" - PublishIconL( EAICalendarPlugin2NoMoreEventsForToday, 0, EAICalendarPlugin2InfoIcon ); - iCurrentObserver->Publish( *this, EAICalendarPlugin2InfoText, nextOn, 0 ); + + PublishIconL( EAICalendarPlugin2NoEventsForToday, publishIndex); + + iCurrentObserver->Publish( *this, EAICalendarPlugin2TimeStartAndSubject, nextOn, publishIndex); + } ++lineUsage; ++publishIndex; @@ -814,9 +818,22 @@ focusItem.iType = EAI2CalOpenOnEventDay; focusItem.iEntryTime = eventTime; focusDataArray.Append( focusItem ); - /** - * 5) Clean the rest - */ + + PublishFutureItemsForArrayL( + iEventData->TomorrowEventArray(), + publishIndex, // reference passed and updated inside + lineUsage, // reference passed and updated inside + iActualLinesInUse); + + + PublishFutureItemsForArrayL( + iEventData->FutureItemArray(), + publishIndex, // reference passed and updated inside + lineUsage, // reference passed and updated inside + iActualLinesInUse); + + // 5) Clean the rest + for( ; publishIndex <= iActualLinesInUse; ++publishIndex ) { CleanAll( publishIndex ); diff -r 9c5b1510919f -r bf573002ff72 calendarui/settings/settingsui/BWINS/calensettingsuiu.def --- a/calendarui/settings/settingsui/BWINS/calensettingsuiu.def Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/settings/settingsui/BWINS/calensettingsuiu.def Mon Jun 21 15:38:59 2010 +0300 @@ -21,4 +21,6 @@ ?SetSnoozeTime@CCalenSetting@@QAEXH@Z @ 20 NONAME ; void CCalenSetting::SetSnoozeTime(int) ?SnoozeTime@CCalenSetting@@QBEHXZ @ 21 NONAME ; int CCalenSetting::SnoozeTime(void) const ?WeekTitle@CCalenSetting@@QBE?AW4TCalenWeekTitle@@XZ @ 22 NONAME ; enum TCalenWeekTitle CCalenSetting::WeekTitle(void) const + ?SetWeekNumber@CCalenSetting@@QAEXW4TCalenWeekNumber@@@Z @ 23 NONAME ; void CCalenSetting::SetWeekNumber(enum TCalenWeekNumber) + ?WeekNumberEnable@CCalenSetting@@QBE?AW4TCalenWeekNumber@@XZ @ 24 NONAME ; enum TCalenWeekNumber CCalenSetting::WeekNumberEnable(void) const diff -r 9c5b1510919f -r bf573002ff72 calendarui/settings/settingsui/eabi/calensettingsuiu.def --- a/calendarui/settings/settingsui/eabi/calensettingsuiu.def Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/settings/settingsui/eabi/calensettingsuiu.def Mon Jun 21 15:38:59 2010 +0300 @@ -31,4 +31,6 @@ _ZTV25CCalenCheckboxSettingItem @ 30 NONAME _ZTV25CCalenNestedSettingDialog @ 31 NONAME _ZTV25CCalenSettingsUiContainer @ 32 NONAME + _ZN13CCalenSetting13SetWeekNumberE16TCalenWeekNumber @ 33 NONAME + _ZNK13CCalenSetting16WeekNumberEnableEv @ 34 NONAME diff -r 9c5b1510919f -r bf573002ff72 calendarui/settings/settingsui/inc/calensetting.h --- a/calendarui/settings/settingsui/inc/calensetting.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/settings/settingsui/inc/calensetting.h Mon Jun 21 15:38:59 2010 +0300 @@ -74,7 +74,12 @@ * @return Week title - EWeekTitleNumber | EWeekTitleDuration */ IMPORT_C TCalenWeekTitle WeekTitle() const; - + + /** + * Return week number + * @return TCalenWeekNumber + */ + IMPORT_C TCalenWeekNumber WeekNumberEnable() const; /** * Return setting for calendar alarm snooze time. * @return Minutes to snooze. @@ -132,7 +137,12 @@ * @param aTitle EWeekTitleNumber | EWeekTitleDuration */ IMPORT_C void SetWeekTitle( TCalenWeekTitle aTitle ); - + + /** + * Set week number + * @param TCalenWeekNumber + */ + IMPORT_C void SetWeekNumber( TCalenWeekNumber aNumber ); /** * Set snooze time. * @param aSnoozeTime Snooze time in minutes. @@ -215,6 +225,7 @@ TUid iDefaultView; TDay iWeekFormat; TCalenWeekTitle iWeekTitle; + TCalenWeekNumber iWeekNumber; TInt iSnoozeTime; CCalenCustomisationManager::CCalenPluginStatusArray iPluginAvailability; #ifdef RD_CALEN_EXTERNAL_CAL diff -r 9c5b1510919f -r bf573002ff72 calendarui/settings/settingsui/inc/calensettingsuicontainer.h --- a/calendarui/settings/settingsui/inc/calensettingsuicontainer.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/settings/settingsui/inc/calensettingsuicontainer.h Mon Jun 21 15:38:59 2010 +0300 @@ -241,6 +241,8 @@ TInt iDefView; // week format enumeration TInt iWeekFormat; + // week number enumeration + TInt iWeekNumberEnable; // week title enumeration TInt iWeekTitle; // Default mailbox enumeration diff -r 9c5b1510919f -r bf573002ff72 calendarui/settings/settingsui/src/calensetting.cpp --- a/calendarui/settings/settingsui/src/calensetting.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/settings/settingsui/src/calensetting.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -88,6 +88,7 @@ CCalenSetting::CCalenSetting() : iWeekFormat( EMonday ), iWeekTitle( EWeekTitleNumber ), + iWeekNumber( EWeekNumberOff ), iSnoozeTime( KDefaultSnoozeTime ), iToolbar(1) @@ -187,6 +188,18 @@ } // --------------------------------------------------------- +// CCalenSetting::WeekTitle +// Return setting type of week title +// (other items were commented in a header). +// --------------------------------------------------------- +// +EXPORT_C TCalenWeekNumber CCalenSetting::WeekNumberEnable() const + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + return iWeekNumber; + } +// --------------------------------------------------------- // CCalenSetting::SnoozeTime // Return the snooze time setting. // (other items were commented in a header). @@ -553,6 +566,21 @@ } // --------------------------------------------------------- +// CCalenSetting::SetWeekNumber +// Set week title +// (other items were commented in a header). +// --------------------------------------------------------- +// +EXPORT_C void CCalenSetting::SetWeekNumber( TCalenWeekNumber aNumber ) + { + TRACE_ENTRY_POINT; + + iWeekNumber = aNumber; + + TRACE_EXIT_POINT; + } + +// --------------------------------------------------------- // CCalenSetting::SetSnoozeTime // Return the snooze time setting. // (other items were commented in a header). @@ -649,6 +677,9 @@ // Central Repository data matches. User::LeaveIfError( repository->Get( KCalendarWeekViewTitle, tmp ) ); iWeekTitle = static_cast( tmp ); + + User::LeaveIfError( repository->Get( KCalendarWeekViewNumber, tmp ) ); + iWeekNumber = static_cast( tmp ); User::LeaveIfError( repository->Get( KCalendarSnoozeTime, tmp ) ); iSnoozeTime = tmp; @@ -697,6 +728,9 @@ // Central Repository data matches. tmp = static_cast( iWeekTitle ); User::LeaveIfError( repository->Set( KCalendarWeekViewTitle, tmp ) ); + + tmp = static_cast( iWeekNumber ); + User::LeaveIfError( repository->Set( KCalendarWeekViewNumber, tmp ) ); tmp = iSnoozeTime; User::LeaveIfError( repository->Set( KCalendarSnoozeTime, tmp ) ); diff -r 9c5b1510919f -r bf573002ff72 calendarui/settings/settingsui/src/calensettingsuicontainer.cpp --- a/calendarui/settings/settingsui/src/calensettingsuicontainer.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/settings/settingsui/src/calensettingsuicontainer.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -788,6 +788,12 @@ R_CALEN_WEEKFORMAT_TEXTS, ordinal++ ); + AddEnumerationItemL( iWeekNumberEnable, + ECalenWeekNumberItemId, + R_CALEN_SETTING_WEEKNUMBER_TITLE, + R_CALEN_SETTING_WEEKNUMBER, + R_CALEN_WEEKNUMBER_TEXTS, + ordinal++ ); // Always add this in. We will set it hidden when it's not needed (i.e. when the // week start is set to anything other than "Monday") at the bottom of this function. @@ -839,6 +845,7 @@ // Hide the week title setting if the week start is anything other than Monday. Item( ECalenWeekTitleItemId )->SetHidden( !ShouldShowWeekTitleItem() ); + Item( ECalenWeekNumberItemId )->SetHidden( !ShouldShowWeekTitleItem() ); TRACE_EXIT_POINT; } @@ -935,10 +942,12 @@ if ( wasShown != doShow ) { Item( ECalenWeekTitleItemId )->SetHidden( !doShow ); + Item( ECalenWeekNumberItemId )->SetHidden( !doShow ); if ( !doShow ) { Item( ECalenWeekTitleItemId )->LoadL(); + Item( ECalenWeekNumberItemId )->LoadL(); } iSettingItemArray->RecalculateVisibleIndicesL(); @@ -1012,7 +1021,7 @@ iPageStatus = aPageStatus; // for week title only two options available // so let's toggle instead of opening setting page - if( item->Identifier() != ECalenWeekTitleItemId ) + if( (item->Identifier() != ECalenWeekTitleItemId) && (item->Identifier() != ECalenWeekNumberItemId)) { item->EditItemL( aCommand == EAknCmdOpen ); } @@ -1052,6 +1061,14 @@ item->LoadL(); item->UpdateListBoxTextL(); break; + case ECalenWeekNumberItemId: + // toggling option done here + iSetting->SetWeekNumber( static_cast( iWeekNumberEnable ) == EWeekNumberOn ? + EWeekNumberOff : EWeekNumberOn ); + iWeekNumberEnable = iSetting->WeekNumberEnable(); + item->LoadL(); + item->UpdateListBoxTextL(); + break; case ECalenDefaultMailboxId: item->StoreL(); StoreMailboxSettingsL(); @@ -1267,6 +1284,7 @@ iDefView = iSetting->DefaultView().iUid; iWeekFormat = iSetting->WeekFormat(); iWeekTitle = iSetting->WeekTitle(); + iWeekNumberEnable = iSetting->WeekNumberEnable(); iSnoozeTime = iSetting->SnoozeTime(); #ifdef RD_SCALABLE_UI_V2_NO_TOOLBAR_SETTING iToolbar = iSetting->Toolbar(); diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/group/calenviews.mmp --- a/calendarui/views/group/calenviews.mmp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/group/calenviews.mmp Mon Jun 21 15:38:59 2010 +0300 @@ -155,7 +155,7 @@ LIBRARY apmime.lib LIBRARY multicaluidialog.lib LIBRARY touchfeedback.lib //MTouchFeedBack - +LIBRARY gesturehelper.lib // File logging LIBRARY flogger.lib LIBRARY aknnotify.lib diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/inc/calendaycontainer.h --- a/calendarui/views/inc/calendaycontainer.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/inc/calendaycontainer.h Mon Jun 21 15:38:59 2010 +0300 @@ -23,7 +23,7 @@ // INCLUDES #include #include // TCalenInstanceId - +#include #include "calencontainer.h" #include "CalendarVariant.hrh" @@ -39,12 +39,19 @@ class CCalInstance; class CAknsFrameBackgroundControlContext; class TCalenInstanceId; + +namespace GestureHelper + { + class CGestureHelper; + } + // CLASS DEFINITIONS /** * CCalenDayContainer container control class for DayView. */ NONSHARABLE_CLASS( CCalenDayContainer ) : public CCalenContainer, - public MEikListBoxObserver + public MEikListBoxObserver, + public GestureHelper::MGestureObserver { public: // Data @@ -177,7 +184,13 @@ */ void HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ); - + + /**From MGestureObserver + * Handle the gesture event + * @param aEvent event describing the gesture + */ + virtual void HandleGestureL( const GestureHelper::MGestureEvent& aEvent ); + /** * Check whether entry exists or not */ @@ -386,6 +399,14 @@ TTime& iDate; // Current day TInt& iHighlightedRowNumber; TInt& iFirstEntryOnScreenIndex; + + /** + * Gesture helper provides functionality to convert a stream of pointer + * events into a logical gesture. + * Own. + */ + GestureHelper::CGestureHelper* iGestureHelper; + TBool iGestureHandled; }; #endif // CALENDAYCONTAINER_H diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/inc/caleneventview.h --- a/calendarui/views/inc/caleneventview.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/inc/caleneventview.h Mon Jun 21 15:38:59 2010 +0300 @@ -157,6 +157,11 @@ */ void UpdateToolbarButtonsL(); + /** + * Set date to Status pane. Default implementation does nothing. + * @param aTime it will be refrect to StatusPane + */ + void SetStatusPaneFromActiveContextL(); private: TVwsViewId iPreviousViewId; diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/inc/caleneventviewcontainer.h --- a/calendarui/views/inc/caleneventviewcontainer.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/inc/caleneventviewcontainer.h Mon Jun 21 15:38:59 2010 +0300 @@ -27,7 +27,6 @@ #include "calencontainer.h" #include #include -#include #include // forward declarations class CEikRichTextEditor; @@ -465,14 +464,6 @@ * viewer/editor. */ RPointerArray& AllInstancesL(); - /** - * Get the available label rect for this container - */ - TRect GetLabelRectL( ); - - - void SetLabelContentL( CEikLabel& aLabel ); - /** * From MCenRepNotifyHandlerCallback diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/inc/calenmonthcontainer.h --- a/calendarui/views/inc/calenmonthcontainer.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/inc/calenmonthcontainer.h Mon Jun 21 15:38:59 2010 +0300 @@ -23,11 +23,12 @@ // INCLUDES #include +#include +#include //MGestureObserver + #include "calencontainer.h" #include "calenmonthdata.h" // CMonthDataArray is typedef -#include - // FORWARD DECLARATIONS class CAknGrid; class CAknIconArray; @@ -39,6 +40,10 @@ class TAknLayoutRect; class CCalenPreview; +namespace GestureHelper + { + class CGestureHelper; + } // CLASS DEFINITIONS @@ -47,7 +52,8 @@ */ NONSHARABLE_CLASS( CCalenMonthContainer ) : public CCalenContainer, - public MEikListBoxObserver + public MEikListBoxObserver, + public GestureHelper::MGestureObserver { public: // Constructors and destructor /** @@ -124,6 +130,13 @@ void HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ); + + /**From MGestureObserver + * Handle the gesture event + * @param aEvent event describing the gesture + */ + virtual void HandleGestureL( const GestureHelper::MGestureEvent& aEvent ); + void HidePopup(); void RedrawPreviewPane(); @@ -371,6 +384,11 @@ TTime iOldFirstDayOfGrid; TBool iChangeMonth; TBool iChangeDay; + + // Own: Gesture helper + GestureHelper::CGestureHelper* iGestureControl; + // Own: this variable indicates that gesture event was handled. + TBool iGestureHandled; }; #endif //CALENMONTHCONT_H diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/inc/calenweekcontainer.h --- a/calendarui/views/inc/calenweekcontainer.h Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/inc/calenweekcontainer.h Mon Jun 21 15:38:59 2010 +0300 @@ -19,17 +19,19 @@ #ifndef CALENWEEKCONT_H #define CALENWEEKCONT_H -// INCLUDES -#include "calencontainer.h" -#include "calenweekcallback.h" -#include "calenweekdata.h" -#include "calenglobaldata.h" #include #include #include #include // CalCommon::TCalViewFilter #include // TCalenInstanceId +#include //MGestureObserver + +// INCLUDES +#include "calencontainer.h" +#include "calenweekcallback.h" +#include "calenweekdata.h" +#include "calenglobaldata.h" // FORWARD DECLARATIONS class CAknsFrameBackgroundControlContext; @@ -43,6 +45,11 @@ class CCalInstanceView; class MCalenPreview; +namespace GestureHelper + { + class CGestureHelper; + } + typedef CArrayFixFlat* CWeekSlotArrayPtr; NONSHARABLE_CLASS (CCalHourItem):public CBase @@ -79,7 +86,8 @@ * Container control for Week View. */ NONSHARABLE_CLASS( CCalenWeekContainer ) : public CCalenContainer, - public MCalenWeekCursorObserver + public MCalenWeekCursorObserver, + public GestureHelper::MGestureObserver { public: enum TLocaleChangeRedraw @@ -108,6 +116,7 @@ * Create icon indices */ void CreateIconIndicesL( RArray& aIndexArray ); + public: // New Function /** * Check with the layoutmanager for any layout chnanges @@ -194,6 +203,12 @@ void HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ); + /** + * Handle the gesture event + * @param aEvent event describing the gesture + */ + virtual void HandleGestureL( const GestureHelper::MGestureEvent& aEvent ); + private: // New Function TInt HighlightRowFromActiveContextL(TInt aColumn); @@ -441,6 +456,15 @@ TBool iRow; TBool iValidDay; TBool iHourChange; + + /** + * Gesture helper provides functionality to convert a stream of pointer + * events into a logical gesture. + * Own. + */ + // Own: Gesture helper + GestureHelper::CGestureHelper* iGestureControl; + TBool iGestureHandled; }; #endif //CALENWEEKCONT_H diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/src/calendaycontainer.cpp --- a/calendarui/views/src/calendaycontainer.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/src/calendaycontainer.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -16,30 +16,12 @@ * */ - -//debug -#include "calendarui_debug.h" - -// INCLUDE FILES -#include "calendaycontainer.h" -#include "calencontainerlayoutmanager.h" -#include "calencontroller.h" - +#include #include #include -#include "calendaylistboxmodel.h" -#include "calendaylistboxview.h" -#include "calendaylistbox.h" -#include "calendayview.h" -#include "CalenUid.h" #include #include -#include "calenlocationutil.h" - -#include "calendar.hrh" -#include #include - #include #include #include @@ -50,17 +32,30 @@ #include #include #include - #include #include #include #include - #include #include #include #include #include +#include //CGestureHelper + +// INCLUDE FILES +#include "calendaycontainer.h" +#include "calencontainerlayoutmanager.h" +#include "calencontroller.h" +#include "calenlocationutil.h" +#include "calendaylistboxmodel.h" +#include "calendaylistboxview.h" +#include "calendaylistbox.h" +#include "calendayview.h" +#include "CalenUid.h" +#include "calendar.hrh" +//debug +#include "calendarui_debug.h" // LOCAL CONSTANTS AND MACROS const TInt KLayoutTableGranularity(10); @@ -105,6 +100,7 @@ delete iLayoutTable; // Skin contexts delete iBackgroundSkinContext; + delete iGestureHelper; TRACE_EXIT_POINT; } @@ -123,14 +119,37 @@ // Single click integration case EEventItemSingleClicked: { - //Handle listbox item selection event - //iListBox->HandlePointerEventL(aPointerEvent); - if(iView->MenuBar()->IsDisplayed() == EFalse) + // left/right gestures (touch down, drag, touch release) are treated + // by CEikListBox as single click, probably this should be fixed by AVKON team + if ( !iGestureHandled ) + { + if(iView->MenuBar()->IsDisplayed() == EFalse) + { + iView->HandleCommandL( ECalenViewCurrentEntry ); + } + } + break; + } + case EEventEmptyListClicked: + { + // left/right gestures (touch down, drag, touch release) are treated + // by CEikListBox as single click, probably this should be fixed by AVKON team + if ( !iGestureHandled ) { - iView->HandleCommandL( ECalenViewCurrentEntry ); + if (iListBox->Model()->NumberOfItems() <= 0) + { + iView->HandleCommandL(ECalenCmdOpenMskDialog); + } } break; } + + case EEventEmptyAreaClicked: + { + // left/right gestures (touch down, drag, touch release) are treated + // by CEikListBox as single click, probably this should be fixed by AVKON team + break; + } // Single click integration case EEventEnterKeyPressed: @@ -1228,6 +1247,10 @@ CAknIconArray* iconList = CreateIconsL( iIconIndices ); iListBox->ItemDrawer()->ColumnData()->SetIconArray( iconList ); + iGestureHelper = GestureHelper::CGestureHelper::NewL( *this ); + iGestureHelper->SetHoldingEnabled( EFalse ); + iGestureHelper->SetDoubleTapEnabled( EFalse ); + TRACE_EXIT_POINT; } @@ -1450,13 +1473,18 @@ return; } } - if (iListBox->Model()->NumberOfItems() <= 0) + } + if(iGestureHelper) + { + iGestureHelper->HandlePointerEventL( aPointerEvent ); + if ( iGestureHandled ) { - iView->HandleCommandL(ECalenCmdOpenMskDialog); + TRACE_EXIT_POINT; return; } } + TInt pointerIndex(-1); // Single click integration if ( aPointerEvent.iType == TPointerEvent::EButton1Down @@ -1479,6 +1507,42 @@ TRACE_EXIT_POINT; } +// --------------------------------------------------------------------------- +// CCalenDayContainer::HandleGestureL +// Handle the gesture event +// --------------------------------------------------------------------------- +// +void CCalenDayContainer::HandleGestureL( const GestureHelper::MGestureEvent& aEvent ) + { + TRACE_ENTRY_POINT; + GestureHelper::TGestureCode code = aEvent.Code( GestureHelper::MGestureEvent::EAxisBoth ); + + switch ( code ) + { + case GestureHelper::EGestureStart: + { + iGestureHandled = EFalse; + break; + } + case GestureHelper::EGestureSwipeRight: + { + HandleNaviDecoratorEventL( EAknNaviDecoratorEventLeftTabArrow ); + iGestureHandled = ETrue; + break; + } + case GestureHelper::EGestureSwipeLeft: + { + HandleNaviDecoratorEventL( EAknNaviDecoratorEventRightTabArrow ); + iGestureHandled = ETrue; + break; + } + default: + // Other gestures are not handled here + break; + } + + TRACE_EXIT_POINT; + } // ---------------------------------------------------------------------------- // CCalenDayContainer::HandleNaviDecoratorEventL // ?implementation_description diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/src/caleneventview.cpp --- a/calendarui/views/src/caleneventview.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/src/caleneventview.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -41,6 +41,7 @@ #include #include "calenattachmentmodel.h" +#include // Button position of the MSK CBA button const TInt KSK2CBAPosition = 2; @@ -158,8 +159,11 @@ default: { cnt->CompletePopulationL(); - RedrawStatusPaneL(); - UpdateToolbarButtonsL(); + if(!iAvkonAppUi->IsDisplayingMenuOrDialog()) + { + RedrawStatusPaneL(); + UpdateToolbarButtonsL(); + } nextStep = CCalenView::EDone; } break; @@ -291,7 +295,10 @@ iServices.GetAttachmentData()->Reset(); } iPreviousViewId.iViewUid = KNullUid; - + if (!iAvkonAppUi->IsDisplayingMenuOrDialog()) + { + iSPUtils->HideNaviPane(); + } // Remove the toolbar buttons for event viewer before exiting from event view TRAP_IGNORE(RemoveToolbarButtonsL()); @@ -340,6 +347,7 @@ iSPUtils->UnderLineTitleText( EFalse ); iSPUtils->SetTitleText( titleText ); // ownership passed CleanupStack::Pop( titleText ); + SetStatusPaneFromActiveContextL(); iSPUtils->RefreshStatusPane(); TRACE_EXIT_POINT; @@ -407,7 +415,7 @@ } else { - if(cnt->GetFindItemMenu()->CommandIsValidL(aCommand)) + if(cnt->GetFindItemMenu()->CommandIsValidL(aCommand) && toolbarImpl) { CAknToolbar& toolbar = toolbarImpl->Toolbar(); toolbar.SetToolbarVisibility( EFalse ); @@ -440,7 +448,7 @@ } break; default: - if(cnt->GetFindItemMenu()->CommandIsValidL(aCommand)) + if(cnt->GetFindItemMenu()->CommandIsValidL(aCommand) && toolbarImpl) { CAknToolbar& toolbar = toolbarImpl->Toolbar(); toolbar.SetToolbarVisibility( EFalse ); @@ -810,7 +818,7 @@ { // Get the existing toolbar from MCalenservices MCalenToolbar* toolbarImpl = iServices.ToolbarOrNull(); - CAknToolbar& toolbar = toolbarImpl->Toolbar(); + TCalCollectionId colId = iServices.Context().InstanceId().iColId; // get multiple db data from services @@ -822,20 +830,57 @@ TInt index = calendarInfoList.Find( *calendarFileName, CCalenEventViewContainer::CalendarInfoIdentifierL); CleanupStack::PopAndDestroy(calendarFileName); - - - if(!(calendarInfoList[index]->Enabled())) + if(toolbarImpl) { - toolbar.SetItemDimmed( ECalenSend, ETrue, ETrue ); - toolbar.SetItemDimmed( ECalenDeleteCurrentEntry, ETrue, ETrue ); - toolbar.SetItemDimmed( ECalenEditCurrentEntry, ETrue, ETrue ); - } - else - { - toolbar.SetItemDimmed( ECalenSend, EFalse, ETrue ); - toolbar.SetItemDimmed( ECalenDeleteCurrentEntry, EFalse, ETrue ); - toolbar.SetItemDimmed( ECalenEditCurrentEntry, EFalse, ETrue ); + CAknToolbar& toolbar = toolbarImpl->Toolbar(); + if(!(calendarInfoList[index]->Enabled())) + { + toolbar.SetItemDimmed( ECalenSend, ETrue, ETrue ); + toolbar.SetItemDimmed( ECalenDeleteCurrentEntry, ETrue, ETrue ); + toolbar.SetItemDimmed( ECalenEditCurrentEntry, ETrue, ETrue ); + } + else + { + toolbar.SetItemDimmed( ECalenSend, EFalse, ETrue ); + toolbar.SetItemDimmed( ECalenDeleteCurrentEntry, EFalse, ETrue ); + toolbar.SetItemDimmed( ECalenEditCurrentEntry, EFalse, ETrue ); + } } CleanupStack::PopAndDestroy(&calendarInfoList); } +// ---------------------------------------------------------------------------- +// CCalenEventView::SetStatusPaneFromActiveContextL +// Set the calendar name to status pane +// (other items were commented in a header). +// ---------------------------------------------------------------------------- +// +void CCalenEventView::SetStatusPaneFromActiveContextL() + { + TRACE_ENTRY_POINT; + + RPointerArray calendarInfoList; + iServices.GetAllCalendarInfoL(calendarInfoList); + CleanupClosePushL(calendarInfoList); + + TCalCollectionId colId; + colId = iServices.Context().InstanceId().iColId; + + HBufC* calendarFileName = iServices.GetCalFileNameForCollectionId(colId).AllocLC(); + TInt calIndex = calendarInfoList.Find( *calendarFileName, + CCalenEventViewContainer::CalendarInfoIdentifierL); + CleanupStack::PopAndDestroy(calendarFileName); + if(calIndex != KErrNotFound) + { + HBufC* calendarName = calendarInfoList[calIndex]->NameL().AllocLC(); + TRgb calendarColor = calendarInfoList[calIndex]->Color(); + // navi pane + CAknNavigationDecorator* naviLabel = iSPUtils->ShowNaviPaneL( *calendarName, calendarColor ); + CleanupStack::PopAndDestroy(calendarName); + } + CleanupStack::PopAndDestroy(&calendarInfoList); + + + iSPUtils->RefreshStatusPane(); + TRACE_EXIT_POINT; + } //end of file diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/src/caleneventviewcontainer.cpp --- a/calendarui/views/src/caleneventviewcontainer.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/src/caleneventviewcontainer.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -18,7 +18,6 @@ // system includes #include #include // CAknNavigationDecorator -#include // CAknNaviLabel #include #include #include @@ -158,8 +157,6 @@ }; delete iCenRepSession; - if(iLabel) - delete iLabel; //Reset the attachment posiitons array iAttachmentPosInfoArray.Reset(); @@ -200,10 +197,6 @@ iTextEditor->SetMopParent(this); iTextEditor->SetRect( Rect() ); - iLabel = new (ELeave) CEikLabel; - iLabel->SetContainerWindowL(*this); - iLabel->SetTextL(_L("")); - iLabel->SetRect(Rect()); iDocHandler->SetExitObserver( this ); iTextEditor->EnableKineticScrollingL(ETrue); @@ -342,7 +335,7 @@ { TRACE_ENTRY_POINT; TRACE_EXIT_POINT; - return 2; + return 1; } // ---------------------------------------------------------------------------- @@ -361,10 +354,6 @@ control = iTextEditor; break; - case 1: - control = iLabel; - break; - default: __ASSERT_DEBUG( 0, User::Invariant() ); break; @@ -783,7 +772,6 @@ // Initialize icon drawer CCalenIconDrawer* iconDrawer = CreateAndInitializeIconsDrawerL(); - SetLabelContentL(*iLabel); // add subject field AddSubjectFieldL(); @@ -1007,7 +995,6 @@ listscroll_cale_day_pane.LayoutRect( main_cale_day_pane.Rect(), AknLayoutScalable_Apps::listscroll_cale_day_pane( 0 ).LayoutLine() ); - iLabel->SetRect(GetLabelRectL()); // Listbox layout TAknLayoutRect list_cale_pane; @@ -2458,82 +2445,6 @@ } // ---------------------------------------------------------------------------- -// CCalenEventViewContainer::LabelRectL -// Returns the available label rect for this container -// ---------------------------------------------------------------------------- -TRect CCalenEventViewContainer::GetLabelRectL() - { - TRACE_ENTRY_POINT; - - // Get the main pane - TAknLayoutRect main_cale_day_pane; - main_cale_day_pane.LayoutRect( Rect(), - AknLayoutScalable_Apps::main_cale_day_pane().LayoutLine() ); - - TAknLayoutRect listscroll_cale_day_pane; - listscroll_cale_day_pane.LayoutRect( main_cale_day_pane.Rect(), - AknLayoutScalable_Apps::listscroll_cale_day_pane(1).LayoutLine() ); - - // Create a dummy label to find the layout rect - CEikLabel* dummyLabel = new( ELeave ) CEikLabel; - CleanupStack::PushL( dummyLabel ); - - - AknLayoutUtils::LayoutLabel( dummyLabel, listscroll_cale_day_pane.Rect(), - AknLayoutScalable_Apps::listscroll_cale_day_pane_t1( 0 ).LayoutLine() ); - - TRect labelRect = dummyLabel->Rect(); - - // Discard the label - CleanupStack::PopAndDestroy( dummyLabel ); - - TRACE_EXIT_POINT; - return labelRect; - } -// ---------------------------------------------------------------------------- -// CCalenEventViewContainer::SetLabelContentL -// ---------------------------------------------------------------------------- -// -void CCalenEventViewContainer::SetLabelContentL( CEikLabel& aLabel ) - { - TRACE_ENTRY_POINT; - const CFont* labelFont = NULL; - labelFont = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont,NULL); - aLabel.SetFont( labelFont ); - aLabel.SetLabelAlignment(ELayoutAlignLeft); - aLabel.OverrideColorL( EColorLabelTextEmphasis, KRgbBlack ); - - // get the multiple db data from services - RPointerArray calendarInfoList; - iServices.GetAllCalendarInfoL(calendarInfoList); - CleanupClosePushL(calendarInfoList); - - TCalCollectionId colId; - colId = iServices.Context().InstanceId().iColId; - - HBufC* calendarFileName = iServices.GetCalFileNameForCollectionId(colId).AllocLC(); - TInt calIndex = calendarInfoList.Find( *calendarFileName, - CCalenEventViewContainer::CalendarInfoIdentifierL); - CleanupStack::PopAndDestroy(calendarFileName); - - if(calIndex != KErrNotFound) - { - // add the calendar info's text field - aLabel.SetTextL(calendarInfoList[calIndex]->NameL()); - - TInt calendarColor = calendarInfoList[calIndex]->Color().Value(); - aLabel.OverrideColorL( EColorLabelHighlightFullEmphasis, calendarColor ); - - // Increment the iNumOfLinesBeforeLocField so that map icon is drwan at proper place - iNumOfLinesBeforeLocField = 1; - } - CleanupStack::PopAndDestroy(&calendarInfoList); - - aLabel.CropText(); - aLabel.SetEmphasis( CEikLabel::EFullEmphasis ); - TRACE_EXIT_POINT; - } - // ---------------------------------------------------------------------------- // CCalenEventViewContainer::AddAttachmentFieldL // Adds attachment field diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/src/calenmissedalarmsview.cpp --- a/calendarui/views/src/calenmissedalarmsview.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/src/calenmissedalarmsview.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -246,8 +246,9 @@ case ECalenCmdGotoCalendar: { iHighlightedRowNumber = 0; + iServices.IssueNotificationL(ECalenNotifyClearMissedAlarms); iServices.IssueCommandL(aCommand); - } + } break; case EAknSoftkeyBack: case EAknSoftkeyClose: @@ -258,7 +259,7 @@ break; case EAknSoftkeyExit: { - + iServices.IssueNotificationL(ECalenNotifyClearMissedAlarms); CCalenNativeView::HandleCommandL(aCommand); } break; diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/src/calenmissedeventview.cpp --- a/calendarui/views/src/calenmissedeventview.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/src/calenmissedeventview.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -33,6 +33,7 @@ #include #include #include // TCalenInstanceId +#include // user includes #include "calenmissedeventview.h" @@ -150,7 +151,10 @@ default: { cnt->CompletePopulationL(); - RedrawStatusPaneL(); + if(!iAvkonAppUi->IsDisplayingMenuOrDialog()) + { + RedrawStatusPaneL(); + } //no tool bar in missed event view MCalenToolbar* toolbar = iServices.ToolbarOrNull(); diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/src/calenmonthcontainer.cpp --- a/calendarui/views/src/calenmonthcontainer.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/src/calenmonthcontainer.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -16,28 +16,13 @@ */ -//debug -#include "calendarui_debug.h" + -// INCLUDE FILES -#include "calenmonthcontainer.h" -#include "calencontroller.h" -#include "calencontainerlayoutmanager.h" - +#include #include #include -#include "calendrawutils.h" -#include "calenmonthconst.h" -#include "calenmonthgrid.h" -#include "calenmonthview.h" -#include "calenpreview.h" #include -#include "CalenUid.h" -#include "CleanupResetAndDestroy.h" -#include "CalenUid.h" -#include "calendar.hrh" #include -#include #include #include #include @@ -49,11 +34,25 @@ #include #include #include - - // Layouts #include +#include //CGestureHelper +// INCLUDE FILES +#include "calenmonthcontainer.h" +#include "calencontroller.h" +#include "calencontainerlayoutmanager.h" +#include "calendrawutils.h" +#include "calenmonthconst.h" +#include "calenmonthgrid.h" +#include "calenmonthview.h" +#include "calenpreview.h" +#include "CalenUid.h" +#include "CleanupResetAndDestroy.h" +#include "CalenUid.h" +#include "calendar.hrh" +//debug +#include "calendarui_debug.h" // LOCAL CONSTANTS AND MACROS _LIT(KMonthCellFormat, "%F%*D\t"); @@ -116,7 +115,8 @@ delete iGrid; delete iMonthDataArray; - delete iBackgroundSkinContext; + delete iBackgroundSkinContext; + delete iGestureControl; TRACE_EXIT_POINT; } @@ -1094,6 +1094,12 @@ iGrid->ItemDrawer()->FormattedCellData()->SetIconArray( CreateIconsL( iIconIndices )); iGrid->View()->SetDisableRedraw(ETrue); + + + iGestureControl = GestureHelper::CGestureHelper::NewL( *this ); + iGestureControl->SetDoubleTapEnabled( EFalse ); + iGestureControl->SetHoldingEnabled( EFalse ); + PIM_TRAPD_HANDLE( ConstructBackgroundContextL() ); @@ -1222,7 +1228,7 @@ CleanupReleasePushL( *setting ) ; - if( setting->WeekFormat() == EMonday ) + if( setting->WeekFormat() == EMonday && setting->WeekNumberEnable() ) { useWeeks = ETrue; } @@ -1684,6 +1690,16 @@ if(gridModel->NumberOfData() <= 0) return; + + if ( iGestureControl ) + { + iGestureControl->HandlePointerEventL( aPointerEvent ); + if ( iGestureHandled ) + { + TRACE_EXIT_POINT; + return; + } + } if(isItem == EFalse) /* Handle pointer event in week number area */ @@ -1808,7 +1824,7 @@ { case ( MEikListBoxObserver::EEventItemClicked ): { - if ( !iView->MenuBar()->IsDisplayed() ) + if ( !iView->MenuBar()->IsDisplayed() && !iGestureHandled ) { iServices.IssueCommandL( ECalenForwardsToDayView ); } @@ -1817,6 +1833,45 @@ } } +// ---------------------------------------------------------------------------- +// CCalenMonthContainer::HandleGestureL +// +// ---------------------------------------------------------------------------- +void CCalenMonthContainer::HandleGestureL( const GestureHelper::MGestureEvent& aEvent ) + { + GestureHelper::TGestureCode code = aEvent.Code( GestureHelper::MGestureEvent::EAxisBoth ); + + switch ( code ) + { + case GestureHelper::EGestureStart: + { + iGestureHandled = EFalse; + break; + } + case GestureHelper::EGestureSwipeRight: + { + if(!iChangeMonth) + { + HandleNaviDecoratorEventL( EAknNaviDecoratorEventLeftTabArrow ); + } + + iGestureHandled = ETrue; + break; + } + case GestureHelper::EGestureSwipeLeft: + { + if(!iChangeMonth) + { + HandleNaviDecoratorEventL( EAknNaviDecoratorEventRightTabArrow ); + } + iGestureHandled = ETrue; + break; + } + default: + // Other gestures are not handled here + break; + } + } // ---------------------------------------------------------------------------- // CCalenMonthContainer::HidePopup diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/src/calentodocontainer.cpp --- a/calendarui/views/src/calentodocontainer.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/src/calentodocontainer.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -304,10 +304,10 @@ if( MarkedCount() ) { // display the context sensitive menu - /*CEikMenuBar* menuBar = iView->MenuBar(); + CEikMenuBar* menuBar = iView->MenuBar(); menuBar->SetContextMenuTitleResourceId( R_TODO_LIST_SELECTION_CONTEXT_MENUBAR ); - menuBar->TryDisplayContextMenuBarL();*/ + menuBar->TryDisplayContextMenuBarL(); } else { diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/src/calentodoview.cpp --- a/calendarui/views/src/calentodoview.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/src/calentodoview.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -584,7 +584,7 @@ { if( Container()->MarkedCount() ) { - aMenuPane->SetItemSpecific( ECalenDeleteCurrentEntry, EFalse ); + aMenuPane->SetItemSpecific( ECalenDeleteCurrentEntry, ETrue ); if(Container()->IsCurrentItemSelected()) // If focused list item is marked { aMenuPane->DeleteMenuItem( ECalenViewCurrentEntry ); @@ -593,25 +593,23 @@ aMenuPane->DeleteMenuItem( ECalenCompleteTodo ); aMenuPane->DeleteMenuItem( ECalenRestoreTodo ); aMenuPane->DeleteMenuItem( ECalenSend ); - + aMenuPane->DeleteMenuItem(ECalenCopyToCalendars); + + TBool crossout( EFalse ); + //When mark as done, crossout is ETrue. + crossout = CheckMarkedItemCompletedL(); + if( crossout ) + { + aMenuPane->SetItemSpecific(ECalenMarkUnDone, ETrue); + } + else + { + aMenuPane->SetItemSpecific(ECalenMarkDone, ETrue); + } + if(Container()->MarkedCount() == 1) { aMenuPane->DeleteMenuItem( ECalenCmdComplete ); - TBool crossout( EFalse ); - crossout = CheckMarkedItemCompletedL(); - if( crossout ) - { - aMenuPane->DeleteMenuItem( ECalenMarkDone ); - } - else - { - aMenuPane->DeleteMenuItem( ECalenMarkUnDone ); - } - } - else - { - aMenuPane->DeleteMenuItem( ECalenMarkDone ); - aMenuPane->DeleteMenuItem( ECalenMarkUnDone ); } } else diff -r 9c5b1510919f -r bf573002ff72 calendarui/views/src/calenweekcontainer.cpp --- a/calendarui/views/src/calenweekcontainer.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/calendarui/views/src/calenweekcontainer.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -43,6 +43,7 @@ #include #include #include +#include //CGestureHelper #include "calendarui_debug.h" #include "calenweekcontainer.h" @@ -218,6 +219,7 @@ ResetSlotTable(); delete iBackgroundSkinContext; + delete iGestureControl; TRACE_EXIT_POINT; } @@ -424,7 +426,7 @@ // * Focus on instanceId and datetime // 2. Timed item, 1-n for each cell, on same/ different day // * Focus on datetime - if( itemInfo.HasInstance() && aInstAvailable) + if( itemInfo.HasInstance() && aInstAvailable && iViewPopulationComplete) { TCalenInstanceId instId = TCalenInstanceId::CreateL( *itemInfo.iInstance ); if( !itemInfo.IsTimed() ) // todo/anniv/memo @@ -1285,6 +1287,10 @@ iRow = EFalse; iTopRowDefault = EFalse; + iGestureControl = GestureHelper::CGestureHelper::NewL( *this ); + iGestureControl->SetDoubleTapEnabled( EFalse ); + iGestureControl->SetHoldingEnabled( EFalse ); + TRACE_EXIT_POINT; } @@ -2014,6 +2020,39 @@ return iTimedNote; } +// ---------------------------------------------------------------------------- +// CCalenMonthContainer::HandleGestureL +// +// ---------------------------------------------------------------------------- +void CCalenWeekContainer::HandleGestureL( const GestureHelper::MGestureEvent& aEvent ) + { + GestureHelper::TGestureCode code = aEvent.Code( GestureHelper::MGestureEvent::EAxisBoth ); + + switch ( code ) + { + case GestureHelper::EGestureStart: + { + iGestureHandled = EFalse; + break; + } + case GestureHelper::EGestureSwipeRight: + { + HandleNaviDecoratorEventL( EAknNaviDecoratorEventLeftTabArrow ); + } + iGestureHandled = ETrue; + break; + + case GestureHelper::EGestureSwipeLeft: + { + HandleNaviDecoratorEventL( EAknNaviDecoratorEventRightTabArrow ); + } + iGestureHandled = ETrue; + break; + default: + // Other gestures are not handled here + break; + } + } // ---------------------------------------------------------------------------- // CCalenWeekContainer::HorizontalWeekMoveL @@ -2186,6 +2225,16 @@ return; } + if ( iGestureControl ) + { + iGestureControl->HandlePointerEventL( aPointerEvent ); + if ( iGestureHandled ) + { + TRACE_EXIT_POINT; + return; + } + } + switch(aPointerEvent.iType) { case TPointerEvent::EButton1Down: diff -r 9c5b1510919f -r bf573002ff72 clock2/clockengines/utilities/clockecomlistener/group/clockecomlistener.mmp --- a/clock2/clockengines/utilities/clockecomlistener/group/clockecomlistener.mmp Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockengines/utilities/clockecomlistener/group/clockecomlistener.mmp Mon Jun 21 15:38:59 2010 +0300 @@ -24,7 +24,7 @@ UID 0x1000008d 0x20019525 // Capability and vendor info -CAPABILITY ALL -TCB +CAPABILITY CAP_GENERAL_DLL VENDORID VID_DEFAULT // Source files diff -r 9c5b1510919f -r bf573002ff72 clock2/clockui/alarmeditorapp/group/alarmeditorapp.mmp --- a/clock2/clockui/alarmeditorapp/group/alarmeditorapp.mmp Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockui/alarmeditorapp/group/alarmeditorapp.mmp Mon Jun 21 15:38:59 2010 +0300 @@ -26,7 +26,7 @@ // Uid and Capability information UID 0x100039CE 0x2001CC11 -CAPABILITY ALL -TCB +CAPABILITY CAP_APPLICATION // Source information SOURCEPATH ../src diff -r 9c5b1510919f -r bf573002ff72 clock2/clockui/uilayer/clockalarmeditor/group/clockalarmeditor.mmp --- a/clock2/clockui/uilayer/clockalarmeditor/group/clockalarmeditor.mmp Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockui/uilayer/clockalarmeditor/group/clockalarmeditor.mmp Mon Jun 21 15:38:59 2010 +0300 @@ -24,7 +24,7 @@ UID 0x1000008d 0x2001CC10 // Capability and vendor info -CAPABILITY ALL -TCB +CAPABILITY CAP_GENERAL_DLL VENDORID VID_DEFAULT // Source files diff -r 9c5b1510919f -r bf573002ff72 clock2/clockui/uilayer/clockalarmeditor/src/clockalarmeditorimpl.cpp --- a/clock2/clockui/uilayer/clockalarmeditor/src/clockalarmeditorimpl.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockui/uilayer/clockalarmeditor/src/clockalarmeditorimpl.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -43,6 +43,7 @@ // Constants const TInt KZerothDay( 0 ); +const TInt KNextDayIndex( 1 ); const TInt KDaysInWeek( 7 ); const TInt KFirstLine( 1 ); const TInt KRepeatOnceIndex( 0 ); @@ -410,8 +411,7 @@ // We don't display the alarm day selection item for repeated alarms of type daily, next 24 hours and // workdays. So when this functions is called, we check for the type and update the form accordingly. - if( KDailyIndex == iOccuranceIndex || - KWorkdaysIndex == iOccuranceIndex ) + if( KWeeklyIndex != iOccuranceIndex ) { DeleteAlmDayCtrlL(); } @@ -666,8 +666,7 @@ // We don't display the alarm day selection item for repeated alarms of type daily, next 24 hours and // workdays. So when this functions is called, we check for the type and update the form accordingly. - if( KDailyIndex == iOccuranceIndex || - KWorkdaysIndex == iOccuranceIndex ) + if( KWeeklyIndex != iOccuranceIndex ) { DeleteAlmDayCtrlL(); } @@ -952,8 +951,7 @@ // Get the current day of the week. TInt currentDay( aHomeTime.DayNoInWeek() ); - if( ( KRepeatOnceIndex == iOccuranceIndex ) || - ( KWeeklyIndex == iOccuranceIndex ) ) + if( KWeeklyIndex == iOccuranceIndex ) { TInt dateOffset( KZerothDay ); @@ -980,6 +978,13 @@ } aTimeFromForm += TTimeIntervalDays( dateOffset ); } + else if( KRepeatOnceIndex == iOccuranceIndex ) + { + if( aTimeFromForm < aHomeTime ) + { + aTimeFromForm += TTimeIntervalDays( KNextDayIndex ); + } + } __PRINTS( "CClockAlarmEditorImpl::GetActualAlarmTime - Exit" ); } diff -r 9c5b1510919f -r bf573002ff72 clock2/clockui/uilayer/clockmainview/src/clockmainview.cpp --- a/clock2/clockui/uilayer/clockmainview/src/clockmainview.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockui/uilayer/clockmainview/src/clockmainview.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -656,7 +656,7 @@ // Ask the document to save the user data in the document file. CClockDocument* clockDocument = static_cast< CClockDocument* > ( AppUi()->Document() ); - TRAP_IGNORE( clockDocument->StoreDataL() ); + if( iContainer ) { diff -r 9c5b1510919f -r bf573002ff72 clock2/clockui/uilayer/clockworldview/src/clockworldcontainer.cpp --- a/clock2/clockui/uilayer/clockworldview/src/clockworldcontainer.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockui/uilayer/clockworldview/src/clockworldcontainer.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -246,7 +246,7 @@ // rest of the details are commented in the header // --------------------------------------------------------- // -void CClockWorldContainer::HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ) +void CClockWorldContainer::HandleListBoxEventL( CEikListBox* /*aListBox*/, TListBoxEvent/* aEventType*/ ) { __PRINTS( "CClockWorldContainer::HandleListBoxEventL - Entry" ); diff -r 9c5b1510919f -r bf573002ff72 clock2/clockui/uilayer/group/clock.mmp --- a/clock2/clockui/uilayer/group/clock.mmp Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockui/uilayer/group/clock.mmp Mon Jun 21 15:38:59 2010 +0300 @@ -26,7 +26,7 @@ // Uid and Capability information UID 0x100039CE 0x10005903 -CAPABILITY ALL -TCB +CAPABILITY CAP_APPLICATION PowerMgmt // Stack and heap options EPOCSTACKSIZE 0x5000 diff -r 9c5b1510919f -r bf573002ff72 clock2/clockui/uilayer/inc/clockdocument.h --- a/clock2/clockui/uilayer/inc/clockdocument.h Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockui/uilayer/inc/clockdocument.h Mon Jun 21 15:38:59 2010 +0300 @@ -78,13 +78,13 @@ * @brief Returns the previous alarm time. * @return TTime The previous alarm time. */ - TTime GetPrevAlarmTime(); + //TTime GetPrevAlarmTime(); /** * @brief Sets the new alarm time value as the previous alarm time. * @param aPrevAlarmTime The new alarm time. */ - void SetPrevAlarmTime( TTime aPrevAlarmTime ); + //void SetPrevAlarmTime( TTime aPrevAlarmTime ); /** * @brief Retrieves list of cities shown in world clock view. diff -r 9c5b1510919f -r bf573002ff72 clock2/clockui/uilayer/src/clockdocument.cpp --- a/clock2/clockui/uilayer/src/clockdocument.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockui/uilayer/src/clockdocument.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -205,7 +205,7 @@ return iAlarmModel; } -// --------------------------------------------------------- +/*// --------------------------------------------------------- // CClockDocument::GetPrevAlarmTime // rest of the details are commented in the header // --------------------------------------------------------- @@ -223,7 +223,7 @@ void CClockDocument::SetPrevAlarmTime( TTime aPrevAlarmTime ) { iPrevAlarmTime = aPrevAlarmTime.Int64(); - } + }*/ // --------------------------------------------------------- // CClockDocument::GetWorldClockList diff -r 9c5b1510919f -r bf573002ff72 clock2/clockui/uimodel/group/clkuimodel.mmp --- a/clock2/clockui/uimodel/group/clkuimodel.mmp Wed Jun 09 09:40:23 2010 +0300 +++ b/clock2/clockui/uimodel/group/clkuimodel.mmp Mon Jun 21 15:38:59 2010 +0300 @@ -25,7 +25,7 @@ // Uid and Capability information UID 0x1000008d 0x10005904 -CAPABILITY ALL -TCB +CAPABILITY CAP_GENERAL_DLL // Source information SOURCEPATH ../src diff -r 9c5b1510919f -r bf573002ff72 notepad/notepad1/LibData/NpdLib.rss --- a/notepad/notepad1/LibData/NpdLib.rss Wed Jun 09 09:40:23 2010 +0300 +++ b/notepad/notepad1/LibData/NpdLib.rss Mon Jun 21 15:38:59 2010 +0300 @@ -1636,6 +1636,35 @@ { buf = qtn_nmake_no_memos_secondary_text_nontouch ; } + + // ----------------------------------------------------------------------------- + // + // r_notepad_loadfile_progress_dialog + // progress dialog for load file + // + // ----------------------------------------------------------------------------- + // + + RESOURCE DIALOG r_notepad_loadfile_progress_dialog + { + flags = EAknWaitNoteFlags; + buttons = R_AVKON_SOFTKEYS_CANCEL; + items= + { + DLG_LINE + { + type = EAknCtNote; + id = EGeneralQuery; + control= AVKON_NOTE + { + layout = EWaitLayout; + singular_label = qtn_nmake_om_open_memo; + animation = R_QGN_GRAF_WAIT_BAR_ANIM; + }; + } + }; + } + // Default templates // #include "NpdDefaultTemplates.ra" diff -r 9c5b1510919f -r bf573002ff72 notepad/notepad1/LibSrc/NpdListDialog.cpp --- a/notepad/notepad1/LibSrc/NpdListDialog.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/notepad/notepad1/LibSrc/NpdListDialog.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -873,9 +873,18 @@ { return; } + + ClearSavedCurrentAndSelections(); + SaveCurrentAndSelectionsL(); iModel->SyncL(EFalse); CNotepadDialogBase::DynInitMenuPaneL( aResourceId, aMenuPane ); - const TInt memoCount( iModel->MdcaCount() - KNumberOfFixedItem ); + + TInt memoCount = iModel->MdcaCount(); + if ( IsNoteListDialog() ) + { + memoCount = memoCount - KNumberOfFixedItem; + } + const TInt markCount(iListBox->SelectionIndexes()->Count()); TInt index; switch (aResourceId ) diff -r 9c5b1510919f -r bf573002ff72 notepad/notepad1/LibSrc/NpdLoadFileAO.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/notepad/notepad1/LibSrc/NpdLoadFileAO.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -0,0 +1,267 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0"" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: The class implements a long task wrapper for load file +* +*/ + + + +// INCLUDE FILES +#include +#include +#include +#include "NpdLoadFileAO.h" +#include "NpdUtil.h" + +// CONSTANTS + +// the max length of the sample text which attempts to determine the character set +static const TInt KMaxSampleLengthForAutoDetection = 1024; + +// the file length load in one step +static const TInt KLengthOneStepLoad = 1024 * 10; + +// when the value is large than this, the auto detect result is available +static const TInt KValueAutoDetectCharacterSetAvailable = 50; + +// ============================= MEMBER FUNCTIONS ============================= + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::CNotepadLoadFileAO() +// +// ---------------------------------------------------------------------------- +CNotepadLoadFileAO::CNotepadLoadFileAO( MNotepadLoadFileObserver* aObserver, + CCoeEnv& aCoeEnv, + RFile& aFile, + TBool aGuessEncoding, + TUint aEncoding, + CPlainText& aText ): + CActive( CActive::EPriorityLow ), + iObserver( aObserver ), + iCoeEnv( aCoeEnv ), + iGuessEncoding( aGuessEncoding ), + iEncoding( aEncoding ), + iText( aText ) + { + iFile.Duplicate( aFile ); + } + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::~CNotepadLoadFileAO() +// +// ---------------------------------------------------------------------------- +CNotepadLoadFileAO::~CNotepadLoadFileAO() + { + iFile.Close(); + Cancel(); + } + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::NewL() +// +// ---------------------------------------------------------------------------- +CNotepadLoadFileAO* CNotepadLoadFileAO::NewL( MNotepadLoadFileObserver* aObserver, + CCoeEnv& aCoeEnv, + RFile& aFile, + TBool aGuessEncoding, + TUint aEncoding, + CPlainText& aText ) + { + CNotepadLoadFileAO* self = new (ELeave) CNotepadLoadFileAO(aObserver, + aCoeEnv, aFile, aGuessEncoding, aEncoding, aText); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::ConstructL() +// +// ---------------------------------------------------------------------------- +void CNotepadLoadFileAO::ConstructL() + { + CActiveScheduler::Add( this ); + } + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::StartLoadFile() +// +// ---------------------------------------------------------------------------- +TInt CNotepadLoadFileAO::StartLoadFile() + { + TInt err( KErrAlreadyExists ); + if ( !IsActive() ) + { + err = KErrNone; + TRAP ( err, InitImportExportParamL() ) + if ( err == KErrNone ) + { + TRequestStatus *statue = &iStatus; + User::RequestComplete( statue, KErrStep ); + SetActive(); + } + } + return err; + } + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::CancelLoadFile() +// +// ---------------------------------------------------------------------------- +void CNotepadLoadFileAO::CancelLoadFile() + { + iCancel = ETrue; + } + + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::RunL() +// +// ---------------------------------------------------------------------------- +void CNotepadLoadFileAO::RunL() + { + TInt status = iStatus.Int(); + if ( status == KErrStep ) + { + DoStepL(); + } + iObserver->NotifyCompletedL( status ); + } + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::DoCancel() +// +// ---------------------------------------------------------------------------- +void CNotepadLoadFileAO::DoCancel() + { + iCancel = ETrue; + } + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::DoStepL() +// +// ---------------------------------------------------------------------------- +void CNotepadLoadFileAO::DoStepL() + { + TInt completeCode = KErrStep; + // if the load file completed + if ( iReadPos >= iFileSize ) + { + completeCode = KErrNone; + } + // if the load file canceled + else if ( iCancel ) + { + completeCode = KErrCancel; + } + // load file for one step + else + { + CPlainText::TImportExportResult result; + TInt leaveSize = iFileSize - iReadPos ; + iParam.iMaxInputChars = leaveSize > KLengthOneStepLoad ? KLengthOneStepLoad: leaveSize; + TInt err = KErrNone; + RFile tempFile; + tempFile.Duplicate( iFile ); + RFileReadStream stream( tempFile,iReadPos ); + CleanupClosePushL(stream); + TRAP( err, iText.ImportTextL( iText.DocumentLength(), stream, iParam, result) ); + stream.Release();// closing of tempfile + CleanupStack::PopAndDestroy(); // stream + if ( err != KErrNone ) + { + completeCode = err; + } + iReadPos += result.iInputChars; + } + + TRequestStatus *statue = &iStatus; + User::RequestComplete( statue,completeCode ); + SetActive(); + } + +// ---------------------------------------------------------------------------- +// CNotepadLoadFileAO::InitImportExportParamL() +// +// ---------------------------------------------------------------------------- +void CNotepadLoadFileAO::InitImportExportParamL() + { + User::LeaveIfError( iFile.Size( iFileSize ) ); + + // need to guess the foreign encoding for this file or not + if ( !iGuessEncoding ) + { + iParam.iForeignEncoding = iEncoding; + } + else + { + TBuf8 sample; + User::LeaveIfError( iFile.Read( sample, iFileSize > KMaxSampleLengthForAutoDetection ? + KMaxSampleLengthForAutoDetection : iFileSize ) ); + + // Creates an array identifying all the character sets for which conversion is available + CArrayFix* + lists = CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableLC( + iCoeEnv.FsSession() ); + + // Attempts to determine the character set of the sample text from those supported on the phone + TInt confidence(0); + TUint charset(0); + CCnvCharacterSetConverter::AutoDetectCharacterSetL( confidence, charset, *lists, sample ); + CleanupStack::PopAndDestroy(); + + // the auto detect result is available + if ( confidence > KValueAutoDetectCharacterSetAvailable ) + { + iParam.iForeignEncoding = charset; + } + else + { + // Checks wether the descriptor contains big endian unicode text + if ( NotepadUtil::IsBigEndianUnicodeText( sample ) ) + { + iParam.iForeignEncoding = KCharacterSetIdentifierUnicodeBig; + } + // Checks wether the descriptor contains little endian unicode text + else if ( NotepadUtil::IsLittleEndianUnicodeText( sample ) ) + { + iParam.iForeignEncoding = KCharacterSetIdentifierUnicodeLittle; + } + // Checks wether the descriptor contains UTF8 text + else if ( NotepadUtil::IsUTF8Text( sample ) ) + { + iParam.iForeignEncoding = KCharacterSetIdentifierUtf8; + } + // Checks wether the descriptor contains SHIFT-JIS encoded text + else if ( NotepadUtil::IsShiftJisText( sample ) ) + { + iParam.iForeignEncoding = KCharacterSetIdentifierShiftJis; + } + // Guess the encoding from the language + else + { + iParam.iForeignEncoding = NotepadUtil::GuessEncodingFromLanguage(); + if ( iParam.iForeignEncoding == 0 ) // Variant not found + { + iParam.iForeignEncoding = KCharacterSetIdentifierAscii; + } + } + } + } + } + + +// End of File diff -r 9c5b1510919f -r bf573002ff72 notepad/notepad1/LibSrc/NpdViewerDialog.cpp --- a/notepad/notepad1/LibSrc/NpdViewerDialog.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/notepad/notepad1/LibSrc/NpdViewerDialog.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -50,8 +50,16 @@ #include "NpdUtil.h" #include "NpdRichTextEditor.h" #include "NpdLibPanic.h" +#include -#include +// CONSTANTS + +// when the file length is larger than this value, that need to load by steps +static const TInt KFileLengthNeedLoadBySteps = 1024 * 100; +// the time value for interval to start the timer for close the notepad dialog +static const TUint KCloseNotepadDialogInterval = 500000; //microseconds +// the time value for delay to start the timer for close the notepad dialog +static const TUint KCloseNotepadDialogDelay = 1; // microseconds // ============================ MEMBER FUNCTIONS =============================== @@ -117,6 +125,8 @@ } delete iCenRepSession; iCenRepSession = NULL; + delete iLoadFileAO; + iLoadFileAO = NULL; } // ----------------------------------------------------------------------------- @@ -230,7 +240,7 @@ { __ASSERT_DEBUG( iEditor, Panic(ENotepadLibraryPanicNoEdwin) ); __ASSERT_DEBUG( iFilename, Panic(ENotepadLibraryPanicNoFileSpecified) ); - iEditor->SetTextL(NULL); + iEditor->SetTextL(NULL); NotepadUtil::LoadFileL( *iCoeEnv, *iFilename, iGuessEncoding, iEncoding, *(iEditor->Text()) ); iEditor->SetAmountToFormat(iEditor->Text()->DocumentLength()); @@ -248,8 +258,17 @@ { __ASSERT_DEBUG( iEditor, Panic(ENotepadLibraryPanicNoEdwin) ); //__ASSERT_DEBUG( iFilename, Panic(ENotepadLibraryPanicNoFileSpecified) ); + + TInt fileSize(0); + User::LeaveIfError( aFile.Size( fileSize ) ); + if ( fileSize >= KFileLengthNeedLoadBySteps ) + { + LoadFileByStepsL( aFile ); + return; + } + iEditor->SetTextL(NULL); - TBool error = NotepadUtil::LoadFileL( *iCoeEnv, aFile, iGuessEncoding, + TBool error = NotepadUtil::LoadFileL( *iCoeEnv, aFile, iGuessEncoding, iEncoding, *(iEditor->Text()) ); iEditor->SetAmountToFormat(iEditor->Text()->DocumentLength()); iEditor->HandleTextChangedL(); @@ -257,8 +276,7 @@ iAutoFinder->SetItemFinderObserverL( this ); RefreshTitleL(); if( error != KErrNone) - { - + { HBufC* text = StringLoader::LoadLC(R_NOTEPAD_QTN_FILE_CORRUPTED); CAknErrorNote* mErrorNote; mErrorNote = new (ELeave) CAknErrorNote( ETrue ); @@ -268,12 +286,13 @@ iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityStandard ); if( !iPeriodicTimer->IsActive() ) { - iPeriodicTimer->Start( 1, 1000000/2, - TCallBack( CNotepadViewerDialog::TimerCallbackL, this ) ); - } + iPeriodicTimer->Start( KCloseNotepadDialogDelay, KCloseNotepadDialogInterval, + TCallBack( CNotepadViewerDialog::TimerCallbackL, this ) ); + } } } + // ----------------------------------------------------------------------------- // CNotepadViewerDialog::OpenFileL // ----------------------------------------------------------------------------- @@ -831,11 +850,9 @@ aMenuPane->AddMenuItemL(item, EFindItemMenuPlaceHolder); } } - } - iFindMenu->AddItemFindMenuL(iAutoFinder,aMenuPane,EFindItemMenuPlaceHolder,KNullDesC); - + if(!FeatureManager::FeatureSupported(KFeatureIdHelp)) { aMenuPane->DeleteMenuItem(EAknCmdHelp); @@ -901,4 +918,111 @@ { } +// ----------------------------------------------------------------------------- +// CNotepadViewerDialog::LoadFileByStepsL +// ----------------------------------------------------------------------------- +// +void CNotepadViewerDialog::LoadFileByStepsL(RFile& aFile) + { + __ASSERT_DEBUG( iEditor, Panic(ENotepadLibraryPanicNoEdwin) ); + //__ASSERT_DEBUG( iFilename, Panic(ENotepadLibraryPanicNoFileSpecified) ); + iEditor->SetTextL(NULL); + + // lanuch the progress bar + CleanProgressDialogL(); + iProgressDialogLoadfile = new( ELeave ) CAknProgressDialog( + reinterpret_cast< CEikDialog** >( &iProgressDialogLoadfile ), + EFalse ); + iProgressDialogLoadfile->SetCallback( this ); + iProgressDialogLoadfile->ExecuteLD( R_NOTEPAD_LOADFILE_PROGRESS_DIALOG ); + + // start a active object to load file + if ( iLoadFileAO ) + { + delete iLoadFileAO; + iLoadFileAO = NULL; + } + iLoadFileAO = CNotepadLoadFileAO::NewL( this, *iCoeEnv, aFile, iGuessEncoding, + iEncoding, *(iEditor->Text()) ); + + if ( KErrNone != iLoadFileAO->StartLoadFile() ) + { + ExitDialogOnTimerExpireL(); + } + } + + +// ----------------------------------------------------------------------------- +// CNotepadViewerDialog::CleanProgressDialogL() +// ----------------------------------------------------------------------------- +// +void CNotepadViewerDialog::CleanProgressDialogL() + { + if ( iProgressDialogLoadfile ) + { + iProgressDialogLoadfile->ProcessFinishedL(); + iProgressDialogLoadfile = NULL; + } + } + +// ----------------------------------------------------------------------------- +// CNotepadViewerDialog::DialogDismissedL +// ----------------------------------------------------------------------------- +// +void CNotepadViewerDialog::DialogDismissedL( TInt aButtonId ) + { + if ( ( EAknSoftkeyCancel == aButtonId ) && iLoadFileAO ) + { + iLoadFileAO->CancelLoadFile(); + } + } + +// ----------------------------------------------------------------------------- +// CNotepadViewerDialog::NotifyCompletedL +// ----------------------------------------------------------------------------- +// +void CNotepadViewerDialog::NotifyCompletedL( TInt aErrCode ) + { + + // load file is completed for one step + if ( KErrStep == aErrCode ) + { + iEditor->SetAmountToFormat(iEditor->Text()->DocumentLength()); + iEditor->HandleTextChangedL(); + } + // load file is completed + else if ( KErrNone == aErrCode ) + { + CleanProgressDialogL(); + iEditor->SetAmountToFormat(iEditor->Text()->DocumentLength()); + iEditor->HandleTextChangedL(); + iAutoFinder->SetEditor((CEikRichTextEditor**)&iEditor); + iAutoFinder->SetItemFinderObserverL( this ); + RefreshTitleL(); + } + // load file cancel + else if ( KErrCancel == aErrCode ) + { + ExitDialogOnTimerExpireL(); + } + // that occur error during load file + else + { + CleanProgressDialogL(); + HBufC* text = StringLoader::LoadLC(R_NOTEPAD_QTN_FILE_CORRUPTED); + CAknErrorNote* mErrorNote; + mErrorNote = new (ELeave) CAknErrorNote( ETrue ); + mErrorNote->ExecuteLD(*text); + CleanupStack::PopAndDestroy( text ); + iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityStandard ); + if ( !iPeriodicTimer->IsActive() ) + { + iPeriodicTimer->Start( KCloseNotepadDialogDelay, KCloseNotepadDialogInterval, + TCallBack( CNotepadViewerDialog::TimerCallbackL, this ) ); + } + } + + } + + // End of File diff -r 9c5b1510919f -r bf573002ff72 notepad/notepad1/group/NpdLib.mmp --- a/notepad/notepad1/group/NpdLib.mmp Wed Jun 09 09:40:23 2010 +0300 +++ b/notepad/notepad1/group/NpdLib.mmp Mon Jun 21 15:38:59 2010 +0300 @@ -47,7 +47,8 @@ SOURCE ../LibSrc/NpdEdwinBase.cpp SOURCE ../LibSrc/NpdEditorLaf.cpp SOURCE ../LibSrc/NpdViewerLaf.cpp -SOURCE ../LibSrc/NpdTemplateListBox.cpp +SOURCE ../LibSrc/NpdTemplateListBox.cpp +SOURCE ../LibSrc/NpdLoadFileAO.cpp // Include paths USERINCLUDE ../inc diff -r 9c5b1510919f -r bf573002ff72 notepad/notepad1/group/NpdViewer.mmp --- a/notepad/notepad1/group/NpdViewer.mmp Wed Jun 09 09:40:23 2010 +0300 +++ b/notepad/notepad1/group/NpdViewer.mmp Mon Jun 21 15:38:59 2010 +0300 @@ -66,4 +66,4 @@ LIBRARY eikcore.lib LIBRARY avkon.lib LIBRARY npdlib.lib - +LIBRARY efsrv.lib diff -r 9c5b1510919f -r bf573002ff72 notepad/notepad1/inc/MNpdLoadFileObserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/notepad/notepad1/inc/MNpdLoadFileObserver.h Mon Jun 21 15:38:59 2010 +0300 @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0"" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Notepad load file observer abstraction +* +*/ + + +#ifndef MNOTEPADLOADFILEOBSERVER_H +#define MNOTEPADLOADFILEOBSERVER_H + + +// INCLUDES +#include + +// CLASS DECLARATION +/** +* Defines an interface for notepad load file observer. +* +* @since 5.2 +*/ +class MNotepadLoadFileObserver + { + public: + /** + * Notify the observer that load file completed. + * @param aErrCode the result of load file completed. + * @since 5.2 + */ + virtual void NotifyCompletedL( TInt aErrCode ) = 0; + + }; + + +#endif // MNOTEPADLOADFILEOBSERVER_H + +// End of File diff -r 9c5b1510919f -r bf573002ff72 notepad/notepad1/inc/NpdLoadFileAO.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/notepad/notepad1/inc/NpdLoadFileAO.h Mon Jun 21 15:38:59 2010 +0300 @@ -0,0 +1,141 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0"" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: A long task wrapper for load file +* +*/ + + + +#ifndef CNOTEPADLOADFILEAO_H +#define CNOTEPADLOADFILEAO_H + + +// INCLUDES +#include +#include +#include +#include "MNpdLoadFileObserver.h" + +// FORWARD DECLARATIONS +class CCoeEnv; +class RFile; +class CPlainText; +class RFileReadStream; + +// CONSTANTS +// the completed code for load file in one step +static const TInt KErrStep = 10000; + +// CLASS DECLARATION +/** +* The class implements a long task wrapper for load file +* +* @lib NpdLib.lib +* @since 5.2 +*/ +NONSHARABLE_CLASS(CNotepadLoadFileAO) : public CActive + { + public: + static CNotepadLoadFileAO* NewL( MNotepadLoadFileObserver* aObserver, + CCoeEnv& aCoeEnv, + RFile& aFile, + TBool aGuessEncoding, + TUint aEncoding, + CPlainText& aText ); + + ~CNotepadLoadFileAO(); + + public: // New functions + + /** + * Starts load file . + * @return start load file successful or not, KErrNone is sucessed, other failed + * @since 5.2 + */ + TInt StartLoadFile( ); + + /** + * Cancels load file . + * @since 5.2 + */ + void CancelLoadFile(); + + + + private: // From CActive + void RunL(); + + void DoCancel(); + + private: + CNotepadLoadFileAO( MNotepadLoadFileObserver* aObserver, + CCoeEnv& aCoeEnv, + RFile& aFile, + TBool aGuessEncoding, + TUint aEncoding, + CPlainText& aText ); + + void ConstructL(); + + /** + * Initialize import export param for CPlianText. + * @since 5.2 + */ + void InitImportExportParamL(); + + + /** + * Run step for load file. + * @since 5.2 + */ + void DoStepL(); + + + private: // Data + + // Ref: Pointer to thread function observer + MNotepadLoadFileObserver* iObserver; + + // Ref: refrence to Control environment + CCoeEnv& iCoeEnv; + + // Own: the file object to load + RFile iFile; + + // indicate guess encoding or not + TBool iGuessEncoding; + + // aEncoding encoding of the File + TUint iEncoding; + + // Ref: refrence to CPlainText object + CPlainText& iText; + + // the size of the file to load + TInt iFileSize; + + // the current pos of the file + TInt iReadPos; + + // indicate cancel load file or not + TBool iCancel; + + // Own: the import export param for CPlianText + CPlainText::TImportExportParam iParam; + + }; + +#endif // CNOTEPADLOADFILEAO_H + +// End of File diff -r 9c5b1510919f -r bf573002ff72 notepad/notepad1/inc/NpdViewerDialog.h --- a/notepad/notepad1/inc/NpdViewerDialog.h Wed Jun 09 09:40:23 2010 +0300 +++ b/notepad/notepad1/inc/NpdViewerDialog.h Mon Jun 21 15:38:59 2010 +0300 @@ -21,10 +21,11 @@ // INCLUDES #include -#include "NpdDialogBase.h" #include #include #include +#include "NpdDialogBase.h" +#include "NpdLoadFileAO.h" // FORWARD DECLARATIONS class CNotepadRichTextEditor; @@ -43,7 +44,9 @@ */ class CNotepadViewerDialog : public CNotepadDialogBase, public MCenRepNotifyHandlerCallback, - public MAknItemFinderObserver + public MAknItemFinderObserver, + public MProgressDialogCallback, + public MNotepadLoadFileObserver { public: // Constructor and destructor @@ -222,7 +225,17 @@ const CItemFinder::CFindItemExt& aItem, MAknItemFinderObserver::TEventFlag aEvent, TUint aFlags ); - + + public: // From MProgressDialogCallback + void DialogDismissedL( TInt aButtonId ); + + public: // From MNotepadLoadFileObserver + /** + * Notify the observer that load file completed. + * @param aErrCode the result of load file completed. + * @since 5.2 + */ + void NotifyCompletedL( TInt aErrCode ); private: // New function @@ -311,6 +324,19 @@ * Called in callback function to exit the dialog */ void ExitDialogOnTimerExpireL(); + + /** + * Clean the progress dialog + * @since 5.2 + */ + void CleanProgressDialogL(); + + /** + * load the file step by step + * @param aFile the file object to load + * @since 5.2 + */ + void LoadFileByStepsL(RFile& aFile); private: // Data @@ -356,6 +382,13 @@ // Notifier to listen changes of offline state CCenRepNotifyHandler* iNotifier; CPeriodic* iPeriodicTimer; + + // Own: Active object for load file asynchronous + CNotepadLoadFileAO* iLoadFileAO; + + // Own: Progress dialog for load file + CAknProgressDialog* iProgressDialogLoadfile; + }; #endif // NPDVIEWERDIALOG_H diff -r 9c5b1510919f -r bf573002ff72 organizer_plat/calendar_common_utils_api/inc/CalenStatusPaneUtils.h --- a/organizer_plat/calendar_common_utils_api/inc/CalenStatusPaneUtils.h Wed Jun 09 09:40:23 2010 +0300 +++ b/organizer_plat/calendar_common_utils_api/inc/CalenStatusPaneUtils.h Mon Jun 21 15:38:59 2010 +0300 @@ -25,6 +25,7 @@ class CCalenStatusPaneUtilsImpl; class CEikStatusPane; class CAknNavigationDecorator; +class TRgb; /** * @class CCalenStatusPaneUtils @@ -78,6 +79,15 @@ * @return CAknNavigationDecorator* The navi pane decorator */ IMPORT_C CAknNavigationDecorator* ShowNaviPaneL( const TTime& aActiveDay ); + /** + * @brief Sets the calendar name and icon in the navi pane + * and returns the decorator that can be set to the navi pane control + * + * @param aName The calendar name to be displayed in the navi pane + * @param aColor The color of the icon to be displayed. + * @return CAknNavigationDecorator* The navi pane decorator + */ + IMPORT_C CAknNavigationDecorator* ShowNaviPaneL( const TDesC& aName, const TRgb aColor ); /** * @brief Hides the navi pane diff -r 9c5b1510919f -r bf573002ff72 organizer_plat/calendar_common_utils_api/inc/calenconstants.h --- a/organizer_plat/calendar_common_utils_api/inc/calenconstants.h Wed Jun 09 09:40:23 2010 +0300 +++ b/organizer_plat/calendar_common_utils_api/inc/calenconstants.h Mon Jun 21 15:38:59 2010 +0300 @@ -77,6 +77,17 @@ EWeekTitleDuration }; +/** +* TCalenWeekNumber +* The week Number +*/ +enum TCalenWeekNumber +{ +EWeekNumberOn, +EWeekNumberOff +}; + + #endif // CALENCONSTANTS_H // End of File diff -r 9c5b1510919f -r bf573002ff72 organizer_plat/calendar_custamization_api/inc/calennotificationhandler.h --- a/organizer_plat/calendar_custamization_api/inc/calennotificationhandler.h Wed Jun 09 09:40:23 2010 +0300 +++ b/organizer_plat/calendar_custamization_api/inc/calennotificationhandler.h Mon Jun 21 15:38:59 2010 +0300 @@ -66,6 +66,7 @@ ECalenNotifyCancelMapLaunch, ECalenNotifyMissedAlarmViewClosed, ECalenNotifyMissedEventViewClosed, + ECalenNotifyClearMissedAlarms, ECalenNotifyCalendarFieldChanged, ECalenNotifyCancelStatusUpdation, ECalenNotifyMarkedEntryCompleted, diff -r 9c5b1510919f -r bf573002ff72 organizer_plat/calendar_settings_keys_api/inc/CalendarInternalCRKeys.h --- a/organizer_plat/calendar_settings_keys_api/inc/CalendarInternalCRKeys.h Wed Jun 09 09:40:23 2010 +0300 +++ b/organizer_plat/calendar_settings_keys_api/inc/CalendarInternalCRKeys.h Mon Jun 21 15:38:59 2010 +0300 @@ -139,5 +139,10 @@ */ const TUint32 KCalendarAvailableValue = 0x00000010; +/** +* Boolean value containing week Number ON/OFF +* Default value:"0" +*/ +const TUint32 KCalendarWeekViewNumber = 0x000000011; #endif // CALENDARINTERNALCRKEYS_H diff -r 9c5b1510919f -r bf573002ff72 organizer_pub/calendar_interim_utils2_api/tsrc/stiff/src/caleninterimutils2testblocks.cpp --- a/organizer_pub/calendar_interim_utils2_api/tsrc/stiff/src/caleninterimutils2testblocks.cpp Wed Jun 09 09:40:23 2010 +0300 +++ b/organizer_pub/calendar_interim_utils2_api/tsrc/stiff/src/caleninterimutils2testblocks.cpp Mon Jun 21 15:38:59 2010 +0300 @@ -79,6 +79,7 @@ // TInt CCalenInterimUtils2Test::TestGlobalUUIDL( CStifItemParser& aItem ) { + CDesC8ArrayFlat* uidArray = new ( ELeave ) CDesC8ArrayFlat( KTestMax ); TInt retValue = KErrNone; // Print to UI _LIT( KCalenInterimUtils2Test, "CalenInterimUtils2Test" ); @@ -95,33 +96,31 @@ callBack = CCalProgressCallBackListener::NewL(); CCalenGlobalData* globalData = CCalenGlobalData::NewL( *callBack ); // Make the call to the API. - // Create unique ID. - RPointerArray guids; - + // Create unique ID. + TBuf8<100> outputBuffer; TInt i = 0; - for( ; i<20; i++ ) + for( ; i<2000; i++ ) { HBufC8* guid = globalData->InterimUtilsL().GlobalUidL(); - iLog->Log( *guid ); - guids.AppendL(guid); - } - - for(i=1; i < 20; i++) - { - for(TInt j = 0; j < i; j++) + CleanupStack::PushL(guid); + iLog->Log( *guid ); + TRAPD( err, uidArray->InsertIsqL( *guid ) ); + + if ( err == KErrAlreadyExists ) { - if( guids[j] == guids[i] ) - { - iLog->Log( KDuplicateUids ); - retValue = KErrNotFound; - break; - } + outputBuffer.Zero(); + outputBuffer.Append( _L8( "\n err == KErrAlreadyExists\n" ) ); + iLog->Log( outputBuffer ); + RDebug::Print(_L("failed %d"),i); + retValue = KErrNotFound; } + + CleanupStack::PopAndDestroy( guid ); } - guids.ResetAndDestroy(); + globalData->Release(); - + delete uidArray; //cleanup uid array // Validate the result. return retValue;