Skip to content

Commit

Permalink
fixed ui logic if deafult position fails left/right
Browse files Browse the repository at this point in the history
  • Loading branch information
muditpant13 committed Mar 21, 2017
1 parent a179c1f commit 630409a
Showing 1 changed file with 73 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public class PopUpCoachMarkPresenter {

private static final double MAX_NOTCH_RANGE = .85;
private static final double MIN_NOTCH_RANGE = 0.0;
private static final double DEFAULT_NOTCH_VALUE_WIDTH = .20;

private static final int NO_MARGIN = 0;

Expand All @@ -60,6 +61,8 @@ public class PopUpCoachMarkPresenter {
private IStringResourceProvider mStringResourceProvider;
private IDimensionResourceProvider mDimensionResourceProvider;

private boolean mDefaultPopUpLocationFailed = false;

public PopUpCoachMarkPresenter(final IStringResourceProvider stringResourceProvider,
final IDimensionResourceProvider dimensionResourceProvider,
final ITypeFaceProvider typeFaceProvider,
Expand Down Expand Up @@ -201,28 +204,48 @@ private void setNotchDisplayEdge(int position,
coachMarkDimenInPixel.getMarginRectInPixels().right +
coachMarkDimenInPixel.getImageWidthInPixels(),
NO_MARGIN);
mPresentation.setPopUpViewTopLeft(coachMarkMarginRect,
CoachMarkLayoutOrientation.HORIZONTAL);

notchPosition = getMarginTopForNotch(mCoachMarkBuilder.getNotchPosition(),
coachMarkDimenInPixel.getPopUpHeightInPixels(),
coachMarkDimenInPixel.getNotchDimenInPixels());

mPresentation.setPopUpViewTopLeft(coachMarkMarginRect,
CoachMarkLayoutOrientation.HORIZONTAL);

notchMarginRect = new Rect(-coachMarkDimenInPixel.getMarginOffsetForNotchInPixels(),
notchPosition, NO_MARGIN, NO_MARGIN);
mPresentation.setNotchPositionIfPopUpTopLeft(notchMarginRect, ROTATION_90);
break;
case PopUpPosition.TOP:
actualLeftMargin = getActualLeftMargin(anchorTopX, coachMarkDimenInPixel);
coachMarkMarginRect = new Rect(actualLeftMargin -
coachMarkDimenInPixel.getMarginRectInPixels().right,
coachMarkDimenInPixel.getMarginRectInPixels().top,
NO_MARGIN,
coachMarkDimenInPixel.getMarginRectInPixels().bottom +
coachMarkDimenInPixel.getImageHeightInPixels());

if(! mDefaultPopUpLocationFailed){
coachMarkMarginRect = new Rect(actualLeftMargin -
coachMarkDimenInPixel.getMarginRectInPixels().right,
coachMarkDimenInPixel.getMarginRectInPixels().top,
NO_MARGIN,
coachMarkDimenInPixel.getMarginRectInPixels().bottom +
coachMarkDimenInPixel.getImageHeightInPixels());
notchPosition = getMarginLeftForNotch(mCoachMarkBuilder.getNotchPosition(),
coachMarkDimenInPixel.getPopUpWidthInPixels(),
coachMarkDimenInPixel.getNotchDimenInPixels());
}else{

coachMarkMarginRect = new Rect(actualLeftMargin -
coachMarkDimenInPixel.getMarginRectInPixels().right,
coachMarkDimenInPixel.getMarginRectInPixels().top,
NO_MARGIN,
coachMarkDimenInPixel.getImageHeightInPixels());

notchPosition = getMarginLeftForNotch(DEFAULT_NOTCH_VALUE_WIDTH,
coachMarkDimenInPixel.getPopUpWidthInPixels(),
coachMarkDimenInPixel.getNotchDimenInPixels());

}

mPresentation.setPopUpViewTopLeft(coachMarkMarginRect,
CoachMarkLayoutOrientation.VERTICAL);
notchPosition = getMarginLeftForNotch(mCoachMarkBuilder.getNotchPosition(),
coachMarkDimenInPixel.getPopUpWidthInPixels(),
coachMarkDimenInPixel.getNotchDimenInPixels());

notchMarginRect = new Rect(notchPosition +
coachMarkDimenInPixel.getMarginOffsetForNotchInPixels(),
-coachMarkDimenInPixel.getMarginOffsetForNotchInPixels(),
Expand All @@ -231,16 +254,20 @@ private void setNotchDisplayEdge(int position,
break;
case PopUpPosition.RIGHT:
actualTopMargin = getActualTopMargin(centerY, coachMarkDimenInPixel);

coachMarkMarginRect = new Rect(coachMarkDimenInPixel.getMarginRectInPixels().left +
coachMarkDimenInPixel.getImageWidthInPixels(),
actualTopMargin - coachMarkDimenInPixel.getMarginRectInPixels().bottom,
coachMarkDimenInPixel.getMarginRectInPixels().right,
NO_MARGIN);
mPresentation.setPopUpViewBottomRight(coachMarkMarginRect,
CoachMarkLayoutOrientation.HORIZONTAL);

notchPosition = getMarginTopForNotch(mCoachMarkBuilder.getNotchPosition(),
coachMarkDimenInPixel.getPopUpHeightInPixels(),
coachMarkDimenInPixel.getNotchDimenInPixels());

mPresentation.setPopUpViewBottomRight(coachMarkMarginRect,
CoachMarkLayoutOrientation.HORIZONTAL);

notchMarginRect = new Rect(NO_MARGIN,
notchPosition - (int) (MULTIPLICATION_FACTOR_NOTCH_POSITION * coachMarkDimenInPixel.getMarginOffsetForNotchInPixels()),
NO_MARGIN,
Expand All @@ -254,17 +281,36 @@ private void setNotchDisplayEdge(int position,
break;
case PopUpPosition.BOTTOM:
actualLeftMargin = getActualLeftMargin(anchorTopX, coachMarkDimenInPixel);
coachMarkMarginRect = new Rect(actualLeftMargin -
coachMarkDimenInPixel.getMarginRectInPixels().right,
coachMarkDimenInPixel.getMarginRectInPixels().top +
coachMarkDimenInPixel.getImageHeightInPixels(),
NO_MARGIN,
coachMarkDimenInPixel.getMarginRectInPixels().bottom);
if(! mDefaultPopUpLocationFailed){

coachMarkMarginRect = new Rect(actualLeftMargin -
coachMarkDimenInPixel.getMarginRectInPixels().right,
coachMarkDimenInPixel.getMarginRectInPixels().top +
coachMarkDimenInPixel.getImageHeightInPixels(),
NO_MARGIN,
coachMarkDimenInPixel.getMarginRectInPixels().bottom);

notchPosition = getMarginLeftForNotch(mCoachMarkBuilder.getNotchPosition(),
coachMarkDimenInPixel.getPopUpWidthInPixels(),
coachMarkDimenInPixel.getNotchDimenInPixels());

}else{

coachMarkMarginRect = new Rect(actualLeftMargin -
coachMarkDimenInPixel.getMarginRectInPixels().right,
coachMarkDimenInPixel.getImageHeightInPixels(),
NO_MARGIN,
coachMarkDimenInPixel.getMarginRectInPixels().bottom);

notchPosition = getMarginLeftForNotch(DEFAULT_NOTCH_VALUE_WIDTH,
coachMarkDimenInPixel.getPopUpWidthInPixels(),
coachMarkDimenInPixel.getNotchDimenInPixels());

}

mPresentation.setPopUpViewBottomRight(coachMarkMarginRect,
CoachMarkLayoutOrientation.VERTICAL);
notchPosition = getMarginLeftForNotch(mCoachMarkBuilder.getNotchPosition(),
coachMarkDimenInPixel.getPopUpWidthInPixels(),
coachMarkDimenInPixel.getNotchDimenInPixels());

notchMarginRect = new Rect(notchPosition +
coachMarkDimenInPixel.getMarginOffsetForNotchInPixels(),
NO_MARGIN,
Expand Down Expand Up @@ -396,6 +442,7 @@ private int getDisplayPosition(Point viewCenterPoint,
} else {
correctPosition = getCorrectPositionOfCoachMarkIfDefaultFails(viewCenterPoint,
coachMarkDimenInPixel);
mDefaultPopUpLocationFailed = true;
}
break;
case PopUpPosition.RIGHT:
Expand All @@ -404,6 +451,7 @@ private int getDisplayPosition(Point viewCenterPoint,
} else {
correctPosition = getCorrectPositionOfCoachMarkIfDefaultFails(viewCenterPoint,
coachMarkDimenInPixel);
mDefaultPopUpLocationFailed = true;
}
break;

Expand All @@ -413,6 +461,7 @@ private int getDisplayPosition(Point viewCenterPoint,
} else {
correctPosition = getCorrectPositionOfCoachMarkIfDefaultFails(viewCenterPoint,
coachMarkDimenInPixel);
mDefaultPopUpLocationFailed = true;
}
break;

Expand All @@ -422,12 +471,14 @@ private int getDisplayPosition(Point viewCenterPoint,
} else {
correctPosition = getCorrectPositionOfCoachMarkIfDefaultFails(viewCenterPoint,
coachMarkDimenInPixel);
mDefaultPopUpLocationFailed = true;
}
break;
case PopUpPosition.NONE:
//if user selects no position by default check clockwise to find the correct position
correctPosition = getCorrectPositionOfCoachMarkIfDefaultFails(viewCenterPoint,
coachMarkDimenInPixel);

break;
}
return correctPosition;
Expand Down

0 comments on commit 630409a

Please sign in to comment.