diff --git a/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java b/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java index a2bcb74..261e17e 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java +++ b/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java @@ -25,6 +25,7 @@ private Integer aid; private Integer editingPageNo = 1; private Integer editingPageId = 0; + private Integer prePageId = 0; private Animation currentAnimation; private Collection animationJsonList = new ArrayList<>(); @@ -87,6 +88,10 @@ return this.editingPageId; } + public Integer getPrePageId() { + return this.prePageId; + } + public Animation getCurrentAnimation() { return currentAnimation; } @@ -152,6 +157,10 @@ this.editingPageId = editingPageId; } + public void setPrePageId(Integer prePageId) { + this.prePageId = prePageId; + } + //HomeViewModelでしようするためのsetter public void setAnimationJsonList(Collection sentAnimationJsonList) { this.animationJsonList.clear(); diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java index 5e4f54c..8cf9b0a 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java @@ -133,7 +133,12 @@ private void startObserve() { // 現在のStrokeに変更がある度に取得 - + paintViewModel.getStroke().observe(this, new Observer>() { + @Override + public void onChanged(Collection strokes) { + paintCanvas.getCanvas(); + } + }); // 前のStrokeに変更がある度に取得 paintViewModel.getPreStrokes().observe(this, new Observer>() { diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java index 6b14cb3..f26c8dc 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java @@ -31,11 +31,11 @@ //----------------------------------------------------------------- private Path path; -// private Path clonepath; + private Path clonepath; //----------------------------------------------------------------- private Paint paint; -// private Paint clonepaint; + private Paint clonepaint; //----------------------------------------------------------------- private PaintViewModel paintViewModel; @@ -69,11 +69,11 @@ paint.setStrokeWidth(pen.getThickness());//幅 //----------------------------------------------------------------- -// clonepaint = new Paint();//筆の種類 -// clonepath = new Path(); // 図形描画 -// clonepaint.setColor(Color.RED);//色の指定 -// clonepaint.setStyle(Paint.Style.STROKE);//線をひく -// clonepaint.setStrokeWidth(20);//幅 + clonepaint = new Paint();//筆の種類 + clonepath = new Path(); // 図形描画 + clonepaint.setColor(Color.RED);//色の指定 + clonepaint.setStyle(Paint.Style.STROKE);//線をひく + clonepaint.setStrokeWidth(20);//幅 invalidate(); } @@ -105,10 +105,10 @@ paint.setStrokeWidth(pen.getThickness()); canvas.drawPath(path, paint); -// canvas.drawPath(clonepath, clonepaint); + canvas.drawPath(clonepath, clonepaint); curCanvas.drawPath(path, paint); -// curCanvas.drawPath(clonepath, clonepaint); + curCanvas.drawPath(clonepath, clonepaint); } //----------------------------------------------------------------- @@ -150,13 +150,13 @@ public void clearCanvas() { paintViewModel.deleteStrokesRequest(); path.reset(); -// clonepath.reset(); + clonepath.reset(); invalidate(); } //----------------------------------------------------------------- // ページ切り替え時に描画をリセット - public void switchPage(){ + public void switchPage() { path.reset(); invalidate(); } @@ -178,18 +178,18 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- // 押した瞬間の処理 -// private void onTouched2(float x, float y) { -// //path2 = new Path(); -//// clonepath.moveTo(x, y); -// invalidate(); -// } + private void onTouched2(float x, float y) { +// path2 = new Path(); + clonepath.moveTo(x, y); + invalidate(); + } //----------------------------------------------------------------- // 押した後動かした時の処理 -// private void onTouchedMove2(float x, float y) { -// clonepath.lineTo(x, y); -// invalidate(); -// } + private void onTouchedMove2(float x, float y) { + clonepath.lineTo(x, y); + invalidate(); + } //----------------------------------------------------------------- //----------------------------------------------------------------- @@ -236,28 +236,28 @@ curCanvas.drawColor(0xFFFFFFFF); } -// //----------------------------------------------------------------- -// //描写するための取得 -// public void getCanvas() { -// int cnt = 0; -// clonepath.reset(); -// invalidate(); -// for (Stroke s : paintViewModel.getStroke().getValue()) { -// for (Position p : s.getPositions()) { -// if (cnt == 0) { -// onTouched2(p.getX(), p.getY()); -// } else { -// if (p.getX() == -1) { -// -// } else { -// onTouchedMove2(p.getX(), p.getY()); -// } -// } -// cnt++; -// } -// cnt = 0; -// } -// paintViewModel.deleteStroke(); -// } + //----------------------------------------------------------------- + //描写するための取得 + public void getCanvas() { + int cnt = 0; + clonepath.reset(); + invalidate(); + for (Stroke s : paintViewModel.getStroke().getValue()) { + for (Position p : s.getPositions()) { + if (cnt == 0) { + onTouched2(p.getX(), p.getY()); + } else { + if (p.getX() == -1) { + + } else { + onTouchedMove2(p.getX(), p.getY()); + } + } + cnt++; + } + cnt = 0; + } + paintViewModel.deleteStroke(); + } //----------------------------------------------------------------- } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintOnionCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintOnionCanvas.java index cbedc40..f9002e7 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintOnionCanvas.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintOnionCanvas.java @@ -19,7 +19,7 @@ import java.util.ConcurrentModificationException; import java.util.List; -public class PaintOnionCanvas extends View{ +public class PaintOnionCanvas extends View { //----------------------------------------------------------------- private Path path = new Path(); @@ -56,15 +56,16 @@ //----------------------------------------------------------------- // - public void updateCanvas(){ + public void updateCanvas() { int cnt = 0; - path.reset(); + + clearCanvas(); for (Stroke s : paintViewModel.getPreStrokes().getValue()) { for (Position p : s.getPositions()) { - if (cnt == 0) + if (cnt == 0) { path.moveTo(p.getX(), p.getY()); - else { + } else { if (p.getX() != -1) path.lineTo(p.getX(), p.getY()); } @@ -73,7 +74,7 @@ } cnt = 0; } - paintViewModel.deleteStroke(); + paintViewModel.deletePreStroke(); } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java index 25c2811..2372a45 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java @@ -27,7 +27,6 @@ private MutableLiveData mCurPageNo = new MutableLiveData<>(1); private MutableLiveData mCurPageId = new MutableLiveData<>(0); - private MutableLiveData mPrePageId = new MutableLiveData<>(0); private MutableLiveData mPageSize = new MutableLiveData<>(0); private MutableLiveData mStrokeNo = new MutableLiveData(0); @@ -169,7 +168,7 @@ // ひとつ前のページを記憶する private void updatePrePageId(){ PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel(); - pageConnectionModel.getPrePageId(mPrePageId); + pageConnectionModel.getPrePageId(); } //----------------------------------------------------------------- @@ -207,6 +206,10 @@ this.mStrokes.getValue().clear(); } + public void deletePreStroke(){ + mPreStroke.getValue().clear(); + } + public void deletePosition() { this.mlatestPosition.getValue().clear(); } @@ -225,7 +228,8 @@ // 現在のStrokeと1ページ前のStrokeを取得 paintModelContainer.getPaintConnectionModel().getStrokes(mStrokes); - paintModelContainer.getPaintConnectionModel().getPreStrokes(mPreStroke, mPrePageId); + + paintModelContainer.getPaintConnectionModel().getPreStrokes(mPreStroke); paintModelContainer.getPageConnectionModel().getPageSize(mPageSize); } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PageConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PageConnectionModel.java index 750f045..1a28047 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PageConnectionModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PageConnectionModel.java @@ -129,27 +129,31 @@ //----------------------------------------------------------------- // 前のページのIDを取得する - public void getPrePageId(MutableLiveData mPrePageId) { - final PagesRest pagesRest = retrofit.create(PagesRest.class); + public void getPrePageId() { // ページが後ろにあれば取得 if (1 < acanthus.getEditingPageNo()) { + final PagesRest pagesRest = retrofit.create(PagesRest.class); + Call call = pagesRest.getPage(acanthus.getAid(), acanthus.getEditingPageNo() - 1); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { - mPrePageId.setValue(response.body().getPid()); + acanthus.setPrePageId(response.body().getPid()); + Log.d("prePid", acanthus.getPrePageId().toString()); } } @Override public void onFailure(Call call, Throwable t) { - Log.d("failure", "omg"); + } }); + } } - //----------------------------------------------------------------- +//----------------------------------------------------------------- } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PaintConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PaintConnectionModel.java index 2df9ae9..623ecca 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PaintConnectionModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PaintConnectionModel.java @@ -133,7 +133,7 @@ //----------------------------------------------------------------- // 前のページの全strokeを取得する - public void getPreStrokes(MutableLiveData> preStrokes, LiveData prePid) { + public void getPreStrokes(MutableLiveData> preStrokes) { // 前のページが存在するときのみ if (1 < acanthus.getEditingPageNo()) { @@ -142,7 +142,7 @@ //----------------------------------------------------------------- // 筆跡追加API - Call> call = strokesRest.getStrokes(acanthus.getAid(), prePid.getValue(), 0); + Call> call = strokesRest.getStrokes(acanthus.getAid(), acanthus.getPrePageId(), 0); call.enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/page/PageActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/page/PageActivity.java index 02e1c72..baa2f3d 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/page/PageActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/page/PageActivity.java @@ -1,10 +1,13 @@ package org.ntlab.acanthus_client.views.paint.page; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ComponentActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; +import android.content.Intent; import android.os.Bundle; +import android.telephony.mbms.MbmsErrors; import android.view.MotionEvent; import android.view.View; @@ -13,6 +16,7 @@ import org.ntlab.acanthus_client.Acanthus; import org.ntlab.acanthus_client.R; import org.ntlab.acanthus_client.databinding.ActivityPageBinding; +import org.ntlab.acanthus_client.views.paint.PaintActivity; import org.ntlab.acanthus_client.views.paint.PaintViewModel; import java.util.concurrent.ScheduledThreadPoolExecutor;