diff --git a/.idea/misc.xml b/.idea/misc.xml index 860da66..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/entities/Animation.java b/app/src/main/java/org/ntlab/acanthus_client/entities/Animation.java index fea8f51..db26207 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/entities/Animation.java +++ b/app/src/main/java/org/ntlab/acanthus_client/entities/Animation.java @@ -27,7 +27,7 @@ private ArrayList hashTag = new ArrayList<>(); private ArrayList editors = new ArrayList<>(); private ArrayList invites = new ArrayList<>(); - private HashMap pageMap = new HashMap<>(); + private HashMap pageMap = new HashMap<>(); private Boolean isDummy; //----------------------------------------------------------------- @@ -90,7 +90,7 @@ return this.editors; } - public HashMap getPageMap() { + public HashMap getPageMap() { return this.pageMap; } diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/Layer.java b/app/src/main/java/org/ntlab/acanthus_client/entities/Layer.java index 99927bc..702ba20 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/entities/Layer.java +++ b/app/src/main/java/org/ntlab/acanthus_client/entities/Layer.java @@ -1,6 +1,23 @@ package org.ntlab.acanthus_client.entities; +import java.util.ArrayList; + //----------------------------------------------------------------- // レイヤー情報 public class Layer { + private ArrayList strokes; + + //----------------------------------------------------------------- + // getter + public ArrayList getStrokes() { + return strokes; + } + + //----------------------------------------------------------------- + // setter + public void setStrokes(ArrayList strokes) { + this.strokes = strokes; + } + //----------------------------------------------------------------- + } 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 61b4502..baf5612 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 @@ -3,4 +3,19 @@ //----------------------------------------------------------------- // ページ情報 public class Page { + private Layer layers; + + //----------------------------------------------------------------- + // getter + public Layer getLayers() { + return layers; + } + + //----------------------------------------------------------------- + // setter + public void setLayers(Layer layers) { + this.layers = layers; + } + //----------------------------------------------------------------- + } 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 0ef487d..b20240d 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 @@ -4,6 +4,7 @@ import org.ntlab.acanthus_client.entities.Stroke; import java.util.ArrayList; +import java.util.Collection; import retrofit2.Call; import retrofit2.http.Field; @@ -19,19 +20,19 @@ //----------------------------------------------------------------- // @GET("gallery/{aid}/pageMap/0/layers/0/strokes") - Call> getStrokes(@Path("aid") Integer aid); + Call> getStrokes(@Path("aid") Integer aid); //----------------------------------------------------------------- // @FormUrlEncoded @POST("gallery/{aid}/pageMap/0/layers/0/strokes") - Call addStrokes(@Path("aid") Integer aid, @Field("uid") Integer uid, @Field("uidToken") String uidToken, + Call addStroke(@Path("aid") Integer aid, @Field("uid") Integer uid, @Field("uidToken") String uidToken, @Field("pen") Integer pen, @Field("color") Integer color, @Field("thick") Integer thick); //----------------------------------------------------------------- // @GET("gallery/{aid}/pageMap/0/layers/0/strokes/{strokeNo}/position") - Call> getPositions(@Path("aid") Integer aid, @Path("strokeNo") Integer strokeNo); + Call> getPositions(@Path("aid") Integer aid, @Path("strokeNo") Integer strokeNo); //----------------------------------------------------------------- // 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 8f9dc88..1c453cf 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,12 +3,24 @@ import android.graphics.Paint; import android.view.View; +import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.entities.Account; +import org.ntlab.acanthus_client.entities.Animation; +import org.ntlab.acanthus_client.entities.Stroke; import org.ntlab.acanthus_client.resources.accounts.LoginRest; import org.ntlab.acanthus_client.resources.gallery.StrokesRest; +import java.text.CollationElementIterator; +import java.util.ArrayList; +import java.util.Collection; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -19,7 +31,12 @@ //----------------------------------------------------------------- // -public class PaintViewModel extends ViewModel { +public class PaintViewModel extends ViewModel implements Runnable { + + private MutableLiveData animationMutableLiveData; + + private int currentStrokeNo; + private Acanthus acanthus; private Retrofit retrofit; //----------------------------------------------------------------- @@ -30,21 +47,51 @@ .addConverterFactory(ScalarsConverterFactory.create()) .addConverterFactory(JacksonConverterFactory.create()) .build(); + + startObservationOfChangedStroke(); } //----------------------------------------------------------------- //----------------------------------------------------------------- // - public void addPosition(Acanthus acanthus, int strokeNo, float x, float y) { + public void addStroke() { final StrokesRest strokesRest = retrofit.create(StrokesRest.class); //----------------------------------------------------------------- // - Call call = strokesRest.addPositions(acanthus.getAid(), strokeNo, x, y); + Call call = strokesRest.addStroke( + acanthus.getAid(),acanthus.getPreferenceUid(), acanthus.getPreferenceToken(),0,0,10); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { -// if(response.isSuccessful()) + if (response.isSuccessful()) { + // Animationにおける + } + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + + + } + + //----------------------------------------------------------------- + // 座標追加API(POST) + public void addPosition(Acanthus acanthus, float x, float y) { + final StrokesRest strokesRest = retrofit.create(StrokesRest.class); + + //----------------------------------------------------------------- + // + Call call = strokesRest.addPositions(acanthus.getAid(), this.currentStrokeNo, x, y); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + // Animationの座標を更新していく + } } @Override @@ -55,9 +102,32 @@ } //----------------------------------------------------------------- - // - public void getRemoteAnimationInfo() { + // 一定間隔でサーバー上の筆跡を取得する(GET) + public void startObservationOfChangedStroke() { + ScheduledThreadPoolExecutor threadPoolExecutor = new ScheduledThreadPoolExecutor(1); + threadPoolExecutor.scheduleWithFixedDelay(this, 1000L, 100L, TimeUnit.MICROSECONDS); } + //----------------------------------------------------------------- + // 筆跡を取得してローカルデータを更新する + @Override + public void run() { + final StrokesRest strokesRest = retrofit.create(StrokesRest.class); + Call> call = strokesRest.getStrokes(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/java/org/ntlab/acanthus_client/views/sign_up/SignUpActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/sign_up/SignUpActivity.java index c87643a..c794096 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/sign_up/SignUpActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/sign_up/SignUpActivity.java @@ -8,6 +8,7 @@ import android.widget.TextView; import org.ntlab.acanthus_client.R; +import org.ntlab.acanthus_client.databinding.ActivitySignUpBinding; import org.ntlab.acanthus_client.entities.AccountUidJson; import org.ntlab.acanthus_client.resources.accounts.AccountsRest; import org.ntlab.acanthus_client.views.login.LoginScreenActivity; @@ -23,59 +24,36 @@ //----------------------------------------------------------------- // public class SignUpActivity extends AppCompatActivity { - //----------------------------------------------------------------- - // 各Viewの列挙型 - public enum EditTexts { - nameForm(0), emailForm(1), passwordForm(2), signUpButton(3), loginButton(4); - - private int textId; - - //----------------------------------------------------------------- - private EditTexts(int textId) { - this.textId = textId; - } - - //----------------------------------------------------------------- - // getter - public int getTextId() { - return this.textId; - } - } - - //----------------------------------------------------------------- - private ArrayList views = new ArrayList<>(); + private ActivitySignUpBinding binding; //----------------------------------------------------------------- // @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_sign_up); - initView(); - Retrofit retrofit = new Retrofit.Builder() - .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") - .addConverterFactory(JacksonConverterFactory.create()) - .build(); - final AccountsRest accountsRest = retrofit.create(AccountsRest.class); + init(); - onClickSignUp(accountsRest); + onClickSignUp(); onClickAlreadyLoggedIn(); } //----------------------------------------------------------------- //----------------------------------------------------------------- // サインアップ時押下時 - private void onClickSignUp(AccountsRest accountsRest) { - Button signUpButton = (Button) views.get(EditTexts.signUpButton.getTextId()); + private void onClickSignUp() { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + final AccountsRest accountsRest = retrofit.create(AccountsRest.class); + + Button signUpButton = (Button) binding.buttonSignUpRegister; // signUpButton.setOnClickListener(v -> { - String name = views.get(EditTexts.nameForm.getTextId()).getText().toString(); - ; - String emailAddress = views.get(EditTexts.emailForm.getTextId()).getText().toString(); - ; - String password = views.get(EditTexts.passwordForm.getTextId()).getText().toString(); - ; + String name = binding.editTextTextSignUpPersonName.getText().toString(); + String emailAddress = binding.editTextTextSignUpEmailAddress.getText().toString(); + String password = binding.editTextTextSignUpPassword.getText().toString(); Call call = accountsRest.createAccount(name, emailAddress, password); call.enqueue(new Callback() { @@ -95,7 +73,7 @@ //----------------------------------------------------------------- // アカウント所持ボタン押下処理 private void onClickAlreadyLoggedIn() { - Button alreadyLoggedInButton = (Button) views.get(EditTexts.loginButton.getTextId()); + Button alreadyLoggedInButton = (Button) binding.buttonAlreadyLoggedIn; // ログイン画面に遷移 alreadyLoggedInButton.setOnClickListener(v -> { @@ -115,20 +93,17 @@ //----------------------------------------------------------------- // 登録内容のクリア private void clearForm() { - for (int i = EditTexts.nameForm.getTextId(); i <= EditTexts.passwordForm.getTextId(); i++) { - views.get(i).getEditableText().clear(); - } - + binding.editTextTextSignUpPersonName.getEditableText().clear(); + binding.editTextTextSignUpEmailAddress.getEditableText().clear(); + binding.editTextTextSignUpPassword.getEditableText().clear(); } //----------------------------------------------------------------- //----------------------------------------------------------------- - // - private void initView() { - views.add(findViewById(R.id.editTextTextSignUpPersonName)); - views.add(findViewById(R.id.editTextTextSignUpEmailAddress)); - views.add(findViewById(R.id.editTextTextSignUpPassword)); - views.add(findViewById(R.id.buttonSignUpRegister)); - views.add(findViewById(R.id.buttonAlreadyLoggedIn)); + // 初期化 + private void init() { + setContentView(R.layout.activity_sign_up); + binding = ActivitySignUpBinding.inflate(getLayoutInflater()); } + //----------------------------------------------------------------- } \ No newline at end of file