Newer
Older
Cactus-CleanArchitecture / app / src / main / java / org / ntlab / radishforandroidstudio / cactusClient / views / LoginFragment.java
package org.ntlab.radishforandroidstudio.cactusClient.views;

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.Toast;

import net.arnx.jsonic.JSON;
import net.arnx.jsonic.TypeReference;

import org.ntlab.radishforandroidstudio.R;
import org.ntlab.radishforandroidstudio.cactusClient.Cactus;
import org.ntlab.radishforandroidstudio.cactusClient.connections.LoginFragmentConnection;
import org.ntlab.radishforandroidstudio.cactusClient.models.account.Account;
import org.ntlab.radishforandroidstudio.cactusClient.models.account.URIAddressedAccount;
import org.ntlab.radishforandroidstudio.framework.network.CallBack;


public class LoginFragment extends BaseFragment {
    private LoginFragmentConnection connection;
    private Boolean testFlag = false; //trueにすると、通信せずにインスタンス画面へ遷移します。つまり、通信なしでテストするなら"true"にせい

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

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

    @Override
    public void onStart() {
        super.onStart();

        Button button = (Button) getActivity().findViewById(R.id.signUP1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               replaceFragment(R.id.fragment_place, new SignUpFragment(),true);

            }
        });
        Button loginButton = (Button) getActivity().findViewById(R.id.login);
        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText userName = (EditText) getActivity().findViewById(R.id.inputUserName);
                EditText passWord = (EditText) getActivity().findViewById(R.id.checkPassword);

//                /****************************************************************
                if (testFlag) {
                    replaceFragment(R.id.fragment_place, new InstancesFragment(), false);
                    return;
                }
//                 **********************************************************************/


                if (userName.getText().toString().isEmpty()) {
                    Toast.makeText(getActivity(), "ユーザー名が未記入です", Toast.LENGTH_SHORT).show();
                    return;
                } else if (passWord.getText().toString().isEmpty()) {
                    Toast.makeText(getActivity(), "パスワードが未記入です", Toast.LENGTH_SHORT).show();
                    return;
                }

                //もらう
                connection = new LoginFragmentConnection();
                connection.setCallBack(new CallBack() {
                    @Override
                    public void onResponse(String response) {
                        //通信した時の処理を書くのだよ
                        URIAddressedAccount lac = JSON.decode(response, new TypeReference<URIAddressedAccount>() {
                        });
                        Account user = lac.getAccount();
                        if (user.isLogin()) {
                            Toast.makeText(getActivity(), "ログインに成功しました。", Toast.LENGTH_SHORT).show();
                            Cactus c = (Cactus) getActivity().getApplication();
                            c.setMyAccount(user);
                            c.setAddressedAccount(lac);

                            //画面切り替え
                            replaceFragment(R.id.fragment_place, new InstancesFragment(), false);
                        } else {
                            Toast.makeText(getActivity(), "ログインに失敗しました。", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
                connection.addFormParam("userID", userName.getText().toString());
                connection.addFormParam("userPass", passWord.getText().toString());

                if (!testFlag) {
                    connection.doPut();
                }
            }
        });
    }
}