private IList<TextLabel> itemList;
private Vector2 size;
private TextLabelStyle itemTextLabel;
- private bool editMode = false;
+ private bool keyEditMode = false;
private View recoverIndicator = null;
- private View editModeIndicator = null;
+ private View keyEditModeIndicator = null;
/// <summary>
Utility.Dispose(downLine);
recoverIndicator = null;
- if (editModeIndicator)
+ if (keyEditModeIndicator)
{
- editModeIndicator.Dispose();
- editModeIndicator = null;
+ keyEditModeIndicator.Dispose();
+ keyEditModeIndicator = null;
}
}
{
if (e.Key.KeyPressedName == "Return")
{
- if (editMode)
+ if (keyEditMode)
{
- //Todo: sometimes this gets wrong. the currentValue is not correct. need to be fixed.
- if (currentValue != ((int)(-pickerScroller.Position.Y / itemHeight) + middleItemIdx))
- {
- currentValue = ((int)(-pickerScroller.Position.Y / itemHeight) + middleItemIdx);
- OnValueChanged();
- }
-
- //set editMode false (toggle the mode)
- editMode = false;
+ //set keyEditMode false (toggle the mode)
+ keyEditMode = false;
FocusManager.Instance.FocusIndicator = recoverIndicator;
return true;
}
else
{
- //set editMode true (toggle the mode)
- editMode = true;
- if (editModeIndicator == null)
+ //set keyEditMode true (toggle the mode)
+ keyEditMode = true;
+ if (keyEditModeIndicator == null)
{
- editModeIndicator = new View()
+ keyEditModeIndicator = new View()
{
PositionUsesPivotPoint = true,
PivotPoint = new Position(0, 0, 0),
};
}
recoverIndicator = FocusManager.Instance.FocusIndicator;
- FocusManager.Instance.FocusIndicator = editModeIndicator;
+ FocusManager.Instance.FocusIndicator = keyEditModeIndicator;
+
return true;
}
}
- else if (e.Key.KeyPressedName == "Up")
+
+ else if (keyEditMode && (e.Key.KeyPressedName == "Up" || e.Key.KeyPressedName == "Down"))
{
- if (editMode)
+ if (e.Key.KeyPressedName == "Up")
{
- InternalCurrentValue += 1;
- return true;
+ currentValue += 1;
+ if (currentValue > maxValue)
+ {
+ if (loopEnabled) currentValue = minValue;
+ else
+ {
+ currentValue--;
+ return true;
+ }
+ }
}
- }
- else if (e.Key.KeyPressedName == "Down")
- {
- if (editMode)
+ else
{
- InternalCurrentValue -= 1;
- return true;
+ currentValue -= 1;
+ if (currentValue < minValue)
+ {
+ if (loopEnabled) currentValue = maxValue;
+ else
+ {
+ currentValue++;
+ return true;
+ }
+ }
}
+
+ UpdateCurrentValue();
+ OnValueChanged();
+
+ return true;
}
- if (editMode)
+ if (keyEditMode)
{
return true;
}
}
+
return false;
}