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 4cf6c47..b9c2bf2 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java +++ b/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java @@ -4,6 +4,8 @@ import android.content.SharedPreferences; import android.graphics.drawable.shapes.OvalShape; +import androidx.core.math.MathUtils; + import org.ntlab.acanthus_client.entities.Animation; import org.ntlab.acanthus_client.entities.AnimationJson; @@ -134,7 +136,7 @@ } public void setEditingPageNo(Integer editingPageNo) { - this.editingPageNo = editingPageNo; + this.editingPageNo = MathUtils.clamp(editingPageNo, 0, 999); } public void setCurrentAnimation(Animation currentAnimation) { 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 d0e530c..816392f 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 @@ -5,6 +5,7 @@ import java.util.ArrayList; import retrofit2.Call; +import retrofit2.http.DELETE; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; @@ -23,7 +24,18 @@ //----------------------------------------------------------------- // @POST("gallery/{aid}/pageMap") - Call addPage(@Path("aid")Integer aid); + Call addPage(@Path("aid") Integer aid); //----------------------------------------------------------------- + // + @DELETE("gallery/{aid}/pageMap/{pid}") + Call deletePage(@Path("aid") Integer aid, @Path("pid") Integer pid); + + //----------------------------------------------------------------- + // + @GET("gallery/{aid}/pageMap/size") + Call getPageSize(@Path("aid") Integer aid); + + //----------------------------------------------------------------- + } 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 a279ac3..804995d 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 @@ -8,6 +8,8 @@ import org.ntlab.acanthus_client.Acanthus; import org.ntlab.acanthus_client.entities.Stroke; +import org.ntlab.acanthus_client.views.paint.models.PageConnectionModel; +import org.ntlab.acanthus_client.views.paint.models.PageOperationModel; import java.util.ArrayList; import java.util.Collection; @@ -22,7 +24,8 @@ private PaintModelContainer paintModelContainer; private MutableLiveData mPageLength = new MutableLiveData<>(); - private MutableLiveData mPageNo = new MutableLiveData<>(); + private MutableLiveData mCurPageNo = new MutableLiveData<>(); + private MutableLiveData mPageSize = new MutableLiveData<>(); private MutableLiveData mStrokeNo = new MutableLiveData<>(); private MutableLiveData> mStrokes = new MutableLiveData<>(); @@ -43,7 +46,7 @@ } public LiveData getPageNo() { - return this.mPageNo; + return this.mCurPageNo; } public PaintModelContainer getPaintModelContainer() { @@ -61,6 +64,8 @@ mStrokes.setValue(new ArrayList<>()); mStrokes.getValue().add(new Stroke()); + paintModelContainer.getPageConnectionModel().getPageSize(mPageSize); + thread.scheduleWithFixedDelay(this, 1000L, 100L, TimeUnit.MILLISECONDS); } @@ -89,13 +94,28 @@ //----------------------------------------------------------------- // public void updatePageNo(MotionEvent event) { - paintModelContainer.getPageOperationModel().updatePageNo(event, mPageNo); + PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel(); + + // 編集中のページ番号が最大ページ数を超えないように + pageOperationModel.updatePageNo(event, mCurPageNo, mPageSize.getValue()); } //----------------------------------------------------------------- // ページの追加通信リクエスト public void addPageRequest() { - paintModelContainer.getPageConnectionModel().addPage(mPageLength); + PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel(); + + pageConnectionModel.addPage(); + pageConnectionModel.getPageSize(mPageSize); + } + + //----------------------------------------------------------------- + // + public void deletePageRequest() { + PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel(); + + pageConnectionModel.deletePage(); + pageConnectionModel.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 5ae613e..41257da 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 @@ -42,14 +42,13 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- // ページ追加API - public void addPage(MutableLiveData mPageNo) { + public void addPage() { final PagesRest pagesRest = retrofit.create(PagesRest.class); Call call = pagesRest.addPage(acanthus.getAid()); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - if (response.isSuccessful()) mPageNo.setValue(response.body()); } @Override @@ -59,7 +58,44 @@ }); } + //----------------------------------------------------------------- + // + public void deletePage() { + final PagesRest pagesRest = retrofit.create(PagesRest.class); + Call call = pagesRest.deletePage(acanthus.getAid(), acanthus.getEditingPageNo()); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { +// if(response.isSuccessful()) + } + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + } + + //----------------------------------------------------------------- + // + public void getPageSize(MutableLiveData pageSize) { + final PagesRest pagesRest = retrofit.create(PagesRest.class); + + Call call = pagesRest.getPageSize(acanthus.getAid()); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) pageSize.setValue(response.body()); + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + } + + //----------------------------------------------------------------- } 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 7f2940d..cb08f12 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 @@ -31,16 +31,20 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- - public void updatePageNo(MotionEvent event, MutableLiveData mPageNo) { - if (getVelocityDirection(event).equals(SwipeDirectionType.RIGHT)) incrementPageNo(mPageNo); - if (getVelocityDirection(event).equals(SwipeDirectionType.LEFT)) decrementPageNo(mPageNo); + public void updatePageNo(MotionEvent event, MutableLiveData mCurPageNo, Integer pageSize) { + mCurPageNo.setValue(acanthus.getEditingPageNo()); + + //ページの枚数以上現在のページ番号を更新しない + if (getVelocityDirection(event).equals(SwipeDirectionType.LEFT) && (mCurPageNo.getValue() < (pageSize - 1))) + incrementPageNo(mCurPageNo); + if (getVelocityDirection(event).equals(SwipeDirectionType.RIGHT)) + decrementPageNo(mCurPageNo); } //----------------------------------------------------------------- //----------------------------------------------------------------- // public void incrementPageNo(MutableLiveData mPageNo) { -// if(acanthus.getEditingPageNo()) Integer editingNo = acanthus.getEditingPageNo(); acanthus.setEditingPageNo(editingNo + 1); @@ -51,7 +55,7 @@ // private void decrementPageNo(MutableLiveData mPageNo) { Integer editingNo = acanthus.getEditingPageNo(); - if (0 < editingNo ) { + if (0 < editingNo) { acanthus.setEditingPageNo(acanthus.getEditingPageNo() - 1); mPageNo.setValue(acanthus.getEditingPageNo()); } 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 6d2efd9..18dc845 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 @@ -92,7 +92,7 @@ public void addPosition(float x, float y, LiveData currentStrokeNo) { final StrokesRest strokesRest = retrofit.create(StrokesRest.class); - Log.d("strokeNo:", currentStrokeNo.getValue().toString()); +// Log.d("strokeNo:", currentStrokeNo.getValue().toString()); //----------------------------------------------------------------- // 座標追加 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 2d6856f..6e55aef 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 @@ -40,6 +40,12 @@ //----------------------------------------------------------------- // + public void onClickDeletePage(View view) { + paintViewModel.deletePageRequest(); + } + + //----------------------------------------------------------------- + // @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getActionMasked(); diff --git a/app/src/main/res/layout/activity_page.xml b/app/src/main/res/layout/activity_page.xml index ea819b4..248d070 100644 --- a/app/src/main/res/layout/activity_page.xml +++ b/app/src/main/res/layout/activity_page.xml @@ -13,15 +13,32 @@ android:background="@android:drawable/presence_online" android:backgroundTint="#FF4545" android:onClick="onClickAddPage" - android:text="pageNo" + android:text="+" android:textColor="#FFFFFF" app:iconTint="#C32828" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.498" + app:layout_constraintHorizontal_bias="0.896" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.802" /> + app:layout_constraintVertical_bias="0.84" /> + +