Newer
Older
CitrusClient / app / src / main / java / com / example / citrusclient / views / CreateBookFragment.java
package com.example.citrusclient.views;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.DialogInterface;
//import android.support.v4.app.DialogFragment;
import android.content.res.ColorStateList;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;

import android.text.Editable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.example.citrusclient.Citrus;
import com.example.citrusclient.R;
import com.example.citrusclient.viewmodels.BooksViewModel;
import com.google.android.material.textfield.TextInputEditText;

import android.graphics.Color;//ボタンの色変更
import android.os.Bundle;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Switch;
import android.widget.TextView;

import org.w3c.dom.Text;


/**
 * A simple {@link Fragment} subclass.
 * Use the {@link CreateBookFragment#newInstance} factory method to
 * create an instance of this fragment.
 */
public class CreateBookFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public CreateBookFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment CreateBookFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static CreateBookFragment newInstance(String param1, String param2) {
        CreateBookFragment fragment = new CreateBookFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    BooksViewModel booksViewModel;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
        booksViewModel = new ViewModelProvider(this).get(BooksViewModel.class);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        return inflater.inflate(R.layout.fragment_create_book, container, false);
    }


    private String color; //色
    //private Switch mSwitch = null;//本の公開状況の切り替えボタン
    private boolean publicity;

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState); //親クラスである Fragment の onViewCreated() メソッドを呼び出す
        Citrus citrus = (Citrus)(getActivity().getApplication());
        String token = citrus.getToken();
        String accountId = citrus.getAccountId();

        //ここから書く
        // MainActivityにこのフラグメントを設定するした二つのどっちか
        //((MainActivity) getContext()).setCreateBookFragment(this);//フラグメントとアクティビティ間での情報のやり取りがあるとき
        //((MainActivity) getActivity()).showFragment(new MyBookshelfFragment());

        //保存ボタンの処理
        view.findViewById(R.id.save_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view2) {
                EditText editname = (EditText) view.findViewById(R.id.book_name); //本の名前を入力する
                Editable bookeditable = editname.getText();
                TextView textbookname = (TextView) view.findViewById(R.id.set_book_name); //本の名前が無かったら入力してと表示する

//                boolean isChecked = mSwitch.isChecked(); //本の公開状況
//                publicity = isChecked;

                if (bookeditable == null) {     //本の名前がなかったら
                    System.out.println("本の名前を入力してください");

                    if (textbookname != null) {
                        textbookname.setText("本の名前を入力してください!");
                    } else {
                        System.out.println("textbookname が null");
                    }
                } else {
                    String bookname = bookeditable.toString().trim();
//                String bookname = editname.getText().toString().trim();
                    if (bookname == null || bookname.length() == 0) {     //本の名前がなかったら
                        System.out.println("本の名前を入力してください");

                        if (textbookname != null) {
                            textbookname.setText("本の名前を入力してください!");
                        } else {
                            System.out.println("textbookname が null");
                        }
                    } else {
                        System.out.println(bookname);
        //              String textbook = textbookname.getText().toString().trim();
                        String accountId = ((Citrus) getActivity().getApplication()).getAccountId();
                        String token = ((Citrus) getActivity().getApplication()).getToken();

                        if(color == null){
                            color = "#D5D5D5"; //色が選択されてなかったらグレー
                        }

                        booksViewModel.createBook(accountId, bookname, color, publicity, token);  //BooksViewModelを呼び出して本を作る
                        //画面が本棚に戻る


                        ((MainActivity) getActivity()).showFragment(new MyBookshelfFragment()); //本棚に戻る
                    }
                }
            }
        });

        //キャンセルボタンの処理
        view.findViewById(R.id.cancel_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ((MainActivity) getActivity()).showFragment(new MyBookshelfFragment());
            }
        });

        //色選択をするとダイアログが出てくる
        view.findViewById(R.id.color_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view2) {
//                ((MainActivity) getActivity()).showFragment(new BookColorDialogFragment());
                //CreatebookFragmentにBookColordialogFragmentの情報を渡した状態のコンストラクタをつくる
                BookColorDialogFragment bookColorDialogFragment = new BookColorDialogFragment(CreateBookFragment.this);
                bookColorDialogFragment.show(getActivity().getSupportFragmentManager(), "simple");

            }
        });

        //View view = getView();
        Switch sw = view.findViewById(R.id.switch1);
        sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    publicity = true;
                } else {
                    publicity = false;
                }
            }
        });
    }

//    public void returnPublicity(String pub) {
//        View view = getView();
//        Switch sw = view.findViewById(R.id.switch1);
//        sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
//            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//                if (isChecked) {
//                    publicity = true;
//                } else {
//                    publicity = false;
//                }
//            }
//        });
//    }

    public void returnValue(String colorIn){
        color = colorIn;//createBookの変数colorに入る

        View view = getView(); // FragmentのView

        if (view != null) {
            Button colorButton = view.findViewById(R.id.color_button);
            int parsedColor = Color.parseColor(color);
            colorButton.setBackgroundTintList(ColorStateList.valueOf(parsedColor));
        }
    }
}