public PeriodChoiceControl() { Model = new PeriodChoiceControlModel(); InitializeComponent(); ControlGrid.DataContext = this; }
public static void ResetFlags(this PeriodChoiceControlModel model) { model.BtnFromIsHolded = false; model.BtnToIsHolded = false; model.CentralPartIsHolded = false; model.CentralPartDoubleClick = false; }
public static void SetPositions(this PeriodChoiceControlModel model, double btnFromMarginLeft, double centerPartWidth) { model.BtnFromMargin = new Thickness(btnFromMarginLeft, 0, 0, 0); model.LeftPartWidth = btnFromMarginLeft + 4; model.CenterPartMargin = new Thickness(model.LeftPartWidth, 0, 0, 0); model.CenterPartWidth = centerPartWidth; model.BtnToMargin = new Thickness(btnFromMarginLeft + centerPartWidth - 1, 0, -4, 0); model.RightPartMargin = new Thickness(model.LeftPartWidth + model.CenterPartWidth - 1, 0, 0, 0); }
public static void ReactCentralPartDoubleClick(this PeriodChoiceControlModel model, double x, double controlActualWidth) { if (model.CentralPartDoubleClick) { model.ShrinkAroundX(x, controlActualWidth); } else { model.SetPositions(-4, controlActualWidth); // expand central part all over control } model.CentralPartDoubleClick = !model.CentralPartDoubleClick; }
private static void ShrinkAroundX(this PeriodChoiceControlModel model, double x, double controlActualWidth) { double left = x - PeriodChoiceControlModel.MinCenterPartWidth / 2; if (left < -4) { left = -4; } if (left > controlActualWidth - PeriodChoiceControlModel.MinCenterPartWidth - 4) { left = controlActualWidth - PeriodChoiceControlModel.MinCenterPartWidth - 4; } model.SetPositions(left, PeriodChoiceControlModel.MinCenterPartWidth); }
public static void ReactBtnToPreviewMouseMove(this PeriodChoiceControlModel model, double x, double rightPartWidth) { var delta = x - model.BtnToStartX; model.BtnToStartX = x; if (model.CenterPartWidth - PeriodChoiceControlModel.MinCenterPartWidth + delta < 0) { return; } if (rightPartWidth - delta <= 0) { return; } model.BtnToMargin = new Thickness(model.BtnToMargin.Left + delta, 0, -4, 0); model.CenterPartWidth += delta; }
public static void ReactBtnFromPreviewMouseMove(this PeriodChoiceControlModel model, double x) { var delta = x - model.BtnFromStartX; model.BtnFromStartX = x; if (delta > model.CenterPartWidth - PeriodChoiceControlModel.MinCenterPartWidth) { return; } if (model.BtnFromMargin.Left + delta < -4) { delta = -model.BtnFromMargin.Left - 4; } model.BtnFromMargin = new Thickness(model.BtnFromMargin.Left + delta, 0, 0, 0); model.LeftPartWidth = model.BtnFromMargin.Left + 4; model.CenterPartMargin = new Thickness(model.LeftPartWidth, 0, 0, 0); model.CenterPartWidth -= delta; }
public static void ReactCentralPartPreviewMouseMove(this PeriodChoiceControlModel model, double x, double rightPartWidth) { var delta = x - model.CentralPartStartX; model.CentralPartStartX = x; if (model.BtnFromMargin.Left + delta < -4) { delta = -model.BtnFromMargin.Left - 4; } if (rightPartWidth - delta <= 0) { return; } model.BtnFromMargin = new Thickness(model.BtnFromMargin.Left + delta, 0, 0, 0); model.LeftPartWidth = model.BtnFromMargin.Left + 4; model.CenterPartMargin = new Thickness(model.LeftPartWidth, 0, 0, 0); model.BtnToMargin = new Thickness(model.BtnToMargin.Left + delta, 0, -4, 0); }
public static void ReactBtnFromPreviewMouseDown(this PeriodChoiceControlModel model, double x) { model.BtnFromIsHolded = true; model.BtnFromStartX = x; }
public static void ReactCentralPartPreviewMouseDown(this PeriodChoiceControlModel model, double x) { model.CentralPartIsHolded = true; model.CentralPartStartX = x; }