diff --git a/.idea/misc.xml b/.idea/misc.xml index 0d1cc0d..10b388f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,33 +4,18 @@ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 75b22a4..993f4ef 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ - + - - + + + + + + + + - - - - - + + + + + + + + + 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/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/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..9a275da 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 @@ -43,6 +43,7 @@ //ボタン系 private boolean buttonView = true; + private boolean player = true; private Button buttonPlayback; private Button buttonReset; private Button buttonClose; @@ -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(); @@ -81,12 +83,7 @@ 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(); } }); @@ -127,6 +124,7 @@ 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); @@ -219,19 +217,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..a45f7fc 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.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/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..250f5b3 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 @@ -41,6 +41,7 @@ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setTheme(R.style.AppTheme_NoTitleBar);//タイトルバーを消す init(); } 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..7eb1d91 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 @@ -20,21 +20,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; } @@ -47,13 +58,14 @@ Integer uid = 1; String token = "abc0"; - Acanthus acanthus = (Acanthus) getActivity().getApplication(); + acanthus = (Acanthus) getActivity().getApplication(); 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(); }); @@ -70,6 +82,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..9d473e0 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,10 +66,14 @@ 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(); + homeViewModel.updateGallery(acanthus); // ギャラリーをアップデート + return root; } @@ -80,14 +89,19 @@ Integer uid = 1; String token = "abc0"; 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 +111,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 +155,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 +196,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); } 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..d614b1f 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 @@ -37,6 +37,7 @@ private HomeViewModel homeViewModel; private FragmentHomeBinding binding; + private Acanthus acanthus; private SwipeRefreshLayout mSwipeRefreshLayout; @@ -50,8 +51,6 @@ View root = binding.getRoot(); ListView listView = binding.animationView; - -// homeViewModel.updateGallery(); // // final TextView textView = binding.textHome; // homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { @@ -69,7 +68,7 @@ super.onActivityCreated(savedInstanceState); Log.d("CreatedActivity", "EditFragment"); - Acanthus acanthus = (Acanthus) getActivity().getApplication(); + acanthus = (Acanthus) getActivity().getApplication(); Integer uid = 1; String token = "abc0"; @@ -127,6 +126,10 @@ } + public void updateGallery() { + homeViewModel.updateGallery(acanthus); + } + @Override public void onDestroyView() { super.onDestroyView(); @@ -151,7 +154,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/mypage/MyPageFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/mypage/MyPageFragment.java index 7654c96..88e72f5 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,21 @@ 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.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.followList.FollowListActivity; +import org.ntlab.acanthus_client.views.userpage.followerList.FollowerListActivity; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -24,8 +29,6 @@ import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import static android.os.Build.VERSION_CODES.R; - //----------------------------------------------------------------- // public class MyPageFragment extends Fragment { @@ -47,8 +50,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,6 +72,26 @@ //----------------------------------------------------------------- // + 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); @@ -80,10 +111,72 @@ } //----------------------------------------------------------------- + // + 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(); @@ -127,11 +220,76 @@ //----------------------------------------------------------------- // + public void transitionFollowListActivity() { + Acanthus acanthus = (Acanthus) getActivity().getApplication(); + Intent intent = new Intent(acanthus, FollowListActivity.class); + intent.putExtra("UID", acanthus.getPreferenceUid()); + startActivity(intent); + } + + //----------------------------------------------------------------- + // + public void transitionFollowerListActivity() { + Acanthus acanthus = (Acanthus) getActivity().getApplication(); + Intent intent = new Intent(acanthus, FollowerListActivity.class); + intent.putExtra("UID", acanthus.getPreferenceUid()); + 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/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/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/paint/InviteActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteActivity.java index 2ad1829..6e9bee7 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 = 1; + 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 ff2a349..5bd3edb 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 @@ -26,7 +26,7 @@ private PaintToolBar paintToolBar; - private PaintScreenShot paintScreenShot; + private ActivityPaintBinding binding; private PaintViewModel paintViewModel; @@ -37,14 +37,13 @@ @Override public void onDestroy() { super.onDestroy(); - - paintScreenShot.onDestroy(); } //----------------------------------------------------------------- @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setTheme(R.style.AppTheme_NoTitleBar);//タイトルバーを消す init(); initView(); @@ -79,7 +78,7 @@ //----------------------------------------------------------------- @Override - protected void onPause(){ + protected void onPause() { super.onPause(); paintViewModel.stop(); } @@ -108,12 +107,7 @@ paintOnionCanvas.init(paintViewModel); - paintScreenShot = new PaintScreenShot(this); paintToolBar = new PaintToolBar(this, paintCanvas, paintOnionCanvas); - - findViewById(R.id.capture).setVisibility(View.INVISIBLE); - findViewById(R.id.image).setVisibility(View.INVISIBLE); - findViewById(R.id.textView3).setVisibility(View.INVISIBLE); } //----------------------------------------------------------------- @@ -142,7 +136,6 @@ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - paintScreenShot.onActivityResult(requestCode, resultCode, data); } //------------------------------------------------------------------ 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/PenDetailsFragment.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PenDetailsFragment.java index 51a3d0d..58a20ca 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PenDetailsFragment.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PenDetailsFragment.java @@ -2,7 +2,6 @@ import android.graphics.Color; import android.os.Bundle; -import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; @@ -49,6 +48,9 @@ edtBlue = root.findViewById(R.id.edtBlue); edtThickness = root.findViewById(R.id.edtThickness); + strokeCanvasView = root.findViewById(R.id.strokeCanvasView); + strokeCanvasView.setStrokeWidth(paintCanvas.getPen().getThickness()); + //seekBarとEditTextの初期値 sbAlpha.setProgress(paintCanvas.getPen().getAlpha()); edtAlpha.setText(String.format("%1$d", sbAlpha.getProgress())); @@ -130,7 +132,8 @@ case R.id.seekBarThickness: edtThickness.setText(String.format("%1$d", progress)); paintCanvas.getPen().setThickness(progress); - //strokeCanvasView.setStrokeWidth(progress,paintCanvas); + strokeCanvasView.setStrokeWidth(progress); + strokeCanvasView.clearCanvas(); break; default: return; @@ -146,6 +149,7 @@ @Override public void onStopTrackingTouch(SeekBar seekBar) { + } @@ -185,7 +189,8 @@ case R.id.edtThickness: sbThickness.setProgress(value); value = Math.max(0, Math.min(50, value)); - //strokeCanvasView.setStrokeWidth(value,paintCanvas); + strokeCanvasView.setStrokeWidth(value); + strokeCanvasView.clearCanvas(); break; default: return; @@ -225,7 +230,8 @@ case R.id.edtThickness: value = Math.max(0, Math.min(50, value)); sbThickness.setProgress(value); - //strokeCanvasView.setStrokeWidth(value,paintCanvas); + strokeCanvasView.setStrokeWidth(value); + strokeCanvasView.clearCanvas(); break; default: return false; diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/StrokeCanvasView.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/StrokeCanvasView.java index 59b596c..c57eb39 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/StrokeCanvasView.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/StrokeCanvasView.java @@ -13,7 +13,7 @@ public class StrokeCanvasView extends View{ private Paint paint; private PaintCanvas paintCanvas; - private Integer strokeWidth=20; + private Integer strokeWidth; private boolean viewflg; public StrokeCanvasView(Context context, AttributeSet attrs) { @@ -23,25 +23,19 @@ } @Override protected void onDraw(Canvas canvas){ - //this.strokeWidth = this.paintCanvas.getPen().getThickness(); - if(viewflg) { - paint.setStrokeWidth(this.strokeWidth); - paint.setColor(Color.argb(255, 0, 0, 0)); - canvas.drawLine(0, 25, 150, 25, paint); - }else - canvas.drawColor(0, PorterDuff.Mode.CLEAR); + paint.setStrokeWidth(this.strokeWidth); + paint.setColor(Color.argb(255, 0, 0, 0)); + canvas.drawLine(0, 60, 200, 60, paint); } - public void setStrokeWidth(Integer width ,PaintCanvas paintCanvas){ + public void setStrokeWidth(Integer width ){ this.strokeWidth = width; - this.paintCanvas = paintCanvas; } - public void showCanvas(boolean flg){ - viewflg = flg; + public void clearCanvas(){ // 再描画 invalidate(); } 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/sign_up/SignUpActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/sign_up/SignUpActivity.java index 8d4d1fa..cbef89d 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,6 +47,8 @@ .build(); final AccountsRest accountsRest = retrofit.create(AccountsRest.class); + Acanthus acanthus = (Acanthus) getApplication(); + // 各フォーム取得 String name = binding.editTextTextSignUpPersonName.getText().toString(); String emailAddress = binding.editTextTextSignUpEmailAddress.getText().toString(); @@ -54,8 +58,12 @@ call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - if (response.isSuccessful()) transitionLoginActivity(); - else clearForm(); + if (response.isSuccessful()) { + acanthus.setPreferenceName(name); + acanthus.setPreferenceEmail(emailAddress); + acanthus.setPreferencePassword(password); + transitionLoginActivity(); + } else clearForm(); } @Override diff --git a/app/src/main/res/drawable/flame_underline.xml b/app/src/main/res/drawable/flame_underline.xml new file mode 100644 index 0000000..37b58b1 --- /dev/null +++ b/app/src/main/res/drawable/flame_underline.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_baseline_cancel_24.xml b/app/src/main/res/drawable/ic_baseline_cancel_24.xml index 1062dda..0d13f4d 100644 --- a/app/src/main/res/drawable/ic_baseline_cancel_24.xml +++ b/app/src/main/res/drawable/ic_baseline_cancel_24.xml @@ -1,5 +1,11 @@ - - + + diff --git a/app/src/main/res/drawable/ic_baseline_group_add.xml b/app/src/main/res/drawable/ic_baseline_group_add.xml new file mode 100644 index 0000000..d5363ae --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_group_add.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_launcher.png b/app/src/main/res/drawable/ic_launcher.png new file mode 100644 index 0000000..67ade20 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher.png Binary files differ diff --git a/app/src/main/res/drawable/shape_style.xml b/app/src/main/res/drawable/shape_style.xml index d1dd42d..32e0d22 100644 --- a/app/src/main/res/drawable/shape_style.xml +++ b/app/src/main/res/drawable/shape_style.xml @@ -1,7 +1,10 @@ - - - + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_animation.xml b/app/src/main/res/layout/activity_animation.xml index bc38433..06571be 100644 --- a/app/src/main/res/layout/activity_animation.xml +++ b/app/src/main/res/layout/activity_animation.xml @@ -6,6 +6,18 @@ android:layout_height="match_parent" tools:context=".views.animation.AnimationActivity"> +