diff --git a/.idea/compiler.xml b/.idea/compiler.xml index fb7f4a8..61a9130 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file 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/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..91e690e --- /dev/null +++ b/app/src/main/ic_launcher-playstore.png Binary files differ 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 b58060b..ffb2f0b 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java +++ b/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java @@ -2,11 +2,13 @@ import android.app.Application; import android.content.SharedPreferences; +import android.graphics.drawable.shapes.OvalShape; import org.ntlab.acanthus_client.entities.Animation; import org.ntlab.acanthus_client.entities.AnimationJson; import java.util.ArrayList; +import java.util.Collection; //----------------------------------------------------------------- // ユーザーアカウント @@ -20,7 +22,7 @@ //----------------------------------------------------------------- private Integer aid; private Animation currentAnimation; - private ArrayList animationJsonList; + private Collection animationJsonList; //----------------------------------------------------------------- // getter @@ -73,6 +75,10 @@ return currentAnimation; } + public Collection getAnimationJsonList(){ + return animationJsonList; + } + //----------------------------------------------------------------- // setter public void setPreferenceUid(Integer preferenceUid) { @@ -118,6 +124,12 @@ this.currentAnimation = currentAnimation; } + //HomeViewModelでしようするためのsetter + public void setAnimationJsonList(Collection sentAnimationJsonList){ + this.animationJsonList.clear(); + this.animationJsonList.addAll(sentAnimationJsonList); + } + //----------------------------------------------------------------- // public void addAnimationJsonList(AnimationJson animationJson) { diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/AccountTokenJson.java b/app/src/main/java/org/ntlab/acanthus_client/entities/AccountTokenJson.java deleted file mode 100644 index f0b17ea..0000000 --- a/app/src/main/java/org/ntlab/acanthus_client/entities/AccountTokenJson.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.ntlab.acanthus_client.entities; - -//----------------------------------------------------------------- -// アカウントに発行されたトークン -public class AccountTokenJson { - private String token; - - //----------------------------------------------------------------- - // getter - public String getToken() { - return token; - } -} diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/LoginResponseJson.java b/app/src/main/java/org/ntlab/acanthus_client/entities/LoginResponseJson.java new file mode 100644 index 0000000..2270d30 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/entities/LoginResponseJson.java @@ -0,0 +1,22 @@ +package org.ntlab.acanthus_client.entities; + +//----------------------------------------------------------------- +// アカウントに発行されたトークン +public class LoginResponseJson { + private Integer uid; + private String token; + + public LoginResponseJson() { + } + + //----------------------------------------------------------------- + // getter + public Integer getUid() { + return this.uid; + } + + public String getToken() { + return this.token; + } + //----------------------------------------------------------------- +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/AccountsRest.java b/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/AccountsRest.java index 675c3b9..222638e 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/AccountsRest.java +++ b/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/AccountsRest.java @@ -2,7 +2,6 @@ import org.ntlab.acanthus_client.entities.Account; import org.ntlab.acanthus_client.entities.AccountJson; -import org.ntlab.acanthus_client.entities.AccountTokenJson; import org.ntlab.acanthus_client.entities.AccountUidJson; import java.util.Collection; @@ -12,7 +11,6 @@ import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; -import retrofit2.http.PUT; import retrofit2.http.Path; import retrofit2.http.Query; diff --git a/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/InvitedRest.java b/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/InvitedRest.java index 7edc2bd..9ee5fa8 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/InvitedRest.java +++ b/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/InvitedRest.java @@ -1,5 +1,7 @@ package org.ntlab.acanthus_client.resources.accounts; +import java.util.Collection; + import retrofit2.Call; import retrofit2.http.DELETE; import retrofit2.http.Field; @@ -20,6 +22,14 @@ //----------------------------------------------------------------- + @GET("accounts/{uid}/invited") + Call> getAccountInvited( + @Path("uid") Integer ownerUid, + @Query("token") Integer token + ); + + //----------------------------------------------------------------- + @FormUrlEncoded @PUT("accounts/{uid}/invited") Call addAccountInvited( diff --git a/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/LoginRest.java b/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/LoginRest.java index 228511b..c78370a 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/LoginRest.java +++ b/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/LoginRest.java @@ -1,6 +1,6 @@ package org.ntlab.acanthus_client.resources.accounts; -import org.ntlab.acanthus_client.entities.AccountTokenJson; +import org.ntlab.acanthus_client.entities.LoginResponseJson; import retrofit2.Call; import retrofit2.http.Field; @@ -23,7 +23,7 @@ // トークンの発行 @FormUrlEncoded @PUT("accounts/login") - Call issueLoginToken( + Call issueLoginToken( @Field("email")String email, @Field("password")String password ); diff --git a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/InvitesRest.java b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/InvitesRest.java index e0d5cef..fc9ced3 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/InvitesRest.java +++ b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/InvitesRest.java @@ -42,7 +42,7 @@ @DELETE("gallery/{aid}/incites") Call deleteInvite( @Path("aid") Integer aid, - @Field("invitedUid") String incitedUid, + @Field("invitedUid") String invitedUid, @Field("invitedToken") String invitedToken ); 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 e65b460..c33928a 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 @@ -50,7 +50,7 @@ //----------------------------------------------------------------- // - @GET("gallery/{aid}/pageMap/0/layers/0/strokes/{strokeNo}/positions") + @DELETE("gallery/{aid}/pageMap/0/layers/0/strokes/{strokeNo}/positions") Call deleteStrokeNo(@Path("aid") Integer aid, @Path("strokeNo") Integer strokeNo); //----------------------------------------------------------------- -} +} \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationActivity.java index 10e455e..c5f65f5 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationActivity.java @@ -11,5 +11,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animation); + + AnimationCanvas animation = new AnimationCanvas(this); + setContentView(animation); } } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationCanvas.java new file mode 100644 index 0000000..9241984 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationCanvas.java @@ -0,0 +1,54 @@ +package org.ntlab.acanthus_client.views.animation; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.view.View; + +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.entities.Position; +import org.ntlab.acanthus_client.entities.Stroke; + +import java.util.ArrayList; + +import retrofit2.Retrofit; + +public class AnimationCanvas extends View { + private Retrofit retrofit; + private Acanthus acanthus; + private AnimationViewModel animation = new AnimationViewModel(); + private Paint paint = new Paint(); + + public AnimationCanvas(Context context) { + super(context); + } +/* + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + Stroke stroke = retrofit.create(Stroke.class); + paint.setStrokeWidth(stroke.getThickness()); + paint.setColor(stroke.getColor()); + ArrayList pts = stroke.getPositions(); + //canvas.drawLines(pts, paint); + } +*/ + //ダミーです。 + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + //canvas.drawRect(100, 100, 200, 300, paint); + //canvas.drawRect(300, 200, 400, 400, paint); + //canvas.drawRect(500, 300, 600, 500, paint); + + //Stroke stroke = retrofit.create(Stroke.class); + paint.setStrokeWidth(20); + paint.setColor(Color.RED); + float pts[] = {100, 1000, 500, 100, 500, 100, 900, 1000, 900, 1000, 250, 450, 250, 450, 800, 450}; + canvas.drawLines(pts, paint); + + } + +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationViewModel.java new file mode 100644 index 0000000..69a41a1 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationViewModel.java @@ -0,0 +1,47 @@ +/*package org.ntlab.acanthus_client.views.animation; + +import androidx.lifecycle.ViewModel; + +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.entities.Stroke; + +import retrofit2.Retrofit; + +public class AnimationViewModel extends ViewModel { + private Retrofit retrofit; + private Acanthus acanthus; + // getStrokes + public void getAnimationStrokes() { + Stroke stroke = retrofit.create(Stroke.class); + stroke.getPositions(); + stroke.getPen(); + stroke.getColor(); + stroke.getThickness(); + + //return stroke; + } +} +*/ +package org.ntlab.acanthus_client.views.animation; + +import androidx.lifecycle.ViewModel; + +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.entities.Stroke; +import org.ntlab.acanthus_client.resources.gallery.StrokesRest; + +import java.util.Collection; + +import retrofit2.Call; +import retrofit2.Retrofit; + +public class AnimationViewModel extends ViewModel { + private Retrofit retrofit; + private Acanthus acanthus; + // getStrokes + public void getAnimationStrokes() { + final StrokesRest strokesRest = retrofit.create(StrokesRest.class); + Call> call = strokesRest.getStrokes(acanthus.getAid()); + + } +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenActivity.java index 9bf96e2..f78cae3 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenActivity.java @@ -20,15 +20,13 @@ //----------------------------------------------------------------- private LoginScreenViewModel loginScreenViewModel; - private ActivityLoginScreenBinding binding; - //----------------------------------------------------------------- // ログインボタン押下時の処理 public void onClickLogin(View view) { Acanthus acanthus = (Acanthus) getApplication(); loginScreenViewModel.issueLoginToken( - acanthus, binding.editTextTextLoginEmail, binding.editTextTextLoginPassword); + acanthus, findViewById(R.id.editTextTextLoginEmail), findViewById(R.id.editTextTextLoginPassword)); } //----------------------------------------------------------------- @@ -44,8 +42,6 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); - //Acanthus acanthus = (Acanthus) getApplication(); - //loginScreenViewModel.LoginToken(acanthus,acanthus.getEmail(),acanthus.getPassword()); } //----------------------------------------------------------------- @@ -53,8 +49,6 @@ // 初期化 private void init() { setContentView(R.layout.activity_login_screen); - binding = ActivityLoginScreenBinding.inflate(getLayoutInflater()); - startObserve(); } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenViewModel.java index 9e78106..8a1d2a8 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/login/LoginScreenViewModel.java @@ -2,12 +2,13 @@ import android.widget.EditText; +import androidx.annotation.RestrictTo; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import org.ntlab.acanthus_client.Acanthus; -import org.ntlab.acanthus_client.entities.AccountTokenJson; +import org.ntlab.acanthus_client.entities.LoginResponseJson; import org.ntlab.acanthus_client.resources.accounts.LoginRest; import retrofit2.Call; @@ -21,12 +22,17 @@ public class LoginScreenViewModel extends ViewModel { private MutableLiveData acanthusMutableLiveData; + private Retrofit retrofit; //----------------------------------------------------------------- //----------------------------------------------------------------- // public LoginScreenViewModel() { this.acanthusMutableLiveData = new MutableLiveData<>(); + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); } //----------------------------------------------------------------- @@ -39,50 +45,24 @@ //----------------------------------------------------------------- // トークンの発行APIの呼び出し public void issueLoginToken(Acanthus acanthus, EditText emailForm, EditText passwordForm) { - Retrofit retrofit = new Retrofit.Builder() - .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") - .addConverterFactory(JacksonConverterFactory.create()) - .build(); final LoginRest loginRest = retrofit.create(LoginRest.class); String emailAddress = emailForm.getText().toString(); String password = passwordForm.getText().toString(); // ログイン - Call call = loginRest.issueLoginToken(emailAddress,password); - call.enqueue(new Callback() { + Call call = loginRest.issueLoginToken(emailAddress, password); + call.enqueue(new Callback() { @Override - public void onResponse(Call call, Response response) { - if (response.isSuccessful()) - setVariableFromResponse(acanthus, response.body().getToken(),emailAddress,password); + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + LoginResponseJson responseJson = response.body(); + setVariableFromResponse(acanthus, responseJson, emailAddress, password); + } } @Override - public void onFailure(Call call, Throwable t) { - } - }); - } - public void LoginToken(Acanthus acanthus, String emailForm, String passwordForm) { - Retrofit retrofit = new Retrofit.Builder() - .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") - .addConverterFactory(JacksonConverterFactory.create()) - .build(); - final LoginRest loginRest = retrofit.create(LoginRest.class); - - String emailAddress = emailForm; - String password = passwordForm; - - // ログイン - Call call = loginRest.issueLoginToken(emailAddress, password); - call.enqueue(new Callback() { - @Override - public void onResponse(Call call, Response response) { - if (response.isSuccessful()) - setVariableFromResponse(acanthus, response.body().getToken(),emailAddress,password); - } - - @Override - public void onFailure(Call call, Throwable t) { + public void onFailure(Call call, Throwable t) { } }); } @@ -90,8 +70,9 @@ //----------------------------------------------------------------- //----------------------------------------------------------------- // ログイン成功時に値の変更を行う - private void setVariableFromResponse(Acanthus acanthus, String token, String email,String password ) { - acanthus.setPreferenceToken(token); + private void setVariableFromResponse(Acanthus acanthus, LoginResponseJson loginResponse, String email, String password) { + acanthus.setPreferenceUid(loginResponse.getUid()); + acanthus.setPreferenceToken(loginResponse.getToken()); acanthus.setPreferenceEmail(email); acanthus.setPreferencePassword(password); acanthusMutableLiveData.setValue(acanthus); diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/WorkListViewAdapter.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/WorkListViewAdapter.java index 5dd6392..fafd1a0 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/WorkListViewAdapter.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/edit/WorkListViewAdapter.java @@ -9,12 +9,14 @@ import org.ntlab.acanthus_client.R; +import java.util.ArrayList; + public class WorkListViewAdapter extends BaseAdapter { private final LayoutInflater inflater; private final int layoutId; - private final String[] animationName; - private final String[] lastUpdate; + private final ArrayList animationName; + private final ArrayList lastUpdate; //参照保存データ static class ViewHolder{ @@ -23,7 +25,7 @@ } //コンテキスト - public WorkListViewAdapter(Context context, int layoutId, String[] animationName, String[] lastUpdate) { + public WorkListViewAdapter(Context context, int layoutId, ArrayList animationName, ArrayList lastUpdate) { super(); this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.layoutId = layoutId; @@ -49,8 +51,8 @@ } //ViewHolder内のtextViewName,Dateに各ポジションのデータをセット - viewHolder.textViewName.setText(animationName[position]); - viewHolder.textViewDate.setText(lastUpdate[position]); + viewHolder.textViewName.setText(animationName.get(position)); + viewHolder.textViewDate.setText(lastUpdate.get(position)); return convertView; } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/InvitedConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/InvitedConnectionModel.java index 1aee07f..20d1ad8 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/InvitedConnectionModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/InvitedConnectionModel.java @@ -1,7 +1,14 @@ package org.ntlab.acanthus_client.views.main_menu_ui.mypage; +import android.util.Log; + +import androidx.lifecycle.MutableLiveData; + import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.R; +import org.ntlab.acanthus_client.entities.Work; import org.ntlab.acanthus_client.resources.accounts.InvitedRest; +import org.ntlab.acanthus_client.resources.accounts.WorkRest; import retrofit2.Call; import retrofit2.Callback; @@ -11,7 +18,7 @@ import retrofit2.converter.scalars.ScalarsConverterFactory; //----------------------------------------------------------------- -// +// 招待されているかの問い合わせAPI public class InvitedConnectionModel { private Retrofit retrofit; @@ -25,29 +32,16 @@ } //----------------------------------------------------------------- - //----------------------------------------------------------------- - // - 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(); - } - - //----------------------------------------------------------------- - // - public void checkInvited() { + // 招待確認 + public void checkInvited(MutableLiveData mIsInvitedText) { final InvitedRest invitedRest = retrofit.create(InvitedRest.class); - Call call = invitedRest.checkAccountInvited( - acanthus.getPreferenceUid(), acanthus.getAid()); - + Call call = invitedRest.checkAccountInvited(acanthus.getPreferenceUid(), acanthus.getAid()); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - + if (response.isSuccessful()) + mIsInvitedText.setValue(response.body().toString()); } @Override @@ -57,6 +51,38 @@ }); } + + //----------------------------------------------------------------- + // 招待承認 + public void acceptInvite() { + final WorkRest workRest = retrofit.create(WorkRest.class); + + // 作品への参加 + Call call = workRest.updateWork(acanthus.getPreferenceUid(), acanthus.getPreferenceToken(), 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) { + + } + }); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // init + private 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(); + } //----------------------------------------------------------------- } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java index 0820991..2ac5e16 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java @@ -1,7 +1,5 @@ package org.ntlab.acanthus_client.views.main_menu_ui.mypage; -import android.app.Activity; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -30,10 +28,9 @@ // public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = FragmentMypageBinding.inflate(inflater, container, false); - View root = binding.getRoot(); - init(); + View root = binding.getRoot(); return root; } @@ -52,19 +49,42 @@ Acanthus acanthus = (Acanthus) getActivity().getApplication(); mypageViewModel = new ViewModelProvider(this).get(MyPageViewModel.class); mypageViewModel.init(acanthus); + startObserve(); + + mypageViewModel.checkInvitedRequest(); + mypageViewModel.getAccountInfoRequest(); } //----------------------------------------------------------------- - // + // 変数の値の監視 private void startObserve() { - final TextView textView = binding.textMypage; - mypageViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { + observeInvitedText(); + observeUidText(); + } + + //----------------------------------------------------------------- + // 招待されているテキストの変更監視 + private void observeInvitedText() { + final TextView textIsInvited = binding.textIsInvited; + mypageViewModel.getImmutableIsInvitedText().observe(getViewLifecycleOwner(), new Observer() { @Override public void onChanged(@Nullable String s) { - textView.setText(s); + textIsInvited.setText(s); + } + }); + } + + //----------------------------------------------------------------- + // Uidテキストの変更監視 + // memo: デバッグ用 + private void observeUidText() { + final TextView textUid = binding.textUidNo; + mypageViewModel.getImmutableUidText().observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(String s) { + textUid.setText(s); } }); } //----------------------------------------------------------------- - } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageInfoConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageInfoConnectionModel.java new file mode 100644 index 0000000..4df2214 --- /dev/null +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageInfoConnectionModel.java @@ -0,0 +1,77 @@ +package org.ntlab.acanthus_client.views.main_menu_ui.mypage; + +import android.text.method.ReplacementTransformationMethod; + +import androidx.lifecycle.MutableLiveData; + +import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.databinding.ActivityAnimationBinding; +import org.ntlab.acanthus_client.entities.Account; +import org.ntlab.acanthus_client.resources.accounts.AccountsRest; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; +import retrofit2.converter.scalars.ScalarsConverterFactory; + +//----------------------------------------------------------------- +// マイページ情報の通信API (Follow, Followerの取得時に本格的に使うかも) +public class MyPageInfoConnectionModel { + + private Acanthus acanthus; + private Retrofit retrofit; + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // + public MyPageInfoConnectionModel(Acanthus acanthus) { + init(acanthus); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // アカウント情報の取得API + public void getAccountByUid(MutableLiveData mUidText) { + final AccountsRest accountsRest = retrofit.create(AccountsRest.class); + mUidText.setValue(acanthus.getPreferenceUid().toString()); + + + //Todo: なんもわからん +// String uid = acanthus.getPreferenceUid().toString(); +// String token = acanthus.getPreferenceToken(); +// +// Call call = accountsRest.getAccountByUid(uid, token); +// +// call.enqueue(new Callback() { +// @Override +// public void onResponse(Call call, Response response) { +// if (response.isSuccessful()) { +// Account resAccount = response.body(); +// mUidText.setValue(acanthus.getPreferenceUid().toString()); +// } +// } +// +// @Override +// public void onFailure(Call call, Throwable t) { +// +// } +// }); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // init + private 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(); + } + //----------------------------------------------------------------- + + +} diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageModelContainer.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageModelContainer.java index b8a6e8f..7a641b3 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageModelContainer.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageModelContainer.java @@ -2,13 +2,34 @@ import org.ntlab.acanthus_client.Acanthus; +//----------------------------------------------------------------- +// public class MyPageModelContainer { private InvitedConnectionModel invitedConnectionModel; + private MyPageInfoConnectionModel myPageInfoConnectionModel; //----------------------------------------------------------------- - // - public void init(Acanthus acanthus){ + //----------------------------------------------------------------- + public MyPageModelContainer(Acanthus acanthus) { + init(acanthus); + } + + //----------------------------------------------------------------- + // getter + public InvitedConnectionModel getInvitedConnectionModel() { + return invitedConnectionModel; + } + + public MyPageInfoConnectionModel getMyPageInfoConnectionModel() { + return myPageInfoConnectionModel; + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // init + private void init(Acanthus acanthus) { invitedConnectionModel = new InvitedConnectionModel(acanthus); + myPageInfoConnectionModel = new MyPageInfoConnectionModel(acanthus); } //----------------------------------------------------------------- diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageViewModel.java index 3541b40..d71590b 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageViewModel.java @@ -5,42 +5,42 @@ import androidx.lifecycle.ViewModel; import org.ntlab.acanthus_client.Acanthus; -import org.ntlab.acanthus_client.resources.accounts.InvitedRest; - -import retrofit2.Call; -import retrofit2.Retrofit; -import retrofit2.converter.jackson.JacksonConverterFactory; -import retrofit2.converter.scalars.ScalarsConverterFactory; //----------------------------------------------------------------- -// +// マイページロジックの仲介者 public class MyPageViewModel extends ViewModel { - private MyPageModelContainer myPageModelContainer; - private MutableLiveData mText; - - //----------------------------------------------------------------- - //----------------------------------------------------------------- - public MyPageViewModel() { - myPageModelContainer = new MyPageModelContainer(); - mText = new MutableLiveData<>(); - mText.setValue("This is mypage fragment"); - } + private MutableLiveData mIsInvitedText = new MutableLiveData<>(); + private MutableLiveData mUidText = new MutableLiveData<>(); //----------------------------------------------------------------- // getter - public LiveData getText() { - return mText; + public LiveData getImmutableIsInvitedText() { + return mIsInvitedText; + } + + public LiveData getImmutableUidText() { + return mUidText; } //----------------------------------------------------------------- //----------------------------------------------------------------- // init public void init(Acanthus acanthus) { - myPageModelContainer.init(acanthus); + myPageModelContainer = new MyPageModelContainer(acanthus); + } + + //----------------------------------------------------------------- + // 招待されているかを確認する通信リクエスト + public void checkInvitedRequest() { + myPageModelContainer.getInvitedConnectionModel().checkInvited(mIsInvitedText); + } + + //----------------------------------------------------------------- + // アカウント情報を取得するリクエスト + public void getAccountInfoRequest() { + myPageModelContainer.getMyPageInfoConnectionModel().getAccountByUid(mUidText); } //----------------------------------------------------------------- - //----------------------------------------------------------------- - } \ 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 d173367..b54769a 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 @@ -36,7 +36,7 @@ //----------------------------------------------------------------- // public void onClickInvite(View view) { - Integer dummy1Id = 2; + Integer dummy1Id = 1; paintViewModel.inviteNewUserRequest(dummy1Id); } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java index 883feee..4575893 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java @@ -1,12 +1,18 @@ package org.ntlab.acanthus_client.views.paint; +import androidx.lifecycle.MutableLiveData; import androidx.navigation.ActivityNavigator; import org.ntlab.acanthus_client.Acanthus; import org.ntlab.acanthus_client.entities.Animation; +import org.ntlab.acanthus_client.entities.Position; import org.ntlab.acanthus_client.resources.gallery.GalleryRest; import org.ntlab.acanthus_client.resources.gallery.StrokesRest; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Collection; + import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -21,6 +27,7 @@ private Integer currentStrokeNo; private Retrofit retrofit; private Acanthus acanthus; + private Collection getPaint; //----------------------------------------------------------------- //----------------------------------------------------------------- @@ -44,6 +51,7 @@ // init public void init(Acanthus acanthus) { this.acanthus = acanthus; + this.getPaint = new ArrayList(); this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") .addConverterFactory(ScalarsConverterFactory.create()) @@ -98,5 +106,29 @@ }); } //----------------------------------------------------------------- + //Getを追加 + public void apigetPosition(MutableLiveData> paintPosition){ + final StrokesRest strokesRest = retrofit.create(StrokesRest.class); -} + //----------------------------------------------------------------- + // 筆跡追加API + Call> call = strokesRest.getPositions(acanthus.getAid(),0); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.isSuccessful()) paintPosition.setValue(response.body()); + } + + @Override + public void onFailure(Call> call, Throwable t) { + + } + }); + + } + + public Collection getPosition(){ + return this.getPaint; + } + +} \ 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 1f403a2..93af18b 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 @@ -1,18 +1,27 @@ package org.ntlab.acanthus_client.views.paint; +import android.util.Log; import android.view.MotionEvent; +import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; import org.jetbrains.annotations.NotNull; import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.entities.Position; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.TimeUnit; //----------------------------------------------------------------- // 描画処理の仲介 -public class PaintViewModel extends ViewModel { +public class PaintViewModel extends ViewModel implements Runnable{ private PaintModelContainer paintModelContainer; + private MutableLiveData> paintPosition; //----------------------------------------------------------------- //----------------------------------------------------------------- @@ -21,6 +30,9 @@ paintModelContainer = new PaintModelContainer(acanthus); paintModelContainer.getPaintConnectionModel().init(acanthus); paintModelContainer.getInvitesConnectionModel().init(acanthus); + paintPosition = new MutableLiveData<>(); + ScheduledThreadPoolExecutor thread = new ScheduledThreadPoolExecutor(1); + thread.scheduleWithFixedDelay(this, 1000L, 100L, TimeUnit.MICROSECONDS); } //----------------------------------------------------------------- @@ -48,8 +60,11 @@ //----------------------------------------------------------------- // 一定間隔でサーバー上の筆跡を取得する(GET) - public void startObservationOfChangedStroke() { + @Override + public void run() { + Log.d("debug", "run: "); + paintModelContainer.getPaintConnectionModel().apigetPosition(paintPosition); } //----------------------------------------------------------------- -} +} \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleViewModel.java index d768851..77c9600 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/title/TitleViewModel.java @@ -1,7 +1,7 @@ package org.ntlab.acanthus_client.views.title; import org.ntlab.acanthus_client.Acanthus; -import org.ntlab.acanthus_client.entities.AccountTokenJson; +import org.ntlab.acanthus_client.entities.LoginResponseJson; import org.ntlab.acanthus_client.resources.accounts.LoginRest; import androidx.lifecycle.LiveData; @@ -42,10 +42,10 @@ String password = passwordForm; // ログイン - Call call = loginRest.issueLoginToken(emailAddress, password); - call.enqueue(new Callback() { + Call call = loginRest.issueLoginToken(emailAddress, password); + call.enqueue(new Callback() { @Override - public void onResponse(Call call, Response response) { + public void onResponse(Call call, Response response) { if (response.isSuccessful()) { if(response.body()!=null){ setVariableFromResponse(acanthus, response.body().getToken(), emailAddress, password); @@ -58,7 +58,7 @@ } @Override - public void onFailure(Call call, Throwable t) { + public void onFailure(Call call, Throwable t) { loginStatus.setValue(false); } }); diff --git a/app/src/main/res/drawable-v24/acanthus_icon_500x500.png b/app/src/main/res/drawable-v24/acanthus_icon_500x500.png new file mode 100644 index 0000000..da2b1f0 --- /dev/null +++ b/app/src/main/res/drawable-v24/acanthus_icon_500x500.png Binary files differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 07d5da9..ca3826a 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,170 +1,74 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:android="http://schemas.android.com/apk/res/android"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/load.gif b/app/src/main/res/drawable/load.gif index 7a880b3..7f65ce1 100644 --- a/app/src/main/res/drawable/load.gif +++ b/app/src/main/res/drawable/load.gif Binary files differ diff --git a/app/src/main/res/drawable/title.jpg b/app/src/main/res/drawable/title.jpg deleted file mode 100644 index e77fa87..0000000 --- a/app/src/main/res/drawable/title.jpg +++ /dev/null Binary files differ diff --git a/app/src/main/res/drawable/title.png b/app/src/main/res/drawable/title.png new file mode 100644 index 0000000..49a5473 --- /dev/null +++ b/app/src/main/res/drawable/title.png Binary files differ diff --git a/app/src/main/res/layout/activity_title.xml b/app/src/main/res/layout/activity_title.xml index 3633779..c92ca3b 100644 --- a/app/src/main/res/layout/activity_title.xml +++ b/app/src/main/res/layout/activity_title.xml @@ -15,7 +15,8 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/background" /> + app:srcCompat="@drawable/background" + tools:ignore="ContentDescription" /> + app:srcCompat="@drawable/title" + tools:ignore="ContentDescription" /> + app:srcCompat="@drawable/load" + tools:ignore="ContentDescription" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index eca70cf..036d09b 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index eca70cf..036d09b 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index a571e60..9107bde 100644 --- a/app/src/main/res/mipmap-hdpi/ic_launcher.png +++ b/app/src/main/res/mipmap-hdpi/ic_launcher.png Binary files differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..b62383d --- /dev/null +++ b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png Binary files differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png index 61da551..2f230e7 100644 --- a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +++ b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png Binary files differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index c41dd28..b5f827b 100644 --- a/app/src/main/res/mipmap-mdpi/ic_launcher.png +++ b/app/src/main/res/mipmap-mdpi/ic_launcher.png Binary files differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..36fe3dc --- /dev/null +++ b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png Binary files differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png index db5080a..f17810a 100644 --- a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +++ b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 6dba46d..c2587ec 100644 --- a/app/src/main/res/mipmap-xhdpi/ic_launcher.png +++ b/app/src/main/res/mipmap-xhdpi/ic_launcher.png Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..8ef8582 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png Binary files differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png index da31a87..f2e0caa 100644 --- a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +++ b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 15ac681..0d2b05d 100644 --- a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..7234f3e --- /dev/null +++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png Binary files differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png index b216f2d..857c971 100644 --- a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index f25a419..67ade20 100644 --- a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..0b85230 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png index e96783c..7cc03ba 100644 --- a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png Binary files differ diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..c5d5899 --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file