diff --git a/.idea/misc.xml b/.idea/misc.xml
index 8c97a73..347f0bf 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,33 +4,23 @@
diff --git a/app/build.gradle b/app/build.gradle
index dd92557..df4b76a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -43,6 +43,7 @@
implementation 'androidx.annotation:annotation:1.2.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
+ implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
@@ -51,4 +52,7 @@
implementation 'com.squareup.retrofit2:converter-scalars:2.1.0'
implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
+ implementation 'com.google.android.material:material:1.1.0-alpha08'
+ implementation 'androidx.viewpager2:viewpager2:1.0.0-beta02'
+
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 75b22a4..fae7bc6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,7 +4,7 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
@@ -26,14 +35,19 @@
-
-
-
-
+
+
+
+
+
+
+
+ android:label="@string/title_activity_main"
+ android:screenOrientation="portrait"
+ android:windowSoftInputMode="adjustPan" />
\ No newline at end of file
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 261e17e..5c84a49 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/Acanthus.java
@@ -106,6 +106,7 @@
SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("uid", preferenceUid);
+ this.preferenceUid = preferenceUid;
editor.commit();
}
@@ -113,6 +114,7 @@
SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name", preferenceName);
+ this.preferenceName = preferenceName;
editor.commit();
}
@@ -120,6 +122,7 @@
SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("email", preferenceEmail);
+ this.preferenceEmail = preferenceEmail;
editor.commit();
}
@@ -127,6 +130,7 @@
SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("password", preferencePassword);
+ this.preferencePassword = preferencePassword;
editor.commit();
}
@@ -134,6 +138,7 @@
SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("token", preferenceToken);
+ this.preferenceToken = preferenceToken;
editor.commit();
}
diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/EditorJson.java b/app/src/main/java/org/ntlab/acanthus_client/entities/EditorJson.java
index dd5cb03..220bc75 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/entities/EditorJson.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/entities/EditorJson.java
@@ -1,11 +1,12 @@
package org.ntlab.acanthus_client.entities;
import java.util.ArrayList;
+import java.util.Collection;
//-----------------------------------------------------------------
// 作品編集者の一覧
public class EditorJson {
- private ArrayList uidList = new ArrayList<>();
+ private ArrayList uid = new ArrayList<>();
//-----------------------------------------------------------------
public EditorJson() {
@@ -13,13 +14,13 @@
//-----------------------------------------------------------------
// getter
- public ArrayList getUidList() {
- return uidList;
+ public Collection getUid() {
+ return uid;
}
//-----------------------------------------------------------------
// setter
- public void addUid(Integer uid) {
- this.uidList.add(uid);
+ public void setAid(ArrayList uid) {
+ this.uid = uid;
}
}
diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/InvitesJson.java b/app/src/main/java/org/ntlab/acanthus_client/entities/InvitesJson.java
new file mode 100644
index 0000000..7f15a92
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/entities/InvitesJson.java
@@ -0,0 +1,22 @@
+package org.ntlab.acanthus_client.entities;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class InvitesJson {
+ @JsonProperty("invites")
+ private ArrayList invites = new ArrayList<>();
+
+ public InvitesJson() {
+ }
+
+ public ArrayList getInvites() {
+ return invites;
+ }
+
+ public void setInvitesJson(Integer uid){
+ this.invites.add(uid);
+ }
+}
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
index 2270d30..ca7e9f1 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/entities/LoginResponseJson.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/entities/LoginResponseJson.java
@@ -5,6 +5,7 @@
public class LoginResponseJson {
private Integer uid;
private String token;
+ private String name;
public LoginResponseJson() {
}
@@ -18,5 +19,10 @@
public String getToken() {
return this.token;
}
+
+ public String getName() {
+ return this.name;
+ }
+
//-----------------------------------------------------------------
}
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 9ee5fa8..f2ae135 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
@@ -22,10 +22,10 @@
//-----------------------------------------------------------------
- @GET("accounts/{uid}/invited")
+ @GET("accounts/{uid}/invited/aidList")
Call> getAccountInvited(
- @Path("uid") Integer ownerUid,
- @Query("token") Integer token
+ @Path("uid") Integer Uid,
+ @Query("token") String token
);
//-----------------------------------------------------------------
diff --git a/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/WorkRest.java b/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/WorkRest.java
index 6924959..516bbbc 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/WorkRest.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/resources/accounts/WorkRest.java
@@ -36,7 +36,7 @@
// 作品への参加を許可する
@FormUrlEncoded
@PUT("accounts/{uid}/work")
- Call updateWork(
+ Call updateWork(
@Path("uid")Integer invitedUid,
@Field("token") String invitedToken,
@Field("aid") Integer aid
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 fc9ced3..ee28858 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
@@ -1,6 +1,7 @@
package org.ntlab.acanthus_client.resources.gallery;
import org.ntlab.acanthus_client.entities.Account;
+import org.ntlab.acanthus_client.entities.InvitesJson;
import java.util.Collection;
@@ -18,7 +19,7 @@
//-----------------------------------------------------------------
@GET("gallery/{aid}/invites")
- Call> isGalleryInvites(
+ Call isGalleryInvites(
@Path("aid") Integer aid,
@Query("invited") String invitedUid,
@Query("invitedUserToken") String invitedUserToken,
@@ -29,7 +30,7 @@
@FormUrlEncoded
@PUT("gallery/{aid}/invites")
- Call addInvite(
+ Call addInvite(
@Path("aid") Integer aid,
@Field("ownerUid") String ownerUid,
@Field("invitedUid") String invitedUid,
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/MainActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/MainActivity.java
index 0697841..9bbd223 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/MainActivity.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/MainActivity.java
@@ -14,6 +14,7 @@
import org.ntlab.acanthus_client.databinding.ActivityMainBinding;
import org.ntlab.acanthus_client.views.main_menu_ui.mypage.MyPageFragment;
+import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ShareCompat;
import androidx.fragment.app.FragmentManager;
@@ -29,6 +30,7 @@
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
+ private NavController navController;
Intent intent;
@Override
@@ -43,9 +45,9 @@
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
- R.id.navigation_home, R.id.navigation_search, R.id.navigation_make, R.id.navigation_mypage)
+ R.id.navigation_home, R.id.navigation_search, R.id.navigation_edit, R.id.navigation_mypage)
.build();
- NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
+ navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(binding.navView, navController);
}
@@ -53,7 +55,7 @@
// ツールバーにbotton_nav_topを表示
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.botton_nav_top, menu);
+ getMenuInflater().inflate(R.menu.top_nav_main, menu);
return true;
}
@@ -76,15 +78,16 @@
return true;
// Iconを押したときMyPageに遷移
- case R.id.icon:
- String[] poptext = { "I LOVE JENKINS", "わけわからん", "そうだ、新田研に行こう。", "大吉", "中吉", "吉", "凶" };
- Random random = new Random();
- Toast myToast = Toast.makeText(
- getApplicationContext(),
- poptext[random.nextInt(7)],
- Toast.LENGTH_SHORT
- );
- myToast.show();
+ case R.id.navigation_icon:
+ navController.navigate(R.id.navigation_mypage);
+// String[] poptext = { "I LOVE JENKINS", "わけわからん", "そうだ、新田研に行こう。", "大吉", "中吉", "吉", "凶" };
+// Random random = new Random();
+// Toast myToast = Toast.makeText(
+// getApplicationContext(),
+// poptext[random.nextInt(7)],
+// Toast.LENGTH_SHORT
+// );
+// myToast.show();
return true;
default:
@@ -93,4 +96,12 @@
}
}
+ // 戻るボタン「←」をアクションバー(上部バー)にセットするメソッドを定義
+ public void setupBackButton(boolean enableBackButton) {
+ // アクションバーを取得
+ ActionBar actionBar = getSupportActionBar();
+ // アクションバーに戻るボタン「←」をセット(引数が true: 表示、false: 非表示)
+ actionBar.setDisplayHomeAsUpEnabled(enableBackButton);
+ }
+
}
\ 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 ab0ef4a..d77fbd0 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
@@ -5,6 +5,7 @@
import androidx.lifecycle.ViewModelProvider;
import android.content.Intent;
+import android.media.Image;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -39,13 +40,13 @@
private Timer timer;
private CountUpTimerTask timerTask;
private Handler handler = new Handler(Looper.getMainLooper());
- private int msec = 500;
+ private int msec = 100;
//ボタン系
private boolean buttonView = true;
+ private boolean player = true;
private Button buttonPlayback;
private Button buttonReset;
- private Button buttonClose;
private Button buttonDetail;
private Button buttonSkip;
private Button buttonBack;
@@ -56,6 +57,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setTheme(R.style.AppTheme_NoTitleBar);//タイトルバーを消す
setContentView(R.layout.activity_animation);
animationCanvas = this.findViewById(R.id.animationMyCanvas);
init();
@@ -75,18 +77,14 @@
}
});
+
//////////////////////////////////////////////////////////////////////////
//以下アニメーションボタン関連
//アニメーションの再生停止
buttonPlayback = findViewById(R.id.button_playback);
buttonPlayback.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
- if(onClickPlayback()){
- buttonPlayback.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_baseline_play_arrow));
- }
- else {
- buttonPlayback.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_baseline_pause));
- }
+ onClickPlayback();
}
});
@@ -114,19 +112,11 @@
}
});
-
- //閉じる
- buttonClose = findViewById(R.id.button_close);
- buttonClose.setOnClickListener(new View.OnClickListener(){
- public void onClick(View v) {
- finish();
- }
- });
-
//詳細画面へ移動
buttonDetail = findViewById(R.id.button_detail);
buttonDetail.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
+ if(player) onClickPlayback();
Intent intent = new Intent(AnimationActivity.this, AnimationDetailActivity.class);
intent.putExtra("AnimationJsonData", animationJson);
startActivity(intent);
@@ -141,7 +131,6 @@
buttonReset.setVisibility(View.INVISIBLE);
buttonPlayback.setVisibility(View.INVISIBLE);
buttonDetail.setVisibility(View.INVISIBLE);
- buttonClose.setVisibility(View.INVISIBLE);
buttonSkip.setVisibility(View.INVISIBLE);
buttonBack.setVisibility(View.INVISIBLE);
@@ -151,7 +140,6 @@
buttonReset.setVisibility(View.VISIBLE);
buttonPlayback.setVisibility(View.VISIBLE);
buttonDetail.setVisibility(View.VISIBLE);
- buttonClose.setVisibility(View.VISIBLE);
buttonSkip.setVisibility(View.VISIBLE);
buttonBack.setVisibility(View.VISIBLE);
@@ -161,35 +149,7 @@
});
}
- //Activity内のボタンの表示/非表示
-// @Override
-// public boolean onTouchEvent(MotionEvent motionEvent) {
-// switch (motionEvent.getAction()){
-// case MotionEvent.ACTION_DOWN:
-// //画面タップで表示されてたら非表示にする。
-// if(buttonView) {
-// buttonReset.setVisibility(View.INVISIBLE);
-// buttonPlayback.setVisibility(View.INVISIBLE);
-// buttonDetail.setVisibility(View.INVISIBLE);
-// buttonClose.setVisibility(View.INVISIBLE);
-// buttonSkip.setVisibility(View.INVISIBLE);
-// buttonBack.setVisibility(View.INVISIBLE);
-//
-// buttonView = false;
-// }
-// else {
-// buttonReset.setVisibility(View.VISIBLE);
-// buttonPlayback.setVisibility(View.VISIBLE);
-// buttonDetail.setVisibility(View.VISIBLE);
-// buttonClose.setVisibility(View.VISIBLE);
-// buttonSkip.setVisibility(View.VISIBLE);
-// buttonBack.setVisibility(View.VISIBLE);
-//
-// buttonView = true;
-// }
-// }
-// return false;
-// }
+
////////////////////////////////////////////////////////////////////////////
@@ -219,19 +179,21 @@
}
//アニメーションの再生停止
- public boolean onClickPlayback(){
+ public void onClickPlayback(){
if(timer != null){
//timerの終了
timer.cancel();
timer = null;
- return true;
+ buttonPlayback.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_baseline_play_arrow));
+ player = false;
}
else{
//timerの生成
this.timer = new Timer();
this.timerTask = new CountUpTimerTask();
this.timer.schedule(timerTask,0, this.msec);//スケジュールを100ms毎に設定する。
- return false;
+ buttonPlayback.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_baseline_pause));
+ player = true;
}
}
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationConnectionModel.java
index d5d059f..3d9c6b7 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationConnectionModel.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/animation/AnimationConnectionModel.java
@@ -39,7 +39,7 @@
final StrokesRest strokesRest = retrofit.create(StrokesRest.class);
// 筆跡追加API
- Call> call = strokesRest.getPageUrls(1111);
+ Call> call = strokesRest.getPageUrls(acanthus.getCurrentAnimation().getAid());
call.enqueue(new Callback>() {
@Override
public void onResponse(Call> call, Response> response) {
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/AnimationDetailActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/AnimationDetailActivity.java
index 7ebf505..86c7f94 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/AnimationDetailActivity.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/AnimationDetailActivity.java
@@ -8,10 +8,13 @@
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.ListView;
import android.widget.TextView;
import org.ntlab.acanthus_client.Acanthus;
@@ -20,8 +23,8 @@
import org.ntlab.acanthus_client.entities.AnimationJson;
import org.ntlab.acanthus_client.views.animation.AnimationActivity;
import org.ntlab.acanthus_client.views.animation.AnimationCanvas;
+import org.ntlab.acanthus_client.views.main_menu_ui.home.ListAnimationViewAdapter;
import org.ntlab.acanthus_client.views.userpage.UserPageActivity;
-import org.ntlab.acanthus_client.views.userpage.followerList.FollowerListActivity;
import java.io.IOException;
import java.io.InputStream;
@@ -42,71 +45,77 @@
Intent intent = getIntent();
AnimationJson animationJson = (AnimationJson) intent.getSerializableExtra("AnimationJsonData");
+// View header = (View)getLayoutInflater().inflate(R.layout.animation_home_header,null);
+
+ setContentView((R.layout.activity_animation_detail));
+ ListView listView = findViewById(R.id.editorsView);
+// listView.addHeaderView(header);
+
Animation currentAnimation = acanthus.getCurrentAnimation();
- setContentView(R.layout.activity_animation_detail);
//作成者のuidとnameを保存
ArrayList editorsUid = (ArrayList) animationJson.getEditorIds();
ArrayList editorsNames = (ArrayList) animationJson.getEditorNames();
//文字入力テスト
- EditText editText = findViewById(R.id.edit_text);
- TextView wordText = findViewById(R.id.word_text);
- TextView wordText2 = findViewById(R.id.word_text2);
- Button wordButton = findViewById(R.id.word_button);
TextView wordText15 = findViewById(R.id.textView15);
wordText15.setText(currentAnimation.getName());
TextView wordText16 = findViewById(R.id.textView16);
wordText16.setText(currentAnimation.getAid().toString());
TextView wordText17 = findViewById(R.id.textView17);
wordText17.setText(currentAnimation.getCreatedDate().toString());
- TextView wordText18 = findViewById(R.id.textView18);
- Button editor1Button = findViewById(R.id.button_editor1);
- Button editor2Button = findViewById(R.id.button_editor2);
- editor1Button.setOnClickListener(new View.OnClickListener(){
+ BaseAdapter adapter = new ListEditorsViewAdapter(this, R.layout.animation_detail, animationJson);
+ listView.setAdapter(adapter);
+
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
- public void onClick(View v){
-
+ public void onItemClick(AdapterView> adapterView, View view, int position, long id) {
+// homeViewModel.setCurrentAnimation(animationJsonSortList.get(position).getAid(), acanthus);
+// transitionAnimationActivity(animationJsonSortList.get(position));
+ Intent intent = new Intent(getApplication(), UserPageActivity.class);
+ intent.putExtra("UID", editorsUid.get(position));
+ intent.putExtra("NAME", editorsNames.get(position));
+ startActivity(intent);
}
});
- wordButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // エディットテキストのテキストを取得
- String text = editText.getText().toString();
- // 取得したテキストを TextView に張り付ける
- wordText.setText(text);
- wordText2.setText(text);
- }
- });
+// wordButton.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// // エディットテキストのテキストを取得
+// String text = editText.getText().toString();
+// // 取得したテキストを TextView に張り付ける
+// wordText.setText(text);
+// wordText2.setText(text);
+// }
+// });
//画面を閉じる
Button returnButton = findViewById(R.id.return_button);
returnButton.setOnClickListener(v -> finish());
- //作成者のページに移動
- editor1Button.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v){
- Intent intent = new Intent(getApplication(), UserPageActivity.class);
- intent.putExtra("UID", editorsUid.get(0));
- intent.putExtra("NAME", editorsNames.get(0));
- startActivity(intent);
-
- }
- });
- editor2Button.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v){
- Intent intent = new Intent(getApplication(), UserPageActivity.class);
- intent.putExtra("UID", editorsUid.get(1));
- intent.putExtra("NAME", editorsNames.get(1));
- startActivity(intent);
-
- }
- });
+// //作成者のページに移動
+// editor1Button.setOnClickListener(new View.OnClickListener(){
+// @Override
+// public void onClick(View v){
+// Intent intent = new Intent(getApplication(), UserPageActivity.class);
+// intent.putExtra("UID", editorsUid.get(0));
+// intent.putExtra("NAME", editorsNames.get(0));
+// startActivity(intent);
+//
+// }
+// });
+// editor2Button.setOnClickListener(new View.OnClickListener(){
+// @Override
+// public void onClick(View v){
+// Intent intent = new Intent(getApplication(), UserPageActivity.class);
+// intent.putExtra("UID", editorsUid.get(1));
+// intent.putExtra("NAME", editorsNames.get(1));
+// startActivity(intent);
+//
+// }
+// });
/* //作成者のページに移動(今は仮でアニメーション画面へ)
Button buttonEditor2 = findViewById(R.id.button_editor2);
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/ListEditorsViewAdapter.java b/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/ListEditorsViewAdapter.java
new file mode 100644
index 0000000..4cee20a
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/animation_detail/ListEditorsViewAdapter.java
@@ -0,0 +1,87 @@
+package org.ntlab.acanthus_client.views.animation_detail;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import org.ntlab.acanthus_client.R;
+import org.ntlab.acanthus_client.entities.AnimationJson;
+
+import java.util.ArrayList;
+
+public class ListEditorsViewAdapter extends BaseAdapter {
+
+ static class ViewHolder{
+ TextView editorName;
+ }
+
+ private LayoutInflater inflater;
+ private int itemLayoutId;
+ private ArrayList editorsName = new ArrayList<>();
+ private ArrayList editorsUid = new ArrayList<>();
+
+ ListEditorsViewAdapter(Context context, int itemLayoutId,
+ AnimationJson animationJson) {
+ super();
+ this.inflater = (LayoutInflater)
+ context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ this.itemLayoutId = itemLayoutId;
+
+ this.editorsName = (ArrayList)animationJson.getEditorNames();
+ this.editorsUid = (ArrayList) animationJson.getEditorIds();
+
+ }
+
+ ListEditorsViewAdapter(Context context, int itemLayoutId){
+ super();
+ int i = 0;
+ this.inflater = (LayoutInflater)
+ context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ this.itemLayoutId = itemLayoutId;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ListEditorsViewAdapter.ViewHolder holder;
+ // 最初だけ View を inflate して、それを再利用する
+ if (convertView == null) {
+ // activity_main.xml に list.xml を inflate して convertView とする
+ convertView = inflater.inflate(itemLayoutId, parent, false);
+ // ViewHolder を生成
+ holder = new ListEditorsViewAdapter.ViewHolder();
+ holder.editorName = convertView.findViewById(R.id.editor_Name);
+ convertView.setTag(holder);
+
+ holder.editorName.setText(this.editorsName.get(position));
+
+ }
+ // holder を使って再利用
+ else {
+ holder = (ListEditorsViewAdapter.ViewHolder) convertView.getTag();
+ }
+
+ // holder の imageView にセット
+ holder.editorName.setText(editorsName.get(position));
+
+ return convertView;
+ }
+
+ @Override
+ public int getCount() {
+ return editorsName.size();
+ }
+
+ @Override
+ public Object getItem(int i) {
+ return null;
+ }
+
+ @Override
+ public long getItemId(int i) {
+ return 0;
+ }
+
+}
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/button/AlphaButton.java b/app/src/main/java/org/ntlab/acanthus_client/views/button/AlphaButton.java
index 33c146b..427f859 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/button/AlphaButton.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/button/AlphaButton.java
@@ -18,7 +18,7 @@
@Override
public void setPressed(boolean pressed) {
if(pressed){
- this.setAlpha(0.75f);
+ this.setAlpha(0.60f);
}else{
this.setAlpha(1.0f);
}
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 f78cae3..3bad98b 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
@@ -7,6 +7,7 @@
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
+import android.widget.TextView;
import org.ntlab.acanthus_client.Acanthus;
import org.ntlab.acanthus_client.R;
@@ -41,8 +42,24 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setTheme(R.style.AppTheme_NoTitleBar);//タイトルバーを消す
init();
}
+ //-----------------------------------------------------------------
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (hasAccount()) {
+ Acanthus acanthus = (Acanthus) getApplication();
+ TextView email = findViewById(R.id.editTextTextLoginEmail);
+ TextView password = findViewById(R.id.editTextTextLoginPassword);
+
+ email.setText(acanthus.getPreferenceEmail());
+ password.setText(acanthus.getPreferencePassword());
+ }
+ // ダミー表示
+ // else setDummyForm();
+ }
//-----------------------------------------------------------------
//-----------------------------------------------------------------
@@ -77,6 +94,24 @@
startActivity(intent);
finish();
}
- //-----------------------------------------------------------------
+ //-----------------------------------------------------------------
+ // 既にアカウントを持っている場合
+ private boolean hasAccount() {
+ Acanthus acanthus = (Acanthus) getApplication();
+ if (acanthus.getPreferenceEmail().equals("")) return false;
+ return !acanthus.getPreferencePassword().equals("");
+ }
+
+ //-----------------------------------------------------------------
+ //
+ private void setDummyForm(){
+ Acanthus acanthus = (Acanthus) getApplication();
+ TextView email = findViewById(R.id.editTextTextLoginEmail);
+ TextView password = findViewById(R.id.editTextTextLoginPassword);
+
+ email.setText("d0@dummy.com");
+ password.setText("nittalab");
+ }
+ //-----------------------------------------------------------------
}
\ No newline at end of file
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 2af6024..61a6513 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
@@ -74,6 +74,7 @@
// ログイン成功時に値の変更を行う
private void setVariableFromResponse(Acanthus acanthus, LoginResponseJson loginResponse, String email, String password) {
acanthus.setPreferenceUid(loginResponse.getUid());
+ acanthus.setPreferenceName(loginResponse.getName());
acanthus.setPreferenceToken(loginResponse.getToken());
acanthus.setPreferenceEmail(email);
acanthus.setPreferencePassword(password);
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/create/CreateFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/create/CreateFragment.java
index a505b2e..fb406b1 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/create/CreateFragment.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/create/CreateFragment.java
@@ -1,12 +1,14 @@
package org.ntlab.acanthus_client.views.main_menu_ui.create;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
+import android.widget.ImageButton;
import android.widget.ImageView;
import androidx.annotation.NonNull;
@@ -20,21 +22,32 @@
import org.ntlab.acanthus_client.R;
import org.ntlab.acanthus_client.databinding.FragmentCreateBinding;
import org.ntlab.acanthus_client.databinding.FragmentEditBinding;
+import org.ntlab.acanthus_client.views.MainActivity;
import org.ntlab.acanthus_client.views.main_menu_ui.edit.EditViewModel;
+import org.ntlab.acanthus_client.views.main_menu_ui.home.HomeFragment;
+import org.ntlab.acanthus_client.views.main_menu_ui.home.HomeViewModel;
import org.ntlab.acanthus_client.views.paint.PaintActivity;
public class CreateFragment extends Fragment {
private CreateViewModel createViewModel;
private FragmentCreateBinding binding;
+ private HomeViewModel homeViewModel;
+ private Acanthus acanthus;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
createViewModel =
new ViewModelProvider(this).get(CreateViewModel.class);
+ homeViewModel =
+ new ViewModelProvider(this).get(HomeViewModel.class);
binding = FragmentCreateBinding.inflate(inflater, container, false);
View root = binding.getRoot();
+ // 戻るボタン
+ MainActivity activity = (MainActivity) getActivity();
+ activity.setupBackButton(false);
+
return root;
}
@@ -42,18 +55,21 @@
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Button appButton = view.findViewById(R.id.Paint_button_create);
+ ImageButton nittasiteButton = view.findViewById(R.id.nittalabimage);
//ダミーユーザー
- Integer uid = 1;
- String token = "abc0";
- Acanthus acanthus = (Acanthus) getActivity().getApplication();
+
+ acanthus = (Acanthus) getActivity().getApplication();
+ Integer uid = acanthus.getPreferenceUid();
+ String token = acanthus.getPreferenceToken();
appButton.setOnClickListener(v -> {
//Integer uid = acanthus.getPreferenceUid();
String name = ((EditText)view.findViewById(R.id.AnimationNameCreate)).getText().toString();
//String token = acanthus.getPreferenceToken();
createViewModel.startWorkCreate(uid, name, token);
//Integer aid = createViewModel.startWorkCreate(uid, name, token);
+ homeViewModel.updateGallery(acanthus);
transitionPaintActivity();
});
@@ -61,6 +77,10 @@
acanthus.setAid(createViewModel.getAidJson().getValue().getAid());
});
+ nittasiteButton.setOnClickListener(v -> {
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://silverbullet.is.konan-u.ac.jp/"));
+ startActivity(intent);
+ });
}
@@ -70,6 +90,7 @@
private void transitionPaintActivity() {
Acanthus acanthus = (Acanthus) getActivity().getApplication();
Intent intent = new Intent(acanthus, PaintActivity.class);
+ homeViewModel.updateGallery(acanthus); // ギャラリーをアップデート
startActivity(intent);
}
}
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 7bdc090..0bc2c0a 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
@@ -22,6 +22,8 @@
import org.ntlab.acanthus_client.entities.Animation;
import org.ntlab.acanthus_client.entities.AnimationJson;
import org.ntlab.acanthus_client.entities.WorkJson;
+import org.ntlab.acanthus_client.views.main_menu_ui.home.HomeFragment;
+import org.ntlab.acanthus_client.views.main_menu_ui.home.HomeViewModel;
import org.ntlab.acanthus_client.views.paint.PaintActivity;
import androidx.annotation.NonNull;
@@ -45,7 +47,8 @@
private EditViewModel editViewModel;
private FragmentEditBinding binding;
- private ArrayList aidList;
+ private ArrayList userAidList;
+ private ArrayList aidList = new ArrayList<>();
private ArrayList AnimationJsonList;
private ArrayList nameList;
private ArrayList lastUpDateList;
@@ -54,6 +57,8 @@
private Integer AnimationAid;
private String AnimationName;
private String AnimationLastUpDate;
+ private HomeViewModel homeViewModel;
+ private Acanthus acanthus;
private SwipeRefreshLayout mSwipeRefreshLayout;
@@ -61,6 +66,8 @@
ViewGroup container, Bundle savedInstanceState) {
editViewModel =
new ViewModelProvider(this).get(EditViewModel.class);
+ homeViewModel =
+ new ViewModelProvider(this).get(HomeViewModel.class);
binding = FragmentEditBinding.inflate(inflater, container, false);
View root = binding.getRoot();
@@ -76,18 +83,23 @@
editViewModel = new ViewModelProvider(this).get(EditViewModel.class);
- Acanthus acanthus = (Acanthus) getActivity().getApplication();
- Integer uid = 1;
- String token = "abc0";
+ acanthus = (Acanthus) getActivity().getApplication();
+ Integer uid = acanthus.getPreferenceUid();
+ String token = acanthus.getPreferenceToken();
editViewModel.getWorkList(uid, token);
- aidList = new ArrayList<>();
+ userAidList = new ArrayList<>();
nameList = new ArrayList<>();
lastUpDateList = new ArrayList<>();
AnimationJsonList = new ArrayList<>();
Map nameHashMap = new HashMap();
Map lastUpDateHashMap = new HashMap();
+ View header = (View)getLayoutInflater().inflate(R.layout.fragment_edit_header,null);
+
ListView listView = (ListView) getActivity().findViewById(R.id.list_view);
+ listView.addHeaderView(header);
+
+ homeViewModel.updateGallery(acanthus); // ギャラリーをアップデート
// SwipeRefreshLayoutを作成
createSwipeRefreshLayout();
@@ -97,23 +109,22 @@
//listViewの表示をしている
@Override
public void onChanged(@Nullable WorkJson workJson) {
- aidList = (ArrayList) editViewModel.getWorkJson().getValue().getAid();
+ userAidList = (ArrayList) editViewModel.getWorkJson().getValue().getAid();
AnimationJsonList = (ArrayList) acanthus.getAnimationJsonList();
- ArrayList workList = new ArrayList<>();
+ HashMap workList = new HashMap<>();
if(AnimationJsonList != null){
- for(int i=0; i entry : list_entries) {
lastUpDateList.add(entry.getValue());
nameList.add(nameHashMap.get(entry.getKey()));
+ aidList.add(entry.getKey());
}
//--------------------------------------------------------------------------------------------------------------------
@@ -141,7 +153,7 @@
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> adapterView, View view, int position, long id) {
- transitionPaintActivity(workList.get(position));
+ transitionPaintActivity(aidList.get(position-1));
}
});
}
@@ -182,10 +194,10 @@
}
//各作品毎の画面遷移
- private void transitionPaintActivity(AnimationJson animationJson) {
+ private void transitionPaintActivity(Integer aid) {
Acanthus acanthus = (Acanthus) getActivity().getApplication();
Intent intent = new Intent(acanthus, PaintActivity.class);
- acanthus.setAid(animationJson.getAid());
+ acanthus.setAid(aid);
startActivity(intent);
}
@@ -200,7 +212,7 @@
// ひっぱり更新の処理
@Override
public void onRefresh() {
-
+ homeViewModel.updateGallery(acanthus); // ギャラリーをアップデート
mSwipeRefreshLayout.setRefreshing(false);
}
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeFragment.java
index 2f38308..18a2716 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeFragment.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeFragment.java
@@ -17,12 +17,16 @@
import org.ntlab.acanthus_client.databinding.FragmentHomeBinding;
import org.ntlab.acanthus_client.entities.Animation;
import org.ntlab.acanthus_client.entities.AnimationJson;
+import org.ntlab.acanthus_client.entities.Stroke;
+import org.ntlab.acanthus_client.views.MainActivity;
import org.ntlab.acanthus_client.views.animation.AnimationActivity;
import org.ntlab.acanthus_client.views.paint.PaintActivity;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
@@ -37,8 +41,13 @@
private HomeViewModel homeViewModel;
private FragmentHomeBinding binding;
-
+ private Acanthus acanthus;
+ private MutableLiveData mdacanthus = new MutableLiveData<>();
private SwipeRefreshLayout mSwipeRefreshLayout;
+ //ソート用宣言
+ private ArrayList createDateList = new ArrayList<>();
+ private ArrayList animationJsonSortList =new ArrayList<>();
+ int mdposition=0;
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
@@ -50,8 +59,6 @@
View root = binding.getRoot();
ListView listView = binding.animationView;
-
-// homeViewModel.updateGallery();
//
// final TextView textView = binding.textHome;
// homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() {
@@ -68,10 +75,11 @@
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d("CreatedActivity", "EditFragment");
-
- Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ startObserve();
+ acanthus = (Acanthus) getActivity().getApplication();
Integer uid = 1;
String token = "abc0";
+ //updateGallery();
View header = (View)getLayoutInflater().inflate(R.layout.animation_home_header,null);
@@ -87,9 +95,9 @@
@Override
public void onChanged(Collection animationJsons) {
Collection animationJsonList = homeViewModel.getGallery();
- //ソート用宣言
- ArrayList createDateList = new ArrayList<>();
- ArrayList animationJsonSortList =new ArrayList<>();
+// //ソート用宣言
+// ArrayList createDateList = new ArrayList<>();
+// ArrayList animationJsonSortList =new ArrayList<>();
//ソート処理
for (AnimationJson animationJson : animationJsonList){
@@ -114,8 +122,9 @@
// transitionAnimationActivity(animationJsonSortList.get(position));
if (position != 0) {
try {
- homeViewModel.setCurrentAnimation(animationJsonSortList.get(position-1).getAid(), acanthus);
- transitionAnimationActivity(animationJsonSortList.get(position-1));
+ mdposition=position;
+ Log.d("", "onItemClick: "+ animationJsonSortList.get(position-1).getAid());
+ homeViewModel.setCurrentAnimation(animationJsonSortList.get(position-1).getAid(), mdacanthus,acanthus);
} catch (IOException e) {
e.printStackTrace();
}
@@ -127,6 +136,10 @@
}
+ public void updateGallery() {
+ homeViewModel.updateGallery(acanthus);
+ }
+
@Override
public void onDestroyView() {
super.onDestroyView();
@@ -134,7 +147,7 @@
}
private void transitionAnimationActivity(AnimationJson animationJson) {
- Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ //Acanthus acanthus = (Acanthus) getActivity().getApplication();
Intent intent = new Intent(acanthus, AnimationActivity.class);
intent.putExtra("AnimationJsonData", animationJson);
startActivity(intent);
@@ -151,7 +164,24 @@
// ひっぱり更新の処理
@Override
public void onRefresh() {
-
+ homeViewModel.updateGallery(acanthus);
mSwipeRefreshLayout.setRefreshing(false);
}
+
+ public MutableLiveData getMdacanthus(){
+ return this.mdacanthus;
+ }
+ private void startObserve() {
+ getMdacanthus().observe(this.getViewLifecycleOwner(), new Observer() {
+ @Override
+ public void onChanged(Acanthus retroacanthus) {
+ try {
+ acanthus = retroacanthus;
+ transitionAnimationActivity(animationJsonSortList.get(mdposition-1));
+ }catch (NullPointerException e){
+
+ }
+ }
+ });
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeViewModel.java
index 8cb2ea0..d4dec2c 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeViewModel.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeViewModel.java
@@ -48,7 +48,7 @@
- public void setCurrentAnimation(int aid, Acanthus acanthus) throws IOException {
+ public void setCurrentAnimation(int aid, MutableLiveData mdacanthus,Acanthus acanthus) throws IOException {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/")
@@ -65,6 +65,7 @@
if(response.isSuccessful()){
animation = response.body();
acanthus.setCurrentAnimation(animation);
+ mdacanthus.setValue(acanthus);
Log.d(acanthus.getCurrentAnimation().getName(), toString());
}
}
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 7654c96..9902370 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
@@ -7,16 +7,22 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import android.widget.EditText;
import android.widget.TextView;
import org.ntlab.acanthus_client.Acanthus;
import org.ntlab.acanthus_client.R;
import org.ntlab.acanthus_client.databinding.FragmentMypageBinding;
-import org.ntlab.acanthus_client.entities.Animation;
+import org.ntlab.acanthus_client.entities.FollowJson;
+import org.ntlab.acanthus_client.entities.FollowerJson;
import org.ntlab.acanthus_client.views.animation.AnimationActivity;
-import org.ntlab.acanthus_client.views.paint.PaintActivity;
+import org.ntlab.acanthus_client.views.main_menu_ui.mypage.help.HowToUseActivity;
+import org.ntlab.acanthus_client.views.main_menu_ui.mypage.help.InquiryActivity;
+import org.ntlab.acanthus_client.views.main_menu_ui.mypage.others.AppInformationActivity;
+import org.ntlab.acanthus_client.views.main_menu_ui.mypage.logout.LogoutActivity;
+import org.ntlab.acanthus_client.views.main_menu_ui.mypage.others.PrivacyPolicyActivity;
+import org.ntlab.acanthus_client.views.main_menu_ui.mypage.others.TermsOfServiceActivity;
+import org.ntlab.acanthus_client.views.userpage.followFollower.FollowFollowerActivity;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -24,7 +30,8 @@
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
-import static android.os.Build.VERSION_CODES.R;
+import java.util.ArrayList;
+import java.util.Collection;
//-----------------------------------------------------------------
//
@@ -47,8 +54,16 @@
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
+ onClickFollow(view);
+ onClickFollower(view);
onClickAccept(view);
onClickAnimation(view);
+ onClickAppInformation(view);
+ onClickPrivacyPolicy(view);
+ onClickTermsOfService(view);
+ onClickLogout(view);
+ onClickHowToUse(view);
+ onClickInquiry(view);
}
//-----------------------------------------------------------------
@@ -61,11 +76,45 @@
//-----------------------------------------------------------------
//
+ public void onClickFollow(View view) {
+ Button button = view.findViewById(R.id.followListButton);
+
+ button.setOnClickListener(v -> {
+ transitionFollowListActivity();
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void onClickFollower(View view) {
+ Button button = view.findViewById(R.id.followerListButton);
+
+ button.setOnClickListener(v -> {
+ transitionFollowerListActivity();
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
public void onClickAccept(View view) {
Button buttonIsInvited = view.findViewById(org.ntlab.acanthus_client.R.id.buttonIsInvited);
+ TextView complete_text = view.findViewById(R.id.complete_text);
buttonIsInvited.setOnClickListener(v -> {
- mypageViewModel.acceptInviteRequest();
+ mypageViewModel.startInvitedAid();
+ mypageViewModel.getInvitedAid().observe(getViewLifecycleOwner(), new Observer>() {
+ @Override
+ public void onChanged(Collection aidList) {
+ ArrayList aidArrayList = new ArrayList<>(aidList);
+ mypageViewModel.acceptInviteRequest(aidArrayList.get(aidArrayList.size() - 1));
+ }
+ });
+ mypageViewModel.getAcceptInvited().observe(getViewLifecycleOwner(), new Observer() {
+ @Override
+ public void onChanged(Boolean acceptInvited) {
+ complete_text.setText("作品に参加しました");
+ }
+ });
});
}
@@ -80,13 +129,77 @@
}
//-----------------------------------------------------------------
+ //
+ public void onClickAppInformation(View view) {
+ Button button = view.findViewById(org.ntlab.acanthus_client.R.id.app_information);
+
+ button.setOnClickListener(v -> {
+ transitionAppInformationActivity();
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void onClickPrivacyPolicy(View view) {
+ Button button = view.findViewById(org.ntlab.acanthus_client.R.id.privacy_policy);
+
+ button.setOnClickListener(v -> {
+ transitionPrivacyPolicyActivity();
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void onClickTermsOfService(View view) {
+ Button button = view.findViewById(org.ntlab.acanthus_client.R.id.terms_of_service);
+
+ button.setOnClickListener(v -> {
+ transitionTermsOfServiceActivity();
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void onClickLogout(View view) {
+ Button button = view.findViewById(org.ntlab.acanthus_client.R.id.logout);
+
+ button.setOnClickListener(v -> {
+ transitionLogoutActivity();
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void onClickHowToUse(View view) {
+ Button button = view.findViewById(R.id.How_to_use);
+
+ button.setOnClickListener(v -> {
+ transitionHowToUseActivity();
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void onClickInquiry(View view) {
+ Button button = view.findViewById(R.id.inquiry);
+
+ button.setOnClickListener(v -> {
+ transitionInquiryActivity();
+ });
+ }
+
+ //-----------------------------------------------------------------
//-----------------------------------------------------------------
// init
private void init() {
Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ TextView loginNameText = binding.textMyname;
+ loginNameText.setText(acanthus.getPreferenceName());
mypageViewModel = new ViewModelProvider(this).get(MyPageViewModel.class);
mypageViewModel.init(acanthus);
startObserve();
+ observeFollowsSize(acanthus.getPreferenceUid());
+ observeFollowersSize(acanthus.getPreferenceUid());
mypageViewModel.checkInvitedRequest();
mypageViewModel.getAccountInfoRequest();
@@ -127,11 +240,108 @@
//-----------------------------------------------------------------
//
+ public void observeFollowsSize(Integer loginUid) {
+ TextView followsSize = binding.followsSizeText;
+
+ mypageViewModel.getMyFollows(loginUid);
+ mypageViewModel.getMyFollowJson().observe(getViewLifecycleOwner(), new Observer() {
+ @Override
+ public void onChanged(FollowJson followJson) {
+ Integer size = followJson.getFollowUids().size();
+ followsSize.setText(size.toString());
+ }
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void observeFollowersSize(Integer loginUid) {
+ TextView followersSize = binding.followersSizeText;
+
+ mypageViewModel.getMyFollowers(loginUid);
+ mypageViewModel.getMyFollowerJson().observe(getViewLifecycleOwner(), new Observer() {
+ @Override
+ public void onChanged(FollowerJson followerJson) {
+ Integer size = followerJson.getFollowerUids().size();
+ followersSize.setText(size.toString());
+ }
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void transitionFollowListActivity() {
+ Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ Intent intent = new Intent(acanthus, FollowFollowerActivity.class);
+ intent.putExtra("UID", acanthus.getPreferenceUid());
+ intent.putExtra("NAME", acanthus.getPreferenceName());
+ startActivity(intent);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void transitionFollowerListActivity() {
+ Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ Intent intent = new Intent(acanthus, FollowFollowerActivity.class);
+ intent.putExtra("UID", acanthus.getPreferenceUid());
+ intent.putExtra("NAME", acanthus.getPreferenceName());
+ startActivity(intent);
+ }
+
+ //-----------------------------------------------------------------
+ //
private void transitionAnimationActivity() {
Acanthus acanthus = (Acanthus) getActivity().getApplication();
Intent intent = new Intent(acanthus, AnimationActivity.class);
startActivity(intent);
}
+
//-----------------------------------------------------------------
+ //
+ private void transitionAppInformationActivity() {
+ Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ Intent intent = new Intent(acanthus, AppInformationActivity.class);
+ startActivity(intent);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ private void transitionPrivacyPolicyActivity() {
+ Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ Intent intent = new Intent(acanthus, PrivacyPolicyActivity.class);
+ startActivity(intent);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ private void transitionTermsOfServiceActivity() {
+ Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ Intent intent = new Intent(acanthus, TermsOfServiceActivity.class);
+ startActivity(intent);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ private void transitionLogoutActivity() {
+ Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ Intent intent = new Intent(acanthus, LogoutActivity.class);
+ startActivity(intent);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ private void transitionHowToUseActivity() {
+ Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ Intent intent = new Intent(acanthus, HowToUseActivity.class);
+ startActivity(intent);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ private void transitionInquiryActivity() {
+ Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ Intent intent = new Intent(acanthus, InquiryActivity.class);
+ startActivity(intent);
+ }
}
\ No newline at end of file
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 ba633d4..f2170fb 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
@@ -3,8 +3,19 @@
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.jackson.JacksonConverterFactory;
import org.ntlab.acanthus_client.Acanthus;
+import org.ntlab.acanthus_client.entities.FollowJson;
+import org.ntlab.acanthus_client.entities.FollowerJson;
+import org.ntlab.acanthus_client.resources.accounts.FollowersRest;
+import org.ntlab.acanthus_client.resources.accounts.FollowsRest;
+
+import java.util.Collection;
//-----------------------------------------------------------------
@@ -13,6 +24,10 @@
private MyPageModelContainer myPageModelContainer;
private MutableLiveData mIsInvited = new MutableLiveData<>();
private MutableLiveData mUidText = new MutableLiveData<>();
+ private MutableLiveData myFollowJsonMutableLiveData;
+ private MutableLiveData myFollowerJsonMutableLiveData;
+ private MutableLiveData> invitedAid = new MutableLiveData<>();
+ private MutableLiveData acceptInvited = new MutableLiveData<>();
//-----------------------------------------------------------------
// getter
@@ -24,11 +39,29 @@
return mUidText;
}
+ public LiveData getMyFollowJson() {
+ return myFollowJsonMutableLiveData;
+ }
+
+ public LiveData getMyFollowerJson() {
+ return myFollowerJsonMutableLiveData;
+ }
+ public LiveData> getInvitedAid() {
+ return invitedAid;
+ }
+ public LiveData getAcceptInvited() {
+ return acceptInvited;
+ }
+
+
+
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// init
public void init(Acanthus acanthus) {
myPageModelContainer = new MyPageModelContainer(acanthus);
+ this.myFollowJsonMutableLiveData = new MutableLiveData<>();
+ this.myFollowerJsonMutableLiveData = new MutableLiveData<>();
}
//-----------------------------------------------------------------
@@ -44,8 +77,72 @@
}
//-----------------------------------------------------------------
// 招待を承諾するリクエスト
- public void acceptInviteRequest(){
- myPageModelContainer.getInvitedConnectionModel().acceptInvite();
+ public void acceptInviteRequest(Integer aid){
+ myPageModelContainer.getInvitedConnectionModel().acceptInvite(aid,acceptInvited);
}
//-----------------------------------------------------------------
+ public void startInvitedAid(){
+ myPageModelContainer.getInvitedConnectionModel().getInvitedAid(invitedAid);
+ }
+
+
+ //-----------------------------------------------------------------
+ //ログイン中のユーザーのフォローリストを取得する
+ public void getMyFollows(Integer uid) {
+ Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ final FollowsRest followsRest = retrofit.create(FollowsRest.class);
+
+ //フォローリストの取得
+ Call call = followsRest.getFollows(uid);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()) {
+ if (response.body() != null) {
+ myFollowJsonMutableLiveData.setValue(response.body());
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+
+ }
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //ユーザーのフォロワーリストを取得する
+ public void getMyFollowers(Integer uid){
+ Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ final FollowersRest followersRest = retrofit.create(FollowersRest.class);
+
+ //フォロワーリストの取得
+ Call call = followersRest.getFollowers(uid);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()) {
+ if (response.body() != null) {
+ myFollowerJsonMutableLiveData.setValue(response.body());
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+
+ }
+ });
+
+ }
+
+
+
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/help/HowToUseActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/help/HowToUseActivity.java
new file mode 100644
index 0000000..d761ab5
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/help/HowToUseActivity.java
@@ -0,0 +1,24 @@
+package org.ntlab.acanthus_client.views.main_menu_ui.mypage.help;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+import org.ntlab.acanthus_client.R;
+
+public class HowToUseActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setTitle( "使い方" );
+ init();
+ }
+
+ //-----------------------------------------------------------------
+ //-----------------------------------------------------------------
+ // 初期化
+ private void init() {
+ setContentView(R.layout.activity_how_to_use);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/help/InquiryActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/help/InquiryActivity.java
new file mode 100644
index 0000000..20d04ca
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/help/InquiryActivity.java
@@ -0,0 +1,25 @@
+package org.ntlab.acanthus_client.views.main_menu_ui.mypage.help;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+import org.ntlab.acanthus_client.R;
+
+public class InquiryActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setTitle( "お問い合わせ" );
+ init();
+ }
+
+ //-----------------------------------------------------------------
+ //-----------------------------------------------------------------
+ // 初期化
+ private void init() {
+ setContentView(R.layout.activity_inquiry);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/logout/LogoutActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/logout/LogoutActivity.java
new file mode 100644
index 0000000..5462e09
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/logout/LogoutActivity.java
@@ -0,0 +1,57 @@
+package org.ntlab.acanthus_client.views.main_menu_ui.mypage.logout;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Button;
+
+import org.ntlab.acanthus_client.R;
+import org.ntlab.acanthus_client.views.login.LoginScreenActivity;
+
+public class LogoutActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setTitle( "ログアウト" );
+ init();
+ onClickLogout();
+ onClickCancelLogout();
+ }
+
+ //-----------------------------------------------------------------
+ //-----------------------------------------------------------------
+ // 初期化
+ private void init() {
+ setContentView(R.layout.activity_logout);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void onClickLogout() {
+ Button button = findViewById(R.id.logout_yes);
+
+ button.setOnClickListener(v -> {
+ transitionLoginScreenActivity();
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void onClickCancelLogout() {
+ Button button = findViewById(R.id.logout_no);
+
+ button.setOnClickListener(v -> {
+ finish();
+ });
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void transitionLoginScreenActivity() {
+ Intent intent = new Intent(getApplication(), LoginScreenActivity.class);
+ startActivity(intent);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/model/Invited/InvitedConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/model/Invited/InvitedConnectionModel.java
index e8548a4..a8d645f 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/model/Invited/InvitedConnectionModel.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/model/Invited/InvitedConnectionModel.java
@@ -7,6 +7,8 @@
import org.ntlab.acanthus_client.resources.accounts.InvitedRest;
import org.ntlab.acanthus_client.resources.accounts.WorkRest;
+import java.util.Collection;
+
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -22,6 +24,7 @@
private Acanthus acanthus;
//-----------------------------------------------------------------
private Boolean isInvited;
+ private String token;
//-----------------------------------------------------------------
// setter
@@ -40,9 +43,10 @@
// 招待確認
public void checkInvited(MutableLiveData mIsInvited) {
final InvitedRest invitedRest = retrofit.create(InvitedRest.class);
- int dummyId = 2;
+// int dummyId = 2;
+ Integer uid = acanthus.getPreferenceUid();
- Call call = invitedRest.checkAccountInvited(dummyId, acanthus.getAid());
+ Call call = invitedRest.checkAccountInvited(uid, acanthus.getAid());
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
@@ -67,26 +71,27 @@
//-----------------------------------------------------------------
// 招待承認
- public void acceptInvite() {
+ public void acceptInvite(Integer aid,MutableLiveData acceptInvited) {
final WorkRest workRest = retrofit.create(WorkRest.class);
- int dummy = 1111;
-
// 作品への参加
// 自身のID, token, 該当作品ID
// ToDo: Aidを外部から取得する必要あり? -> AccountのInviteMapから任意の
// ToDo: getAidを招待一覧画面で更新してから取得すれば変更しなくてよさそう
+// Integer dummyUid = 2;
+// String dummyToken = "abc1";
+ String token = acanthus.getPreferenceToken();
+ Integer uid = acanthus.getPreferenceUid();
-
-
- Call call = workRest.updateWork(acanthus.getPreferenceUid(), acanthus.getPreferenceToken(), dummy);
- call.enqueue(new Callback() {
+ Call call = workRest.updateWork(uid, token, aid);
+ call.enqueue(new Callback() {
@Override
- public void onResponse(Call call, Response response) {
+ public void onResponse(Call call, Response response) {
+ acceptInvited.setValue(response.body());
}
@Override
- public void onFailure(Call call, Throwable t) {
+ public void onFailure(Call call, Throwable t) {
}
});
@@ -105,4 +110,25 @@
}
//-----------------------------------------------------------------
-}
+ public void getInvitedAid(MutableLiveData> invitedAid) {
+ final InvitedRest invitedRest = retrofit.create(InvitedRest.class);
+ //dummy
+ Integer uid = acanthus.getPreferenceUid();
+ String token = acanthus.getPreferenceToken();
+
+ Call> call = invitedRest.getAccountInvited(uid, token);
+ call.enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if (response.isSuccessful())
+ invitedAid.setValue(response.body());
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+
+ }
+ });
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/others/AppInformationActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/others/AppInformationActivity.java
new file mode 100644
index 0000000..6e7ef55
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/others/AppInformationActivity.java
@@ -0,0 +1,25 @@
+package org.ntlab.acanthus_client.views.main_menu_ui.mypage.others;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+import org.ntlab.acanthus_client.R;
+
+public class AppInformationActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setTitle( "アプリ情報" );
+ init();
+ }
+
+ //-----------------------------------------------------------------
+ //-----------------------------------------------------------------
+ // 初期化
+ private void init() {
+ setContentView(R.layout.activity_app_information);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/others/PrivacyPolicyActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/others/PrivacyPolicyActivity.java
new file mode 100644
index 0000000..9f3a45c
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/others/PrivacyPolicyActivity.java
@@ -0,0 +1,25 @@
+package org.ntlab.acanthus_client.views.main_menu_ui.mypage.others;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+import org.ntlab.acanthus_client.R;
+
+public class PrivacyPolicyActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setTitle( "プライバシーポリシー" );
+ init();
+ }
+
+ //-----------------------------------------------------------------
+ //-----------------------------------------------------------------
+ // 初期化
+ private void init() {
+ setContentView(R.layout.activity_privacy_policy);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/others/TermsOfServiceActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/others/TermsOfServiceActivity.java
new file mode 100644
index 0000000..057a9dc
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/others/TermsOfServiceActivity.java
@@ -0,0 +1,25 @@
+package org.ntlab.acanthus_client.views.main_menu_ui.mypage.others;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+import org.ntlab.acanthus_client.R;
+
+public class TermsOfServiceActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setTitle( "利用規約" );
+ init();
+ }
+
+ //-----------------------------------------------------------------
+ //-----------------------------------------------------------------
+ // 初期化
+ private void init() {
+ setContentView(R.layout.activity_terms_of_service);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchFragment.java
index 4d5365b..615bb64 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchFragment.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchFragment.java
@@ -1,45 +1,76 @@
package org.ntlab.acanthus_client.views.main_menu_ui.search;
+import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.SearchView;
+import android.widget.Button;
+import android.widget.EditText;
import android.widget.TextView;
+import org.ntlab.acanthus_client.Acanthus;
import org.ntlab.acanthus_client.R;
import org.ntlab.acanthus_client.databinding.FragmentSearchBinding;
+import org.ntlab.acanthus_client.entities.AnimationJson;
+
+import java.util.ArrayList;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
-import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
public class SearchFragment extends Fragment {
private SearchViewModel searchViewModel;
private FragmentSearchBinding binding;
- private SearchView searchView;
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
- searchViewModel =
- new ViewModelProvider(this).get(SearchViewModel.class);
+ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ searchViewModel = new ViewModelProvider(this).get(SearchViewModel.class);
binding = FragmentSearchBinding.inflate(inflater, container, false);
View root = binding.getRoot();
-// final TextView textView = binding.textSearch;
-// searchViewModel.getText().observe(getViewLifecycleOwner(), new Observer() {
-// @Override
-// public void onChanged(@Nullable String s) {
-// textView.setText(s);
-// }
-// });
return root;
+
}
-
+
+ @Override
+ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
+ Acanthus acanthus = (Acanthus) getActivity().getApplication();
+ ArrayList animationList = (ArrayList) acanthus.getAnimationJsonList();
+ ArrayList searchAnimationList = new ArrayList<>();
+
+ TextView warningText = view.findViewById(R.id.warningText);
+ warningText.setVisibility(view.INVISIBLE);
+
+ Button searchButton = view.findViewById(R.id.searchButton);
+
+ searchButton.setOnClickListener(v -> {
+ searchAnimationList.clear();
+ String searchWord = ((EditText) view.findViewById(R.id.searchWord)).getText().toString();
+
+ if (searchWord.equals("") || searchWord.equals("キーワードを入力")) {
+ warningText.setVisibility(view.VISIBLE);
+ }else{
+ warningText.setVisibility(view.INVISIBLE);
+ for (AnimationJson animationJson : animationList) {
+ if (animationJson.getAnimationName().indexOf(searchWord) != -1){
+ searchAnimationList.add(animationJson);
+ }
+ }
+
+ Intent intent = new Intent(acanthus, SearchResultActivity.class);
+ intent.putExtra("RESULT", searchAnimationList);
+ startActivity(intent);
+ }
+
+ });
+
+ }
@Override
public void onDestroyView() {
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchResultActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchResultActivity.java
new file mode 100644
index 0000000..104d0bc
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchResultActivity.java
@@ -0,0 +1,57 @@
+package org.ntlab.acanthus_client.views.main_menu_ui.search;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import org.ntlab.acanthus_client.R;
+import org.ntlab.acanthus_client.entities.AnimationJson;
+import org.ntlab.acanthus_client.views.animation.AnimationActivity;
+import org.ntlab.acanthus_client.views.main_menu_ui.edit.WorkListViewAdapter;
+
+import java.util.ArrayList;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+
+public class SearchResultActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_search_result);
+ setTitle("検索結果");
+
+ Intent intent = getIntent();
+ ArrayList animationsResult = (ArrayList) intent.getSerializableExtra("RESULT");
+ ArrayList animationNameList = new ArrayList<>();
+ ArrayList animationLastUpdateList = new ArrayList<>();
+ TextView resultText = findViewById(R.id.resultText);
+ Integer listSize = animationsResult.size();
+ resultText.setText("検索結果 " + listSize.toString() + " 件");
+ ListView listView = findViewById(R.id.resultList);
+
+ for (AnimationJson animationJson : animationsResult) {
+ animationNameList.add(animationJson.getAnimationName());
+ animationLastUpdateList.add(animationJson.getLastUpdate());
+ }
+
+ BaseAdapter adapter = new WorkListViewAdapter(getApplication(), R.layout.work_list, animationNameList, animationLastUpdateList);
+
+ listView.setAdapter(adapter);
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ Intent intent = new Intent(getApplication(), AnimationActivity.class);
+ intent.putExtra("AnimationJsonData", animationsResult.get(position));
+ startActivity(intent);
+ }
+ });
+
+ }
+
+}
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchViewModel.java
index 9afe3f4..bfb1a0c 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchViewModel.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/search/SearchViewModel.java
@@ -16,4 +16,5 @@
public LiveData getText() {
return mText;
}
+
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteActivity.java
index 2ad1829..b207c0f 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteActivity.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteActivity.java
@@ -8,16 +8,35 @@
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import org.ntlab.acanthus_client.Acanthus;
import org.ntlab.acanthus_client.R;
+import org.ntlab.acanthus_client.entities.Account;
+import org.ntlab.acanthus_client.entities.AccountJson;
+import org.ntlab.acanthus_client.entities.EditorJson;
+import org.ntlab.acanthus_client.entities.FollowerJson;
+import org.ntlab.acanthus_client.entities.InvitesJson;
+import org.ntlab.acanthus_client.entities.WorkJson;
+import org.ntlab.acanthus_client.views.main_menu_ui.edit.EditViewModel;
-public class InviteActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class InviteActivity extends AppCompatActivity {
private InviteViewModel inviteViewModel;
- private static final String[] scenes = {
- "UserName",
- };
+ private Integer aid;
+ private Integer uid;
+ private Integer invitedUid;
+ private String ownerToken;
+ private Acanthus acanthus;
+ private ArrayList followersUidList = new ArrayList<>();
+ private ArrayList followersNameList = new ArrayList<>();
+ private ArrayList collectionAccountUid = new ArrayList<>();
+ private EditorJson editorJson;
+ private InvitesJson invitedUidList;
+ private Integer followersNameIndex;
//-----------------------------------------------------------------
@Override
@@ -27,32 +46,80 @@
setContentView((R.layout.activity_invite));
// ListViewのインスタンスを生成
ListView listView = findViewById(R.id.list_view);
+ Acanthus acanthus = (Acanthus) getApplication();
+ inviteViewModel = new ViewModelProvider(this).get(InviteViewModel.class);
+ aid = acanthus.getAid();
+ uid = acanthus.getPreferenceUid();
+ ownerToken = acanthus.getPreferenceToken();
- // BaseAdapter を継承したadapterのインスタンスを生成
- // レイアウトファイル list.xml を activity_main.xml に
- // inflate するためにadapterに引数として渡す
- BaseAdapter adapter = new ListViewAdapter(this.getApplicationContext(), R.layout.list, scenes);
- // ListViewにadapterをセット
- listView.setAdapter(adapter);
+ //フォロワー情報を取得する
+ inviteViewModel.startFollowersUidJson(uid, aid, ownerToken);
+ inviteViewModel.getFollowerUidJson().observe(this, new Observer() {
+ @Override
+ public void onChanged(FollowerJson followerUidJson) {
+ followersUidList = inviteViewModel.getFollowerUidJson().getValue().getFollowerUids();
+ followersNameList = inviteViewModel.getFollowerUidJson().getValue().getFollowerNames();
+ inviteViewModel.startGalleryInvites(aid, ownerToken);
+ }
+ });
- // クリックリスナーをセット
- listView.setOnItemClickListener(this);
+ //すべての招待情報を取得する
+ inviteViewModel.getInvitesJson().observe(this, new Observer() {
+ @Override
+ public void onChanged(InvitesJson collectionAccount) {
+ invitedUidList = inviteViewModel.getInvitesJson().getValue();
+
+ inviteViewModel.startGalleryEditors(aid);
+ }
+ });
+
+ inviteViewModel.getEditorJson().observe(this, new Observer() {
+ @Override
+ public void onChanged(EditorJson collectionAccount) {
+ editorJson = inviteViewModel.getEditorJson().getValue();
+
+ if(editorJson != null){
+ for(Integer editorUid : editorJson.getUid()){
+ followersNameIndex = followersUidList.indexOf(editorUid);
+ followersUidList.remove(editorUid);
+ followersNameList.remove(followersNameIndex);
+ }
+ }
+
+ if(invitedUidList != null){
+ for(Integer invitedUid : invitedUidList.getInvites()){
+ followersNameList.remove(followersUidList.indexOf(invitedUid));
+ followersUidList.remove(invitedUid);
+ }
+ }
+
+ // BaseAdapter を継承したadapterのインスタンスを生成
+ // レイアウトファイル list.xml を activity_main.xml に
+ // inflate するためにadapterに引数として渡す
+ BaseAdapter adapter = new ListViewAdapter(getApplication(), R.layout.invites_list, followersNameList);
+
+ // ListViewにadapterをセット
+ listView.setAdapter(adapter);
+
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> adapterView, View view, int position, long id) {
+ invitedUid = followersUidList.get(position);
+ inviteViewModel.addInvite(aid, uid.toString(), invitedUid.toString(), ownerToken);
+ }
+ });
+ }
+ });
+
+ inviteViewModel.getMessage().observe(this, new Observer() {
+ @Override
+ public void onChanged(Boolean message) {
+ finish();
+ }
+ });
}
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- Intent intent = new Intent(
- this.getApplicationContext(), PaintActivity.class);
-
- // clickされたpositionのtextとphotoのID
- String selectedText = scenes[position];
- // インテントにセット
- intent.putExtra("Text", selectedText);
-
- // SubActivityへ遷移
- startActivity(intent);
- }
//-----------------------------------------------------------------
// init
@@ -60,4 +127,4 @@
Acanthus acanthus = (Acanthus) getApplication();
inviteViewModel = new ViewModelProvider(this).get(InviteViewModel.class);
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteViewModel.java
index 7de98da..5fda98b 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteViewModel.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteViewModel.java
@@ -1,8 +1,167 @@
package org.ntlab.acanthus_client.views.paint;
+import android.util.Log;
+
+import androidx.lifecycle.LiveData;
+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.AccountJson;
+import org.ntlab.acanthus_client.entities.AidJson;
+import org.ntlab.acanthus_client.entities.Animation;
+import org.ntlab.acanthus_client.entities.AnimationJson;
+import org.ntlab.acanthus_client.entities.EditorJson;
+import org.ntlab.acanthus_client.entities.FollowerJson;
+import org.ntlab.acanthus_client.entities.InvitesJson;
+import org.ntlab.acanthus_client.resources.accounts.AccountsRest;
+import org.ntlab.acanthus_client.resources.accounts.FollowersRest;
+import org.ntlab.acanthus_client.resources.gallery.EditorsRest;
+import org.ntlab.acanthus_client.resources.gallery.GalleryRest;
+import org.ntlab.acanthus_client.resources.gallery.InvitesRest;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.jackson.JacksonConverterFactory;
+
public class InviteViewModel extends ViewModel {
+ private MutableLiveData followersUidJsonMutableLiveData;
+ private MutableLiveData> collectionAccountJsonMutableLiveData;
+ private MutableLiveData collectionInvitesJsonMutableLiveData;
+ private MutableLiveData messageMutableLiveData;
+ private MutableLiveData editorJsonMutableLiveData;
-}
+
+ public InviteViewModel() {
+ this.followersUidJsonMutableLiveData = new MutableLiveData<>();
+ this.collectionAccountJsonMutableLiveData = new MutableLiveData<>();
+ this.collectionInvitesJsonMutableLiveData = new MutableLiveData<>();
+ this.messageMutableLiveData = new MutableLiveData<>();
+ this.editorJsonMutableLiveData = new MutableLiveData<>();
+ }
+
+ public LiveData getFollowerUidJson() {
+ return this.followersUidJsonMutableLiveData;
+ }
+
+ public LiveData> getCollectionAccountJson() {
+ return this.collectionAccountJsonMutableLiveData;
+ }
+
+ public LiveData getInvitesJson() {
+ return this.collectionInvitesJsonMutableLiveData;
+ }
+
+ public LiveData getMessage() {
+ return this.messageMutableLiveData;
+ }
+
+ public LiveData getEditorJson() {
+ return this.editorJsonMutableLiveData;
+ }
+
+ public void startFollowersUidJson(Integer uid, Integer aid, String ownerToken){
+ Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ final FollowersRest followersRest = retrofit.create(FollowersRest.class);
+ Call call = followersRest.getFollowers(uid);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if(response.isSuccessful()){
+ if (response.body() != null) {
+ followersUidJsonMutableLiveData.setValue(response.body());
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ startGalleryInvites(aid, ownerToken);
+ }
+ });
+ }
+
+ public void startGalleryInvites(Integer aid, String ownerToken){
+ Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ final InvitesRest invitesRest = retrofit.create(InvitesRest.class);
+ Call call = invitesRest.isGalleryInvites(aid, null, null, ownerToken);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if(response.isSuccessful()){
+ if (response.body() != null) {
+ collectionInvitesJsonMutableLiveData.setValue(response.body());
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ startGalleryEditors(aid);
+ }
+ });
+ }
+
+ public void startGalleryEditors(Integer aid){
+ Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ final EditorsRest invitesRest = retrofit.create(EditorsRest.class);
+ Call call = invitesRest.getEditors(aid);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if(response.isSuccessful()){
+ if (response.body() != null) {
+ editorJsonMutableLiveData.setValue(response.body());
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ editorJsonMutableLiveData.setValue(null);
+ }
+ });
+ }
+
+
+ public void addInvite(Integer aid, String ownerUid, String invitedUid, String ownerToken){
+ Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ final InvitesRest invitesRest = retrofit.create(InvitesRest.class);
+ Call call = invitesRest.addInvite(aid, ownerUid, invitedUid, ownerToken);
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if(response.isSuccessful()){
+ if (response.body() != null) {
+ messageMutableLiveData.setValue(response.body());
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/ListViewAdapter.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/ListViewAdapter.java
index c4c0adf..e3d1bf5 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/ListViewAdapter.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/ListViewAdapter.java
@@ -9,6 +9,9 @@
import org.ntlab.acanthus_client.R;
+import java.util.ArrayList;
+import java.util.Collection;
+
public class ListViewAdapter extends BaseAdapter {
static class ViewHolder {
@@ -17,16 +20,16 @@
private LayoutInflater inflater;
private int itemLayoutId;
- private String[] titles;
+ private ArrayList titles = new ArrayList<>();
private int[] ids;
ListViewAdapter(Context context, int itemLayoutId,
- String[] scenes) {
+ ArrayList collectionAccountName) {
super();
this.inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.itemLayoutId = itemLayoutId;
- this.titles = scenes;
+ this.titles = collectionAccountName;
}
@Override
@@ -38,7 +41,7 @@
convertView = inflater.inflate(itemLayoutId, parent, false);
// ViewHolder を生成
holder = new ViewHolder();
- holder.textView = convertView.findViewById(R.id.textView);
+ holder.textView = convertView.findViewById(R.id.textViewInvitesName);
convertView.setTag(holder);
}
// holder を使って再利用
@@ -47,7 +50,7 @@
}
// 現在の position にあるファイル名リストを holder の textView にセット
- holder.textView.setText(titles[position]);
+ holder.textView.setText(titles.get(position));
return convertView;
}
@@ -55,7 +58,7 @@
@Override
public int getCount() {
// texts 配列の要素数
- return titles.length;
+ return titles.size();
}
@Override
@@ -67,4 +70,4 @@
public long getItemId(int position) {
return 0;
}
-}
+}
\ 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 7c680f8..ef21a4c 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
@@ -14,6 +14,7 @@
import org.ntlab.acanthus_client.R;
import org.ntlab.acanthus_client.databinding.ActivityPaintBinding;
import org.ntlab.acanthus_client.entities.Stroke;
+import org.ntlab.acanthus_client.views.paint.page.PageViewModel;
import java.util.Collection;
@@ -26,71 +27,34 @@
private PaintToolBar paintToolBar;
- private PaintScreenShot paintScreenShot;
+
private ActivityPaintBinding binding;
private PaintViewModel paintViewModel;
-
- private boolean buttonView = false;
+ private PageViewModel pageViewModel;
//-----------------------------------------------------------------
//-----------------------------------------------------------------
@Override
public void onDestroy() {
super.onDestroy();
- paintViewModel.stop();
- paintScreenShot.onDestroy();
+ pageViewModel.resetPageNo();
}
//-----------------------------------------------------------------
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setTheme(R.style.AppTheme_NoTitleBar);//タイトルバーを消す
init();
initView();
-
- //paintScreenShot.onCreate();
-
- Button button = findViewById(R.id.button_keep);
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //bottonタップで表示されてたら非表示にする。
- if (buttonView) {
- findViewById(R.id.capture).setVisibility(View.INVISIBLE);
- findViewById(R.id.image).setVisibility(View.INVISIBLE);
- findViewById(R.id.textView3).setVisibility(View.INVISIBLE);
-
- buttonView = false;
- } else {
- findViewById(R.id.capture).setVisibility(View.VISIBLE);
- findViewById(R.id.image).setVisibility(View.VISIBLE);
- findViewById(R.id.textView3).setVisibility(View.VISIBLE);
-
- buttonView = true;
- }
- }
- });
}
//-----------------------------------------------------------------
@Override
protected void onResume() {
super.onResume();
-
- displayAid();
- }
-
- //-----------------------------------------------------------------
- // 描画全体のクリア
- public void onClickClear(View view) {
- paintCanvas.deleteStroke();
- }
-
- //-----------------------------------------------------------------
- // 招待する
- public void onClickInvite(View view) {
- Integer dummyId = 2;
- paintViewModel.inviteNewUserRequest(dummyId);
+ paintViewModel.start();
+ paintCanvas.clearCanvas();
}
//-----------------------------------------------------------------
@@ -99,7 +63,10 @@
private void init() {
Acanthus acanthus = (Acanthus) getApplication();
paintViewModel = new ViewModelProvider(this).get(PaintViewModel.class);
+ pageViewModel = new ViewModelProvider(this).get(PageViewModel.class);
+
paintViewModel.init(acanthus);
+ pageViewModel.init(acanthus);
startObserve();
}
@@ -116,12 +83,7 @@
paintOnionCanvas = findViewById(R.id.paintOnionCanvas);
paintOnionCanvas.init(paintViewModel);
- paintScreenShot = new PaintScreenShot(this);
- paintToolBar = new PaintToolBar(this, paintCanvas);
-
- findViewById(R.id.capture).setVisibility(View.INVISIBLE);
- findViewById(R.id.image).setVisibility(View.INVISIBLE);
- findViewById(R.id.textView3).setVisibility(View.INVISIBLE);
+ paintToolBar = new PaintToolBar(this, paintCanvas, paintOnionCanvas);
}
//-----------------------------------------------------------------
@@ -144,37 +106,7 @@
}
});
-//1時的コメントアウトここから
- // paintViewModel.getmStrokeNo().observe(this, new Observer() {
-// @Override
-// public void onChanged(Integer integer) {
-// paintViewModel.getPosition(integer);
-// }
-// });
-// paintViewModel.getMlatestPosition().observe(this, new Observer>() {
-// @Override
-// public void onChanged(Collection positions) {
-// if(positions.size()!=1){
-// //paintCanvas.latestPositionWrite(positions);
-// }
-// }
-// });
-//ここまで
}
-
//------------------------------------------------------------------
- // デバッグ用の現在編集中のAid表示
- private void displayAid() {
- Acanthus acanthus = (Acanthus) getApplication();
- TextView view = findViewById(R.id.textViewCurAid);
- view.setText("aid:" + acanthus.getAid().toString());
- }
-
- //------------------------------------------------------------------
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- paintScreenShot.onActivityResult(requestCode, resultCode, data);
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java
index bfd5295..4664123 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java
@@ -95,13 +95,12 @@
//
@Override
protected void onDraw(Canvas canvas) {
- super.onDraw(curCanvas);
+ super.onDraw(canvas);
canvas.drawColor(0xFFFFFFFF);
for (int i = 0; i < paths.size(); i++) {
try {
canvas.drawPath(paths.get(i), paints.get(i));
- curCanvas.drawPath(paths.get(i), paints.get(i));
} catch (IndexOutOfBoundsException ex) {
}
}
@@ -109,7 +108,6 @@
for (int i = 0; i < clonePaths.size(); i++) {
try {
canvas.drawPath(clonePaths.get(i), clonePaints.get(i));
- curCanvas.drawPath(clonePaths.get(i), clonePaints.get(i));
} catch (IndexOutOfBoundsException ex) {
}
}
@@ -141,7 +139,7 @@
if (0 < paths.size())
onTouched(paths.get(paths.size() - 1), x, y);
- paintViewModel.setmStrokeNo();
+ paintViewModel.setStrokeNo();
paintViewModel.addLocalStrokeRequest(x, y, Color.argb(pen.getAlpha(), pen.getRed(), pen.getGreen(), pen.getBlue()), pen.getThickness());
break;
@@ -216,6 +214,14 @@
//-----------------------------------------------------------------
@RequiresApi(api = Build.VERSION_CODES.O)
public void canvassc() {
+
+ for (int i = 0; i < clonePaths.size(); i++) {
+ try {
+ curCanvas.drawPath(clonePaths.get(i), clonePaints.get(i));
+ } catch (IndexOutOfBoundsException ex) {
+ }
+ }
+
ByteArrayOutputStream stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintOnionCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintOnionCanvas.java
index f9002e7..5bbffca 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintOnionCanvas.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintOnionCanvas.java
@@ -10,23 +10,27 @@
import android.view.View;
import androidx.annotation.Nullable;
+import androidx.lifecycle.ViewModelProvider;
+import org.ntlab.acanthus_client.entities.Pen;
import org.ntlab.acanthus_client.entities.Position;
import org.ntlab.acanthus_client.entities.Stroke;
+import org.ntlab.acanthus_client.views.paint.page.PageViewModel;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.List;
+
public class PaintOnionCanvas extends View {
//-----------------------------------------------------------------
- private Path path = new Path();
- private Paint paint = new Paint();
private PaintViewModel paintViewModel;
- private Canvas canvas;
+ //-----------------------------------------------------------------
+ private ArrayList paths = new ArrayList<>();
+ private ArrayList paints = new ArrayList<>();
//-----------------------------------------------------------------
//-----------------------------------------------------------------
@@ -38,11 +42,6 @@
//
public void init(PaintViewModel paintViewModel) {
this.paintViewModel = paintViewModel;
-
- paint.setColor(Color.argb(40, 255, 0, 0));
- paint.setStyle(Paint.Style.STROKE);
- paint.setStrokeWidth(20);
-
invalidate();
}
@@ -50,39 +49,59 @@
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
-
- canvas.drawPath(path, paint);
+ for (int i = 0; i < paths.size(); i++) {
+ try {
+ canvas.drawPath(paths.get(i), paints.get(i));
+ } catch (IndexOutOfBoundsException ex) {
+ }
+ }
+ //-----------------------------------------------------------------
}
//-----------------------------------------------------------------
- //
+ // 描画
public void updateCanvas() {
int cnt = 0;
clearCanvas();
- for (Stroke s : paintViewModel.getPreStrokes().getValue()) {
- for (Position p : s.getPositions()) {
- if (cnt == 0) {
- path.moveTo(p.getX(), p.getY());
- } else {
- if (p.getX() != -1)
- path.lineTo(p.getX(), p.getY());
+ if (!paintViewModel.getPreStrokes().getValue().equals(null)) {
+ for (Stroke s : paintViewModel.getPreStrokes().getValue()) {
+
+ Paint paint = new Paint();
+ paint.setColor(Color.argb(Color.alpha(s.getColor()) / 4, Color.red(s.getColor()), Color.green(s.getColor()), Color.blue(s.getColor())));//色の指定
+ paint.setStrokeWidth(s.getThickness());
+ paint.setStyle(Paint.Style.STROKE);
+
+ paints.add(paint);
+ paths.add(new Path());
+
+ for (Position p : s.getPositions()) {
+ if (cnt == 0) {
+ paths.get(paths.size() - 1).moveTo(p.getX(), p.getY());
+ } else {
+ if (p.getX() != -1)
+ paths.get(paths.size() - 1).lineTo(p.getX(), p.getY());
+ }
+ invalidate();
+ cnt++;
}
- invalidate();
- cnt++;
+ cnt = 0;
}
- cnt = 0;
}
- paintViewModel.deletePreStroke();
}
+ //-----------------------------------------------------------------
+ // 全消去
+ public void clearCanvas() {
+ for (Path p : paths) p.reset();
+ invalidate();
+ }
//-----------------------------------------------------------------
//
- public void clearCanvas() {
- path.reset();
- invalidate();
+ public void stopUpdate() {
+ paintViewModel.stop();
}
//-----------------------------------------------------------------
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintScreenShot.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintScreenShot.java
index 67cd22d..6511199 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintScreenShot.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintScreenShot.java
@@ -1,141 +1,141 @@
-package org.ntlab.acanthus_client.views.paint;
-
-import androidx.appcompat.app.AppCompatActivity;
-
-import android.app.Activity;
-import android.graphics.ImageFormat;
-import android.os.Bundle;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.PixelFormat;
-import android.hardware.display.DisplayManager;
-import android.hardware.display.VirtualDisplay;
-import android.media.Image;
-import android.media.ImageReader;
-import android.media.projection.MediaProjection;
-import android.media.projection.MediaProjectionManager;
-import android.util.DisplayMetrics;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.Toast;
-
-import com.google.android.material.bottomnavigation.BottomNavigationView;
-
-import org.ntlab.acanthus_client.R;
-
-import java.nio.ByteBuffer;
-
-import static android.app.Activity.RESULT_OK;
-import static android.content.Context.MEDIA_PROJECTION_SERVICE;
-import static android.graphics.ImageFormat.JPEG;
-
-
-public class PaintScreenShot {
-
- private AppCompatActivity appCompatActivity;
- private MediaProjectionManager mpManager;
- private MediaProjection mProjection;
- private static final int REQUEST_MEDIA_PROJECTION = 1001;
-
- private int displayWidth, displayHeight;
- private ImageReader imageReader;
- private VirtualDisplay virtualDisplay;
- private int screenDensity;
- private ImageView imageView;
-
- public PaintScreenShot(AppCompatActivity appCompatActivity) {
- this.appCompatActivity = appCompatActivity;
- }
-
- public void onCreate() {
-
- Button button = appCompatActivity.findViewById(R.id.capture);
- // ボタンタップでスクリーンショットを撮る
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- getScreenshot();
- }
- });
-
- // 撮影したスクリーンを表示するImageView
- imageView = appCompatActivity.findViewById(R.id.image);
-
- // 画面の縦横サイズとdpを取得
- DisplayMetrics displayMetrics = new DisplayMetrics();
- appCompatActivity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
- screenDensity = displayMetrics.densityDpi;
- displayWidth = displayMetrics.widthPixels;
- displayHeight = displayMetrics.heightPixels;
-
- mpManager = (MediaProjectionManager)
- appCompatActivity.getSystemService(MEDIA_PROJECTION_SERVICE);
-
- // permissionを確認するintentを投げ、ユーザーの許可・不許可を受け取る
- if(mpManager != null){
- appCompatActivity.startActivityForResult(mpManager.createScreenCaptureIntent(),
- REQUEST_MEDIA_PROJECTION);
- }
- }
-
- // ユーザーの許可を受け取る
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
-
- if (REQUEST_MEDIA_PROJECTION == requestCode) {
- if (resultCode != RESULT_OK) {
- // 拒否された
- Toast.makeText(appCompatActivity,
- "User cancelled", Toast.LENGTH_LONG).show();
- return;
- }
- // 許可された結果を受け取る
- setUpMediaProjection(resultCode, data);
- }
- }
-
- private void setUpMediaProjection(int code, Intent intent) {
- mProjection = mpManager.getMediaProjection(code, intent);
- setUpVirtualDisplay();
- }
-
- private void setUpVirtualDisplay() {
- imageReader = ImageReader.newInstance(
- displayWidth, displayHeight, 0x1, 2);
-
- virtualDisplay = mProjection.createVirtualDisplay("ScreenCapture",
- displayWidth, displayHeight, screenDensity,
- DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
- imageReader.getSurface(), null, null);
- }
-
- private void getScreenshot() {
- // ImageReaderから画面を取り出す
- Log.d("debug", "getScreenshot");
-
- Image image = imageReader.acquireLatestImage();
- Image.Plane[] planes = image.getPlanes();
- ByteBuffer buffer = planes[0].getBuffer();
-
- int pixelStride = planes[0].getPixelStride();
- int rowStride = planes[0].getRowStride();
- int rowPadding = rowStride - pixelStride * displayWidth;
-
- // バッファからBitmapを生成
- Bitmap bitmap = Bitmap.createBitmap(
- displayWidth + rowPadding / pixelStride, displayHeight,
- Bitmap.Config.ARGB_8888);
- bitmap.copyPixelsFromBuffer(buffer);
- image.close();
-
- imageView.setImageBitmap(bitmap);
- }
-
- public void onDestroy() {
- if (virtualDisplay != null) {
- Log.d("debug","release VirtualDisplay");
- virtualDisplay.release();
- }
- }
-}
\ No newline at end of file
+//package org.ntlab.acanthus_client.views.paint;
+//
+//import androidx.appcompat.app.AppCompatActivity;
+//
+//import android.app.Activity;
+//import android.graphics.ImageFormat;
+//import android.os.Bundle;
+//import android.content.Intent;
+//import android.graphics.Bitmap;
+//import android.graphics.PixelFormat;
+//import android.hardware.display.DisplayManager;
+//import android.hardware.display.VirtualDisplay;
+//import android.media.Image;
+//import android.media.ImageReader;
+//import android.media.projection.MediaProjection;
+//import android.media.projection.MediaProjectionManager;
+//import android.util.DisplayMetrics;
+//import android.util.Log;
+//import android.view.View;
+//import android.widget.Button;
+//import android.widget.ImageView;
+//import android.widget.Toast;
+//
+//import com.google.android.material.bottomnavigation.BottomNavigationView;
+//
+//import org.ntlab.acanthus_client.R;
+//
+//import java.nio.ByteBuffer;
+//
+//import static android.app.Activity.RESULT_OK;
+//import static android.content.Context.MEDIA_PROJECTION_SERVICE;
+//import static android.graphics.ImageFormat.JPEG;
+//
+//
+//public class PaintScreenShot {
+//
+// private AppCompatActivity appCompatActivity;
+// private MediaProjectionManager mpManager;
+// private MediaProjection mProjection;
+// private static final int REQUEST_MEDIA_PROJECTION = 1001;
+//
+// private int displayWidth, displayHeight;
+// private ImageReader imageReader;
+// private VirtualDisplay virtualDisplay;
+// private int screenDensity;
+// private ImageView imageView;
+//
+// public PaintScreenShot(AppCompatActivity appCompatActivity) {
+// this.appCompatActivity = appCompatActivity;
+// }
+//
+// public void onCreate() {
+//
+// Button button = appCompatActivity.findViewById(R.id.capture);
+// // ボタンタップでスクリーンショットを撮る
+// button.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View view) {
+// getScreenshot();
+// }
+// });
+//
+// // 撮影したスクリーンを表示するImageView
+// imageView = appCompatActivity.findViewById(R.id.image);
+//
+// // 画面の縦横サイズとdpを取得
+// DisplayMetrics displayMetrics = new DisplayMetrics();
+// appCompatActivity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
+// screenDensity = displayMetrics.densityDpi;
+// displayWidth = displayMetrics.widthPixels;
+// displayHeight = displayMetrics.heightPixels;
+//
+// mpManager = (MediaProjectionManager)
+// appCompatActivity.getSystemService(MEDIA_PROJECTION_SERVICE);
+//
+// // permissionを確認するintentを投げ、ユーザーの許可・不許可を受け取る
+// if(mpManager != null){
+// appCompatActivity.startActivityForResult(mpManager.createScreenCaptureIntent(),
+// REQUEST_MEDIA_PROJECTION);
+// }
+// }
+//
+// // ユーザーの許可を受け取る
+// public void onActivityResult(int requestCode, int resultCode, Intent data) {
+//
+// if (REQUEST_MEDIA_PROJECTION == requestCode) {
+// if (resultCode != RESULT_OK) {
+// // 拒否された
+// Toast.makeText(appCompatActivity,
+// "User cancelled", Toast.LENGTH_LONG).show();
+// return;
+// }
+// // 許可された結果を受け取る
+// setUpMediaProjection(resultCode, data);
+// }
+// }
+//
+// private void setUpMediaProjection(int code, Intent intent) {
+// mProjection = mpManager.getMediaProjection(code, intent);
+// setUpVirtualDisplay();
+// }
+//
+// private void setUpVirtualDisplay() {
+// imageReader = ImageReader.newInstance(
+// displayWidth, displayHeight, 0x1, 2);
+//
+// virtualDisplay = mProjection.createVirtualDisplay("ScreenCapture",
+// displayWidth, displayHeight, screenDensity,
+// DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
+// imageReader.getSurface(), null, null);
+// }
+//
+// private void getScreenshot() {
+// // ImageReaderから画面を取り出す
+// Log.d("debug", "getScreenshot");
+//
+// Image image = imageReader.acquireLatestImage();
+// Image.Plane[] planes = image.getPlanes();
+// ByteBuffer buffer = planes[0].getBuffer();
+//
+// int pixelStride = planes[0].getPixelStride();
+// int rowStride = planes[0].getRowStride();
+// int rowPadding = rowStride - pixelStride * displayWidth;
+//
+// // バッファからBitmapを生成
+// Bitmap bitmap = Bitmap.createBitmap(
+// displayWidth + rowPadding / pixelStride, displayHeight,
+// Bitmap.Config.ARGB_8888);
+// bitmap.copyPixelsFromBuffer(buffer);
+// image.close();
+//
+// imageView.setImageBitmap(bitmap);
+// }
+//
+// public void onDestroy() {
+// if (virtualDisplay != null) {
+// Log.d("debug","release VirtualDisplay");
+// virtualDisplay.release();
+// }
+// }
+//}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintToolBar.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintToolBar.java
index e9a30b5..083b05b 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintToolBar.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintToolBar.java
@@ -25,15 +25,16 @@
//-----------------------------------------------------------------
//-----------------------------------------------------------------
- public PaintToolBar(PaintActivity paintActivity, PaintCanvas paintCanvas) {
+ public PaintToolBar(PaintActivity paintActivity, PaintCanvas paintCanvas, PaintOnionCanvas paintOnionCanvas) {
this.bottomNavigationView = (BottomNavigationView) paintActivity.findViewById(R.id.navPaint);
- setNavigationListener(paintActivity, paintCanvas);
+ setNavigationListener(paintActivity, paintCanvas, paintOnionCanvas);
+
}
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// ナビゲーションバーのタッチ監視
- private void setNavigationListener(AppCompatActivity appCompatActivity, PaintCanvas paintCanvas) {
+ private void setNavigationListener(AppCompatActivity appCompatActivity, PaintCanvas paintCanvas, PaintOnionCanvas paintOnionCanvas) {
this.onNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
@@ -57,6 +58,10 @@
//-----------------------------------------------------------------
case R.id.navigation_page:
+
+ paintOnionCanvas.stopUpdate();
+ paintOnionCanvas.clearCanvas();
+
paintCanvas.canvassc();
paintCanvas.clearCanvas();
transitionPageActivity(appCompatActivity);
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 12687bf..17abf24 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
@@ -26,20 +26,14 @@
public class PaintViewModel extends ViewModel implements Runnable {
private PaintModelContainer paintModelContainer;
- private MutableLiveData mCurPageNo = new MutableLiveData<>(1);
- private MutableLiveData mCurPageId = new MutableLiveData<>(0);
-
- private MutableLiveData mPageSize = new MutableLiveData<>(0);
private MutableLiveData mStrokeNo = new MutableLiveData(0);
- private MutableLiveData> mlatestPosition = new MutableLiveData<>();
private MutableLiveData> mStrokes = new MutableLiveData<>();
private MutableLiveData> mPreStroke = new MutableLiveData<>();
- private MutableLiveData> mPages = new MutableLiveData<>(new HashMap<>());
private int strokeNo = 0;
- private ScheduledThreadPoolExecutor thread = new ScheduledThreadPoolExecutor(1);
+ private ScheduledThreadPoolExecutor thread = null;
private int cnt = 0;
private float fsx = 0;
private float fsy = 0;
@@ -55,17 +49,6 @@
return this.mStrokes;
}
- public LiveData getPageNo() {
- return this.mCurPageNo;
- }
-
- public LiveData> getPages() {
- return this.mPages;
- }
-
- public PaintModelContainer getPaintModelContainer() {
- return paintModelContainer;
- }
//-----------------------------------------------------------------
//-----------------------------------------------------------------
@@ -75,19 +58,13 @@
paintModelContainer.getPaintConnectionModel().init(acanthus);
paintModelContainer.getInvitesConnectionModel().init(acanthus);
- mlatestPosition.setValue(new ArrayList<>());
- mlatestPosition.getValue().add(new Position());
- // ページの情報初期化
- paintModelContainer.getPageOperationModel().initEditingPageNo(mCurPageNo);
- paintModelContainer.getPageConnectionModel().getPage(mCurPageId);
- paintModelContainer.getPageConnectionModel().getPageSize(mPageSize);
+ start();
- thread.scheduleWithFixedDelay(this, 50L, 1000L, TimeUnit.MILLISECONDS);
}
//-----------------------------------------------------------------
// strokeNoの発行
- public void setmStrokeNo() {
+ public void setStrokeNo() {
Random random = new Random();
strokeNo = random.nextInt(1000000000);
Log.d("TAG", "setmStrokeNo: " + mStrokeNo);
@@ -95,8 +72,8 @@
//-----------------------------------------------------------------
// 描画APIの通信リクエスト
- public void addLocalStrokeRequest(float x, float y , int color,int shick) {
- paintModelContainer.getPaintConnectionModel().addLocalStroke(strokeNo,color,shick);
+ public void addLocalStrokeRequest(float x, float y, int color, int shick) {
+ paintModelContainer.getPaintConnectionModel().addLocalStroke(strokeNo, color, shick);
fsx = x;
fsy = y;
cnt = 1;
@@ -118,111 +95,18 @@
}
//-----------------------------------------------------------------
- // 招待APIの通信リクエスト
- public void inviteNewUserRequest(Integer invitedUid) {
- paintModelContainer.getInvitesConnectionModel().inviteNewEditor(invitedUid);
- }
-
- //-----------------------------------------------------------------
// 描画情報の全クリア通信リクエスト
public void deleteStrokesRequest() {
paintModelContainer.getPaintConnectionModel().deleteStrokes();
}
//-----------------------------------------------------------------
- // 操作するページを切り替える
- public void switchToEditPageRequest(MotionEvent event) {
- PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel();
- PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
-
- pageOperationModel.changeEditPageNo(event, mCurPageNo, mPageSize.getValue());
- //ページを操作したのでIdとページ番号を更新
- pageConnectionModel.getPage(mCurPageId);
-
- }
-
- //-----------------------------------------------------------------
- // 次のページに進む
- public void toAdvanceEditingPage() {
- PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel();
- PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
-
- pageOperationModel.incrementPageNo(mCurPageNo, mPageSize.getValue());
- pageConnectionModel.getPage(mCurPageId);
- updatePrePageId();
- }
-
- //-----------------------------------------------------------------
- // 前のページに戻る
- public void toBackEditingPage() {
- PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel();
- PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
-
- pageOperationModel.decrementPageNo(mCurPageNo);
- pageConnectionModel.getPage(mCurPageId);
- updatePrePageId();
- }
-
- //-----------------------------------------------------------------
- // ひとつ前のページを記憶する
- private void updatePrePageId(){
- PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
- pageConnectionModel.getPrePageId();
- }
-
- //-----------------------------------------------------------------
- //-----------------------------------------------------------------
- // ページの追加通信リクエスト
- public void addPageRequest() {
- PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
-
- pageConnectionModel.addPage();
- pageConnectionModel.getPageSize(mPageSize);
- Log.d("pageSize:", mPageSize.getValue().toString());
- }
-
- //-----------------------------------------------------------------
- // ページ削除
- public void deletePageRequest() {
- PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
- PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel();
-
- pageConnectionModel.deletePage();
- pageConnectionModel.getPageSize(mPageSize);
-
- //ページ削除後同じページ番号のページを再取得する必要あり
- if (mPageSize.getValue() < mCurPageNo.getValue())
- pageOperationModel.decrementPageNo(mCurPageNo);
-
- Log.d("pageSize:", mPageSize.getValue().toString());
-
- }
-
- //-----------------------------------------------------------------
- // ページのサムネイル取得
- public void getPageThumbnailRequest() {
- PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
-
- pageConnectionModel.getPageThumb(mPages);
- }
-
- //-----------------------------------------------------------------
//-----------------------------------------------------------------
// 筆跡の削除
public void deleteStroke() {
this.mStrokes.getValue().clear();
}
- public void deletePreStroke(){
- mPreStroke.getValue().clear();
- }
-
- //-----------------------------------------------------------------
- //
- public void getPageSizeRequest() {
- paintModelContainer.getPageConnectionModel().getPageSize(mPageSize);
- }
-
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// 一定間隔でサーバー上の筆跡を取得する(GET)
@@ -234,17 +118,19 @@
paintModelContainer.getPaintConnectionModel().getPreStrokes(mPreStroke);
- paintModelContainer.getPageConnectionModel().getPageSize(mPageSize);
+ Log.d("PaintViewModel", "run");
}
- //一定間隔でserver上のStrokeNoSizeを返す
- public void latestStrokeNo() {
- paintModelContainer.getPaintConnectionModel().getStrokeNo(mStrokeNo);
+ //-----------------------------------------------------------------
+ //
+ public void start() {
+ thread = new ScheduledThreadPoolExecutor(1);
+ thread.scheduleWithFixedDelay(this, 50L, 1000L, TimeUnit.MILLISECONDS);
}
//-----------------------------------------------------------------
//サーバーに画像データ(BASE64)を送る
- public void setImage(String image){
+ public void setImage(String image) {
paintModelContainer.getPaintConnectionModel().setImage(image);
}
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 a014d0c..0fa352e 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
@@ -50,15 +50,15 @@
String token = "abc0";
int dummyAid = 1111;
- Call call = invitesRest.addInvite(dummyAid, owner.toString(), invitedUid.toString(), token);
- call.enqueue(new Callback() {
+ Call call = invitesRest.addInvite(dummyAid, owner.toString(), invitedUid.toString(), token);
+ call.enqueue(new Callback() {
@Override
- public void onResponse(Call call, Response response) {
+ public void onResponse(Call call, Response response) {
if (response.isSuccessful()) ;
}
@Override
- public void onFailure(Call call, Throwable t) {
+ public void onFailure(Call call, Throwable t) {
}
});
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 066f625..5a71ede 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
@@ -72,7 +72,6 @@
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
-// if(response.isSuccessful())
}
@Override
@@ -91,8 +90,7 @@
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
- if (response.isSuccessful())
- pageSize.setValue(response.body());
+ if (response.isSuccessful()) pageSize.setValue(response.body());
}
@Override
@@ -107,18 +105,46 @@
public void getPage(MutableLiveData mPageId) {
final PagesRest pagesRest = retrofit.create(PagesRest.class);
+
Call call = pagesRest.getPage(acanthus.getAid(), acanthus.getEditingPageNo());
+
+
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
+ //-----------------------------------------------------------------
// ページ番号とページIDを取得する
- acanthus.setEditingPageNo(response.body().getPageNo());
acanthus.setEditingPageId(response.body().getPid());
mPageId.setValue(response.body().getPid());
- Log.d("pid", acanthus.getEditingPageId().toString());
+ Log.d("curPageNo", acanthus.getEditingPageNo().toString());
+ Log.d("curPageID", acanthus.getEditingPageId().toString());
+
+ //-----------------------------------------------------------------
+ // ページが後ろにあれば取得
+ if (1 < acanthus.getEditingPageNo()) {
+ final PagesRest pagesRest = retrofit.create(PagesRest.class);
+
+ Call call2 = pagesRest.getPage(acanthus.getAid(), acanthus.getEditingPageNo() - 1);
+
+ call2.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call2, Response response) {
+
+ if (response.isSuccessful()) {
+ acanthus.setPrePageId(response.body().getPid());
+ Log.d("prePageID", acanthus.getPrePageId().toString());
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ }
+ });
+ //-----------------------------------------------------------------
+ }
}
}
@@ -131,54 +157,50 @@
//-----------------------------------------------------------------
// ページのサムネイルを取得する
- public void getPageThumb(MutableLiveData> mPages){
+ public void getPageThumb(MutableLiveData> mPages) {
final StrokesRest strokesRest = retrofit.create(StrokesRest.class);
Call> call = strokesRest.getPageUrls(acanthus.getAid());
call.enqueue(new Callback>() {
@Override
public void onResponse(Call> call, Response> response) {
- if(response.isSuccessful()){
- mPages.setValue(response.body());
- }
+ if (response.isSuccessful()) mPages.setValue(response.body());
}
@Override
public void onFailure(Call> call, Throwable t) {
-
}
});
}
//-----------------------------------------------------------------
-
// 前のページのIDを取得する
- public void getPrePageId() {
-
- // ページが後ろにあれば取得
- if (1 < acanthus.getEditingPageNo()) {
- final PagesRest pagesRest = retrofit.create(PagesRest.class);
-
- Call call = pagesRest.getPage(acanthus.getAid(), acanthus.getEditingPageNo() - 1);
- call.enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
-
- if (response.isSuccessful()) {
- acanthus.setPrePageId(response.body().getPid());
- Log.d("prePid", acanthus.getPrePageId().toString());
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable t) {
-
- }
- });
-
- }
- }
+// public void getPrePageId() {
+//
+// // ページが後ろにあれば取得
+// if (1 < acanthus.getEditingPageNo()) {
+// final PagesRest pagesRest = retrofit.create(PagesRest.class);
+//
+// Call call = pagesRest.getPage(acanthus.getAid(), acanthus.getEditingPageNo() - 1);
+//
+// call.enqueue(new Callback() {
+// @Override
+// public void onResponse(Call call, Response response) {
+//
+// if (response.isSuccessful()) {
+// acanthus.setPrePageId(response.body().getPid());
+// Log.d("prePageID", acanthus.getPrePageId().toString());
+// }
+// }
+//
+// @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 5d6aad6..f47118a 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
@@ -53,29 +53,33 @@
}
//-----------------------------------------------------------------
+ // 編集中のページ番号を1に戻す
+ public void resetEditingPageNo(MutableLiveData mCurPageNo) {
+ acanthus.setEditingPageNo(1);
+ mCurPageNo.setValue(1);
+ }
+
+ //-----------------------------------------------------------------
//-----------------------------------------------------------------
// ページを進める
public void incrementPageNo(MutableLiveData mPageNo, Integer pageSize) {
Integer editingNo = acanthus.getEditingPageNo();
- if (editingNo < pageSize) {
+ if (editingNo <= pageSize) {
+ if(999 < pageSize) return;
acanthus.setEditingPageNo(editingNo + 1);
mPageNo.setValue(acanthus.getEditingPageNo());
-
- Log.d("pageNo", acanthus.getEditingPageNo().toString());
}
}
- //-----------------------------------------------------------------s
+ //-----------------------------------------------------------------
// ページ番号を前に戻す
public void decrementPageNo(MutableLiveData mPageNo) {
Integer editingNo = acanthus.getEditingPageNo();
if (1 < editingNo) {
- acanthus.setEditingPageNo(acanthus.getEditingPageNo() - 1);
+ acanthus.setEditingPageNo(editingNo - 1);
mPageNo.setValue(acanthus.getEditingPageNo());
-
- Log.d("pageNo", acanthus.getEditingPageNo().toString());
}
}
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 e23c35a..7f1a54a 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
@@ -61,14 +61,14 @@
//-----------------------------------------------------------------
// ローカルでのストロークの追加(POST)
- public void addLocalStroke(int mStrokeNo,int color,int shick) {
+ public void addLocalStroke(int mStrokeNo, int color, int shick) {
final StrokesRest strokesRest = retrofit.create(StrokesRest.class);
Log.d("strokeNo:", "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^add----------------------");
//-----------------------------------------------------------------
// ストローク追加API
Call call = strokesRest.addStroke(
- acanthus.getAid(), acanthus.getEditingPageId(), 0, acanthus.getPreferenceUid(),mStrokeNo, acanthus.getPreferenceToken(),
+ acanthus.getAid(), acanthus.getEditingPageId(), 0, acanthus.getPreferenceUid(), mStrokeNo, acanthus.getPreferenceToken(),
0, color, shick);
// strokeNoを更新
@@ -135,9 +135,8 @@
// 前のページの全strokeを取得する
public void getPreStrokes(MutableLiveData> preStrokes) {
- // 前のページが存在するときのみ
if (1 < acanthus.getEditingPageNo()) {
-
+ // 前のページが存在するときのみ
final StrokesRest strokesRest = retrofit.create(StrokesRest.class);
//-----------------------------------------------------------------
@@ -147,6 +146,7 @@
@Override
public void onResponse(Call> call, Response> response) {
if (response.isSuccessful()) preStrokes.setValue(response.body());
+ Log.d("run:", "preDraw");
}
@Override
@@ -154,7 +154,7 @@
Log.d("a", "onFailure: ");
}
});
- }
+ } else preStrokes.setValue(null);
}
//-----------------------------------------------------------------
@@ -199,7 +199,7 @@
//-----------------------------------------------------------------
// "screenssc()"が実行されたとき、エンコードした文字列(BASE64)をサーバに送る
- public void setImage(String image){
+ public void setImage(String image) {
final StrokesRest strokesRest = retrofit.create(StrokesRest.class);
//-----------------------------------------------------------------
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 8b7dc37..f3cab2c 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
@@ -8,9 +8,9 @@
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
+import android.webkit.WebSettings;
import android.webkit.WebView;
-
-import com.fasterxml.jackson.databind.ser.VirtualBeanPropertyWriter;
+import android.webkit.WebViewClient;
import org.ntlab.acanthus_client.Acanthus;
import org.ntlab.acanthus_client.R;
@@ -25,7 +25,7 @@
// ページ編集画面
public class PageActivity extends AppCompatActivity implements Runnable {
private Acanthus acanthus;
- private PaintViewModel paintViewModel;
+ private PageViewModel pageViewModel;
private ActivityPageBinding binding;
private ScheduledThreadPoolExecutor thread = new ScheduledThreadPoolExecutor(1);
@@ -51,41 +51,47 @@
//-----------------------------------------------------------------
//-----------------------------------------------------------------
- // ページのサイズを取得し続ける
+ // ページのサイズとサムネを取得し続ける
@Override
public void run() {
- paintViewModel.getPageSizeRequest();
+ pageViewModel.getPageSizeRequest();
+ pageViewModel.getPageThumbnailRequest();
}
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// ページを追加する
public void onClickAddPage(View view) {
- paintViewModel.addPageRequest();
+ pageViewModel.addPageRequest();
}
//-----------------------------------------------------------------
// ページを削除する
public void onClickDeletePage(View view) {
- paintViewModel.deletePageRequest();
+ pageViewModel.deletePageRequest();
}
//-----------------------------------------------------------------
// ページを次に進める
public void onClickToAdvancePage(View view) {
- paintViewModel.toAdvanceEditingPage();
+ // ページサイズと同じ状況なら新しくページを追加する
+ if(pageViewModel.getPageSize().getValue() == pageViewModel.getCurPageNo().getValue())
+ pageViewModel.addPageRequest();
+
+ pageViewModel.toAdvanceEditingPage();
+
}
//-----------------------------------------------------------------
// ページを前に戻す
public void onClickToBackPage(View view) {
- paintViewModel.toBackEditingPage();
+ pageViewModel.toBackEditingPage();
}
//-----------------------------------------------------------------
// ページをスライドして更新する
public void slidePage(MotionEvent event) {
- paintViewModel.switchToEditPageRequest(event);
+ pageViewModel.switchToEditPageRequest(event);
}
//-----------------------------------------------------------------
@@ -111,8 +117,8 @@
//
private void init() {
this.acanthus = (Acanthus) getApplication();
- paintViewModel = new ViewModelProvider(this).get(PaintViewModel.class);
- paintViewModel.init(acanthus);
+ pageViewModel = new ViewModelProvider(this).get(PageViewModel.class);
+ pageViewModel.init(acanthus);
startObserve();
@@ -126,28 +132,39 @@
setContentView(binding.getRoot());
WebView webView = binding.pageWebview;
+ webView.setWebViewClient(new WebViewClient());
webView.setInitialScale(1);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
+ webView.getSettings().setSupportZoom(false);
+ webView.clearCache(true);
+ webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}
//-----------------------------------------------------------------
//
private void startObserve() {
- paintViewModel.getPageNo().observe(this, new Observer() {
+ // ページの現在の番号
+ pageViewModel.getCurPageNo().observe(this, new Observer() {
@Override
public void onChanged(Integer pageNo) {
binding.textPageNo.setText(String.valueOf(pageNo));
-
- paintViewModel.getPageThumbnailRequest();
}
});
- paintViewModel.getPages().observe(this, new Observer>() {
+ // ページのサムネ更新
+ pageViewModel.getPages().observe(this, new Observer>() {
@Override
public void onChanged(HashMap s) {
- binding.pageWebview.loadUrl(s.get(paintViewModel.getPageNo().getValue()));
- Log.d("a", "onFailure: -----------------------OK:Obs");
+ binding.pageWebview.loadUrl(s.get(pageViewModel.getCurPageNo().getValue()));
+ }
+ });
+
+ // ページのサイズ更新
+ pageViewModel.getPageSize().observe(this, new Observer() {
+ @Override
+ public void onChanged(Integer pageSize) {
+ binding.textPageSize.setText("/" + pageSize.toString());
}
});
}
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/page/PageViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/page/PageViewModel.java
new file mode 100644
index 0000000..d7cd5d5
--- /dev/null
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/page/PageViewModel.java
@@ -0,0 +1,147 @@
+package org.ntlab.acanthus_client.views.paint.page;
+
+import android.util.Log;
+import android.view.MotionEvent;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+import org.ntlab.acanthus_client.Acanthus;
+import org.ntlab.acanthus_client.views.paint.PaintModelContainer;
+import org.ntlab.acanthus_client.views.paint.models.PageConnectionModel;
+import org.ntlab.acanthus_client.views.paint.models.PageOperationModel;
+
+import java.util.HashMap;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+
+public class PageViewModel extends ViewModel {
+
+ private PaintModelContainer paintModelContainer;
+
+ private MutableLiveData mCurPageNo = new MutableLiveData<>(1);
+ private MutableLiveData mCurPageId = new MutableLiveData<>(0);
+
+ private MutableLiveData mPageSize = new MutableLiveData<>(0);
+ private MutableLiveData> mPages = new MutableLiveData<>(new HashMap<>());
+
+ //-----------------------------------------------------------------
+ // getter
+ public LiveData getCurPageNo() {
+ return this.mCurPageNo;
+ }
+
+ public LiveData> getPages() {
+ return this.mPages;
+ }
+
+ public LiveData getPageSize() {
+ return this.mPageSize;
+ }
+
+ public PaintModelContainer getPaintModelContainer() {
+ return paintModelContainer;
+ }
+
+ //-----------------------------------------------------------------
+ //-----------------------------------------------------------------
+ // init
+ public void init(Acanthus acanthus) {
+ paintModelContainer = new PaintModelContainer(acanthus);
+
+ // ページの情報初期化
+ paintModelContainer.getPageOperationModel().initEditingPageNo(mCurPageNo);
+ paintModelContainer.getPageConnectionModel().getPage(mCurPageId);
+ paintModelContainer.getPageConnectionModel().getPageSize(mPageSize);
+ }
+
+ //-----------------------------------------------------------------
+ // 操作するページを切り替える
+ public void switchToEditPageRequest(MotionEvent event) {
+ PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel();
+ PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
+
+ pageOperationModel.changeEditPageNo(event, mCurPageNo, mPageSize.getValue());
+ //ページを操作したのでIdとページ番号を更新
+ pageConnectionModel.getPage(mCurPageId);
+
+ }
+
+ //-----------------------------------------------------------------
+ // 次のページに進む
+ public void toAdvanceEditingPage() {
+ PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel();
+ PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
+
+ pageOperationModel.incrementPageNo(mCurPageNo, mPageSize.getValue());
+ pageConnectionModel.getPage(mCurPageId);
+ updatePrePageId();
+ }
+
+ //-----------------------------------------------------------------
+ // 前のページに戻る
+ public void toBackEditingPage() {
+ PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel();
+ PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
+
+ pageOperationModel.decrementPageNo(mCurPageNo);
+ pageConnectionModel.getPage(mCurPageId);
+ updatePrePageId();
+ }
+
+ //-----------------------------------------------------------------
+ // ひとつ前のページを記憶する
+ private void updatePrePageId() {
+ PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
+ }
+
+ //-----------------------------------------------------------------
+ //-----------------------------------------------------------------
+ // ページの追加通信リクエスト
+ public void addPageRequest() {
+ PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
+
+ pageConnectionModel.addPage();
+ pageConnectionModel.getPageSize(mPageSize);
+ Log.d("pageSize:", mPageSize.getValue().toString());
+ }
+
+ //-----------------------------------------------------------------
+ // ページ削除
+ public void deletePageRequest() {
+ PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
+ PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel();
+
+ pageConnectionModel.deletePage();
+ pageConnectionModel.getPageSize(mPageSize);
+
+ //ページ削除後同じページ番号のページを再取得する必要あり
+ if (mPageSize.getValue() < mCurPageNo.getValue())
+ pageOperationModel.decrementPageNo(mCurPageNo);
+
+ Log.d("pageSize:", mPageSize.getValue().toString());
+
+ }
+
+ //-----------------------------------------------------------------
+ // ページのサムネイル取得
+ public void getPageThumbnailRequest() {
+ PageConnectionModel pageConnectionModel = paintModelContainer.getPageConnectionModel();
+ pageConnectionModel.getPageThumb(mPages);
+ }
+
+ //-----------------------------------------------------------------
+ // ページの枚数を取得する
+ public void getPageSizeRequest() {
+ paintModelContainer.getPageConnectionModel().getPageSize(mPageSize);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void resetPageNo() {
+ PageOperationModel pageOperationModel = paintModelContainer.getPageOperationModel();
+ pageOperationModel.resetEditingPageNo(mCurPageNo);
+ }
+
+ //-----------------------------------------------------------------
+}
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 8d4d1fa..586cce8 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.Button;
import android.widget.TextView;
+import org.ntlab.acanthus_client.Acanthus;
import org.ntlab.acanthus_client.R;
import org.ntlab.acanthus_client.databinding.ActivitySignUpBinding;
import org.ntlab.acanthus_client.entities.AccountUidJson;
@@ -32,6 +33,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setTheme(R.style.AppTheme_NoTitleBar);//タイトルバーを消す
init();
}
@@ -45,17 +47,28 @@
.build();
final AccountsRest accountsRest = retrofit.create(AccountsRest.class);
- // 各フォーム取得
- String name = binding.editTextTextSignUpPersonName.getText().toString();
- String emailAddress = binding.editTextTextSignUpEmailAddress.getText().toString();
- String password = binding.editTextTextSignUpPassword.getText().toString();
+ Acanthus acanthus = (Acanthus) getApplication();
- Call call = accountsRest.createAccount(name, emailAddress, password);
+ // 各フォーム取得
+ TextView nameForm = findViewById(R.id.editTextTextSignUpPersonName);
+ TextView emailForm = findViewById(R.id.editTextTextSignUpEmailAddress);
+ TextView passwordForm = findViewById(R.id.editTextTextSignUpPassword);
+
+ String name = nameForm.getText().toString();
+ String email = emailForm.getText().toString();
+ String password = passwordForm.getText().toString();
+
+ Call call = accountsRest.createAccount(name, email, password);
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
- if (response.isSuccessful()) transitionLoginActivity();
- else clearForm();
+ if (response.isSuccessful()) {
+ acanthus.setPreferenceUid(response.body().getUid());
+ acanthus.setPreferenceName(name);
+ acanthus.setPreferenceEmail(email);
+ acanthus.setPreferencePassword(password);
+ transitionLoginActivity();
+ } else clearForm();
}
@Override
@@ -88,11 +101,22 @@
}
//-----------------------------------------------------------------
+ // ダミーフォーム
+ private void dummyFormSetup(){
+ binding.editTextTextSignUpPersonName.setText("name");
+ binding.editTextTextSignUpEmailAddress.setText("dn@dummy.com");
+ binding.editTextTextSignUpPassword.setText("nittalab");
+ }
+
+
+ //-----------------------------------------------------------------
//-----------------------------------------------------------------
// 初期化
private void init() {
setContentView(R.layout.activity_sign_up);
binding = ActivitySignUpBinding.inflate(getLayoutInflater());
+
+ clearForm();
}
//-----------------------------------------------------------------
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserListViewAdapter.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserListViewAdapter.java
deleted file mode 100644
index 6f8ce34..0000000
--- a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserListViewAdapter.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.ntlab.acanthus_client.views.userpage;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.TextView;
-
-import org.ntlab.acanthus_client.R;
-
-import java.util.ArrayList;
-
-public class UserListViewAdapter extends BaseAdapter {
-
- private final LayoutInflater inflater;
- private int layoutId;
- private ArrayList nameList = new ArrayList<>();
-
- //参照保存データ
- static class ViewHolder {
- TextView textViewName;
- }
-
- public UserListViewAdapter(Context context, int layoutId, ArrayList names) {
- super();
- this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- this.layoutId = layoutId;
- this.nameList = names;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder viewHolder;
- //Viewのinflate(拡張)
- if (convertView == null) {
- //fragment_edit.xmlにlistView用のレイアウトを入れ込む
- convertView = inflater.inflate(layoutId, parent, false);
- //ViewHolderの生成とレイアウト内テキストのセット
- viewHolder = new UserListViewAdapter.ViewHolder();
- viewHolder.textViewName = convertView.findViewById(R.id.followOrFollowerName);
- convertView.setTag(viewHolder);
- } else {
- //既に初期セットの処理がされている場合、再利用する
- viewHolder = (UserListViewAdapter.ViewHolder) convertView.getTag();
- }
-
- //ViewHolder内のtextViewNameに各ポジションのデータをセット
- if (nameList != null) viewHolder.textViewName.setText(nameList.get(position));
-
- return convertView;
- }
-
- public void setNameList(ArrayList nameList) {
- this.nameList = nameList;
- }
-
- @Override
- public int getCount() {
- return nameList.size();
- }
-
- @Override
- public Object getItem(int position) {
- return null;
- }
-
- @Override
- public long getItemId(int position) {
- return 0;
- }
-
-}
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageActivity.java
index 8bc5636..c4528cc 100644
--- a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageActivity.java
+++ b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageActivity.java
@@ -10,8 +10,9 @@
import org.ntlab.acanthus_client.Acanthus;
import org.ntlab.acanthus_client.R;
import org.ntlab.acanthus_client.entities.FollowJson;
-import org.ntlab.acanthus_client.views.userpage.followList.FollowListActivity;
-import org.ntlab.acanthus_client.views.userpage.followerList.FollowerListActivity;
+import org.ntlab.acanthus_client.entities.FollowerJson;
+import org.ntlab.acanthus_client.views.userpage.followFollower.FollowFollowerActivity;
+import org.ntlab.acanthus_client.views.userpage.followFollower.UserPageViewModel;
import org.ntlab.acanthus_client.views.userpage.workList.WorkListActivity;
@@ -32,6 +33,7 @@
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_userpage);
+ setTitle("ユーザーページ");
userPageViewModel = new ViewModelProvider(this).get(UserPageViewModel.class);
acanthus = (Acanthus) getApplication();
@@ -49,15 +51,9 @@
TextView profileText = findViewById(R.id.profileText);
- Button returnButton = findViewById(R.id.returnButton);
-
- //前の画面に戻る処理
- returnButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
+ TextView followsSize = findViewById(R.id.followsSizeText);
+ TextView followersSize = findViewById(R.id.followersSizeText);
+ Integer[] followersSizeInt = {0};
Button followUserButton = findViewById(R.id.followUserButton);
@@ -67,8 +63,8 @@
}
//ログインしているユーザーがフォローしているかの有無で画面表示時のボタンの文字を変更する
- userPageViewModel.getFollows(loginUid);
- userPageViewModel.getFollowJson().observe(this, new Observer() {
+ userPageViewModel.getMyFollows(loginUid);
+ userPageViewModel.getMyFollowJson().observe(this, new Observer() {
@Override
public void onChanged(@Nullable FollowJson followJson) {
followsUidList = followJson.getFollowUids();
@@ -90,21 +86,45 @@
userPageViewModel.addFollow(loginUid, loginToken, uid);
followsUidList.add(uid);
followUserButton.setText("フォロー解除");
+ followersSizeInt[0]++;
+ followersSize.setText(followersSizeInt[0].toString());
}else{
userPageViewModel.releaseFollow(loginUid, loginToken, uid);
followsUidList.remove(uid);
followUserButton.setText("フォローする");
+ followersSizeInt[0]--;
+ followersSize.setText(followersSizeInt[0].toString());
}
}
});
+ //ユーザーのフォロー及びフォロワーの数を表示
+ userPageViewModel.getUserFollows(uid);
+ userPageViewModel.getUserFollowJson().observe(this, new Observer() {
+ @Override
+ public void onChanged(FollowJson followJson) {
+ Integer followsSizeInt = followJson.getFollowUids().size();
+ followsSize.setText(followsSizeInt.toString());
+ }
+ });
+
+ userPageViewModel.getFollowers(uid);
+ userPageViewModel.getFollowerJson().observe(this, new Observer() {
+ @Override
+ public void onChanged(FollowerJson followerJson) {
+ followersSizeInt[0] = followerJson.getFollowerUids().size();
+ followersSize.setText(followersSizeInt[0].toString());
+ }
+ });
+
//ユーザーのフォロー一覧への画面遷移の処理
Button followListButton = findViewById(R.id.followListButton);
followListButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- Intent intent = new Intent(getApplication(), FollowListActivity.class);
+ Intent intent = new Intent(getApplication(), FollowFollowerActivity.class);
intent.putExtra("UID", uid);
+ intent.putExtra("NAME", uname);
startActivity(intent);
}
});
@@ -114,8 +134,9 @@
followerListButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- Intent intent = new Intent(getApplication(), FollowerListActivity.class);
+ Intent intent = new Intent(getApplication(), FollowFollowerActivity.class);
intent.putExtra("UID", uid);
+ intent.putExtra("NAME", uname);
startActivity(intent);
}
});
diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageViewModel.java
deleted file mode 100644
index 6f787a6..0000000
--- a/app/src/main/java/org/ntlab/acanthus_client/views/userpage/UserPageViewModel.java
+++ /dev/null
@@ -1,182 +0,0 @@
-package org.ntlab.acanthus_client.views.userpage;
-
-import org.ntlab.acanthus_client.entities.AnimationJson;
-import org.ntlab.acanthus_client.entities.FollowAddJson;
-import org.ntlab.acanthus_client.entities.FollowJson;
-import org.ntlab.acanthus_client.entities.FollowerJson;
-import org.ntlab.acanthus_client.resources.accounts.FollowersRest;
-import org.ntlab.acanthus_client.resources.accounts.FollowsRest;
-import org.ntlab.acanthus_client.resources.gallery.GalleryRest;
-
-import java.util.Collection;
-
-import androidx.lifecycle.LiveData;
-import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
-import retrofit2.Retrofit;
-import retrofit2.converter.jackson.JacksonConverterFactory;
-
-public class UserPageViewModel extends ViewModel {
-
- private MutableLiveData followJsonMutableLiveData;
- private MutableLiveData followerJsonMutableLiveData;
- private MutableLiveData> animationJsonMutableLiveData;
-
- public UserPageViewModel(){
- this.followJsonMutableLiveData = new MutableLiveData<>();
- this.followerJsonMutableLiveData = new MutableLiveData<>();
- this.animationJsonMutableLiveData = new MutableLiveData<>();
- }
-
- public LiveData getFollowJson(){
- return this.followJsonMutableLiveData;
- }
-
- public LiveData getFollowerJson() {
- return this.followerJsonMutableLiveData;
- }
-
- public LiveData> getAnimationJson() {
- return animationJsonMutableLiveData;
- }
-
- //ユーザーのフォローリストを取得する
- public void getFollows(Integer uid){
- Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/")
- .addConverterFactory(JacksonConverterFactory.create())
- .build();
- final FollowsRest followsRest = retrofit.create(FollowsRest.class);
-
- //フォローリストの取得
- Call call = followsRest.getFollows(uid);
- call.enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if (response.isSuccessful()) {
- if (response.body() != null) {
- followJsonMutableLiveData.setValue(response.body());
- }
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable t) {
-
- }
- });
-
- }
-
- //ユーザーをフォローする
- public void addFollow(Integer uid, String token, Integer followUid){
- Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/")
- .addConverterFactory(JacksonConverterFactory.create())
- .build();
- final FollowsRest followsRest = retrofit.create(FollowsRest.class);
-
- //フォローの追加
- Call