diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0be2f1f..679b1a3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,8 +4,11 @@ package="com.example.cosmosclient"> + + - + tools:replace="screenOrientation"> + + - - + + + call = signinService.loginList(NameText.getText().toString(), PasswordText.getText().toString()); + + //サーバからのレスポンス + call.enqueue(new Callback() { + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + SigninResponse result = response.body(); + Intent intent = new Intent(getApplication(), GroupList.class); + //intent.putExtra("UserInfomation",result); + Toast.makeText(SigninActivity.this, + "ログインしました", Toast.LENGTH_SHORT).show(); + + startActivity(intent); + finish(); + + }else{ + //onFailureでキャッチできないエラーの処理 + Toast.makeText(SigninActivity.this, + "通信エラー",Toast.LENGTH_SHORT).show(); + } + } + + //失敗時 + @Override + public void onFailure(Call call, Throwable t) { + //t.printStackTrace(); + Toast.makeText(SigninActivity.this, + "ユーザIDもしくはパスワードが間違っています",Toast.LENGTH_SHORT).show(); + } + + }); } }); @@ -42,5 +100,53 @@ finish(); } }); + + //パスワード再登録画面への遷移処理 + ForgotPasswordButton.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View v){ + Intent intent = new Intent(getApplication(), ForgotPasswordActivity.class); + startActivity(intent); + //finish(); + } + }); + } + private class GenericTextWatcher implements TextWatcher{ + private View view; + + private GenericTextWatcher(View view){ + this.view = view; + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count,int after){/*記述不要*/}; + @Override + public void onTextChanged(CharSequence s, int start, int before, int count){/*記述不要*/}; + + @Override + public void afterTextChanged(Editable s){ + switch(view.getId()) { + case R.id.NameText: + if (s.length() > 0) { + uIdEnable = true; + } else { + uIdEnable = false; + } + break; + case R.id.PasswordText: + if(s.length()>0){ + pwEnable=true; + }else{ + pwEnable=false; + } + break; + } + //ボタン有効&無効 + if(uIdEnable && pwEnable ){ + SigninButton.setEnabled(true); + }else{ + SigninButton.setEnabled(false); + } + } } } diff --git a/app/src/main/java/com/example/cosmosclient/views/SigninResponse.java b/app/src/main/java/com/example/cosmosclient/views/SigninResponse.java new file mode 100644 index 0000000..c47556d --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/SigninResponse.java @@ -0,0 +1,5 @@ +package com.example.cosmosclient.views; + +public class SigninResponse { + public String token; +} diff --git a/app/src/main/java/com/example/cosmosclient/views/SigninService.java b/app/src/main/java/com/example/cosmosclient/views/SigninService.java new file mode 100644 index 0000000..84dcb18 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/SigninService.java @@ -0,0 +1,11 @@ +package com.example.cosmosclient.views; + +import retrofit2.Call; +import retrofit2.http.POST; +import retrofit2.http.Path; +import retrofit2.http.Query; + +public interface SigninService { + @POST("users/{uId}/login") + Call loginList(@Path("uId") String uId, @Query("pw") String pw); +} diff --git a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java index c738fa8..b3cffe2 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java @@ -3,33 +3,111 @@ import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; import android.view.View; import android.widget.Button; import android.widget.EditText; +import android.widget.Toast; import com.example.cosmosclient.R; -public class SignupActivity extends AppCompatActivity { + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class SignupActivity extends AppCompatActivity{ +// public static final String UserInfomation="com.example.cosmosclient.views"; + private boolean nameEnable; + private boolean pwEnable; + private boolean cpwEnable; + private Button MakeAccountButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); + //retrofitの処理 + final Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + //interfaceから実装を取得 + final SignupService signupService = retrofit.create(SignupService.class); + //各種idを取得 Button LoginButton = findViewById(R.id.LoginButton); - Button MakeAccountButton = findViewById(R.id.MakeAccountButton); - EditText EmailAddressText = findViewById(R.id.EMailAddressText); - EditText PasswordText = findViewById(R.id.PasswordText); - EditText ConfirmPasswordText = findViewById(R.id.ConfirmPasswordText); + MakeAccountButton = findViewById(R.id.MakeAccountButton); + final EditText NameText = findViewById(R.id.NameText); + final EditText PasswordText = findViewById(R.id.PasswordText); + final EditText ConfirmPasswordText = findViewById(R.id.ConfirmPasswordText); + + //入力欄監視 + NameText.addTextChangedListener(new GenericTextWatcher(NameText)); + PasswordText.addTextChangedListener(new GenericTextWatcher(PasswordText)); + ConfirmPasswordText.addTextChangedListener(new GenericTextWatcher(ConfirmPasswordText)); + + //アカウント登録ボタン無効化 + MakeAccountButton.setEnabled(false); //Make Accountボタンの処理 MakeAccountButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ - Intent intent = new Intent(getApplication(), GroupList.class); - startActivity(intent); - finish(); + String pw = PasswordText.getText().toString(); + String confirmPw = ConfirmPasswordText.getText().toString(); + + //パスワードと確認パスワードが一致していない際の処理 + if(!pw.equals(confirmPw)){ + PasswordText.setError("入力されたパスワードが一致しません"); + ConfirmPasswordText.setError("入力されたパスワードが一致しません"); + return; + } + + //API呼び出しのための値入力 + Call call = signupService.createUser(NameText.getText().toString(), + PasswordText.getText().toString(),"https://yumenavi.info/live/2018/photo/k/s015980019.jpg"); + + //サーバからデータ受け取り + call.enqueue(new Callback() { + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + SignupResponse result = response.body(); + Intent intent = new Intent(getApplication(), GroupList.class); + //intent.putExtra("UserInfomation",result); + + //test + System.out.println(result.uId); + System.out.println(result.name); + System.out.println(result.uri); + System.out.println(result.token); + System.out.println(result.iconUri); + System.out.println(result.pw); + + startActivity(intent); + finish(); + + }else{ + //onFailureでキャッチできないエラー用 + Toast.makeText(SignupActivity.this, + "アカウント作成失敗",Toast.LENGTH_SHORT); + } + } + + //失敗時 + @Override + public void onFailure(Call call, Throwable t) { + t.printStackTrace(); + Toast.makeText(SignupActivity.this, + "アカウント作成失敗",Toast.LENGTH_SHORT); + } + }); } }); @@ -42,6 +120,53 @@ finish(); } }); - } + + //入力欄監視処理内容 + private class GenericTextWatcher implements TextWatcher{ + private View view; + + private GenericTextWatcher(View view){ + this.view = view; + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count,int after){/*記述不要*/}; + @Override + public void onTextChanged(CharSequence s, int start, int before, int count){/*記述不要*/}; + + @Override + public void afterTextChanged(Editable s){ + switch(view.getId()) { + case R.id.NameText: + if (s.length() > 0) { + nameEnable = true; + } else { + nameEnable = false; + } + break; + case R.id.PasswordText: + if(s.length()>0){ + pwEnable=true; + }else{ + pwEnable=false; + } + break; + case R.id.ConfirmPasswordText: + if(s.length()>0){ + cpwEnable=true; + }else{ + cpwEnable=false; + } + break; + } + //ボタン有効&無効 + if(nameEnable && pwEnable && cpwEnable){ + MakeAccountButton.setEnabled(true); + }else{ + MakeAccountButton.setEnabled(false); + } + } + } + } diff --git a/app/src/main/java/com/example/cosmosclient/views/SignupResponse.java b/app/src/main/java/com/example/cosmosclient/views/SignupResponse.java new file mode 100644 index 0000000..963dfce --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/SignupResponse.java @@ -0,0 +1,15 @@ +package com.example.cosmosclient.views; + +import java.util.List; + +public class SignupResponse { + public String uId; + public String name; + public String pw; + public String uri; + public List token; + public String iconUri; + public boolean login; + + +} diff --git a/app/src/main/java/com/example/cosmosclient/views/SignupService.java b/app/src/main/java/com/example/cosmosclient/views/SignupService.java new file mode 100644 index 0000000..2ac3075 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/views/SignupService.java @@ -0,0 +1,12 @@ +package com.example.cosmosclient.views; + +import retrofit2.Call; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.POST; + +public interface SignupService { + @POST("users") + @FormUrlEncoded + Call createUser(@Field("name") String name, @Field("pw") String pw, @Field("icon-image") String icon_image); +} diff --git a/app/src/main/res/drawable/white.png b/app/src/main/res/drawable/white.png deleted file mode 100644 index 15f8d06..0000000 --- a/app/src/main/res/drawable/white.png +++ /dev/null Binary files differ diff --git a/app/src/main/res/layout/activity_forgot_password.xml b/app/src/main/res/layout/activity_forgot_password.xml new file mode 100644 index 0000000..e5b5ac9 --- /dev/null +++ b/app/src/main/res/layout/activity_forgot_password.xml @@ -0,0 +1,53 @@ + + + + + + + + + +