private bool isSymmetrical = true;
private int middleIndex = 9;
- private int indicatorCount = 1;
+ private int indicatorCount = 0;
private int leftIndicatorCount = 0;
private int rightIndicatorCount = 0;
private int selectedIndex = -1;
/// <since_tizen> 8 </since_tizen>
/// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public CircularPagination(string style) : base(style)
- {
- Initialize();
- }
-
- /// <summary>
- /// Creates a new instance of a CircularPagination using style.
- /// </summary>
- /// <since_tizen> 8 </since_tizen>
- /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
public CircularPagination(CircularPaginationStyle style) : base(style)
{
Initialize();
}
if (value == false)
{
+ isOddNumber = true;
CreateIndicator(middleIndex);
}
}
set
{
- if (indicatorCount == value || indicatorCount < 0)
+ if (indicatorCount == value || indicatorCount < 0 || value <= 0)
{
return;
}
+ if (isSymmetrical == false)
+ {
+ Log.Info("NUI", "This property is not for asymmetric pagination. Change to symmetrical pagination.\n");
+ isSymmetrical = true;
+ }
+
if (value % 2 == 1) // Odd number
{
isOddNumber = true;
{
arrayIndex = (18 - value) / 2;
}
+ if (arrayIndex < 0) return;
- for (int i = indicatorCount; i <= value; i++)
+ for (int i = (indicatorCount + 1); i <= value; i++)
{
CreateIndicator( arrayIndex );
arrayIndex++;
if (selectedIndex >= value)
{
- selectedIndex = 0;
+ selectedIndex = value - 1;
SelectIn(indicatorList[selectedIndex]);
}
}
indicatorCount = value;
UpdateContainer();
+ UpdateVisual();
}
}
isSymmetrical = false;
//return;
}
- if (leftIndicatorCount == value || leftIndicatorCount < 0 || leftIndicatorCount > 9)
+ if (leftIndicatorCount == value || leftIndicatorCount < 0 || value > 9 || value < 0)
{
return;
}
for (int i = (middleIndex - value); i < (middleIndex - leftIndicatorCount); i++)
{
CreateIndicator( i );
+ selectedIndex++;
}
}
else
}
indicatorList.RemoveRange(0, (leftIndicatorCount - value)); // LeftIndicator starts from index 0.
- if (selectedIndex >= ( value + rightIndicatorCount ))
+ if (selectedIndex == 0)
{
- selectedIndex--;
+ selectedIndex++;
SelectIn(indicatorList[selectedIndex]);
}
- else if (selectedIndex == 0)
+ else
{
- selectedIndex++;
+ selectedIndex--;
SelectIn(indicatorList[selectedIndex]);
}
}
isSymmetrical = false;
//return;
}
- if (rightIndicatorCount == value || rightIndicatorCount < 0 || rightIndicatorCount > 9)
+ if (rightIndicatorCount == value || rightIndicatorCount < 0 || value > 9 || value < 0)
{
return;
}
}
set
{
- if (selectedIndex == value)
+ if (selectedIndex == value || value < 0 || value >= indicatorCount)
{
return;
}
}
else // Only symmetry circular pagination can be even number.
{
- evenArray[IndicatorCount/2 + index - 1] = position;
+ evenArray[(middleIndex - (indicatorCount / 2) + index)] = position;
indicatorList[index].Position.X = position.X;
indicatorList[index].Position.Y = position.Y;
}
if (!(selectOutIndicator is ImageVisual visual)) return;
if (isCurrentIndicatorCentered)
{
- visual.URL = circularPaginationStyle.CenterIndicatorImageURL.Normal;
+ visual.URL = circularPaginationStyle?.CenterIndicatorImageURL?.Normal;
}
else
{
- visual.URL = circularPaginationStyle.IndicatorImageURL.Normal;
+ visual.URL = circularPaginationStyle?.IndicatorImageURL?.Normal;
}
visual.Opacity = 0.5f;
}
if (!(selectInIndicator is ImageVisual visual)) return;
if (isCurrentIndicatorCentered)
{
- visual.URL = circularPaginationStyle.CenterIndicatorImageURL.Selected;
+ visual.URL = circularPaginationStyle?.CenterIndicatorImageURL?.Selected;
}
else
{
- visual.URL = circularPaginationStyle.IndicatorImageURL.Selected;
+ visual.URL = circularPaginationStyle?.IndicatorImageURL?.Selected;
}
visual.Opacity = 1.0f;
}
/// <since_tizen> 8 </since_tizen>
/// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- protected override ViewStyle GetViewStyle()
+ protected override ViewStyle CreateViewStyle()
{
return new CircularPaginationStyle();
}
// The parameter, index, is for the index of either oddArray or evenArray.
private void CreateIndicator(int index)
{
- if (circularPaginationStyle == null)
+ if (circularPaginationStyle == null || circularPaginationStyle.IndicatorSize == null)
{
return;
}
ImageVisual indicator = new ImageVisual
{
- URL = circularPaginationStyle.IndicatorImageURL.Normal,
+ URL = circularPaginationStyle.IndicatorImageURL?.Normal,
Size = new Size2D((int)circularPaginationStyle.IndicatorSize.Width, (int)circularPaginationStyle.IndicatorSize.Height),
Opacity = 0.5f,
};
private void UpdateContainer()
{
- if (circularPaginationStyle == null)
+ if (circularPaginationStyle == null || circularPaginationStyle.IndicatorSize == null || container == null)
{
return;
}
{
if (null == circularPaginationStyle.IndicatorSize) return;
if (null == circularPaginationStyle.IndicatorImageURL) return;
- if (indicatorCount < 0) return;
+ if (indicatorCount <= 0) return;
for (int i = 0; i < indicatorList.Count; i++)
{
}
else
{
- indicator.Position = evenArray[IndicatorCount/2 + i - 1];
+ indicator.Position = evenArray[middleIndex - (indicatorCount / 2) + i];
}
}
}