diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 797acea..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 78c8159..160c466 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -32,6 +32,7 @@ + animationJsonList = new ArrayList<>(); @@ -78,10 +79,14 @@ } public Integer getEditingPageNo() { - if (editingPageNo == null) editingPageNo = 0; + if (editingPageNo == null) editingPageNo = 1; return editingPageNo; } + public Integer getEditingPageId() { + return this.editingPageId; + } + public Animation getCurrentAnimation() { return currentAnimation; } @@ -143,6 +148,10 @@ this.currentAnimation = currentAnimation; } + public void setEditingPageId(Integer editingPageId) { + this.editingPageId = editingPageId; + } + //HomeViewModelでしようするためのsetter public void setAnimationJsonList(Collection sentAnimationJsonList) { this.animationJsonList.clear(); diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/Page.java b/app/src/main/java/org/ntlab/acanthus_client/entities/Page.java index 10340b0..cc25367 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/entities/Page.java +++ b/app/src/main/java/org/ntlab/acanthus_client/entities/Page.java @@ -5,14 +5,29 @@ //----------------------------------------------------------------- // ページ情報 public class Page { + private Integer pid; + private Integer pageNo; private ArrayList layers = new ArrayList<>(); + //----------------------------------------------------------------- + // getter + public Integer getPid() { + return pid; + } + + public Integer getPageNo() { + return pageNo; + } + public ArrayList getLayers() { return this.layers; } + //----------------------------------------------------------------- + // setter public void setLayers(ArrayList layers) { this.layers = layers; } + } diff --git a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/PagesRest.java b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/PagesRest.java index 816392f..7c577d5 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/PagesRest.java +++ b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/PagesRest.java @@ -28,8 +28,13 @@ //----------------------------------------------------------------- // - @DELETE("gallery/{aid}/pageMap/{pid}") - Call deletePage(@Path("aid") Integer aid, @Path("pid") Integer pid); + @DELETE("gallery/{aid}/pageMap/{pageNo}") + Call deletePage(@Path("aid") Integer aid, @Path("pageNo") Integer pageNo); + + //----------------------------------------------------------------- + // + @GET("gallery/{aid}/pageMap/{pageNo}") + Call getPage(@Path("aid") Integer aid, @Path("pageNo") Integer pageNo); //----------------------------------------------------------------- // diff --git a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/StrokesRest.java b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/StrokesRest.java index 11f7b1a..0f7a43f 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/StrokesRest.java +++ b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/StrokesRest.java @@ -43,21 +43,23 @@ //----------------------------------------------------------------- // @FormUrlEncoded - @POST("gallery/{aid}/pageMap/0/layers/0/strokes/{strokeNo}/positions") - Call addPositions(@Field("positionNo") int i,@Path("aid") Integer aid, @Path("strokeNo") Integer strokeNo, + @POST("gallery/{aid}/pageMap/{pid}/layers/0/strokes/{strokeNo}/positions") + Call addPositions(@Field("positionNo") int i, @Path("aid") Integer aid, + @Path("pid") int pid, @Path("strokeNo") Integer strokeNo, @Field("x") double x, @Field("y") double y); //----------------------------------------------------------------- // - @DELETE("gallery/{aid}/pageMap/0/layers/0/strokes") - Call deleteStrokes(@Path("aid") Integer aid, @Query("uid") Integer uid); + @DELETE("gallery/{aid}/pageMap/{pid}/layers/0/strokes") + Call deleteStrokes(@Path("aid") Integer aid, @Path("pid") Integer pid, @Query("uid") Integer uid); //----------------------------------------------------------------- // @DELETE("gallery/{aid}/pageMap/0/layers/0/strokes/{strokeNo}/positions") Call deleteStrokeNo(@Path("aid") Integer aid, @Path("strokeNo") Integer strokeNo); + //----------------------------------------------------------------- // @GET("gallery/{aid}/pageMap/{pid}/image") - Call getLayers(@Path("aid") Integer aid, @Path("pid")Integer pid); + Call getLayers(@Path("aid") Integer aid, @Path("pid") Integer pid); } \ No newline at end of file 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 18ed989..2f174ce 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 @@ -24,36 +24,31 @@ private PaintModelContainer paintModelContainer; - private MutableLiveData mPageLength = new MutableLiveData<>(); private MutableLiveData mCurPageNo = new MutableLiveData<>(); + private MutableLiveData mCurPageId = new MutableLiveData<>(); private MutableLiveData mPageSize = new MutableLiveData<>(); private MutableLiveData mStrokeNo = new MutableLiveData<>(); + private MutableLiveData> mStrokes = new MutableLiveData<>(); private ScheduledThreadPoolExecutor thread = new ScheduledThreadPoolExecutor(1); - private ArrayListpositionLocalx = new ArrayList<>(); - private ArrayListpositionLocaly = new ArrayList<>(); - private ArrayListlocalstrokeNo = new ArrayList<>(); - private int cnt=0; - private float fsx=0; - private float fsy=0; + private ArrayList positionLocalx = new ArrayList<>(); + private ArrayList positionLocaly = new ArrayList<>(); + private ArrayList localstrokeNo = new ArrayList<>(); + private int cnt = 0; + private float fsx = 0; + private float fsy = 0; + //----------------------------------------------------------------- // getter public MutableLiveData> getStroke() { return this.mStrokes; } - public void deleteStroke() { - this.mStrokes.getValue().clear(); - } public LiveData getStrokeNo() { return this.mStrokeNo; } - public LiveData getPageLength() { - return this.mPageLength; - } - public LiveData getPageNo() { return this.mCurPageNo; } @@ -73,6 +68,8 @@ mStrokes.setValue(new ArrayList<>()); mStrokes.getValue().add(new Stroke()); + // ページの情報初期化 + paintModelContainer.getPageConnectionModel().getPage(mCurPageId); paintModelContainer.getPageConnectionModel().getPageSize(mPageSize); thread.scheduleWithFixedDelay(this, 1000L, 100L, TimeUnit.MILLISECONDS); @@ -80,22 +77,24 @@ //----------------------------------------------------------------- // 描画APIの通信リクエスト - public void addLocalStrokeRequest(float x,float y) { + public void addLocalStrokeRequest(float x, float y) { paintModelContainer.getPaintConnectionModel().addLocalStroke(mStrokeNo); - fsx=x; - fsy=y; - cnt=1; + fsx = x; + fsy = y; + cnt = 1; } + public void addPositionRequest(float x, float y) { // Log.d("mStrokeNo", mStrokeNo.getValue().toString()); - paintModelContainer.getPaintConnectionModel().addPosition(cnt,x,y,mStrokeNo.getValue()); - //positionLocalx.add((double)x); - //positionLocaly.add((double)y); + paintModelContainer.getPaintConnectionModel().addPosition(cnt, x, y, mStrokeNo.getValue()); + //positionLocalx.add((double)x); + //positionLocaly.add((double)y); cnt++; } + public void addPositionRequestfirst() { - paintModelContainer.getPaintConnectionModel().addPosition(0,fsx,fsy,mStrokeNo.getValue()); - paintModelContainer.getPaintConnectionModel().addPosition(cnt,-1,-1,mStrokeNo.getValue()); + paintModelContainer.getPaintConnectionModel().addPosition(0, fsx, fsy, mStrokeNo.getValue()); + paintModelContainer.getPaintConnectionModel().addPosition(cnt, -1, -1, mStrokeNo.getValue()); //Log.d("x", positionLocalx.toString()); //Log.d("y", positionLocaly.toString()); //positionLocalx.clear(); @@ -115,12 +114,15 @@ } //----------------------------------------------------------------- - // - public void updatePageNo(MotionEvent event) { + // 操作するページを切り替える + public void switchToEditPageRequest(MotionEvent event) { PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel(); + PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel(); - // 編集中のページ番号が最大ページ数を超えないように - pageOperationModel.updatePageNo(event, mCurPageNo, mPageSize.getValue()); + pageOperationModel.changeEditPageNo(event, mCurPageNo, mPageSize.getValue()); + //ページを操作したので更新 + pageConnectionModel.getPage(mCurPageId); + } //----------------------------------------------------------------- @@ -130,6 +132,7 @@ pageConnectionModel.addPage(); pageConnectionModel.getPageSize(mPageSize); + Log.d("pageSize:", mPageSize.getValue().toString()); } //----------------------------------------------------------------- @@ -139,6 +142,16 @@ pageConnectionModel.deletePage(); pageConnectionModel.getPageSize(mPageSize); + //ページ削除後同じページ番号のページを再取得する必要あり + Log.d("pageSize:", mPageSize.getValue().toString()); + + //pageConnectionModel.getPage(mCurPageNo); + } + + //----------------------------------------------------------------- + // + public void deleteStroke() { + this.mStrokes.getValue().clear(); } //----------------------------------------------------------------- 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 41257da..114b080 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 @@ -1,5 +1,7 @@ package org.ntlab.acanthus_client.views.paint.models; +import android.util.Log; + import androidx.lifecycle.MutableLiveData; import org.ntlab.acanthus_client.Acanthus; @@ -60,7 +62,7 @@ } //----------------------------------------------------------------- - // + // ページ削除 public void deletePage() { final PagesRest pagesRest = retrofit.create(PagesRest.class); @@ -79,7 +81,7 @@ } //----------------------------------------------------------------- - // + // ページサイズ取得 public void getPageSize(MutableLiveData pageSize) { final PagesRest pagesRest = retrofit.create(PagesRest.class); @@ -87,7 +89,8 @@ call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - if (response.isSuccessful()) pageSize.setValue(response.body()); + if (response.isSuccessful()) + pageSize.setValue(response.body()); } @Override @@ -98,4 +101,28 @@ } //----------------------------------------------------------------- + // ページ情報を取得するリクエスト + public void getPage(MutableLiveData pageId) { + final PagesRest pagesRest = retrofit.create(PagesRest.class); + + Call call = pagesRest.getPage(acanthus.getAid(), acanthus.getEditingPageNo()); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + //acanthus.setEditingPageId(response.body()); + // ページ番号とページIDを取得する + acanthus.setEditingPageNo(response.body().getPageNo()); + acanthus.setEditingPageId(response.body().getPid()); + } + } + + @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/PageOperationModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PageOperationModel.java index cb08f12..1c299f1 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PageOperationModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PageOperationModel.java @@ -1,6 +1,7 @@ package org.ntlab.acanthus_client.views.paint.models; import android.preference.SwitchPreference; +import android.util.Log; import android.view.MotionEvent; import android.view.VelocityTracker; @@ -9,8 +10,7 @@ import org.ntlab.acanthus_client.Acanthus; //----------------------------------------------------------------- -// - +// ページの操作 public class PageOperationModel { //----------------------------------------------------------------- // スワイプの向き @@ -31,19 +31,25 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- - public void updatePageNo(MotionEvent event, MutableLiveData mCurPageNo, Integer pageSize) { + // 編集中のページを切り替える + public void changeEditPageNo(MotionEvent event, MutableLiveData mCurPageNo, Integer pageSize) { mCurPageNo.setValue(acanthus.getEditingPageNo()); //ページの枚数以上現在のページ番号を更新しない - if (getVelocityDirection(event).equals(SwipeDirectionType.LEFT) && (mCurPageNo.getValue() < (pageSize - 1))) + if (getVelocityDirection(event).equals(SwipeDirectionType.LEFT) && (mCurPageNo.getValue() < pageSize)) incrementPageNo(mCurPageNo); if (getVelocityDirection(event).equals(SwipeDirectionType.RIGHT)) decrementPageNo(mCurPageNo); + + + + Log.d("pageNo", acanthus.getEditingPageNo().toString()); + Log.d("pid", acanthus.getEditingPageId().toString()); } //----------------------------------------------------------------- //----------------------------------------------------------------- - // + // ページを進める public void incrementPageNo(MutableLiveData mPageNo) { Integer editingNo = acanthus.getEditingPageNo(); @@ -52,16 +58,16 @@ } //-----------------------------------------------------------------s - // - private void decrementPageNo(MutableLiveData mPageNo) { + // ページ番号を前に戻す + public void decrementPageNo(MutableLiveData mPageNo) { Integer editingNo = acanthus.getEditingPageNo(); - if (0 < editingNo) { + + if (1 < editingNo) { acanthus.setEditingPageNo(acanthus.getEditingPageNo() - 1); mPageNo.setValue(acanthus.getEditingPageNo()); } } - //----------------------------------------------------------------- // 操作からスワイプの向きを取得する private SwipeDirectionType getVelocityDirection(MotionEvent event) { 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 f2d866d..960c354 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 @@ -58,9 +58,7 @@ .addConverterFactory(JacksonConverterFactory.create()) .build(); } -//----------------------------------------------------------------- -//----------▽▽POST▽▽---------- - //----------------------------------------------------------------- + //----------------------------------------------------------------- // ローカルでのストロークの追加(POST) public void addLocalStroke(MutableLiveData mStrokeNo) { @@ -70,7 +68,7 @@ //----------------------------------------------------------------- // ストローク追加API Call call = strokesRest.addStroke( - acanthus.getAid(), acanthus.getEditingPageNo(), 0, acanthus.getPreferenceUid(), acanthus.getPreferenceToken(), + acanthus.getAid(), acanthus.getEditingPageId(), 0, acanthus.getPreferenceUid(), acanthus.getPreferenceToken(), 0, 0, 10); // strokeNoを更新 @@ -82,21 +80,23 @@ @Override public void onFailure(Call call, Throwable t) { - Log.d("POSTonFailure: ","strokeNo"); + Log.d("POSTonFailure: ", "strokeNo"); } }); } //----------------------------------------------------------------- // ローカルでの筆跡追加(POST) - public void addPosition(int i ,double x, double y, int currentStrokeNo) { + public void addPosition(int i, double x, double y, int currentStrokeNo) { final StrokesRest strokesRest = retrofit.create(StrokesRest.class); //Log.d("strokeNo:", currentStrokeNo); + Log.d("curPageId:", acanthus.getEditingPageId().toString()); + Log.d("curPageNo:", acanthus.getEditingPageNo().toString()); //----------------------------------------------------------------- // 座標追加 - Call call = strokesRest.addPositions(i,acanthus.getAid(), currentStrokeNo, x, y); + Call call = strokesRest.addPositions(i, acanthus.getAid(), acanthus.getEditingPageId(), currentStrokeNo, x, y); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { @@ -105,15 +105,11 @@ @Override public void onFailure(Call call, Throwable t) { - Log.d("POSTonFailure: ","i:"+i+",x:"+x+",y:"+y ); + Log.d("POSTonFailure: ", "i:" + i + ",x:" + x + ",y:" + y); } }); } -//----------△△POST△△---------- -//----------------------------------------------------------------- -/////////////////////////////////////////////////////////////////////////////////////////////////////////// -//----------------------------------------------------------------- -//----------▽▽GET▽▽---------- + //----------------------------------------------------------------- // 全strokeを取得する public void getStrokes(MutableLiveData> strokes) { @@ -121,7 +117,7 @@ //----------------------------------------------------------------- // 筆跡追加API - Call> call = strokesRest.getStrokes(acanthus.getAid(), 0, 0); + Call> call = strokesRest.getStrokes(acanthus.getAid(), acanthus.getEditingPageId(), 0); call.enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { @@ -143,7 +139,7 @@ //----------------------------------------------------------------- // 現在の筆跡番号の取得 - Call call = layersRest.getStrokeSize(acanthus.getAid(), 0, 0); + Call call = layersRest.getStrokeSize(acanthus.getAid(), acanthus.getEditingPageId(), 0); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { @@ -156,11 +152,7 @@ } }); } -//----------△△GET△△---------- -//----------------------------------------------------------------- -/////////////////////////////////////////////////////////////////////////////////////////////////////////// -//----------------------------------------------------------------- -//----------▽▽delete▽▽---------- + //----------------------------------------------------------------- // "Clear"ボタンによる描画の全消去 / サーバー側の筆跡全削除 public void deleteStrokes() { @@ -168,7 +160,7 @@ //----------------------------------------------------------------- // 筆跡をすべて削除する - Call call = strokesRest.deleteStrokes(acanthus.getAid(), acanthus.getPreferenceUid()); + Call call = strokesRest.deleteStrokes(acanthus.getAid(), acanthus.getEditingPageId(), acanthus.getPreferenceUid()); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { @@ -179,7 +171,7 @@ } }); } -//----------△△delete△△---------- -//----------------------------------------------------------------- + + //----------------------------------------------------------------- } \ No newline at end of file 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 6e55aef..83f2533 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 @@ -75,7 +75,7 @@ //----------------------------------------------------------------- // public void slidePage(MotionEvent event) { - paintViewModel.updatePageNo(event); + paintViewModel.switchToEditPageRequest(event); } //----------------------------------------------------------------- @@ -89,13 +89,6 @@ //----------------------------------------------------------------- // private void startObserve() { - paintViewModel.getPageLength().observe(this, new Observer() { - @Override - public void onChanged(Integer i) { - binding.buttonAddPage.setText(String.valueOf(i)); - } - }); - paintViewModel.getPageNo().observe(this, new Observer() { @Override public void onChanged(Integer pageNo) {