diff --git a/.idea/misc.xml b/.idea/misc.xml index 19aa6a5..d5d35ec 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + 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 8adedf9..3c78739 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java +++ b/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java @@ -67,7 +67,10 @@ } public Integer getAid() { - if (this.aid == null) this.aid = 1111; + if (aid == null) { + SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE); + aid = preferences.getInt("aid", 0); + } return aid; } @@ -75,7 +78,7 @@ return currentAnimation; } - public Collection getAnimationJsonList(){ + public Collection getAnimationJsonList() { return animationJsonList; } @@ -117,7 +120,10 @@ } public void setAid(Integer aid) { - this.aid = aid; + SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + editor.putInt("aid", aid); + editor.commit(); } public void setCurrentAnimation(Animation currentAnimation) { @@ -125,7 +131,7 @@ } //HomeViewModelでしようするためのsetter - public void setAnimationJsonList(Collection sentAnimationJsonList){ + public void setAnimationJsonList(Collection sentAnimationJsonList) { this.animationJsonList.clear(); this.animationJsonList.addAll(sentAnimationJsonList); } diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/AnimationJson.java b/app/src/main/java/org/ntlab/acanthus_client/entities/AnimationJson.java index ba82818..fe23182 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/entities/AnimationJson.java +++ b/app/src/main/java/org/ntlab/acanthus_client/entities/AnimationJson.java @@ -1,11 +1,12 @@ package org.ntlab.acanthus_client.entities; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; //----------------------------------------------------------------- // アニメーション -public class AnimationJson { +public class AnimationJson implements Serializable { private Integer aid; private String animationName; private Integer owner; 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/main_menu_ui/edit/EditFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditFragment.java index 2da8422..2d0e7b1 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditFragment.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/EditFragment.java @@ -6,6 +6,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Button; @@ -47,12 +48,6 @@ binding = FragmentEditBinding.inflate(inflater, container, false); View root = binding.getRoot(); - editViewModel.getWorkJson().observe(getViewLifecycleOwner(), new Observer() { - @Override - public void onChanged(@Nullable WorkJson workJson) { - - } - }); return root; } @@ -81,6 +76,7 @@ public void onChanged(@Nullable WorkJson workJson) { aidList = (ArrayList) editViewModel.getWorkJson().getValue().getAid(); AnimationJsonList = (ArrayList) acanthus.getAnimationJsonList(); + ArrayList workList = new ArrayList<>(); if(AnimationJsonList != null){ for(int i=0; i adapterView, View view, int position, long id) { + transitionPaintActivity(workList.get(position)); + } + }); } @@ -146,5 +150,12 @@ startActivity(intent); } + private void transitionPaintActivity(AnimationJson animationJson) { + Acanthus acanthus = (Acanthus) getActivity().getApplication(); + Intent intent = new Intent(acanthus, PaintActivity.class); + intent.putExtra("AnimationJsonData", animationJson); + startActivity(intent); + } + } \ No newline at end of file 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/InvitesConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/InvitesConnectionModel.java index 09c4c66..a014d0c 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/InvitesConnectionModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/InvitesConnectionModel.java @@ -39,17 +39,22 @@ // 新しい編集者の追加(POST) public void inviteNewEditor(Integer invitedUid) { final InvitesRest invitesRest = retrofit.create(InvitesRest.class); - Integer owner = 1; - String token = "abc0"; - int dummy = 1111; //----------------------------------------------------------------- // 招待リクエストを送るAPI - Call call = invitesRest.addInvite(dummy, owner.toString(), invitedUid.toString(), token); + // Call call = invitesRest.addInvite( + // acanthus.getAid(), acanthus.getPreferenceUid().toString(), + // invitedUid.toString(), acanthus.getPreferenceToken()); + + Integer owner = 1; + String token = "abc0"; + int dummyAid = 1111; + + Call call = invitesRest.addInvite(dummyAid, owner.toString(), invitedUid.toString(), token); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - if(response.isSuccessful()); + if (response.isSuccessful()) ; } @Override 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 new file mode 100644 index 0000000..394c716 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/PageConnectionModel.java @@ -0,0 +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" />