Commit 479d019d by Lee Jaebin

作業コードが更新できない問題・作業登録ホットスポットでドラッグ&ドロップの修正

parent ff95d636
......@@ -316,7 +316,7 @@ public class ProjectLogic extends AbstractLogic {
if (!newValue.equals(taskDirectionsItemsDto.inputValue)) {
// 値が異なる場合のみ、更新する
taskDirectionsItemsDto.inputValue = newValue;
if (taskDirectionsItemsDto.inputValue.startsWith("q_1_")) {
if (taskDirectionsItemsDto.itemKey.startsWith("q_1_")) {
// 値が異なるため、作業コードの入力値を変更する
taskDto.taskCode = taskDirectionsItemsDto.inputValue;
}
......
......@@ -88,79 +88,80 @@ public class ZoomRelativeLayout extends RelativeLayout {
private float fX;
private float fY;
class MyDragListener implements OnDragListener {
@Override
public boolean onDrag(View v, DragEvent event) {
class MyDragListener implements OnDragListener {
@Override
public boolean onDrag(View v, DragEvent event) {
View view = (View) event.getLocalState();
if (view instanceof ActionProjectTaskCode || view instanceof ActionProjectTaskPin) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
//理由不明、イベントが二回くる、二回目でgetX()だけがマイナス
if (event.getX() > 0) {
fX = event.getX();
fY = event.getY();
}
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
float mX = event.getX();
float mY = event.getY();
if (Math.abs(mX - fX) < view.getWidth() / 2 && Math.abs(mY - fY) < view.getHeight() / 2) {
view.performClick();
return true;
}
float[] pdfMatrix = getMatrixValue(getPageView().imgMatrix);
float scaledWidth = getScaledPDFWidth(pdfMatrix[Matrix.MSCALE_X]);
float scaledHeight = getScaledPDFHeight(pdfMatrix[Matrix.MSCALE_Y]);
float pdfX = pdfMatrix[Matrix.MTRANS_X];
float pdfY = pdfMatrix[Matrix.MTRANS_Y];
// If left-out or right-out of PDF
if ((mX - pdfX) < 0) {
mX = pdfX;
} else if (((pdfX + scaledWidth) - mX) < 0) {
mX = pdfX + scaledWidth;
}
// Yの座標がPDF範囲を超えたか判定フラグ
boolean isOutTranslation = false;
// If top-out or bottom-out of PDF
// PDFの端上の基準値をピンとコードで分ける
float checkTopY = (view instanceof ActionProjectTaskPin ? (mY + view.getHeight() / 2) : mY);
if (checkTopY - pdfY < 0) {
isOutTranslation = true;
mY = pdfY;
} else if (((pdfY + scaledHeight) - mY) < 0) {
isOutTranslation = true;
mY = pdfY + scaledHeight;
}
// 作業のx座標をセット
view.setTranslationX(mX - view.getWidth() / 2);
// 作業のy座標をセット(作業アイコンがピンで且つ、PDF範囲を超えたフラグ(isOutTranslation)がtrueの場合、(mY - アイコンの縦サイズ)で縦をセットする)
view.setTranslationY(mY - (isOutTranslation && view instanceof ActionProjectTaskPin ? view.getHeight() : view.getHeight() / 2));
// タップした座標をPDF用の座標に変換する
PointF pdfPoint = tapConvertToAuthoringPoint(mX, view instanceof ActionProjectTaskPin && !isOutTranslation ? mY + view.getHeight() / 2 : mY);
// 座標を更新する
((ContentViewActivity) mContext).updateProjectTaskPosition(pdfPoint.x, pdfPoint.y);
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
//理由不明、イベントが二回くる、二回目でgetX()だけがマイナス
if (event.getX() > 0) {
fX = event.getX();
fY = event.getY();
}
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
float mX = event.getX();
float mY = event.getY();
if (Math.abs(mX - fX) < view.getWidth() / 2 && Math.abs(mY - fY) < view.getHeight() / 2) {
view.performClick();
return true;
}
float[] pdfMatrix = getMatrixValue(getPageView().imgMatrix);
float scaledWidth = getScaledPDFWidth(pdfMatrix[Matrix.MSCALE_X]);
float scaledHeight = getScaledPDFHeight(pdfMatrix[Matrix.MSCALE_Y]);
float pdfX = pdfMatrix[Matrix.MTRANS_X];
float pdfY = pdfMatrix[Matrix.MTRANS_Y];
// If left-out or right-out of PDF
if ((mX - pdfX) < 0) {
mX = pdfX;
} else if (((pdfX + scaledWidth) - mX) < 0) {
mX = pdfX + scaledWidth;
}
// Yの座標がPDF範囲を超えたか判定フラグ
boolean isOutTranslation = false;
// If top-out or bottom-out of PDF
// PDFの端上の基準値をピンとコードで分ける
float checkTopY = (view instanceof ActionProjectTaskPin ? (mY + view.getHeight() / 2) : mY);
if (checkTopY - pdfY < 0) {
isOutTranslation = true;
mY = pdfY;
} else if (((pdfY + scaledHeight) - mY) < 0) {
isOutTranslation = true;
mY = pdfY + scaledHeight;
}
// 作業のx座標をセット
view.setTranslationX(mX - view.getWidth() / 2);
// 作業のy座標をセット(作業アイコンがピンで且つ、PDF範囲を超えたフラグ(isOutTranslation)がtrueの場合、(mY - アイコンの縦サイズ)で縦をセットする)
view.setTranslationY(mY - (isOutTranslation && view instanceof ActionProjectTaskPin ? view.getHeight() : view.getHeight() / 2));
// タップした座標をPDF用の座標に変換する
PointF pdfPoint = tapConvertToAuthoringPoint(mX, view instanceof ActionProjectTaskPin && !isOutTranslation ? mY + view.getHeight() / 2 : mY);
// 座標を更新する
((ContentViewActivity) mContext).updateProjectTaskPosition(pdfPoint.x, pdfPoint.y);
if (view instanceof ActionProjectTaskCode || view instanceof ActionProjectTaskPin) {
((ContentViewActivity) mContext).updateProjectTaskPosition();
}
if (view.getVisibility() == View.INVISIBLE) {
view.setVisibility(View.VISIBLE);
}
if (view.getVisibility() == View.INVISIBLE) {
view.setVisibility(View.VISIBLE);
}
break;
case DragEvent.ACTION_DRAG_ENDED:
default:
break;
}
break;
case DragEvent.ACTION_DRAG_ENDED:
default:
break;
}
return true;
}
}
return true;
}
}
public ZoomRelativeLayout(Context context) {
super(context);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment