Merge pull request '設定のLoginDialogやりました' (#123) from feature/settingDialog into main

Reviewed-on: #123
This commit is contained in:
Fujimatsu 2024-07-03 07:16:53 +00:00
commit 40fafb1d05
4 changed files with 102 additions and 10 deletions

View File

@ -122,7 +122,7 @@ public interface KidShiftApiService {
* @param id 子供ID
* @return ChildLoginCodeResponse
*/
@POST("/parent/child/{id}/login")
@GET("/parent/child/{id}/login")
@Headers(AuthorizationInterceptor.HEADER_PLACEHOLDER)
Call<ChildLoginCodeResponse> issueLoginCode(@Path("id") String id);

View File

@ -4,6 +4,7 @@ import android.inputmethodservice.Keyboard;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
@ -15,8 +16,14 @@ import one.nem.kidshift.model.ChildModel;
public class SettingAdapter extends RecyclerView.Adapter<SettingAdapter.MainViewHolder> {
public interface LoginButtonCallback {
void onLoginButtonClicked(String childId);
}
private List<ChildModel> childDataList;
private LoginButtonCallback loginButtonCallback;
SettingAdapter() {
}
@ -25,13 +32,19 @@ public class SettingAdapter extends RecyclerView.Adapter<SettingAdapter.MainView
this.childDataList = childDataList;
}
public void setLoginButtonCallback(LoginButtonCallback loginButtonCallback) {
this.loginButtonCallback = loginButtonCallback;
}
static class MainViewHolder extends RecyclerView.ViewHolder{
TextView childname;
Button loginButton;
MainViewHolder(@NonNull View itemView) {
super(itemView);
childname = itemView.findViewById(R.id.childname);
loginButton = itemView.findViewById(R.id.loginButton);
}
}
@ -46,6 +59,11 @@ public class SettingAdapter extends RecyclerView.Adapter<SettingAdapter.MainView
public void onBindViewHolder(@NonNull MainViewHolder holder, int position){
ChildModel childData = this.childDataList.get(position);
holder.childname.setText(childData.getName());
holder.loginButton.setOnClickListener(v -> {
if (this.loginButtonCallback != null) {
this.loginButtonCallback.onLoginButtonClicked(childData.getId());
}
});
}
@Override

View File

@ -12,6 +12,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@ -64,9 +65,10 @@ public class SettingMainFragment extends Fragment {
/**
* 親情報を更新する
*
* @return CompletableFuture<Void>
*/
private CompletableFuture<Void> updateParentInfo(){
private CompletableFuture<Void> updateParentInfo() {
return parentData.getParent(new ParentModelCallback() {
@Override
public void onUnchanged() {
@ -91,10 +93,11 @@ public class SettingMainFragment extends Fragment {
/**
* 子供情報を更新する
*
* @return CompletableFuture<Void>
*/
@SuppressLint("NotifyDataSetChanged")
private CompletableFuture<Void> updateChildInfo(){
private CompletableFuture<Void> updateChildInfo() {
return childData.getChildList(new ChildModelCallback() {
@Override
public void onUnchanged() {
@ -171,19 +174,64 @@ public class SettingMainFragment extends Fragment {
// ダイアログの設定
LayoutInflater dialogInflater = requireActivity().getLayoutInflater();
View childListView = dialogInflater.inflate(R.layout.add_child_list_dialog,null);
View childListView = dialogInflater.inflate(R.layout.add_child_list_dialog, null);
View addChildDialogView = dialogInflater.inflate(R.layout.fragment_login_dialog_view, null);
View childListItemView = inflater.inflate(R.layout.list_item_child_name_list, container, false);
mainAdapter.setLoginButtonCallback(new SettingAdapter.LoginButtonCallback() {
@Override
public void onLoginButtonClicked(String childId) {
// Toast.makeText(getContext(), "ボタンがクリックされました(" + childId + ")", Toast.LENGTH_LONG).show();
int loginCode = childData.issueLoginCode(childId).join();
TextView loginCodeTextView = addChildDialogView.findViewById(R.id.loginCode);
new StringBuilder(Integer.toString(loginCode)).insert(3, "-");
loginCodeTextView.setText(
new StringBuilder(Integer.toString(loginCode)).insert(3, "-")
);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext());
builder.setTitle("ログインコード")
.setView(addChildDialogView)
.setNeutralButton("閉じる", null);
builder.create();
// childListItemView.findViewById(R.id.loginButton).setOnClickListener(v -> {
builder.show();
// });
}
});
// int loginCode = childData.issueLoginCode("543256").join();
// TextView loginCodeTextView = addChildDialogView.findViewById(R.id.loginCode);
// new StringBuilder(Integer.toString(loginCode)).insert(3,"-");
//
// loginCodeTextView.setText(
// new StringBuilder(Integer.toString(loginCode)).insert(3,"-"));
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext());
builder.setTitle("ログインコード")
.setView(addChildDialogView)
.setNeutralButton("閉じる", null);
builder.create();
//
// childListItemView.findViewById(R.id.loginButton).setOnClickListener(v -> {
// builder.show();
// });
//子供の名前追加のダイアログ
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext());
builder.setTitle("お子様の名前を入力してください。")
MaterialAlertDialogBuilder addChildBuilder = new MaterialAlertDialogBuilder(requireContext());
addChildBuilder.setTitle("お子様の名前を入力してください。")
.setView(childListView)
.setPositiveButton("追加",null)
.setNeutralButton("閉じる",null);
builder.create();
.setPositiveButton("追加", null)
.setNeutralButton("閉じる", null);
addChildBuilder.create();
// ダイアログの表示
view.findViewById(R.id.addchildname).setOnClickListener(v -> {
builder.show();
addChildBuilder.show();
});
return view;

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/loginCode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="30dp"
android:paddingBottom="25dp"
android:textAppearance="@style/TextAppearance.AppCompat.Display3" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>