--- a/uifw/AvKon/src/AknCharMap.cpp Tue May 11 16:27:42 2010 +0300
+++ b/uifw/AvKon/src/AknCharMap.cpp Tue May 25 12:58:19 2010 +0300
@@ -94,8 +94,6 @@
const TUint KHistoryEmptyChar = CEditableText::ETabCharacter;
const TUint KHistoryEmptyCharForDisplay = CEditableText::ESpace;
-const TInt KAknSctRadioOn = 1;
-const TInt KAknSctRadioOff = 0;
const TInt KAreaIdRecent = 0;
const TInt KAreaIdMain = 1;
const TInt KAreaIdTail = 2;
@@ -245,60 +243,6 @@
};
// ----------------------------------------------------------------------------
-// Table Navi class definition
-// ----------------------------------------------------------------------------
-//
-NONSHARABLE_CLASS(CAknSctTableNavi) : public CAknControl, public MAknSctFocusHandler, public MCoeControlObserver
- {
- public:
- CAknSctTableNavi(CAknCharMap* aCharMap, CAknCharMapExtension* aExtension);
- ~CAknSctTableNavi();
-
- public: // from CCoeControl
- TInt CountComponentControls() const;
- CCoeControl* ComponentControl( TInt aIndex ) const;
- virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode);
- void ConstructFromResourceL(TResourceReader& aReader);
- virtual TSize MinimumSize();
- virtual void SizeChanged();
-
- public: // from MCoeControlObserver
- void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType);
-
- public: // from MAknSctFocusHandler
- virtual CCoeControl* FocusedControl();
- virtual TBool EnterControl(TInt aX, TInt aY);
- virtual void MoveFocus(TInt aX, TInt aY);
- virtual TBool ExitWithKey(TInt aKeycode);
- virtual TBool LeaveControl();
-
- public:
- TInt TableCount();
- void UpdateNextTableButtonL();
-
- private:
- void TableExitL();
- static TInt TableExitCallBackL(TAny* aThis);
- void DoTableExitL();
-
- void NextTableL();
- static TInt NextTableCallBackL(TAny* aThis);
- void DoNextTableL();
-
- private:
- TInt ButtonPosition(TInt aButtonIndex) const;
-
- private: // data
- TInt iButtonIndex;
- RPointerArray<CAknSctNaviButton> iButtonArray;
- CAknCharMap* iCharMap;
- CAknCharMapExtension* iExtension;
- CIdle *iIdle;
-
- TInt iPressedButtonIndex;
- };
-
-// ----------------------------------------------------------------------------
// Navigator class definition
// ----------------------------------------------------------------------------
//
@@ -331,8 +275,21 @@
virtual TBool ExitWithKey(TInt aKeycode);
virtual TBool LeaveControl();
+ public:
+ void UpdateNextTableButtonL();
+ TInt LastButton() const;
+
private:
+ void MoveFocus(TBool aInternalMove, TInt aX, TInt aY );
TBool IsNextButton() const;
+ TBool CalcNextStep( TUint aKey, TInt& aX, TInt& aY );
+ void TableExitL();
+ static TInt TableExitCallBackL(TAny* aThis);
+ void DoTableExitL();
+
+ void NextTableL();
+ static TInt NextTableCallBackL(TAny* aThis);
+ void DoNextTableL();
private: // data
TInt iButtonIndex;
@@ -340,8 +297,8 @@
CAknCharMap* iCharMap;
CAknCharMapExtension* iExtension;
CEikLabel* iTitle;
+ CIdle *iIdle;
};
-
// ----------------------------------------------------------------------------
// Category button class defintion
// ----------------------------------------------------------------------------
@@ -377,60 +334,27 @@
// Radio button class defintion
// ----------------------------------------------------------------------------
//
-class CAknSctRadioButton : public CAknControl, public MAknSctFocusHandler
- {
- public:
- enum TAknSctRadioButtonFlags
- {
- EAknSctRadioButtonResize = 0x1,
- EAknSctRadioButtonEnd
- };
+// stay for BC
+class CAknSctRadioButton : public CAknControl
+ {
public:
CAknSctRadioButton();
- CAknSctRadioButton(CAknCharMap* aCharMap,
- CAknCharMapExtension* aExtension);
~CAknSctRadioButton();
- public: // from MAknSctFocusHandler
- virtual CCoeControl* FocusedControl();
- virtual TBool EnterControl(TInt aX, TInt aY);
- virtual void MoveFocus(TInt aX, TInt aY);
- virtual TBool ExitWithKey(TInt aKeycode);
- virtual TBool LeaveControl();
-
- public: // from CCoeControl
- TInt CountComponentControls() const;
- CCoeControl* ComponentControl( TInt aIndex ) const;
- virtual TKeyResponse OfferKeyEventL(
- const TKeyEvent& aKeyEvent, TEventCode);
- void ConstructFromResourceL(TResourceReader& aReader);
-
- /**
- * This function handles pointer events directed at the charmapdialog.
- * @param aPointerEvent The pointer event directed at the charmapdialog.
- */
- virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent);
-
- virtual TSize MinimumSize();
- virtual void SizeChanged();
- virtual void Draw(const TRect& aRect) const;
-
- public: // New function
- // The number of Buttons
- inline TInt Count() const;
-
- void SetCurrentCategory(TInt aCategory);
- void SetValidSctCase(TInt aSctCase);
- void RemoveInvalidButton();
private: // data
RPointerArray<CAknSctCategoryButton> iButtonArray;
- MCoeControlObserver* iObserver;
- TInt iFlags;
- CAknCharMapExtension* iExtension;
- CAknCharMap* iCharMap;
- TInt iButtonIndex;
- TInt iEntryIndex;
};
+
+CAknSctRadioButton::CAknSctRadioButton()
+ {
+ }
+
+CAknSctRadioButton::~CAknSctRadioButton()
+ {
+ iButtonArray.ResetAndDestroy();
+ iButtonArray.Close();
+ }
+
// end of CAknSctRadioButton class definition
// ----------------------------------------------------------------------------
@@ -497,15 +421,11 @@
// FeatureManager
TBool iPictographsBuffer; // ETrue means Picto is valid.
TBool iPictographsBufferGrouping; // ETrue means Picto grouping is valid.
- TBool iJapaneseSctUi; // Title and Softkey for Japanese varinat
- TBool iHasCategoryButtonUi; // Has Category button UI
- CAknSctRadioButton* iRadioButton;
TInt iCurrentCategory; // defined enum TAknSCTCategoryButton on avkon.hrh
// QHD layout.
CAknCharMap* iCharMapProxy;
MAknSctFocusHandler* iFocusHandler;
- CAknSctTableNavi* iTableNavi;
CAknSctPageNavi* iPageNavi;
HBufC* iEntryBuf;
CEikLabel* iCategoryTitle;
@@ -540,6 +460,9 @@
* Is keyboard event
*/
TBool iKeyBrdEvent;
+
+ private:
+ CAknSctRadioButton iForBCDoNotUse;
};
// ----------------------------------------------------------------------------
@@ -603,518 +526,6 @@
}
// ----------------------------------------------------------------------------
-// Table navi class implementation
-// ----------------------------------------------------------------------------
-//
-CAknSctTableNavi::CAknSctTableNavi(CAknCharMap* aCharMap, CAknCharMapExtension* aExtension) :
-iCharMap(aCharMap), iExtension(aExtension)
- {
- }
-
-CAknSctTableNavi::~CAknSctTableNavi()
- {
- if (iButtonArray.Count())
- {
- iButtonArray.ResetAndDestroy();
- }
- iButtonArray.Close();
- delete iIdle;
- }
-
-TInt CAknSctTableNavi::CountComponentControls() const
- {
- return iButtonArray.Count();
- }
-
-CCoeControl* CAknSctTableNavi::ComponentControl( TInt aIndex ) const
- {
- CCoeControl* rtn;
- if (aIndex < iButtonArray.Count())
- {
- rtn = iButtonArray[aIndex]->iButtonControl;
- }
- else
- {
- rtn = NULL;
- }
- return rtn;
- }
-
-TKeyResponse CAknSctTableNavi::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aModifiers)
- {
- CAknSctNaviButton* buttonObj = iButtonArray[iButtonIndex];
- buttonObj->iButtonControl->OfferKeyEventL(aKeyEvent,aModifiers);
- TKeyResponse response = EKeyWasNotConsumed;
- TUint code=aKeyEvent.iCode;
- switch (code)
- {
- case EKeyEnter:
- case EKeyOK:
- {
- switch (buttonObj->iButtonId)
- {
- case EAknSctTableNaviExit:
- {
- iExtension->iKeyOkEvent = ETrue;
- TableExitL();
- response = EKeyWasConsumed;
- }
- break;
- // add all supported table types here.
- case EAknSctTableNaviSpecialChar:
- case EAknSctTableNaviEmotion:
- {
- NextTableL();
- response = EKeyWasConsumed;
- }
- break;
- default:
- break;
- }
- }
- break;
- case EKeyLeftArrow:
- case '4':
- {
- MoveFocus(-1,0);
- response = EKeyWasConsumed;
- }
- break;
- case EKeyRightArrow:
- case '6':
- {
- MoveFocus(1,0);
- response = EKeyWasConsumed;
- }
- break;
- case EKeyUpArrow:
- case '2':
- {
- response = EKeyWasConsumed;
- if ((iButtonIndex==0) && !Layout_Meta_Data::IsLandscapeOrientation())
- {
- // Left page button.
- if (iExtension->iPageNavi && iExtension->iPageNavi->EnterControl(0,0))
- {
- LeaveControl();
- }
- }
- else
- {
- // Last radio button.
- if ((iButtonIndex==0) && iExtension->iRadioButton)
- {
- if (iExtension->iRadioButton->EnterControl(0,iExtension->iRadioButton->Count()-1))
- {
- LeaveControl();
- }
- break;
- }
-
- // Grid bottom row.
- TInt xPos = ButtonPosition(iButtonIndex);
- if (iCharMap->ColMax(0) > iCharMap->ColMax(xPos))
- {
- xPos = iCharMap->RowMax(iCharMap->ColMax(0));
- }
-
- if (iExtension->EnterControl(xPos,iCharMap->ColMax(xPos)))
- {
- LeaveControl();
- break;
- }
- }
- }
- break;
-
- case EKeyDownArrow:
- case '8':
- {
- response = EKeyWasConsumed;
-
- // First radio button.
- if ((iButtonIndex==0) && iExtension->iRadioButton)
- {
- if (iExtension->iRadioButton->EnterControl(0,0))
- {
- LeaveControl();
- }
- break;
- }
-
- // Grid top row.
- TInt xPos = ButtonPosition(iButtonIndex);
- if (iExtension->EnterControl(xPos,iCharMap->ColMin(xPos)))
- {
- LeaveControl();
- break;
- }
- }
- break;
-
- default:
- break;
- }
- return response;
- }
-
-void CAknSctTableNavi::TableExitL()
- {
- if(!iIdle)
- {
- iIdle = CIdle::NewL(CActive::EPriorityStandard);
- }
-
- iIdle->Cancel();
- iIdle->Start(TCallBack(TableExitCallBackL, this));
- }
-
-TInt CAknSctTableNavi::TableExitCallBackL(TAny* aThis)
- {
- ((CAknSctTableNavi*)aThis)->DoTableExitL();
- return KErrNone;
- }
-
-void CAknSctTableNavi::DoTableExitL()
- {
- iCharMap->SetStatusChanged(EAknCharSelectedTableExitButton);
- }
-
-void CAknSctTableNavi::NextTableL()
- {
- if(!iIdle)
- {
- iIdle = CIdle::NewL(CActive::EPriorityStandard);
- }
-
- iIdle->Cancel();
- iIdle->Start(TCallBack(NextTableCallBackL, this));
- }
-
-TInt CAknSctTableNavi::NextTableCallBackL(TAny* aThis)
- {
- ((CAknSctTableNavi*)aThis)->DoNextTableL();
- return KErrNone;
- }
-
-void CAknSctTableNavi::DoNextTableL()
- {
- iCharMap->SetStatusChanged(EAknCharSelectedNextTableButton);
- }
-
-TInt CAknSctTableNavi::ButtonPosition(TInt aButtonIndex) const
- {
- // buttons behind the 1th are behavior as one button
- return (aButtonIndex==0) ? 0 : 1;
- }
-
-void CAknSctTableNavi::ConstructFromResourceL(TResourceReader& aReader)
- {
- // Table navi buttons.
- TInt counts = aReader.ReadInt16();
- for (TInt i = 0; i < counts; i++)
- {
- TInt buttonId = aReader.ReadInt16();
- TInt resId = aReader.ReadInt32();
- TResourceReader buttonReader;
- iCoeEnv->CreateResourceReaderLC(buttonReader, resId);
- CAknSctNaviButton* buttonObj = CAknSctNaviButton::NewL(*this, buttonId, buttonReader);
- buttonObj->SetObserver(this);
- iButtonArray.Append(buttonObj);
- CleanupStack::PopAndDestroy(); // buttonReader
- }
- }
-
-TSize CAknSctTableNavi::MinimumSize()
- {
- return Rect().Size();
- }
-
-void CAknSctTableNavi::SizeChanged()
- {
- if (iButtonArray.Count()>0)
- {
-
- TInt ctrlVariety = 2;
- TInt cellVariety = 1;
- if(!iCharMap->IsJapaneseSctUi())
- {
- ctrlVariety = (iCharMap->TableCount()>1) ? 0 : 1;
- cellVariety = 0;
- }
-
- TAknLayoutRect cellLayRect, buttonLayRect;
- TRect buttonRect;
-
- // Table exit.
- cellLayRect.LayoutRect(Rect(), AknLayoutScalable_Avkon::cell_graphic2_control_pane(ctrlVariety,0));
- buttonLayRect.LayoutRect(cellLayRect.Rect(), AknLayoutScalable_Avkon::bg_button_pane_cp05(cellVariety));
- buttonRect = buttonLayRect.Rect();
-
- TAknLayoutRect iconLayRect;
- iconLayRect.LayoutRect(buttonRect, AknLayoutScalable_Avkon::cell_graphic2_control_pane_g1(cellVariety));
- TSize iconSize = iconLayRect.Rect().Size();
-
- CAknSctNaviButton* buttonObj = iButtonArray[0];
- buttonObj->iButtonControl->SetRect(buttonRect);
- buttonObj->iButtonControl->SetHighlightRect(buttonRect);
- buttonObj->iButtonControl->SetIconScaleMode(EAspectRatioPreserved);
- buttonObj->iButtonControl->SetIconSize(iconSize);
- buttonObj->SetEnabled(ETrue);
-
- // Table change.
- if (iCharMap->TableCount() > 1)
- {
- cellLayRect.LayoutRect(Rect(), AknLayoutScalable_Avkon::cell_graphic2_control_pane(ctrlVariety,1));
- buttonLayRect.LayoutRect(cellLayRect.Rect(), AknLayoutScalable_Avkon::bg_button_pane_cp05(cellVariety));
- buttonRect = buttonLayRect.Rect();
-
- for (TInt i(1); i<iButtonArray.Count(); i++)
- {
- CAknSctNaviButton* buttonObj = iButtonArray[i];
- buttonObj->iButtonControl->SetRect(buttonRect);
- buttonObj->iButtonControl->SetHighlightRect(buttonRect);
- buttonObj->iButtonControl->SetIconScaleMode(EAspectRatioPreserved);
- buttonObj->iButtonControl->SetIconSize(iconSize);
- buttonObj->SetEnabled(ETrue);
- }
- }
-
- TRAP_IGNORE(UpdateNextTableButtonL());
- }
- }
-
-void CAknSctTableNavi::HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType)
- {
- if(aEventType == EEventStateChanged)
- {
- for(TInt i=0; i<iButtonArray.Count(); i++)
- {
- CAknSctNaviButton* button = iButtonArray[i];
- if(button->iButtonControl == aControl)
- {
- switch(button->iButtonId)
- {
- case EAknSctTableNaviExit:
- {
- iExtension->iKeyOkEvent = ETrue;
- TableExitL();
- }
- return;
-
- case EAknSctTableNaviSpecialChar:
- case EAknSctTableNaviEmotion:
- {
- NextTableL();
- }
- return;
-
- default:
- break;
- }
-
- break;
- }
- }
- }
- }
-
-
-void CAknSctTableNavi::UpdateNextTableButtonL()
- {
-
- TBool isFocused = EFalse;
-
- // table switch buttons stay in one place.
- for(TInt index(1); index<iButtonArray.Count(); index++)
- {
- CAknSctNaviButton* buttonObj = iButtonArray[index];
- if(buttonObj->IsEnabled())
- {
- isFocused = buttonObj->IsFocused();
- }
- }
-
- // fresh focused button
- for (TInt index(1); index<iButtonArray.Count(); index++)
- {
- CAknSctNaviButton* buttonObj = iButtonArray[index];
- if (iCharMap->TableCount() > 1)
- {
- switch (iCharMap->NextTableCase())
- {
- case EAknCharMapTableSpecialChar:
- {
- TBool isShown = EFalse;
- if(iExtension->IsShowingEmotion())
- {
- isShown = (buttonObj->iButtonId==EAknSctTableNaviSpecialChar);
- }
- else
- {
- isShown = (buttonObj->iButtonId==EAknSctTableNaviEmotion);
- }
- buttonObj->SetEnabled(isShown);
- buttonObj->SetFocused(isShown && isFocused);
- if(isShown && isFocused)
- {
- iButtonIndex = index;
- }
- }
- break;
-
- default:
- buttonObj->SetEnabled(EFalse);
- break;
- }
- }
- else
- {
- buttonObj->SetEnabled(EFalse);
- }
- }
- }
-
-CCoeControl* CAknSctTableNavi::FocusedControl()
- {
- return this;
- }
-
-TBool CAknSctTableNavi::EnterControl(TInt aX, TInt /*aY*/)
- {
- if (IsVisible())
- {
- if ((aX >= 0) && (aX < iButtonArray.Count()))
- {
- TInt index = aX;
- if (AknLayoutUtils::LayoutMirrored()) // reverse.
- {
- index = (iButtonArray.Count() - 1) - aX;
- }
-
- index = ButtonPosition(index);
-
- for(; index<iButtonArray.Count(); index++)
- {
- CAknSctNaviButton* buttonObj = iButtonArray[index];
- if (buttonObj->IsEnabled())
- {
- iButtonIndex = index;
- iExtension->iFocusHandler = this;
- buttonObj->SetFocused(ETrue);
- return ETrue;
- }
- }
- }
- }
- return EFalse;
- }
-
-void CAknSctTableNavi::MoveFocus(TInt aX, TInt /*aY*/)
- {
- TInt delta = aX;
- if (AknLayoutUtils::LayoutMirrored()) // reverse.
- {
- delta = -aX;
- }
-
- TInt buttonIndex = iButtonIndex + delta;
-
- // loop until find next position
- for (TInt i = 0; i < iButtonArray.Count(); i++)
- {
-
- if (buttonIndex > iButtonArray.Count() - 1) // goto Next control
- {
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- // First radio button.
- if (iExtension->iRadioButton)
- {
- if (iExtension->iRadioButton->EnterControl(0,0))
- {
- LeaveControl();
- }
- break;
- }
- // Grid start.
- if (iExtension->EnterControl(0,iCharMap->ColMin(0)))
- {
- LeaveControl();
- }
- }
- else
- {
- // Left page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(0,0))
- {
- LeaveControl();
- }
- }
- break;
- }
-
- else if (buttonIndex < 0) // goto Prev control
- {
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- // Right page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(1,0))
- {
- LeaveControl();
- }
- }
- else
- {
- // Grid end.
- TInt posY = iCharMap->ColMax(0);
- if (iExtension->EnterControl(iCharMap->RowMax(posY),posY))
- {
- LeaveControl();
- }
- }
- break;
- }
-
- if (iButtonArray[buttonIndex]->IsEnabled()) // goto next button in This control
- {
- CAknSctNaviButton* buttonObj;
- buttonObj = iButtonArray[iButtonIndex];
- buttonObj->SetFocused(EFalse);
- iButtonIndex = buttonIndex;
- buttonObj = iButtonArray[iButtonIndex];
- buttonObj->SetFocused(ETrue);
- break;
- }
-
- buttonIndex += (delta < 0) ? -1 : 1; // get next position
- }
- }
-
-TBool CAknSctTableNavi::LeaveControl()
- {
- for (TInt i = 0; i < iButtonArray.Count(); i++ )
- {
- iButtonArray[i]->SetFocused(EFalse);
- }
- return ETrue;
- }
-
-TBool CAknSctTableNavi::ExitWithKey(TInt /*aKeycode*/)
- {
- if (iButtonArray[iButtonIndex]->iButtonId != EAknSctTableNaviExit)
- {
- return EFalse;
- }
- else
- {
- return ETrue;
- }
- }
-
-// ----------------------------------------------------------------------------
// Page Navi class implementation
// ----------------------------------------------------------------------------
//
@@ -1134,6 +545,7 @@
}
iButtonArray.Close();
delete iTitle;
+ delete iIdle;
}
TInt CAknSctPageNavi::CountComponentControls() const
@@ -1182,6 +594,12 @@
{
switch (buttonObj->iButtonId)
{
+ case EAknSctTableNaviExit:
+ {
+ iExtension->iKeyOkEvent = ETrue;
+ TableExitL();
+ }
+ break;
case EAknSctPageNaviPrevPage:
{
iCharMap->PrevPageL();
@@ -1192,6 +610,13 @@
iCharMap->NextPageL();
}
break;
+ // add all supported table types here.
+ case EAknSctTableNaviSpecialChar:
+ case EAknSctTableNaviEmotion:
+ {
+ NextTableL();
+ }
+ break;
default:
return EKeyWasConsumed;
}
@@ -1202,110 +627,18 @@
break;
case EKeyLeftArrow:
case '4':
- {
- MoveFocus(-1,0);
- response = EKeyWasConsumed;
- }
- break;
case EKeyRightArrow:
case '6':
- {
- MoveFocus(1,0);
- response = EKeyWasConsumed;
- }
- break;
case EKeyUpArrow:
case '2':
- {
- response = EKeyWasConsumed;
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- if (iExtension->iRadioButton && !IsNextButton())
- {
- // Last radio button.
- if (iExtension->iRadioButton->EnterControl(
- 0,iExtension->iRadioButton->Count()-1))
- {
- LeaveControl();
- }
- break;
- }
- }
- TInt xPos;
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- xPos = IsNextButton() ? iCharMap->MaxCols() - 1 : 0;
- }
- else
- {
- if (IsNextButton())
- {
- xPos = iCharMap->MaxCols() - 1;
- }
- else
- {
- xPos = !iExtension->iRadioButton ?
- iCharMap->TableCount() : iCharMap->MaxCols()-2;
- }
- }
- if (iCharMap->ColMax(0) > iCharMap->ColMax(xPos))
- {
- xPos = iCharMap->RowMax(iCharMap->ColMax(0));
- }
- // Grid bottom row.
- if (iExtension->EnterControl(xPos,iCharMap->ColMax(xPos)))
- {
- LeaveControl();
- break;
- }
- }
- break;
case EKeyDownArrow:
case '8':
{
+ TInt gridX;
+ TInt gridY;
+ TBool gridInvolved = CalcNextStep( code, gridX, gridY );
+ MoveFocus( !gridInvolved, gridX, gridY );
response = EKeyWasConsumed;
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- if (!IsNextButton())
- {
- // First table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
- }
- else
- {
- // Grid top row.
- TInt xPos = iCharMap->MaxCols() - 1;
- if (iExtension->EnterControl(xPos,iCharMap->ColMin(xPos)))
- {
- LeaveControl();
- break;
- }
- }
- }
- else
- {
- TInt xPos;
- if (IsNextButton())
- {
- xPos = iCharMap->MaxCols() - 1;
- }
- else
- {
- xPos = !iExtension->iRadioButton ?
- iCharMap->TableCount() : iCharMap->MaxCols() - 2;
- }
- // Grid top row.
- if (iExtension->EnterControl(xPos,iCharMap->ColMin(xPos)))
- {
- LeaveControl();
- break;
- }
- }
}
break;
default:
@@ -1314,6 +647,176 @@
return response;
}
+TBool CAknSctPageNavi::CalcNextStep( TUint aKey, TInt& aX, TInt& aY )
+ {
+ TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
+ TBool mirrored = AknLayoutUtils::LayoutMirrored();
+ TBool emotionEnabled = iExtension->IsEmotionEnabled();
+ TInt scPages = iCharMap->PageCount();
+
+ aX = 0;
+ aY = 0;
+ TInt xOffset = 0;
+ TInt yOffset = 0;
+
+ // Simplify key events to two variants
+ switch ( aKey )
+ {
+ case EKeyLeftArrow:
+ case '4':
+ {
+ xOffset = -1;
+ }
+ break;
+ case EKeyRightArrow:
+ case '6':
+ {
+ xOffset = 1;
+ }
+ break;
+ case EKeyDownArrow:
+ case '8':
+ {
+ yOffset = 1;
+ }
+ break;
+ case EKeyUpArrow:
+ case '2':
+ {
+ yOffset = -1;
+ }
+ break;
+ default:
+ break;
+ }
+
+ TInt runtimeIndex = iButtonIndex;
+ if ( !emotionEnabled )
+ {
+ // SC/Emotion unabled, button regrouped!
+ if ( ( mirrored && iButtonIndex == EAknSctPageNaviPrevPage && xOffset != 1 )
+ || ( !mirrored && iButtonIndex == EAknSctPageNaviNextPage && xOffset != -1) )
+ {
+ runtimeIndex = iExtension->IsShowingEmotion()?EAknSctTableNaviSpecialChar:EAknSctTableNaviEmotion;
+ }
+ }
+ // calculate when moving from PageNavi to grid, the column position
+ switch ( runtimeIndex )
+ {
+ case EAknSctTableNaviExit:
+ {
+ aX = 0;
+ if ( ( !mirrored && xOffset == -1 ) || ( mirrored && xOffset == 1 ) )
+ {
+ // Grid end
+ aY = iCharMap->ColMax(0);
+ aX = iCharMap->RowMax( aY );
+ return ETrue;
+ }
+ else if ( mirrored && xOffset == -1 && scPages >= 2 )
+ {
+ xOffset = EAknSctPageNaviNextPage;
+ }
+ else if ( scPages < 2
+ && ( ( !mirrored && xOffset == 1 ) || ( mirrored && xOffset == -1 ) ) )
+ {
+ if ( !emotionEnabled )
+ {
+ // Grid start
+ aX = 0;
+ aY = iCharMap->ColMin( aX );
+ return ETrue;
+ }
+ else
+ {
+ xOffset = LastButton();
+ }
+ }
+ else
+ {
+ xOffset = EAknSctTableNaviExit + xOffset;
+ }
+ }
+ break;
+ case EAknSctPageNaviPrevPage:
+ {
+ aX = mirrored ? iCharMap->MaxCols()-2 : 1;
+ if ( mirrored && xOffset == -1 )
+ {
+ xOffset = LastButton();
+ }
+ else
+ {
+ xOffset = xOffset + EAknSctPageNaviPrevPage;
+ }
+ }
+ break;
+ case EAknSctPageNaviNextPage:
+ {
+ aX = mirrored ? 1 : iCharMap->MaxCols()-2;
+ if ( mirrored && xOffset == 1 )
+ {
+ xOffset = 0;
+ }
+ else if ( !mirrored && xOffset == 1 )
+ {
+ xOffset = LastButton();
+ }
+ else
+ {
+ xOffset = EAknSctPageNaviNextPage + xOffset;
+ }
+ }
+ break;
+ case EAknSctTableNaviSpecialChar:
+ case EAknSctTableNaviEmotion:
+ {
+ aX = iCharMap->MaxCols()-1;
+ if ( ( !mirrored && xOffset == 1 ) || ( mirrored && xOffset == -1 ) )
+ {
+ // Grid start
+ aX = 0;
+ aY = iCharMap->ColMin( aX );
+ return ETrue;
+ }
+ else if ( scPages < 2
+ && ( ( !mirrored && xOffset == -1 ) || ( mirrored && xOffset == 1 ) ) )
+ {
+ xOffset = EAknSctTableNaviExit;
+ }
+ else if ( mirrored && xOffset == 1 )
+ {
+ xOffset = EAknSctPageNaviPrevPage;
+ }
+ else
+ {
+ xOffset = EAknSctPageNaviNextPage;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ if ( yOffset == 1 )
+ {
+ // DOWN
+ aY = iCharMap->ColMin( aX );
+ return ETrue;
+ }
+ else if ( yOffset == -1 )
+ {
+ // and UP
+ aY = iCharMap->ColMax( aX );
+ return ETrue;
+ }
+
+ // Return False means it's internal moving focus within Page Navi
+ aX = xOffset;
+ aY = 0;
+ return EFalse;
+ }
+
TBool CAknSctPageNavi::IsNextButton() const
{
if (iButtonIndex < iButtonArray.Count() && iButtonArray[iButtonIndex])
@@ -1350,7 +853,6 @@
for (TInt index=0; index < iButtonArray.Count(); index++)
{
CAknSctNaviButton* buttonObj = iButtonArray[index];
- TRect buttonRect = buttonObj->iButtonControl->Rect();
if (buttonObj->iButtonControl == aControl)
{
if (buttonObj->IsEnabled() && buttonObj->iPressed)
@@ -1364,14 +866,14 @@
iCharMap->PrevPageL();
UpdatePageTitleL();
}
- break;
+ return;
case EAknSctPageNaviNextPage:
{
buttonObj->iRepeat = ETrue; // Set button repeat.
iCharMap->NextPageL();
UpdatePageTitleL();
}
- break;
+ return;
default:
break;
}
@@ -1392,13 +894,19 @@
CAknSctNaviButton* buttonObj = iButtonArray[index];
buttonObj->iPressed = EFalse;
buttonObj->iRepeat = EFalse;
+ TInt buttonIndex = buttonObj->iButtonId;
TRect buttonRect = buttonObj->iButtonControl->Rect();
- if (buttonRect.Contains(aPointerEvent.iPosition))
+ if ( buttonRect.Contains(aPointerEvent.iPosition))
{
if (buttonObj->IsEnabled())
{
- buttonObj->iButtonControl->SetButtonFlags(KAknButtonKeyRepeat);
buttonObj->iPressed = ETrue; // Set button pressed.
+ if ( buttonIndex == EAknSctPageNaviPrevPage
+ || buttonIndex == EAknSctPageNaviNextPage )
+ {
+ // Only Prev/Next button can repeat
+ buttonObj->iButtonControl->SetButtonFlags( KAknButtonKeyRepeat );
+ }
}
}
}
@@ -1430,6 +938,18 @@
UpdatePageTitleL();
}
break;
+ case EAknSctTableNaviExit:
+ {
+ iExtension->iKeyOkEvent = ETrue;
+ TableExitL();
+ }
+ break;
+ case EAknSctTableNaviSpecialChar:
+ case EAknSctTableNaviEmotion:
+ {
+ NextTableL();
+ }
+ break;
default:
break;
}
@@ -1452,59 +972,111 @@
void CAknSctPageNavi::SizeChanged()
{
- TAknLayoutRect pageButtonLayRect;
- TInt pageVariate = !iCharMap->IsJapaneseSctUi() ? ((iCharMap->TableCount() > 1) ? 0 : 1) : 2;
-
+ TAknLayoutRect pageButtonLayRect, buttonLayRect;
+ TInt cellVar = Layout_Meta_Data::IsLandscapeOrientation()? 3 : 2;
+ TInt bgVar = 2;
+ TBool landScape = Layout_Meta_Data::IsLandscapeOrientation();
+ TBool emotionEnabled = ETrue;
+ TBool mirrored = AknLayoutUtils::LayoutMirrored();
CAknSctNaviButton* buttonObj;
TRect rect;
- buttonObj = iButtonArray[0];
+ if ( iExtension )
+ {
+ emotionEnabled = iExtension->IsEmotionEnabled();
+ }
+
+ // Prev button
+ buttonObj = iButtonArray[1];
buttonObj->iButtonControl->SetButtonFlags(0);
- if (!AknLayoutUtils::LayoutMirrored())
- {
- buttonObj->iButtonId = EAknSctPageNaviPrevPage;
- pageButtonLayRect.LayoutRect(Rect(),AknLayoutScalable_Avkon::bg_button_pane_cp10(pageVariate));
- }
+ TInt col = 0;
+ if ( !landScape )
+ {
+ col = mirrored ? ( !emotionEnabled?4:3 ) : 1;
+ }
else
- {
- buttonObj->iButtonId = EAknSctPageNaviNextPage;
- pageButtonLayRect.LayoutRect(Rect(),AknLayoutScalable_Avkon::bg_button_pane_cp11(pageVariate));
- }
- rect = pageButtonLayRect.Rect();
+ {
+ col = mirrored ? ( !emotionEnabled?6:5 ) : 1;
+ }
+ pageButtonLayRect.LayoutRect( Rect(), AknLayoutScalable_Avkon::cell_graphic2_control_pane(cellVar,col) );
+ buttonLayRect.LayoutRect( pageButtonLayRect.Rect(), AknLayoutScalable_Avkon::bg_button_pane_cp05(bgVar));
+ rect = buttonLayRect.Rect();
buttonObj->iButtonControl->SetRect(rect);
buttonObj->iButtonControl->SetHighlightRect(rect);
- TAknLayoutRect pageButtonIconLayRect;
- pageButtonIconLayRect.LayoutRect(pageButtonLayRect.Rect(), AknLayoutScalable_Avkon::graphic2_pages_pane_g1(pageVariate));
- buttonObj->iButtonControl->SetIconScaleMode(EAspectRatioPreserved);
- TSize iconSize = pageButtonIconLayRect.Rect().Size();
+
+ // ...Prev button icon
+ TAknLayoutRect iconLayRect;
+ iconLayRect.LayoutRect(rect, AknLayoutScalable_Avkon::cell_graphic2_control_pane_g1(bgVar));
+ TSize iconSize = iconLayRect.Rect().Size();
buttonObj->iButtonControl->SetIconSize(iconSize);
-
- buttonObj = iButtonArray[1];
+
+ // Next button
+ buttonObj = iButtonArray[2];
buttonObj->iButtonControl->SetButtonFlags(0);
- if (!AknLayoutUtils::LayoutMirrored())
- {
- buttonObj->iButtonId = EAknSctPageNaviNextPage;
- pageButtonLayRect.LayoutRect(Rect(), AknLayoutScalable_Avkon::bg_button_pane_cp11(pageVariate));
- }
+ if ( !landScape )
+ {
+ col = mirrored ? 1 : ( !emotionEnabled?4:3 );
+ }
else
- {
- buttonObj->iButtonId = EAknSctPageNaviPrevPage;
- pageButtonLayRect.LayoutRect(Rect(), AknLayoutScalable_Avkon::bg_button_pane_cp10(pageVariate));
- }
- rect = pageButtonLayRect.Rect();
+ {
+ col = mirrored ? 1 : ( !emotionEnabled?6:5 );
+ }
+ pageButtonLayRect.LayoutRect( Rect(), AknLayoutScalable_Avkon::cell_graphic2_control_pane(cellVar,col) );
+ buttonLayRect.LayoutRect( pageButtonLayRect.Rect(), AknLayoutScalable_Avkon::bg_button_pane_cp05(bgVar));
+ rect = buttonLayRect.Rect();
+ buttonObj->iButtonControl->SetRect(rect);
+ buttonObj->iButtonControl->SetHighlightRect(rect);
+
+ // ...Next button icon
+ buttonObj->iButtonControl->SetIconSize(iconSize);
+
+ // Exit button
+ buttonObj = iButtonArray[0];
+ buttonObj->iButtonControl->SetButtonFlags(0);
+ pageButtonLayRect.LayoutRect( Rect(), AknLayoutScalable_Avkon::cell_graphic2_control_pane(cellVar,0) );
+ buttonLayRect.LayoutRect( pageButtonLayRect.Rect(), AknLayoutScalable_Avkon::bg_button_pane_cp05(bgVar));
+ rect = buttonLayRect.Rect();
buttonObj->iButtonControl->SetRect(rect);
buttonObj->iButtonControl->SetHighlightRect(rect);
- buttonObj->iButtonControl->SetIconScaleMode(EAspectRatioPreserved);
+
+ // ...Exit button icon
buttonObj->iButtonControl->SetIconSize(iconSize);
-
+
+ // Emotion/Special-char button
+ col = landScape? 6 : 4;
+ pageButtonLayRect.LayoutRect( Rect(), AknLayoutScalable_Avkon::cell_graphic2_control_pane(cellVar,col) );
+ buttonLayRect.LayoutRect( pageButtonLayRect.Rect(), AknLayoutScalable_Avkon::bg_button_pane_cp05(bgVar));
+ rect = buttonLayRect.Rect();
+ for ( TInt i = 3; i < iButtonArray.Count();i++ )
+ {
+ buttonObj = iButtonArray[i];
+ buttonObj->iButtonControl->SetButtonFlags(0);
+ buttonObj->iButtonControl->SetRect(rect);
+ buttonObj->iButtonControl->SetHighlightRect(rect);
+
+ // ...its icon
+ buttonObj->iButtonControl->SetIconSize(iconSize);
+ }
+ TRAP_IGNORE(UpdateNextTableButtonL());
+
// Page text.
- TRect parentRect = Rect();
- AknLayoutUtils::LayoutLabel(iTitle, parentRect, AknLayoutScalable_Avkon::graphic2_pages_pane_t1(pageVariate).LayoutLine());
+ col = landScape? 3 : 2;
+ pageButtonLayRect.LayoutRect(Rect(), AknLayoutScalable_Avkon::cell_graphic2_control_pane(cellVar,col));
+ TAknTextComponentLayout textlayout = AknLayoutScalable_Avkon::cell_graphic2_control_pane_t1();
+ TRect titleRect( pageButtonLayRect.Rect() );
+ if ( !emotionEnabled )
+ {
+ // start complex dynamic logic to locate title rect when emotion is unable
+ TInt orientation = mirrored ? -1 : 1;
+ TInt newLeft = titleRect.iTl.iX + orientation*rect.Width()/2;
+ TPoint titleTL( newLeft, titleRect.iTl.iY );
+ titleRect.SetRect( titleTL, titleRect.Size() );
+ }
+ AknLayoutUtils::LayoutLabel(iTitle, titleRect, textlayout.LayoutLine());
// Page text color
TAknLayoutText textLayout;
- textLayout.LayoutText(parentRect, AknLayoutScalable_Avkon::graphic2_pages_pane_t1(pageVariate));
- TRect textRect = textLayout.TextRect();
+ textLayout.LayoutText( titleRect, textlayout );
TRgb color = textLayout.Color();
MAknsSkinInstance* skin = AknsUtils::SkinInstance();
if (skin)
@@ -1522,10 +1094,16 @@
void CAknSctPageNavi::UpdatePageTitleL() const
{
+ TInt pages = iCharMap->PageCount();
+ if ( pages < 2 )
+ {
+ iTitle->MakeVisible( EFalse );
+ return;
+ }
CArrayFix<TInt>* numbers = new(ELeave)CArrayFixFlat<TInt>(2);
- CleanupStack::PushL(numbers);
- numbers->AppendL(iCharMap->CurrentPage());
- numbers->AppendL(iCharMap->PageCount());
+ CleanupStack::PushL( numbers );
+ numbers->AppendL( iCharMap->CurrentPage() );
+ numbers->AppendL( pages );
HBufC* page =
StringLoader::LoadL(
R_AVKON_SPECIAL_CHARACTERS_PAGE_INDICATOR, *numbers, iEikonEnv);
@@ -1542,6 +1120,7 @@
TBool CAknSctPageNavi::EnterControl(TInt aX, TInt /*aY*/)
{
+ // Note, the button index is fixed on spite of mirrored case
if (IsVisible())
{
if ((aX >= 0) && (aX < iButtonArray.Count()))
@@ -1550,10 +1129,6 @@
buttonObj = iButtonArray[iButtonIndex];
buttonObj->SetFocused(EFalse);
TInt index = aX;
- if (AknLayoutUtils::LayoutMirrored()) // reverse.
- {
- index = iButtonArray.Count() - 1 - aX;
- }
buttonObj = iButtonArray[index];
if (buttonObj->IsEnabled())
{
@@ -1567,132 +1142,25 @@
return EFalse;
}
-void CAknSctPageNavi::MoveFocus(TInt aX, TInt /*aY*/)
- {
- TInt delta = aX;
- TInt buttonIndex = iButtonIndex + delta;
- for (TInt i = 0; i < iButtonArray.Count(); i++)
- {
- if (buttonIndex > iButtonArray.Count() - 1) // Next control.
- {
- if (!AknLayoutUtils::LayoutMirrored())
- {
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- // First table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
- }
- else
- {
- // First radio button.
- if (iExtension->iRadioButton &&
- iExtension->iRadioButton->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
- // Grid start.
- TInt yPos = iCharMap->ColMin(0);
- if (iExtension->EnterControl(iCharMap->RowMin(yPos),yPos))
- {
- LeaveControl();
- break;
- }
- }
- }
- else
- {
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- // Grid end.
- TInt yPos = iCharMap->ColMax(0);
- if (iExtension->EnterControl(iCharMap->RowMax(yPos),yPos))
- {
- LeaveControl();
- break;
- }
- }
- else
- {
- // Last table button.
- TInt xPos = iCharMap->TableCount() - 1;
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(xPos,0))
- {
- LeaveControl();
- break;
- }
- }
- }
- break;
- }
- else if (buttonIndex < 0) // Prev control
- {
- if (!AknLayoutUtils::LayoutMirrored())
- {
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- // Grid end.
- TInt yPos = iCharMap->ColMax(0);
- if (iExtension->EnterControl(iCharMap->RowMax(yPos),yPos))
- {
- LeaveControl();
- break;
- }
- }
- else
- {
- // Last table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(iCharMap->TableCount()-1,0))
- {
- LeaveControl();
- break;
- }
- }
- }
- else
- {
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- // First table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
- }
- else
- {
- // Grid start.
- TInt yPos = iCharMap->ColMin(0);
- if (iExtension->EnterControl(iCharMap->RowMin(yPos),yPos))
- {
- LeaveControl();
- break;
- }
- }
- }
- }
-
- if (iButtonArray[buttonIndex]->IsEnabled()) // This control
- {
- CAknSctNaviButton* buttonObj;
- buttonObj = iButtonArray[iButtonIndex];
- buttonObj->SetFocused(EFalse);
- iButtonIndex = buttonIndex;
- buttonObj = iButtonArray[iButtonIndex];
- buttonObj->SetFocused(ETrue);
- break;
- }
- buttonIndex += (delta < 0) ? -1 : 1;
- }
+void CAknSctPageNavi::MoveFocus(TInt aX, TInt aY )
+ {
+ (void)aX;
+ (void)aY;
+ }
+
+void CAknSctPageNavi::MoveFocus(TBool aInternalMove, TInt aX, TInt aY )
+ {
+ if ( aInternalMove )
+ {
+ EnterControl( aX, 0 );
+ }
+ else
+ {
+ if (iExtension->EnterControl( aX, aY ) )
+ {
+ LeaveControl();
+ }
+ }
}
TBool CAknSctPageNavi::LeaveControl()
@@ -1709,6 +1177,136 @@
return EFalse;
}
+
+void CAknSctPageNavi::TableExitL()
+ {
+ if(!iIdle)
+ {
+ iIdle = CIdle::NewL(CActive::EPriorityStandard);
+ }
+
+ iIdle->Cancel();
+ iIdle->Start(TCallBack(TableExitCallBackL, this));
+ }
+
+TInt CAknSctPageNavi::TableExitCallBackL(TAny* aThis)
+ {
+ ((CAknSctPageNavi*)aThis)->DoTableExitL();
+ return KErrNone;
+ }
+
+void CAknSctPageNavi::DoTableExitL()
+ {
+ iCharMap->SetStatusChanged(EAknCharSelectedTableExitButton);
+ }
+
+void CAknSctPageNavi::NextTableL()
+ {
+ if(!iIdle)
+ {
+ iIdle = CIdle::NewL(CActive::EPriorityStandard);
+ }
+
+ iIdle->Cancel();
+ iIdle->Start(TCallBack(NextTableCallBackL, this));
+ }
+
+TInt CAknSctPageNavi::NextTableCallBackL(TAny* aThis)
+ {
+ ((CAknSctPageNavi*)aThis)->DoNextTableL();
+ return KErrNone;
+ }
+
+void CAknSctPageNavi::DoNextTableL()
+ {
+ iCharMap->SetStatusChanged(EAknCharSelectedNextTableButton);
+ }
+
+void CAknSctPageNavi::UpdateNextTableButtonL()
+ {
+
+ TBool isFocused = EFalse;
+
+ // table switch buttons stay in one place.
+ for(TInt index(3); index<iButtonArray.Count(); index++)
+ {
+ CAknSctNaviButton* buttonObj = iButtonArray[index];
+ if(buttonObj->IsEnabled())
+ {
+ isFocused = buttonObj->IsFocused();
+ }
+ }
+
+ // fresh focused button
+ for (TInt index(1); index<iButtonArray.Count(); index++)
+ {
+ CAknSctNaviButton* buttonObj = iButtonArray[index];
+ if ( index == EAknSctPageNaviPrevPage
+ || index == EAknSctPageNaviNextPage )
+ {
+ // No need to display Prev/Next
+ if ( iCharMap->PageCount() < 2 )
+ {
+ buttonObj->SetEnabled(EFalse);
+ }
+ continue;
+ }
+ if (iCharMap->TableCount() > 1)
+ {
+ switch (iCharMap->NextTableCase())
+ {
+ case EAknCharMapTableSpecialChar:
+ {
+ TBool isShown = EFalse;
+ if(iExtension->IsShowingEmotion())
+ {
+ isShown = (buttonObj->iButtonId==EAknSctTableNaviSpecialChar);
+ }
+ else
+ {
+ isShown = (buttonObj->iButtonId==EAknSctTableNaviEmotion);
+ }
+ buttonObj->SetEnabled(isShown);
+ buttonObj->SetFocused(isShown && isFocused);
+ if(isShown && isFocused)
+ {
+ iButtonIndex = index;
+ }
+ }
+ break;
+
+ default:
+ buttonObj->SetEnabled(EFalse);
+ break;
+ }
+ }
+ else
+ {
+ buttonObj->SetEnabled(EFalse);
+ }
+ }
+ }
+
+TInt CAknSctPageNavi::LastButton() const
+ {
+ TBool emotionEnable = iExtension->IsEmotionEnabled();
+ if ( emotionEnable )
+ {
+ return iExtension->IsShowingEmotion()?EAknSctTableNaviSpecialChar:EAknSctTableNaviEmotion;
+ }
+ else if ( iCharMap->PageCount() < 2 && !emotionEnable )
+ {
+ // Only one page, must have no SC/Emotion also, left Exit only.
+ return EAknSctTableNaviExit;
+ }
+ else
+ {
+ // emotion doesn't support, no SC/Emotion icon then
+ TBool mirrored = AknLayoutUtils::LayoutMirrored();
+ return mirrored ? EAknSctPageNaviPrevPage : EAknSctPageNaviNextPage;
+ }
+ }
+
// ----------------------------------------------------------------------------
// Category button class implementation
// ----------------------------------------------------------------------------
@@ -1758,680 +1356,6 @@
// ----------------------------------------------------------------------------
-// Radio button class implementation
-// ----------------------------------------------------------------------------
-//
-CAknSctRadioButton::CAknSctRadioButton()
- {
- }
-
-CAknSctRadioButton::CAknSctRadioButton(
- CAknCharMap* aCharMap,
- CAknCharMapExtension* aExtension)
- :iExtension(aExtension),
- iCharMap(aCharMap)
- {
- }
-
-CAknSctRadioButton::~CAknSctRadioButton()
- {
- iButtonArray.ResetAndDestroy();
- iButtonArray.Close();
- }
-
-TInt CAknSctRadioButton::CountComponentControls() const
- {
- return iButtonArray.Count();
- }
-
-CCoeControl* CAknSctRadioButton::ComponentControl( TInt aIndex ) const
- {
- if (aIndex < iButtonArray.Count())
- {
- return iButtonArray[aIndex]->iButtonControl;
- }
- return NULL;
- }
-
-TKeyResponse CAknSctRadioButton::OfferKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode /*aModifiers*/)
- {
- TKeyResponse responce = EKeyWasNotConsumed;
- TUint code=aKeyEvent.iCode;
- switch (code)
- {
- case EKeyEnter:
- case EKeyOK:
- {
- if (AknLayoutUtils::PenEnabled())
- {
- // Grid.
- TInt yPos = iCharMap->ColMin(0);
- TInt xPos = iCharMap->RowMin(yPos);
- if (iExtension->EnterControl(xPos,yPos))
- {
- CAknButton* buttonCtrlObj;
- TInt currentIndex;
- TInt newIndex;
- for (TInt index=0; index < iButtonArray.Count(); index++)
- {
- buttonCtrlObj = iButtonArray[index]->iButtonControl;
- currentIndex = buttonCtrlObj->StateIndex();
- if (index == iButtonIndex)
- {
- newIndex = KAknSctRadioOn;
- }
- else
- {
- newIndex = KAknSctRadioOff;
- }
- if (currentIndex != newIndex)
- {
- buttonCtrlObj->SetCurrentState(newIndex, ETrue);
- if (newIndex == KAknSctRadioOn)
- {
- iExtension->iCurrentCategory =
- iButtonArray[index]->iButtonId;
- iCharMap->SetStatusChanged(EAknCharChangedCategory);
- }
- }
- }
- LeaveControl();
- }
- }
- responce = EKeyWasConsumed;
- }
- break;
- case EKeyLeftArrow:
- case '4':
- {
- responce = EKeyWasConsumed;
- if (AknLayoutUtils::PenEnabled())
- {
- TInt yPos = iButtonIndex - 1;
- if (iCharMap->RowMax(yPos) < 0)
- {
- if (Layout_Meta_Data::IsLandscapeOrientation())
- {
- if (iExtension->iRadioButton)
- {
- // Right page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(1,0))
- {
- LeaveControl();
- break;
- }
- }
- }
- // Next button up.
- MoveFocus(0,-1);
- break;
- }
- else
- {
- //Previous row end.
- TInt xPos = iCharMap->RowMax(yPos);
- if (iExtension->EnterControl(xPos,yPos))
- {
- LeaveControl();
- break;
- }
- }
- break;
- }
- // Move by grid.
- iCharMap->TakeFocus();
- TInt xPos = iCharMap->CursorPos().iX;
- TInt yPos = iCharMap->CursorPos().iY;
- if (xPos == 0)
- {
- iCharMap->MoveFocus(-1,0);
- }
- iCharMap->ShowFocus();
- }
- break;
- case EKeyRightArrow:
- case '6':
- {
- responce = EKeyWasConsumed;
- if (AknLayoutUtils::PenEnabled())
- {
- TInt yPos = iButtonIndex;
- if (iCharMap->RowMax(yPos) < 0)
- {
- // Next button down.
- MoveFocus(0,1);
- break;
- }
- else
- {
- // 1st cell in the row.
- if (iExtension->EnterControl(0,yPos))
- {
- LeaveControl();
- break;
- }
- }
- break;
- }
- // Move by grid.
- iCharMap->TakeFocus();
- TInt xPos = iCharMap->CursorPos().iX;
- TInt yPos = iCharMap->CursorPos().iY;
- if (xPos == iCharMap->RowMax(yPos))
- {
- iCharMap->MoveFocus(1,0);
- }
- iCharMap->ShowFocus();
- }
- break;
- case EKeyDownArrow:
- case '8':
- {
- MoveFocus(0, 1);
- responce = EKeyWasConsumed;
- }
- break;
- case EKeyUpArrow:
- case '2':
- {
- MoveFocus(0,-1);
- responce = EKeyWasConsumed;
- }
- break;
- default:
- break;
- }
- return responce;
- }
-
-void CAknSctRadioButton::ConstructFromResourceL(TResourceReader& aReader)
- {
- TInt counts = aReader.ReadInt16();
- TResourceReader reader;
- TInt categorybutton_id;
- TInt sctcase_id;
- TInt resId;
- CAknSctCategoryButton* buttonObj;
- TBool allowCreation;
-
- for (TInt index=0; index < counts; index++)
- {
- allowCreation = EFalse;
- // button id
- categorybutton_id = aReader.ReadInt16();
- sctcase_id = aReader.ReadInt16();
- switch (categorybutton_id)
- {
- case EAknSCTCategoryButtonHalfCase:
- case EAknSCTCategoryButtonFullCase:
- allowCreation = ETrue;
- break;
- case EAknSCTCategoryButtonPicto:
- if (iExtension->iPictographsBuffer)
- {
- allowCreation = ETrue;
- }
- break;
- case EAknSCTCategoryButtonPicto1:
- case EAknSCTCategoryButtonPicto2:
- if (iExtension->iPictographsBuffer &&
- iExtension->iPictographsBufferGrouping)
- {
- allowCreation = ETrue;
- }
- break;
- default:
- break;
- }
-
- if (allowCreation)
- {
- // read the button resource
- resId = aReader.ReadInt32();
- iCoeEnv->CreateResourceReaderLC( reader, resId );
- // create Category button object
- buttonObj = CAknSctCategoryButton::NewL(
- *this, reader, categorybutton_id, sctcase_id);
- // Append button
- iButtonArray.Append(buttonObj);
- CleanupStack::PopAndDestroy(); // reader
- }
- else
- {
- // Skip data
- resId = aReader.ReadInt32();
- }
- }
-
- }
-
-void CAknSctRadioButton::HandlePointerEventL(const TPointerEvent& aPointerEvent)
- {
- TRect rect(Rect());
- if (AknLayoutUtils::PenEnabled() && rect.Contains(aPointerEvent.iPosition))
- {
- if (aPointerEvent.iType == TPointerEvent::EButton1Down)
- {
- CAknButton* buttonCtrlObj;
- TRect rectButton;
- TInt currentIndex;
- TInt newIndex;
- for (TInt index=0; index < iButtonArray.Count(); index++)
- {
- buttonCtrlObj = iButtonArray[index]->iButtonControl;
- rectButton = buttonCtrlObj->Rect();
- currentIndex = buttonCtrlObj->StateIndex();
-
- if (rectButton.Contains(aPointerEvent.iPosition))
- {
- newIndex = KAknSctRadioOn;
- }
- else
- {
- newIndex = KAknSctRadioOff;
- }
- if (currentIndex != newIndex)
- {
- buttonCtrlObj->SetCurrentState(newIndex, ETrue);
- if (newIndex == KAknSctRadioOn)
- {
- if (AknLayoutUtils::PenEnabled())
- {
- iButtonIndex = index;
- }
- iExtension->iCurrentCategory =
- iButtonArray[index]->iButtonId;
- iCharMap->SetStatusChanged(EAknCharChangedCategory);
- }
- }
- }
- }
- else if (aPointerEvent.iType == TPointerEvent::EDrag)
- {
- }
- else if (aPointerEvent.iType == TPointerEvent::EButton1Up)
- {
- }
- }
- else
- {
- CCoeControl::HandlePointerEventL(aPointerEvent);
- }
- }
-
-TSize CAknSctRadioButton::MinimumSize()
- {
- TAknLayoutRect oneButtonLayRect;
- if (!AknLayoutUtils::PenEnabled())
- {
- TAknLayoutScalableParameterLimits charMapDialogVariety =
- AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-
- // Main pane without softkeys
- TRect mainPaneRect;
- if(!AknLayoutUtils::LayoutMetricsRect(
- AknLayoutUtils::EPopupParent, mainPaneRect))
- {
- mainPaneRect = iAvkonAppUi->ClientRect();
- }
-
- // Calc the variety
- TInt maxVariety = charMapDialogVariety.LastVariety();
-
- TAknLayoutRect popupGridLayRect;
- popupGridLayRect.LayoutRect(mainPaneRect,
- AknLayoutScalable_Avkon::popup_grid_graphic_window(maxVariety));
-
- // Calculate the size relatively
- TRect relativeDialog(TPoint(0,0),popupGridLayRect.Rect().Size());
-
- // Get the layout of the actual character grid with scrollbar
- TAknLayoutRect gridWithScrollLayRect;
- gridWithScrollLayRect.LayoutRect(relativeDialog,
- AknLayoutScalable_Avkon::listscroll_popup_graphic_pane());
-
- TAknLayoutRect categoryButtonLayRect;
- categoryButtonLayRect.LayoutRect(gridWithScrollLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_sct_catagory_button_pane());
-
- oneButtonLayRect.LayoutRect(categoryButtonLayRect.Rect(),
- AknLayoutScalable_Avkon::cell_sct_catagory_button_pane());
- }
- else
- {
- TAknLayoutRect popupGridLayRect;
- popupGridLayRect.LayoutRect(iAvkonAppUi->ApplicationRect(),
- AknLayoutScalable_Avkon::popup_grid_graphic2_window(0));
-
- TAknLayoutRect oneButtonLayRect;
- TAknLayoutRect categoryButtonLayRect;
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- oneButtonLayRect.LayoutRect(popupGridLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic2_control_pane(4));
-
- categoryButtonLayRect.LayoutRect(popupGridLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic2_catg_pane(0));
- }
- else
- {
- oneButtonLayRect.LayoutRect(popupGridLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic2_control_pane(5));
-
- categoryButtonLayRect.LayoutRect(popupGridLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic2_catg_pane(1));
-
- }
- }
-
- TSize size(oneButtonLayRect.Rect().Width(),
- oneButtonLayRect.Rect().Height() * iButtonArray.Count());
- return size;
- }
-
-void CAknSctRadioButton::SizeChanged()
- {
- TRect base;
- if (!AknLayoutUtils::PenEnabled())
- {
- TAknLayoutScalableParameterLimits charMapDialogVariety =
- AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-
- // Main pane without softkeys
- TRect mainPaneRect;
- if(!AknLayoutUtils::LayoutMetricsRect(
- AknLayoutUtils::EPopupParent, mainPaneRect))
- {
- mainPaneRect = iAvkonAppUi->ClientRect();
- }
-
- // Calc the variety
- TInt maxVariety = charMapDialogVariety.LastVariety();
-
- TAknLayoutRect popupGridLayRect;
- popupGridLayRect.LayoutRect(mainPaneRect,
- AknLayoutScalable_Avkon::popup_grid_graphic_window(maxVariety));
-
- // Calculate the size relatively
- TRect relativeDialog(TPoint(0,0), popupGridLayRect.Rect().Size());
-
- // Get the layout of the actual character grid with scrollbar
- TAknLayoutRect gridWithScrollLayRect;
- gridWithScrollLayRect.LayoutRect(relativeDialog,
- AknLayoutScalable_Avkon::listscroll_popup_graphic_pane());
-
- TAknLayoutRect categoryButtonLayRect;
- categoryButtonLayRect.LayoutRect(gridWithScrollLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_sct_catagory_button_pane());
-
- TAknLayoutRect oneButtonLayRect;
- oneButtonLayRect.LayoutRect(categoryButtonLayRect.Rect(),
- AknLayoutScalable_Avkon::cell_sct_catagory_button_pane());
-
- base = oneButtonLayRect.Rect();
- }
- else
- {
- TAknLayoutRect popupGridLayRect;
- popupGridLayRect.LayoutRect(iAvkonAppUi->ApplicationRect(),
- AknLayoutScalable_Avkon::popup_grid_graphic2_window(0));
-
- TAknLayoutRect oneButtonLayRect;
- TAknLayoutRect categoryButtonLayRect;
- if ( !Layout_Meta_Data::IsLandscapeOrientation() )
- {
- oneButtonLayRect.LayoutRect(popupGridLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic2_control_pane(4));
-
- categoryButtonLayRect.LayoutRect(popupGridLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic2_catg_pane(0));
- }
- else
- {
- oneButtonLayRect.LayoutRect(popupGridLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic2_control_pane(5));
-
- categoryButtonLayRect.LayoutRect(popupGridLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic2_catg_pane(1));
-
- }
- base.iTl = categoryButtonLayRect.Rect().iTl;
- base.SetSize(oneButtonLayRect.Rect().Size());
- }
-
- if (iButtonArray.Count() > 0)
- {
- CAknButton* buttonCtrlObj;
-
- TMargins8 margins;
- margins.iTop = 1;
- margins.iBottom = 0;
- margins.iLeft = 0;
- margins.iRight = 0;
-
- // Change the size of buttons
- for (TInt index=0; index < iButtonArray.Count(); index++)
- {
- buttonCtrlObj = iButtonArray[index]->iButtonControl;
- if (buttonCtrlObj)
- {
- if (AknLayoutUtils::PenEnabled())
- {
- buttonCtrlObj->SetHighlightRect(base);
- }
- buttonCtrlObj->SetRect( base );
- buttonCtrlObj->SetIconSize( base.Size() );
- buttonCtrlObj->SetMargins( margins );
- buttonCtrlObj->SetIconScaleMode(EAspectRatioPreserved);
- base.Move(TPoint(0, base.Size().iHeight));
- }
- }
- }
- }
-
-void CAknSctRadioButton::Draw(const TRect& /*aRect*/) const
- {
- // no draw
- }
-
-/**
- * Returns ETrue if the aFlag bitfield in iFlags is set, EFalse if it
- * is clear
- */
-inline TInt CAknSctRadioButton::Count() const
- {
- return iButtonArray.Count();
- }
-
-void CAknSctRadioButton::SetCurrentCategory(TInt aCategory)
- {
- CAknSctCategoryButton* buttonObj;
- TInt status;
-
- for (TInt index=0; index < iButtonArray.Count(); index++)
- {
- buttonObj = iButtonArray[index];
- status = (buttonObj->iButtonId == aCategory)?
- KAknSctRadioOn : KAknSctRadioOff;
- buttonObj->iButtonControl->SetCurrentState(status, ETrue);
- }
- }
-
-void CAknSctRadioButton::SetValidSctCase(TInt aSctCase)
- {
- CAknSctCategoryButton* buttonObj;
-
- for (TInt index=0; index < iButtonArray.Count(); index++)
- {
- buttonObj = iButtonArray[index];
- if (buttonObj->iSctCaseId == aSctCase)
- {
- buttonObj->iValid = ETrue;
- break;
- }
- // Here is the special case for Half-width/Lower/Upper
- else if (buttonObj->iSctCaseId == EAknSCTHalfCase
- && (aSctCase == EAknSCTLowerCase
- || aSctCase == EAknSCTUpperCase)
- )
- {
- buttonObj->iValid = ETrue;
- break;
- }
- }
- }
-
-void CAknSctRadioButton::RemoveInvalidButton()
- {
- CAknSctCategoryButton* buttonObj;
-
- for (TInt index=iButtonArray.Count()-1; index >= 0; index--)
- {
- buttonObj = iButtonArray[index];
- if (!buttonObj->iValid)
- {
- if (buttonObj->iSctCaseId == EAknSCTHalfCase)
- {
- if (iButtonArray.Count() > 1)
- {
- delete buttonObj;
- iButtonArray.Remove(index);
- }
- }
- else
- {
- delete buttonObj;
- iButtonArray.Remove(index);
- }
- }
- }
- }
-
-CCoeControl* CAknSctRadioButton::FocusedControl()
- {
- return this;
- }
-
-TBool CAknSctRadioButton::EnterControl(TInt /*aX*/, TInt aY)
- {
- if (IsVisible())
- {
- if ((aY >= 0) && (aY < Count()))
- {
- if (iExtension->iHasCategoryButtonUi)
- {
- iEntryIndex = aY;
- iExtension->iFocusHandler = this;
- if (AknLayoutUtils::PenEnabled())
- {
- iButtonIndex = aY;
- CAknSctCategoryButton* buttonObj =
- iButtonArray[iButtonIndex];
- buttonObj->SetFocused(ETrue);
- }
- return ETrue;
- }
- }
- }
- return EFalse;
- }
-
-void CAknSctRadioButton::MoveFocus(TInt /*aX*/, TInt aY)
- {
- CAknSctCategoryButton* buttonObj;
- CAknButton* buttonCtrlObj;
- TInt buttonIndex = iButtonIndex + aY;
- if (buttonIndex > iButtonArray.Count() - 1)
- {
- if (!AknLayoutUtils::PenEnabled())
- {
- // First radio button.
- buttonIndex = 0;
- }
- else
- {
- if (!Layout_Meta_Data::IsLandscapeOrientation())
- {
- // Left page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(0,0))
- {
- LeaveControl();
- return;
- }
- }
- else
- {
- // First table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(0,0))
- {
- LeaveControl();
- return;
- }
- }
- }
- }
- else if (buttonIndex < 0)
- {
- if (!AknLayoutUtils::PenEnabled())
- {
- // Last radio button.
- buttonIndex = iButtonArray.Count() - 1;
- }
- else
- {
- // First table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(0,0))
- {
- LeaveControl();
- return;
- }
- }
- }
-
- if (!AknLayoutUtils::PenEnabled())
- {
- buttonObj = iButtonArray[iButtonIndex];
- buttonCtrlObj = buttonObj->iButtonControl;
- buttonCtrlObj->SetCurrentState(KAknSctRadioOff, ETrue);
- iButtonIndex = buttonIndex;
- buttonObj = iButtonArray[iButtonIndex];
- buttonCtrlObj = buttonObj->iButtonControl;
- buttonCtrlObj->SetCurrentState(KAknSctRadioOn, ETrue);
- iExtension->iCurrentCategory =
- iButtonArray[buttonIndex]->iButtonId;
- iCharMap->SetStatusChanged(EAknCharChangedCategory);
- }
- else
- {
- buttonObj = iButtonArray[iButtonIndex];
- buttonObj->SetFocused(EFalse);
- iButtonIndex = buttonIndex;
- buttonObj = iButtonArray[iButtonIndex];
- buttonObj->SetFocused(ETrue);
- }
- }
-
-TBool CAknSctRadioButton::LeaveControl()
- {
- for (TInt i = 0; i < iButtonArray.Count(); i++ )
- {
- iButtonArray[i]->SetFocused(EFalse);
- }
- return ETrue;
- }
-
-TBool CAknSctRadioButton::ExitWithKey(TInt /*aKeycode*/)
- {
- return EFalse;
- }
-
-// ----------------------------------------------------------------------------
// Extension class implementation
// ----------------------------------------------------------------------------
//
@@ -2464,11 +1388,9 @@
delete iCharsQwerty;
delete iBgContext;
- delete iRadioButton;
delete iTitleBuf;
delete iPageNavi;
- delete iTableNavi;
delete iCategoryTitle;
delete iCategoryEntry;
delete iEntryBuf;
@@ -2901,17 +1823,6 @@
return;
iExtension->iFlags = 0x00;
-
- // if feature language is Japanese
- CAknEnv* env = CAknEnv::Static();
- if (env)
- {
- if (env->IsFeatureLanguage(KFeatureIdJapanese))
- {
- iExtension->iJapaneseSctUi = ETrue;
- iExtension->iHasCategoryButtonUi = ETrue;
- }
- }
iExtension->iFocusHandler = iExtension;
iExtension->SetCharMapControl(this);
@@ -2962,6 +1873,7 @@
iPictographCases.Close();
iPictographPages.Close();
MTouchFeedback* feedback = MTouchFeedback::Instance();
+
if ( feedback != NULL )
{
feedback->RemoveFeedbackForControl( this );
@@ -2978,11 +1890,6 @@
specialCharItemLayout =
AknLayoutScalable_Avkon::cell_graphic2_pane_t1(1);
}
- else if (IsJapaneseSctUi())
- {
- specialCharItemLayout =
- AknLayoutScalable_Avkon::cell_graphic2_pane_t1(2);
- }
else
{
specialCharItemLayout =
@@ -3006,11 +1913,21 @@
CountMaxColumnsAndCellSizes();
SizeChanged();
- // load Emotion icon resource, but not load images
- TSize iconSize(iGridItemWidth,iGridItemHeight);
- iconSize.iWidth = iconSize.iWidth * 3 / 4;
- iconSize.iHeight = iconSize.iHeight * 3 / 4;
- Extension()->SetEmotionSize(iconSize);
+ // set smiley size
+ TAknWindowComponentLayout cellGraphicsLayout;
+ if ( Layout_Meta_Data::IsLandscapeOrientation() )
+ {
+ cellGraphicsLayout = AknLayoutScalable_Avkon::cell_graphic2_pane_g5(1);
+ }
+ else
+ {
+ cellGraphicsLayout = AknLayoutScalable_Avkon::cell_graphic2_pane_g5(0);
+ }
+
+ TAknLayoutRect cellGraphicsRect;
+ cellGraphicsRect.LayoutRect(TRect(TSize(iGridItemWidth,iGridItemHeight)), cellGraphicsLayout);
+
+ Extension()->SetEmotionSize(cellGraphicsRect.Rect().Size());
}
@@ -3074,20 +1991,8 @@
// Alternate components.
if (AknLayoutUtils::PenEnabled())
{
- if (iExtension->iHasCategoryButtonUi)
- {
- EnableCategoryInputFieldL();
- EnableCategoryButtonsL();
- }
EnableNavigationButtonsL();
}
- else
- {
- if (iExtension->iHasCategoryButtonUi)
- {
- EnableCategoryButtonsL();
- }
- }
// Offscreen background.
if (offscreen)
@@ -3243,10 +2148,6 @@
}
iExtension->iCurrentCategory = Category();
- if (iExtension->iRadioButton)
- {
- iExtension->iRadioButton->SetCurrentCategory(iExtension->iCurrentCategory);
- }
// Create and set the scb visible even though there is nothing to scroll
delete iSBFrame;
@@ -3262,12 +2163,6 @@
}
iExtension->LoadEmotionTumbnails(*iChars);
-
- CAknSctPageNavi* pageNavi = Extension()->iPageNavi;
- if(pageNavi)
- {
- pageNavi->MakeVisible(PageCount()>1);
- }
SetSmileyAnimationActivityInCurrentPageL(ETrue);
@@ -3469,40 +2364,21 @@
case EKeyLeftArrow:
case '4':
{
- if (iExtension->iRadioButton && (iCursorPos.iX == 0)) // Radio button.
- {
- if (iExtension->iRadioButton->EnterControl(iCursorPos.iX,iCursorPos.iY))
- {
- LeaveControl();
- break;
- }
- }
-
if (AknLayoutUtils::PenEnabled())
{
if (!iIsMirrored)
{
if ((iCursorPos.iX == 0) && (iCursorPos.iY == ColMin(0)))
{
- if (!Layout_Meta_Data::IsLandscapeOrientation())
+ // western, move left from first one in grid, focus pageNavi last button
+ if ( iExtension->iPageNavi )
{
- // Last table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(TableCount() - 1,0))
- {
+ TInt maxButt = iExtension->iPageNavi->LastButton();
+ if ( iExtension->iPageNavi->EnterControl( maxButt,0 ) )
+ {
LeaveControl();
break;
- }
- }
- else
- {
- // Right page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(1,0))
- {
- LeaveControl();
- break;
- }
+ }
}
}
}
@@ -3510,25 +2386,12 @@
{
if (((iCursorPos.iY == ColMax(0)) && (iCursorPos.iX == RowMax(ColMax(0)))))
{
- if (!Layout_Meta_Data::IsLandscapeOrientation())
+ // mirrored, move left from last one in grid, focus pgNavi first button
+ if (iExtension->iPageNavi &&
+ iExtension->iPageNavi->EnterControl(0,0))
{
- // Left page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
- }
- else
- {
- // First table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
+ LeaveControl();
+ break;
}
}
}
@@ -3539,17 +2402,6 @@
case EKeyRightArrow:
case '6':
{
- if (iExtension->iRadioButton &&
- (iCursorPos.iX == RowMax(iCursorPos.iY)) &&
- (iCursorPos.iY <= (iExtension->iRadioButton->Count() - 2)))
- {
- // Radio button.
- if (iExtension->iRadioButton->EnterControl(iCursorPos.iX,iCursorPos.iY+1))
- {
- LeaveControl();
- break;
- }
- }
if (AknLayoutUtils::PenEnabled())
{
if (!iIsMirrored)
@@ -3557,25 +2409,12 @@
if ((iCursorPos.iY == ColMax(0)) &&
(iCursorPos.iX == RowMax(ColMax(0))))
{
- if (!Layout_Meta_Data::IsLandscapeOrientation())
+ // western, move right from last one in grid, focus pgNavi first button
+ if (iExtension->iPageNavi &&
+ iExtension->iPageNavi->EnterControl(0,0))
{
- // Left page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
- }
- else
- {
- // First table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
+ LeaveControl();
+ break;
}
}
}
@@ -3584,22 +2423,11 @@
if ((iCursorPos.iY == ColMin(0)) &&
(iCursorPos.iX == 0))
{
- if (!Layout_Meta_Data::IsLandscapeOrientation())
+ // mirrored, move right from first one in grid, focus pgNavi last button
+ if ( iExtension->iPageNavi )
{
- // First table button.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
-
- }
- else
- {
- // Left page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(1,0))
+ TInt maxButt = iExtension->iPageNavi->LastButton();
+ if ( iExtension->iPageNavi->EnterControl( maxButt,0 ) )
{
LeaveControl();
break;
@@ -3616,59 +2444,54 @@
{
if (AknLayoutUtils::PenEnabled())
{
- if (iCursorPos.iY == ColMin(iCursorPos.iX))
+ if ( iCursorPos.iY == ColMin(iCursorPos.iX) )
{
- if (!iExtension->iRadioButton && iCursorPos.iX < TableCount())
+ // cell is at the top row, need to go on to PageNavi
+ if ( iExtension->iPageNavi )
{
- // Table button up.
- if ( iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(iCursorPos.iX,0))
+ TInt aX = 0;
+
+ if ( iCursorPos.iX == MaxCols() - 1 )
+ {
+ aX = iExtension->iPageNavi->LastButton();
+ }
+ else if ( iCursorPos.iX == MaxCols() - 2 )
+ {
+ // a bit complex as unable-emotion SCT has no SC/Emotion icon
+ if ( iExtension->IsEmotionEnabled() )
+ {
+ aX = iIsMirrored? 1 : 2;
+ }
+ else
+ {
+ aX = -1;
+ }
+ }
+ else if (iCursorPos.iX == 1 )
+ {
+ aX = iIsMirrored? 2 : 1;
+ }
+ else if ( iCursorPos.iX == 0 )
+ {
+ // first button in PageNavi
+ aX = 0;
+ }
+ else
+ {
+ aX = -1;
+ }
+ if ( iExtension->iPageNavi->EnterControl( aX,0 ) )
{
LeaveControl();
break;
}
}
- else
- {
- if (iCursorPos.iX == MaxCols() - 1)
- {
- // Right page button.
- if ( iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(1,0))
- {
- LeaveControl();
- break;
- }
- }
- if (Layout_Meta_Data::IsLandscapeOrientation())
- {
- if ((!iExtension->iRadioButton &&
- (iCursorPos.iX == TableCount())) ||
- ((iExtension->iRadioButton) &&
- (iCursorPos.iX == MaxCols()-2)))
- {
- // Left page button.
- if ( iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
- }
- }
- // Grid bottom row.
- if (ColMax(0) > ColMax(iCursorPos.iX))
- {
- EnterControl(RowMax(ColMax(0)), ColMax(0));
- break;
- }
- EnterControl(iCursorPos.iX, ColMax( iCursorPos.iX));
- break;
- }
+ EnterControl(iCursorPos.iX, ColMax( iCursorPos.iX));
+ break;
}
}
- MoveFocus(0,-1);
- break;
+ MoveFocus(0,-1);
+ break;
}
case EKeyDownArrow:
case '8':
@@ -3677,53 +2500,52 @@
{
if (iCursorPos.iY == ColMax(iCursorPos.iX))
{
+ if ( iExtension->iPageNavi )
+ {
+ TInt aX = 0;
+
+ if ( iCursorPos.iX == MaxCols() - 1 )
+ {
+ aX = iExtension->iPageNavi->LastButton();
+ }
+ else if ( iCursorPos.iX == MaxCols() - 2 )
+ {
+ // a bit complex as unable-emotion SCT has no SC/Emotion icon
+ if ( iExtension->IsEmotionEnabled() )
+ {
+ aX = iIsMirrored? 1 : 2;
+ }
+ else
+ {
+ aX = -1;
+ }
+ }
+ else if ( iCursorPos.iX == 1 )
+ {
+ aX = iIsMirrored? 2 : 1;
+ }
+ else if ( iCursorPos.iX == 0 )
+ {
+ // default: first button in PageNavi
+ aX = 0;
+ }
+ else
+ {
+ aX = -1;
+ }
+ if ( iExtension->iPageNavi->EnterControl( aX,0 ) )
+ {
+ LeaveControl();
+ break;
+ }
+ }
+ // cell is at bottom row
if (iCursorPos.iX > RowMax(ColMax(0)))
{
// Grid last item.
EnterControl(RowMax(ColMax(0)), ColMax(0));
break;
}
- if ((iCursorPos.iX == MaxCols() - 1) ||
- (!Layout_Meta_Data::IsLandscapeOrientation() &&
- iExtension->iRadioButton &&
- (iCursorPos.iX == MaxCols() - 2)))
- {
- // Right page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(1,0))
- {
- LeaveControl();
- break;
- }
- }
- if ((Layout_Meta_Data::IsLandscapeOrientation() &&
- !iExtension->iRadioButton &&
- (iCursorPos.iX == TableCount())) ||
- (!Layout_Meta_Data::IsLandscapeOrientation() &&
- (iCursorPos.iX == 0)) ||
- (Layout_Meta_Data::IsLandscapeOrientation() &&
- iExtension->iRadioButton &&
- (iCursorPos.iX == MaxCols() - 2)))
- {
- // Left page button.
- if (iExtension->iPageNavi &&
- iExtension->iPageNavi->EnterControl(0,0))
- {
- LeaveControl();
- break;
- }
- }
- if (!iExtension->iRadioButton &&
- iCursorPos.iX < TableCount())
- {
- // Table button down.
- if (iExtension->iTableNavi &&
- iExtension->iTableNavi->EnterControl(iCursorPos.iX,0))
- {
- LeaveControl();
- break;
- }
- }
// Grid top row.
EnterControl(iCursorPos.iX, ColMin(iCursorPos.iX));
break;
@@ -3820,14 +2642,7 @@
gridWithScrollLayRect.LayoutRect(relativePopup, AknLayoutScalable_Avkon::listscroll_popup_graphic_pane());
TAknLayoutRect gridLayRect;
- if (iExtension->iHasCategoryButtonUi)
- {
- gridLayRect.LayoutRect(gridWithScrollLayRect.Rect(), AknLayoutScalable_Avkon::grid_graphic_popup_pane(2));
- }
- else
- {
- gridLayRect.LayoutRect(gridWithScrollLayRect.Rect(), AknLayoutScalable_Avkon::grid_graphic_popup_pane(0));
- }
+ gridLayRect.LayoutRect(gridWithScrollLayRect.Rect(), AknLayoutScalable_Avkon::grid_graphic_popup_pane(0));
// Grid.
TRect contentRect = Extension()->iMenuSct ? Rect() : gridLayRect.Rect();
@@ -3848,24 +2663,6 @@
iGridTopLeft.iX = contentRect.iTl.iX;
}
- // Category buttons.
- if (iExtension && iExtension->iHasCategoryButtonUi)
- {
- if (iExtension->iRadioButton)
- {
- TAknLayoutRect categoryButtonLayRect;
- categoryButtonLayRect.LayoutRect(gridWithScrollLayRect.Rect(),AknLayoutScalable_Avkon::grid_sct_catagory_button_pane());
-
- TAknLayoutRect oneButtonLayRect;
- oneButtonLayRect.LayoutRect(categoryButtonLayRect.Rect(),AknLayoutScalable_Avkon::cell_sct_catagory_button_pane());
-
- TSize size(oneButtonLayRect.Rect().Width(), oneButtonLayRect.Rect().Height()*iExtension->iRadioButton->Count());
- TRect rectRadio(categoryButtonLayRect.Rect().iTl, size);
- iExtension->iRadioButton->SetRect(rectRadio);
- }
- }
-
-
// Background context.
if(iExtension && iExtension->iBgContext)
{
@@ -3879,17 +2676,7 @@
}
else
{
-
- TInt variety;
- if (!IsJapaneseSctUi())
- {
- variety = Layout_Meta_Data::IsLandscapeOrientation() ? 3 : 1;
- if(TableCount() > 1) variety--;
- }
- else
- {
- variety = Layout_Meta_Data::IsLandscapeOrientation() ? 5 : 4;
- }
+ TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 7 : 6;
// Popup.
TAknLayoutRect popupGridLayRect;
@@ -3914,56 +2701,14 @@
iGridTopLeft.iX = gridRect.iTl.iX;
}
- // Category
- if (iExtension->iHasCategoryButtonUi && iExtension->iRadioButton) // Radio buttons.
- {
- TAknLayoutRect oneButtonLayRect;
- TAknLayoutRect categoryButtonLayRect;
- TInt oneButtonLayVariety, categoryButtonLayVariety;
-
- if (Layout_Meta_Data::IsLandscapeOrientation())
- {
- oneButtonLayVariety = 5;
- categoryButtonLayVariety = 1;
- }
- else
- {
- oneButtonLayVariety = 4;
- categoryButtonLayVariety = 0;
- }
-
- oneButtonLayRect.LayoutRect(popupGridRect, AknLayoutScalable_Avkon::grid_graphic2_control_pane(oneButtonLayVariety));
- categoryButtonLayRect.LayoutRect(popupGridRect, AknLayoutScalable_Avkon::grid_graphic2_catg_pane(categoryButtonLayVariety));
-
- TSize size(oneButtonLayRect.Rect().Width(),
- oneButtonLayRect.Rect().Height() * iExtension->iRadioButton->Count());
- TRect rectRadio(categoryButtonLayRect.Rect().iTl, size);
- iExtension->iRadioButton->SetRect(rectRadio);
- }
-
- // Table navigation.
- if (iExtension->iTableNavi)
- {
- TAknLayoutRect tableNaviLayRect;
- tableNaviLayRect.LayoutRect(popupGridRect, AknLayoutScalable_Avkon::grid_graphic2_control_pane(variety));
- iExtension->iTableNavi->SetRect(tableNaviLayRect.Rect());
- }
-
// Page navigation.
if (iExtension->iPageNavi)
{
- if (PageCount() > 1)
- {
- iExtension->iPageNavi->MakeVisible(ETrue);
-
- TAknLayoutRect pageNaviLayRect;
- pageNaviLayRect.LayoutRect(popupGridRect, AknLayoutScalable_Avkon::graphic2_pages_pane(variety));
- iExtension->iPageNavi->SetRect(pageNaviLayRect.Rect());
- }
- else
- {
- iExtension->iPageNavi->MakeVisible(EFalse);
- }
+ iExtension->iPageNavi->MakeVisible(ETrue);
+
+ TAknLayoutRect pageNaviLayRect;
+ pageNaviLayRect.LayoutRect(popupGridRect, AknLayoutScalable_Avkon::grid_graphic2_control_pane(variety));
+ iExtension->iPageNavi->SetRect(pageNaviLayRect.Rect());
}
// Background context.
@@ -4058,33 +2803,15 @@
}
// Sets alternate UI controls.
- if (iExtension->iHasCategoryButtonUi)
- {
- if (AknLayoutUtils::PenEnabled())
- {
- EnableCategoryInputFieldL();
- EnableNavigationButtonsL();
- }
- else
- {
- DisableCategoryInputFieldL();
- DisableNavigationButtonsL();
- }
- EnableCategoryButtonsL();
+ if (AknLayoutUtils::PenEnabled())
+ {
+ EnableNavigationButtonsL();
}
else
{
- DisableCategoryInputFieldL();
- DisableCategoryButtonsL();
- if (AknLayoutUtils::PenEnabled())
- {
- EnableNavigationButtonsL();
- }
- else
- {
- DisableNavigationButtonsL();
- }
- }
+ DisableNavigationButtonsL();
+ }
+
// and finally updates the page counts (from setcasetable)
iSpecialCharPages.Reset(); // reset the current page count for different charsets
@@ -4144,20 +2871,6 @@
{
if ( iExtension )
{
- if ( !iExtension->iTableNavi )
- {
- iExtension->iTableNavi = new(ELeave) CAknSctTableNavi(this, iExtension);
- iExtension->iTableNavi->SetContainerWindowL(*this);
- TResourceReader reader;
- iCoeEnv->CreateResourceReaderLC(reader, R_AVKON_SCT_TABLE_NAVI_CONTROL);
- iExtension->iTableNavi->ConstructFromResourceL(reader);
- iExtension->iTableNavi->SetNonFocusing();
- iExtension->iTableNavi->SetMopParent(iExtension);
- CleanupStack::PopAndDestroy(); // reader
- }
-
- iExtension->iTableNavi->MakeVisible(ETrue);
-
if ( !iExtension->iPageNavi )
{
iExtension->iPageNavi = new(ELeave) CAknSctPageNavi(this, iExtension);
@@ -4176,40 +2889,12 @@
void CAknCharMap::DisableNavigationButtonsL()
{
- if ( iExtension && iExtension->iTableNavi )
- {
- iExtension->iTableNavi->MakeVisible( EFalse );
- }
if ( iExtension && iExtension->iPageNavi )
{
iExtension->iPageNavi->MakeVisible( EFalse );
}
}
-void CAknCharMap::EnableCategoryButtonsL()
- {
- if (!iExtension->iRadioButton)
- {
- iExtension->iRadioButton = new(ELeave) CAknSctRadioButton(this, iExtension);
- iExtension->iRadioButton->SetContainerWindowL(*this);
- TResourceReader reader;
- iCoeEnv->CreateResourceReaderLC(reader, R_AVKON_SCT_CATEGORY_BUTTON_CONTROL);
- iExtension->iRadioButton->ConstructFromResourceL(reader);
- iExtension->iRadioButton->SetNonFocusing();
- iExtension->iRadioButton->SetMopParent(iExtension);
- CleanupStack::PopAndDestroy(); // reader
- }
- iExtension->iRadioButton->MakeVisible(ETrue);
- }
-
-void CAknCharMap::DisableCategoryButtonsL()
- {
- if (iExtension && iExtension->iRadioButton)
- {
- iExtension->iRadioButton->MakeVisible(EFalse);
- }
- }
-
void CAknCharMap::EnableCategoryInputFieldL()
{
TAknLayoutRect popupGridLayRect;
@@ -4299,24 +2984,20 @@
MAknsSkinInstance* skin = AknsUtils::SkinInstance();
MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+ AknLayoutUtils::TAknCbaLocation location = AknLayoutUtils::CbaLocation();
TRect rect = Rect();
if (!AknLayoutUtils::PenEnabled() || Extension()->iMenuSct)
{
TRect mainPaneRect;
- if(!AknLayoutUtils::LayoutMetricsRect(
- AknLayoutUtils::EPopupParent, mainPaneRect))
+ if(!AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EPopupParent, mainPaneRect))
{
mainPaneRect = iAvkonAppUi->ClientRect();
}
- TAknLayoutScalableParameterLimits charMapDialogVariety =
- AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-
+ TAknLayoutScalableParameterLimits charMapDialogVariety = AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
TInt maxVariety = charMapDialogVariety.LastVariety();
-
- AknLayoutUtils::TAknCbaLocation location = AknLayoutUtils::CbaLocation();
TInt maxVarietyOffset = 0;
TInt varietyOffset = maxVariety + 1;
@@ -4347,25 +3028,19 @@
varietyNumber += maxVarietyOffset;
TAknLayoutRect popupGridLayRect;
- popupGridLayRect.LayoutRect(mainPaneRect,
- AknLayoutScalable_Avkon::popup_grid_graphic_window(varietyNumber));
+ popupGridLayRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::popup_grid_graphic_window(varietyNumber));
// Background height.
- TInt backgroundHeightOffset =
- popupGridLayRect.Rect().Height() - rect.iBr.iY;
-
+ TInt backgroundHeightOffset = popupGridLayRect.Rect().Height() - rect.iBr.iY;
rect.iBr.iY += backgroundHeightOffset;
}
else
{
TAknLayoutRect popupGridLayRect;
- popupGridLayRect.LayoutRect(iAvkonAppUi->ApplicationRect(),
- AknLayoutScalable_Avkon::popup_grid_graphic2_window(0));
+ popupGridLayRect.LayoutRect(iAvkonAppUi->ApplicationRect(), AknLayoutScalable_Avkon::popup_grid_graphic2_window(0));
// Background height.
- TInt backgroundHeightOffset =
- popupGridLayRect.Rect().Height() - rect.iBr.iY;
-
+ TInt backgroundHeightOffset = popupGridLayRect.Rect().Height() - rect.iBr.iY;
rect.iBr.iY += backgroundHeightOffset * 2;
}
@@ -4373,44 +3048,49 @@
if ( !Extension()->iMenuSct )
{
// 1) Draw the background
-
// Check if we got an offscreen bitmap allocated for skin background and
// there is bitmap background in the current skin.
if( CAknEnv::Static()->TransparencyEnabled() )
{
TRegionFix<10> clipReg;
clipReg.AddRect(rect);
+
if ( iFirstVisibleRow == 0 && iSetRecentSct )
{
TPoint pos = iGridTopLeft;
- TInt endX = pos.iX + iGridItemWidth * iMaxColumns + 1;
- TInt endY = pos.iY + iGridItemHeight;
+ TSize size(iGridItemWidth*iMaxColumns+1, iGridItemHeight);
+ if(iIsMirrored)
+ {
+ pos.iX += iGridItemWidth - size.iWidth;
+ }
// eliminate the overlap area between menu sct and the first menu item.
if ( Extension()->iMenuSct )
{
- endY--;
+ size.iHeight--;
}
- clipReg.SubRect( TRect( pos, TPoint( endX, endY ) ) );
+ clipReg.SubRect(TRect(pos,size));
}
+
// Take scroll bar out of clip region
if (iSBFrame)
{
- clipReg.SubRect(iSBFrame->GetScrollBarHandle(
- CEikScrollBar::EVertical)->Rect());
+ clipReg.SubRect(iSBFrame->GetScrollBarHandle(CEikScrollBar::EVertical)->Rect());
}
+
gc.SetClippingRegion(clipReg);
}
+
AknsDrawUtils::Background( skin, cc, this, gc, rect,KAknsDrawParamNoClearUnderImage);
+
if( CAknEnv::Static()->TransparencyEnabled() )
{
gc.CancelClippingRegion();
}
- gc.SetPenStyle(CGraphicsContext::ESolidPen);
+ // 2) Draw the grid
+ gc.SetPenStyle(CGraphicsContext::ESolidPen);
gc.SetBrushStyle(CGraphicsContext::ENullBrush);
gc.SetPenSize(TSize(1,1));
-
- // 2) Draw the grid
DrawGrid(gc);
}
@@ -4612,10 +3292,6 @@
{
specialCharItemLayout = AknLayoutScalable_Avkon::cell_graphic2_pane_t1(1);
}
- else if (IsJapaneseSctUi())
- {
- specialCharItemLayout = AknLayoutScalable_Avkon::cell_graphic2_pane_t1(2);
- }
else
{
specialCharItemLayout = AknLayoutScalable_Avkon::cell_graphic2_pane_t1(0);
@@ -4629,7 +3305,6 @@
TRect textRect = aSctPosition;
if( IsRecentChar(aCharIndex) )
{
- textRect.Move(0, -1); //because height of recent char frame decreased 1.
if( Extension()->iMenuSct )
{
textRect.Move(0, -1); //because menu sct will also shrink 1.
@@ -4749,7 +3424,7 @@
//
void CAknCharMap::DrawRecentCharFrame( CWindowGc& aGc) const
{
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
MAknsControlContext* cc = iExtension->iBgContext;
if ( !cc )
{
@@ -4757,27 +3432,22 @@
}
TPoint pos = iGridTopLeft;
- TInt endX = pos.iX + iGridItemWidth * iMaxColumns + 1;
- TInt endY = pos.iY + iGridItemHeight;
- TRect drawRect(TPoint(pos.iX, pos.iY), TPoint(endX, endY));
+ TSize size(iGridItemWidth*iMaxColumns+1, iGridItemHeight);
+ if(iIsMirrored)
+ {
+ pos.iX += iGridItemWidth - size.iWidth;
+ }
// eliminate the overlap area between menu sct and the first menu item.
if ( Extension()->iMenuSct )
{
- drawRect = Rect();
- endY--;
- }
-
- AknsDrawUtils::Background( skin, cc, this, aGc, drawRect );
+ size.iHeight--;
+ }
+
+ AknsDrawUtils::Background(skin, cc, this, aGc, TRect(pos,size));
SetRecentCharFrameStyle(aGc);
- if(iIsMirrored)
- {
- pos.iX = iGridTopLeft.iX - ((iMaxColumns - 1) * iGridItemWidth);
- endX = iGridTopLeft.iX + iGridItemWidth + 1;
- }
-
- aGc.DrawRect( TRect(TPoint(pos.iX-1, pos.iY-1), TPoint(endX, endY)));
-
+ aGc.DrawRect(TRect(pos,size));
+
MTouchFeedback* feedback = MTouchFeedback::Instance();
CFeedbackSpec* spec = CFeedbackSpec::New();
@@ -5100,11 +3770,7 @@
)
{
caseChange = ETrue;
- // Cursor was on the second line
- if (aDeltaY < 0)
- {
- globalYPos--;
- }
+
// Cursor was on the second line and first position
if (aDeltaX < 0 && iCursorPos.iX == 0)
{
@@ -5492,14 +4158,7 @@
TRect parent = gridWithScrollLayRect.Rect();
TAknWindowComponentLayout scrollbarLayout;
- if (iExtension->iHasCategoryButtonUi)
- {
- scrollbarLayout = AknLayoutScalable_Avkon::scroll_pane_cp5(1);
- }
- else
- {
- scrollbarLayout = AknLayoutScalable_Avkon::scroll_pane_cp5(0);
- }
+ scrollbarLayout = AknLayoutScalable_Avkon::scroll_pane_cp5(0);
vSbarModel.iScrollSpan = PageCount() * iExtension->iMaxVisibleRows;
vSbarModel.iThumbSpan = iExtension->iMaxVisibleRows;
@@ -5925,15 +4584,6 @@
aIndex--;
}
- if (iExtension->iRadioButton)
- {
- if ( aIndex == 0 )
- {
- return iExtension->iRadioButton;
- }
- aIndex--;
- }
-
if (iExtension->iCategoryTitle)
{
if ( aIndex == 0 )
@@ -5950,15 +4600,6 @@
}
aIndex--;
}
-
- if (iExtension->iTableNavi)
- {
- if ( aIndex == 0 )
- {
- return iExtension->iTableNavi;
- }
- aIndex--;
- }
if (iExtension->iPageNavi)
{
if ( aIndex == 0 )
@@ -5978,10 +4619,6 @@
{
num++;
}
- if (iExtension->iRadioButton)
- {
- num++;
- }
if (iExtension->iCategoryTitle)
{
num++;
@@ -5990,10 +4627,6 @@
{
num++;
}
- if (iExtension->iTableNavi)
- {
- num++;
- }
if (iExtension->iPageNavi)
{
num++;
@@ -6033,11 +4666,6 @@
iSpecialCharPages.AppendL( PageCountFromChars(*currentcasechars) );
iSpecialCharCases.AppendL( iSpecialCharCase );
- if (iExtension->iRadioButton)
- {
- // Set the sct case mode to valid
- iExtension->iRadioButton->SetValidSctCase(iSpecialCharCase);
- }
if (aCase.Count() > 0)
{
@@ -6048,11 +4676,6 @@
{
iSpecialCharCases.AppendL( aCase[i] );
iSpecialCharPages.AppendL( PageCountFromChars(*chars) );
- if (iExtension->iRadioButton)
- {
- // Set the sct case mode to valid
- iExtension->iRadioButton->SetValidSctCase(aCase[i]);
- }
}
}
}
@@ -6068,29 +4691,7 @@
{
iPictographPages.AppendL( PageCountFromChars(*iPictographsBuffer2) );
iPictographCases.AppendL(EAknCharMapTablePicto2);
- if (iExtension->iRadioButton)
- {
- // Set the sct case mode to valid
- iExtension->iRadioButton->SetValidSctCase(EAknSCTPictograph1);
- iExtension->iRadioButton->SetValidSctCase(EAknSCTPictograph2);
- }
- }
- else
- {
- if (iExtension->iRadioButton)
- {
- // Set the sct case mode to valid
- iExtension->iRadioButton->SetValidSctCase(EAknSCTPictograph);
- }
- }
- }
-
- if (iExtension->iRadioButton)
- {
- // Remove invalid category buttons
- iExtension->iRadioButton->RemoveInvalidButton();
- __ASSERT_DEBUG( iExtension->iRadioButton->Count() > 0,
- Panic(EAknPanicInvalidValue));
+ }
}
}
@@ -6188,6 +4789,8 @@
void CAknCharMap::CountMaxColumnsAndCellSizes()
{
+ const TBool isLandscape = Layout_Meta_Data::IsLandscapeOrientation();
+
TRect mainPaneRect;
if (!AknLayoutUtils::PenEnabled() || Extension()->iMenuSct)
{
@@ -6204,7 +4807,7 @@
AknLayoutUtils::TAknCbaLocation location = AknLayoutUtils::CbaLocation();
TInt maxVarietyOffset = 0;
TInt varietyOffset = maxVariety + 1;
- if(Layout_Meta_Data::IsLandscapeOrientation())
+ if(isLandscape)
{
varietyOffset = (maxVariety + 1) / KAknSctCBaButtonDirections;
}
@@ -6228,16 +4831,8 @@
TAknLayoutRect gridLayRect;
- if (iExtension->iHasCategoryButtonUi)
- {
- gridLayRect.LayoutRect(gridWithScrollLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic_popup_pane(2));
- }
- else
- {
- gridLayRect.LayoutRect(gridWithScrollLayRect.Rect(),
- AknLayoutScalable_Avkon::grid_graphic_popup_pane(0));
- }
+ gridLayRect.LayoutRect(gridWithScrollLayRect.Rect(),
+ AknLayoutScalable_Avkon::grid_graphic_popup_pane(0));
TRect gridRect = Extension()->iMenuSct ? Rect(): gridLayRect.Rect();
@@ -6293,39 +4888,19 @@
else
{
TAknLayoutRect popupGridLayRect;
- popupGridLayRect.LayoutRect(iAvkonAppUi->ApplicationRect(),
- AknLayoutScalable_Avkon::popup_grid_graphic2_window(0));
-
+ popupGridLayRect.LayoutRect(iAvkonAppUi->ApplicationRect(), AknLayoutScalable_Avkon::popup_grid_graphic2_window(0));
TRect popupGridRect = popupGridLayRect.Rect();
- TInt gridVariety;
- if (!IsJapaneseSctUi())
- {
- if(!Layout_Meta_Data::IsLandscapeOrientation())
- {
- gridVariety = (TableCount() > 1) ? 0 : 1;
- }
- else
- {
- gridVariety = (TableCount() > 1) ? 2 : 3;
- }
- }
- else
- {
- gridVariety = !Layout_Meta_Data::IsLandscapeOrientation() ? 4 : 5;
- }
-
+ TInt gridVariety = isLandscape ? 7 : 6;
TAknLayoutRect gridLayRect;
- gridLayRect.LayoutRect(popupGridRect,
- AknLayoutScalable_Avkon::grid_graphic2_pane(gridVariety));
-
+ gridLayRect.LayoutRect(popupGridRect, AknLayoutScalable_Avkon::grid_graphic2_pane(gridVariety));
TRect gridRect = gridLayRect.Rect();
+ TInt cellVariety = isLandscape ? 1 : 0;
TAknLayoutRect firstCellLayRect;
- firstCellLayRect.LayoutRect(popupGridRect,
- AknLayoutScalable_Avkon::aid_size_cell_graphic2(gridVariety,0,0));
-
+ firstCellLayRect.LayoutRect(gridRect, AknLayoutScalable_Avkon::cell_graphic2_pane(cellVariety));
TRect firstCellRect = firstCellLayRect.Rect();
+
TInt firstVisibleIndex = iFirstVisibleRow * iMaxColumns;
// Max columns.
@@ -6335,10 +4910,8 @@
// Max visible rows.
iExtension->iMaxVisibleRows = gridRect.Height() / firstCellRect.Height();
- // Cell width.
+ // Cell.
iGridItemWidth = firstCellRect.Width();
-
- // Cell height.
iGridItemHeight = firstCellRect.Height();
}
}
@@ -7491,9 +6064,7 @@
// Update also title if requested
if ( aUpdateTitle)
{
- const TDesC* title = (IsJapaneseSctUi())?
- TitleWithSelectingSpecialChar()
- :Title();
+ const TDesC* title = Title();
if ( title )
{
//
@@ -7624,12 +6195,12 @@
TBool CAknCharMap::IsSupportCategoryButtonUi() const
{
- return (iExtension)? iExtension->iHasCategoryButtonUi : EFalse;
+ return EFalse;
}
TBool CAknCharMap::IsJapaneseSctUi() const
{
- return (iExtension)? iExtension->iJapaneseSctUi : EFalse;
+ return EFalse;
}
// -----------------------------------------------------------------------------
@@ -8234,10 +6805,10 @@
SetSmileyAnimationActivityInCurrentPageL(ETrue);
- CAknSctTableNavi* tableNavi = Extension()->iTableNavi;
- if(tableNavi)
- {
- tableNavi->UpdateNextTableButtonL();
+ CAknSctPageNavi* pageNavi = Extension()->iPageNavi;
+ if(pageNavi)
+ {
+ pageNavi->UpdateNextTableButtonL();
}
DrawNow();