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.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
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 Fragment {
    private LoginFragmentConnection connection;
    private Boolean testFlag = false; //trueにすると、通信せずにインスタンス画面へ遷移します。つまり、通信なしでテストするなら"true"にせい

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        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) {
                //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show();
                FragmentManager manager = getFragmentManager();
                FragmentTransaction transaction = manager.beginTransaction();
                transaction.addToBackStack(null);
                transaction.replace(R.id.fragment_place, new SignUpFragment());
                transaction.commit();
            }
        });
        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) {
                    FragmentManager manager = getFragmentManager();
                    FragmentTransaction transaction = manager.beginTransaction();
                    transaction.replace(R.id.fragment_place, new InstancesFragment());
                    transaction.commit();
                    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>(){});
//                        System.out.println(response);
                        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);
                            FragmentManager manager = getFragmentManager();
                            FragmentTransaction transaction = manager.beginTransaction();
                            transaction.replace(R.id.fragment_place, new InstancesFragment());
                            transaction.commit();
                        }else {
                            Toast.makeText(getActivity(),"ログインに失敗しました。", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
                connection.addFormParam("userID", userName.getText().toString());
                connection.addFormParam("userPass", passWord.getText().toString());
                if(testFlag == false)connection.doPut();
            }
        });
    }
}