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 new file mode 100644 index 0000000..d0e530c --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/PagesRest.java @@ -0,0 +1,29 @@ +package org.ntlab.acanthus_client.resources.gallery; + +import org.ntlab.acanthus_client.entities.Page; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.Part; +import retrofit2.http.Path; + +//----------------------------------------------------------------- +// +public interface PagesRest { + + //----------------------------------------------------------------- + // + @GET("gallery/{aid}/pageMap") + Call> getPages(@Path("aid") Integer aid); + + //----------------------------------------------------------------- + // + @POST("gallery/{aid}/pageMap") + Call addPage(@Path("aid")Integer aid); + + //----------------------------------------------------------------- +} 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 af7d263..6609dbb 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 @@ -1,6 +1,7 @@ package org.ntlab.acanthus_client.views.paint; import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import android.os.Bundle; @@ -22,6 +23,13 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- @Override + public void onDestroy() { + super.onDestroy(); + paintViewModel.stop(); + } + + //----------------------------------------------------------------- + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); @@ -41,6 +49,12 @@ } //----------------------------------------------------------------- + // + public void onClickAddPage(View view) { + paintViewModel.addPageRequest(); + } + + //----------------------------------------------------------------- //----------------------------------------------------------------- // init private void init() { @@ -60,9 +74,4 @@ paintCanvas.setPaintViewModel(paintViewModel); } //----------------------------------------------------------------- - @Override - public void onDestroy(){ - super.onDestroy(); - paintViewModel.stop(); - } } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModelContainer.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModelContainer.java index 5ff4f92..c4d21e3 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModelContainer.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModelContainer.java @@ -1,7 +1,9 @@ package org.ntlab.acanthus_client.views.paint; import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.resources.gallery.PagesRest; import org.ntlab.acanthus_client.views.paint.models.InvitesConnectionModel; +import org.ntlab.acanthus_client.views.paint.models.PageConnectionModel; import org.ntlab.acanthus_client.views.paint.models.PaintConnectionModel; //----------------------------------------------------------------- @@ -9,6 +11,7 @@ public class PaintModelContainer { private PaintConnectionModel paintConnectionModel; private InvitesConnectionModel invitesConnectionModel; + private PageConnectionModel pageConnectionModel; //----------------------------------------------------------------- //----------------------------------------------------------------- @@ -16,6 +19,7 @@ public PaintModelContainer(Acanthus acanthus) { this.paintConnectionModel = new PaintConnectionModel(acanthus); this.invitesConnectionModel = new InvitesConnectionModel(acanthus); + this.pageConnectionModel = new PageConnectionModel(acanthus); } //----------------------------------------------------------------- @@ -25,7 +29,12 @@ } public InvitesConnectionModel getInvitesConnectionModel() { - return this.invitesConnectionModel; + return invitesConnectionModel; } + + public PageConnectionModel getPageConnectionModel() { + return pageConnectionModel; + } + //----------------------------------------------------------------- } 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 896ea6d..87b3081 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 @@ -3,6 +3,7 @@ import android.util.Log; import android.view.MotionEvent; +import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; @@ -19,16 +20,18 @@ //----------------------------------------------------------------- // 描画処理の仲介 -public class PaintViewModel extends ViewModel implements Runnable{ +public class PaintViewModel extends ViewModel implements Runnable { private PaintModelContainer paintModelContainer; + private MutableLiveData> paintPosition; - private MutableLiveData> mStrokes; + private MutableLiveData> mStrokes = new MutableLiveData<>(); + private ScheduledThreadPoolExecutor thread = new ScheduledThreadPoolExecutor(1); //----------------------------------------------------------------- // getter - public MutableLiveData> getStroke(){ + public MutableLiveData> getStroke() { return this.mStrokes; } @@ -70,12 +73,18 @@ } //----------------------------------------------------------------- - // 描画情報の全クリア - public void deleteStrokesRequest(){ + // 描画情報の全クリア通信リクエスト + public void deleteStrokesRequest() { paintModelContainer.getPaintConnectionModel().deleteStrokes(); } //----------------------------------------------------------------- + // ページの追加通信リクエスト + public void addPageRequest() { + paintModelContainer.getPageConnectionModel().addPage(); + } + + //----------------------------------------------------------------- // 一定間隔でサーバー上の筆跡を取得する(GET) @Override public void run() { @@ -86,7 +95,8 @@ //----------------------------------------------------------------- // - public void stop(){ + public void stop() { thread.shutdown(); } + //----------------------------------------------------------------- } \ No newline at end of file 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 36351f7..394c716 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,8 +1,64 @@ package org.ntlab.acanthus_client.views.paint.models; +import androidx.lifecycle.MutableLiveData; + +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.entities.Page; +import org.ntlab.acanthus_client.resources.gallery.PagesRest; +import org.ntlab.acanthus_client.resources.gallery.StrokesRest; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; +import retrofit2.converter.scalars.ScalarsConverterFactory; + //----------------------------------------------------------------- -// +// ページ更新通信 public class PageConnectionModel { + + private Retrofit retrofit; + private Acanthus acanthus; + + //----------------------------------------------------------------- + // + public PageConnectionModel(Acanthus acanthus) { + init(acanthus); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // init + public void init(Acanthus acanthus) { + this.acanthus = acanthus; + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") + .addConverterFactory(ScalarsConverterFactory.create()) + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // ページ追加API + 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()) ; + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + + } //----------------------------------------------------------------- } diff --git a/app/src/main/res/layout/activity_paint.xml b/app/src/main/res/layout/activity_paint.xml index 8b6f4d7..a8be3dd 100644 --- a/app/src/main/res/layout/activity_paint.xml +++ b/app/src/main/res/layout/activity_paint.xml @@ -12,7 +12,9 @@ android:id="@+id/myCanvas" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_weight="1" /> + android:layout_weight="1" + tools:layout_editor_absoluteX="133dp" + tools:layout_editor_absoluteY="16dp" />