Newer
Older
NemophilaClient / app / src / main / java / com / example / nemophila / MyPageEditorActivity.java
k-suzuki on 28 Sep 6 KB icon
package com.example.nemophila;

import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.nemophila.entities.Account;
import com.example.nemophila.viewmodels.AccountViewModel;

import java.util.Base64;
import java.util.List;

public class MyPageEditorActivity extends AppCompatActivity {
    private String img;
    //マイページ編集画面の作成
    private ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.OpenMultipleDocuments(), new ActivityResultCallback<List<Uri>>() {
        @Override
        public void onActivityResult(List<Uri> uriList) {

            if(uriList.size() == 0)return;
            String newIcon = new String(Base64.getEncoder().encode(uriList.get(0).toString().getBytes()));
            img = newIcon;
        }

    });

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_page_editor);

        //LiveDataへの購読
        AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
        Nemophila nemophila = (Nemophila) getApplication();
        String name = nemophila.getName();
        EditText myName = (EditText) findViewById(R.id.editName);
        myName.setText(name);

        //MyPageに戻るボタン
        ImageButton backButton = (ImageButton) findViewById(R.id.backMyPage);
        backButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(MyPageEditorActivity.this, MyPageActivity.class);
                startActivity(intent);
            }
        });
        //LiveDataへの購読
        accountViewModel.getNameLiveData().observe(this, new Observer<String>() {
            @Override
            public void onChanged(String name) {
                TextView myName = (TextView) findViewById(R.id.editName);
                myName.setText(name);
                nemophila.setName(name);
            }

        });
        accountViewModel.getNameLiveData().observe(this, new Observer<String>() {
            @Override
            public void onChanged(String name) {
                TextView myName = (TextView) findViewById(R.id.editName);
                myName.setText(name);
                nemophila.setName(name);
            }

        });
        accountViewModel.getNameLiveData().observe(this, new Observer<String>() {
            @Override
            public void onChanged(String icon) {
                TextView myIcon = (TextView) findViewById(R.id.editName);
                myName.setText(name);
                nemophila.setName(name);
            }

        });
        //LiveDataへの購読
        accountViewModel.getPwLiveData().observe(this, new Observer<String>() {
            @Override
            public void onChanged(String Pw) {
                Intent intent = new Intent(MyPageEditorActivity.this, MyPageActivity.class);
                startActivity(intent);
            }

        });
        //LiveDataへの購読
        accountViewModel.getPwErrorLiveData().observe(this, new Observer<String>() {
            @Override
            public void onChanged(String name) {
                Toast ts = Toast.makeText(MyPageEditorActivity.this, "パスワードが間違っています", Toast.LENGTH_SHORT);
                ts.setGravity(Gravity.CENTER, 0, 0);
                ts.show();
            }

        });
        Button selectPictureButton = (Button)findViewById(R.id.selectpicturebutton);
        selectPictureButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v) {
                launcher.launch(new String[]{"image/*"});
            }
        });

        //変更確定ボタンを押した場合の動き
        Button changeNameButton = (Button) findViewById(R.id.changeConfirm);
        changeNameButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //名前とパスワードを取り込む
                EditText editName = (EditText) findViewById(R.id.editName);
                String newName = editName.getText().toString();
                EditText editOldPw = (EditText) findViewById(R.id.editOldPw);
                String oldPw = editOldPw.getText().toString();
                EditText editNewPw = (EditText) findViewById(R.id.editNewPw);
                String newPw = editNewPw.getText().toString();

                //Nemophilaから(id)(token)をgetしてaccountViewModelに送る
                String uid = nemophila.getUid();
                String token  = nemophila.getToken();
                if(newName!=null) {
                    System.out.println(newName);
                    accountViewModel.changeName(uid, newName, token);
                }
                if(oldPw!=null && newPw!=null) {
                    accountViewModel.changePw(uid, oldPw, newPw, token);
                }
            }
        });

        //削除ボタンを押したときの処理
        Button deleteAccountButton = (Button) findViewById(R.id.deleteAccount);
        deleteAccountButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String uid = nemophila.getUid();
                String token = nemophila.getToken();
                accountViewModel.deleteAccount(uid,token);
                Intent intent = new Intent(MyPageEditorActivity.this, LoginActivity.class);
                startActivity(intent);
            }
        });
    }
}