diff --git a/app/src/main/java/com/mp/test_cv/CheckDialog.java b/app/src/main/java/com/mp/test_cv/CheckDialog.java new file mode 100644 index 0000000..6c28923 --- /dev/null +++ b/app/src/main/java/com/mp/test_cv/CheckDialog.java @@ -0,0 +1,64 @@ +package com.mp.test_cv; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; + +import androidx.fragment.app.DialogFragment; + +public class CheckDialog extends DialogFragment { + public interface CheckDialogListener { + public void onDialogPositiveClick(DialogFragment dialog); + public void onDialogNegativeClick(DialogFragment dialog); + } + + // Use this instance of the interface to deliver action events + CheckDialogListener listener; + + // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener + @Override + public void onAttach(Context context) { + super.onAttach(context); + // Verify that the host activity implements the callback interface + try { + // Instantiate the NoticeDialogListener so we can send events to the host + listener = (CheckDialogListener) context; + } catch (ClassCastException e) { + // The activity doesn't implement the interface, throw exception + throw new ClassCastException("CheckDialog" + + " must implement NoticeDialogListener"); + } + } + public Dialog onCreateDialog(Bundle savedInstanceState) { + // Use the Builder class for convenient dialog construction + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + Bundle scanedInfo = getArguments(); + String contextMessage = "Caloires: "+ scanedInfo.getString("calories") + + "\nCarbohydrate: " + scanedInfo.getString("carbohydrate") + + "\nProten: " + scanedInfo.getString("protein") + + "\nFat: " + scanedInfo.getString("fat") + + "\nSaturFat: " + scanedInfo.getString("saturFat") + + "\nSugars: " + scanedInfo.getString("sugar") + + "\nSodium: " + scanedInfo.getString("sodium") + + "\nDietaryFiber: " + scanedInfo.getString("dietaryFiber"); + + builder.setMessage(contextMessage) + .setTitle(R.string.dialog_title) + .setPositiveButton(R.string.submit, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + // FIRE ZE MISSILES! + listener.onDialogPositiveClick(CheckDialog.this); + } + }) + .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + // User cancelled the dialog + listener.onDialogNegativeClick(CheckDialog.this); + } + }); + // Create the AlertDialog object and return it + return builder.create(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mp/test_cv/HistoryView.java b/app/src/main/java/com/mp/test_cv/HistoryView.java new file mode 100644 index 0000000..df9e6c9 --- /dev/null +++ b/app/src/main/java/com/mp/test_cv/HistoryView.java @@ -0,0 +1,4 @@ +package com.mp.test_cv; + +public class HistoryView { +} diff --git a/app/src/main/java/com/mp/test_cv/MainActivity.java b/app/src/main/java/com/mp/test_cv/MainActivity.java index 06920b9..bbe5320 100644 --- a/app/src/main/java/com/mp/test_cv/MainActivity.java +++ b/app/src/main/java/com/mp/test_cv/MainActivity.java @@ -115,7 +115,7 @@ public void onSuccess(DocumentSnapshot documentSnapshot) { startToast("기본 정보를 기록해주세요."); myStartActivity(MemberInitActivity.class); } - startToast("잘못된 접근입니다.."); + //startToast("잘못된 접근입니다.."); Log.d(TAG, "No such document"); } } diff --git a/app/src/main/java/com/mp/test_cv/NutritionInfoActivity.java b/app/src/main/java/com/mp/test_cv/NutritionInfoActivity.java index c51b687..a92dfe2 100644 --- a/app/src/main/java/com/mp/test_cv/NutritionInfoActivity.java +++ b/app/src/main/java/com/mp/test_cv/NutritionInfoActivity.java @@ -1,5 +1,6 @@ package com.mp.test_cv; +import android.app.AlertDialog; import android.content.Intent; import android.os.Bundle; import android.util.Log; @@ -14,6 +15,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.DialogFragment; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnFailureListener; @@ -30,7 +32,7 @@ import org.opencv.android.CameraActivity; -public class NutritionInfoActivity extends AppCompatActivity { +public class NutritionInfoActivity extends AppCompatActivity implements CheckDialog.CheckDialogListener { final String TAG = getClass().getSimpleName(); PersonalDailyIntake inputIntake; TotalDailyIntake inputTotal; @@ -41,6 +43,7 @@ public class NutritionInfoActivity extends AppCompatActivity { String date; boolean getUser = false; boolean getDocument = false; + boolean dialogCheck = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -88,117 +91,17 @@ public void onClick(View v) { myStartActivity(CameraView.class); break; case R.id.submit: - calories = Integer.valueOf(((EditText)findViewById(R.id.editCalorie)).getText().toString()); - carbohydrate = Integer.valueOf(((EditText)findViewById(R.id.editCarbo)).getText().toString()); - protein = Integer.valueOf(((EditText)findViewById(R.id.editProtein)).getText().toString()); - fat = Integer.valueOf(((EditText)findViewById(R.id.editFat)).getText().toString()); - saturatedFat = Integer.valueOf(((EditText)findViewById(R.id.editSaturFat)).getText().toString()); - sugar = Integer.valueOf(((EditText)findViewById(R.id.editSugar)).getText().toString()); - sodium = Integer.valueOf(((EditText)findViewById(R.id.editSodium)).getText().toString()); - dietaryFiber = Integer.valueOf(((EditText)findViewById(R.id.editFiber)).getText().toString()); - inputIntake = new PersonalDailyIntake(calories, carbohydrate, protein, fat, saturatedFat, sugar, sodium, dietaryFiber); - inputTotal = new TotalDailyIntake(calories, carbohydrate, protein, fat, saturatedFat, sugar, sodium, dietaryFiber); - //사용자 정보 db 받고,inputIntake로 해당 정보들 갱신 - //모든 정보 갱신 과정이 끝나면 mainActivity로 간다. (ui업데이트) - if (carbohydrate >= 0 && protein >= 0 && fat >= 0 && saturatedFat >= 0 && sugar >= 0 && sodium >= 0 && dietaryFiber >= 0 ) { - user = FirebaseAuth.getInstance().getCurrentUser(); - db = FirebaseFirestore.getInstance(); - - Date today = new Date(); - SimpleDateFormat timeFormat = new SimpleDateFormat("yyyyMMddhhmmss"); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); - String time = timeFormat.format(today); - date = dateFormat.format(today); - DocumentReference totalDB = db.collection("TotalDailyIntake").document(date); - Log.d(TAG, "totalDB error : "+totalDB.equals(date)); - - if (user != null){ - // DailyIntake 생성 - db.collection("User").document(user.getUid()) - .collection("DailyIntake").document(time) - .set(inputIntake) - .addOnSuccessListener(new OnSuccessListener() { - @Override - public void onSuccess(Void aVoid) { - startToast("정보 입력에 성공했습니다.."); - getUser = true; - finish(); - } - }) - .addOnFailureListener(new OnFailureListener() { - @Override - public void onFailure(@NonNull Exception e) { - startToast("정보 입력에 실패했습니다.."); - Log.w(TAG, "Error writing document", e); - } - }); - - DocumentReference docRef = db.collection("User").document(user.getUid()).collection("TotalDailyIntake").document(date); - docRef.get().addOnCompleteListener(new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - DocumentSnapshot document = task.getResult(); - Log.d(TAG, "Document: " + document); - docRefMap = document.getData(); - if (document.exists()) { - Log.d(TAG, "docRefMap: " + docRefMap); - - } else { - Log.d(TAG, "docRefMap: " + docRefMap); - Log.d(TAG, "No such document"); - } - } else { - Log.d(TAG, "get failed with ", task.getException()); - } - // TotalDailyIntake 생성 - if(docRefMap == null){ - db.collection("User").document(user.getUid()) - .collection("TotalDailyIntake").document(date) - .set(inputTotal) - .addOnSuccessListener(new OnSuccessListener() { - @Override - public void onSuccess(Void aVoid) { - startToast("정보를 초기화했습니다."); - getDocument = true; - finish(); - } - }) - .addOnFailureListener(new OnFailureListener() { - @Override - public void onFailure(@NonNull Exception e) { - startToast("정보 초기화를 실패했습니다."); - Log.w(TAG, "Error writing document", e); - } - }); - }else{ - // TotalDailyIntake Increment - DocumentReference tdb = db.collection("User").document(user.getUid()) - .collection("TotalDailyIntake").document(date); - tdb.update("totalCalories", FieldValue.increment(calories)); - tdb.update("totalCarbohydrate", FieldValue.increment(carbohydrate)); - tdb.update("totalDietaryFiber", FieldValue.increment(dietaryFiber)); - tdb.update("totalFat", FieldValue.increment(protein)); - tdb.update("totalProtein", FieldValue.increment(fat)); - tdb.update("totalSaturatedFat", FieldValue.increment(saturatedFat)); - tdb.update("totalSodium", FieldValue.increment(sugar)); - tdb.update("totalSugar", FieldValue.increment(sodium)); - getDocument = true; - } - } - }); - } - } - else { - startToast("사용자정보를 입력하세요."); - } - Intent intent = new Intent(getApplicationContext(), MainActivity.class ); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - //로그인 한 상태에서 뒤로가기 눌렀을 때 메인액티비로 이동, 나머지 스택 없어짐. - startActivity(intent); + showCheckDialog(); + break; } } }; + /* private void setUpDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setMessage(R.string.dialog_message) + .setTitle(R.string.dialog_title); + AlertDialog dialog = builder.create(); + }*/ private void startToast(String msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } @@ -208,4 +111,143 @@ private void myStartActivity(Class c) { //로그인 한 상태에서 뒤로가기 눌렀을 때 메인액티비로 이동, 나머지 스택 없어짐. startActivity(intent); } + public void showCheckDialog() { + calories = Integer.valueOf(((EditText) findViewById(R.id.editCalorie)).getText().toString()); + carbohydrate = Integer.valueOf(((EditText) findViewById(R.id.editCarbo)).getText().toString()); + protein = Integer.valueOf(((EditText) findViewById(R.id.editProtein)).getText().toString()); + fat = Integer.valueOf(((EditText) findViewById(R.id.editFat)).getText().toString()); + saturatedFat = Integer.valueOf(((EditText) findViewById(R.id.editSaturFat)).getText().toString()); + sugar = Integer.valueOf(((EditText) findViewById(R.id.editSugar)).getText().toString()); + sodium = Integer.valueOf(((EditText) findViewById(R.id.editSodium)).getText().toString()); + dietaryFiber = Integer.valueOf(((EditText) findViewById(R.id.editFiber)).getText().toString()); + inputIntake = new PersonalDailyIntake(calories, carbohydrate, protein, fat, saturatedFat, sugar, sodium, dietaryFiber); + inputTotal = new TotalDailyIntake(calories, carbohydrate, protein, fat, saturatedFat, sugar, sodium, dietaryFiber); + // Create an instance of the dialog fragment and show it + DialogFragment dialog = new CheckDialog(); + Bundle scanInfo = new Bundle(); + makeBundles(scanInfo); + dialog.setArguments(scanInfo); + dialog.show(getSupportFragmentManager(), "CheckDialogFragment"); + } + public void sendData() { + if(dialogCheck) { + //사용자 정보 db 받고,inputIntake로 해당 정보들 갱신 + //모든 정보 갱신 과정이 끝나면 mainActivity로 간다. (ui업데이트) + if (carbohydrate >= 0 && protein >= 0 && fat >= 0 && saturatedFat >= 0 && sugar >= 0 && sodium >= 0 && dietaryFiber >= 0) { + user = FirebaseAuth.getInstance().getCurrentUser(); + db = FirebaseFirestore.getInstance(); + + Date today = new Date(); + SimpleDateFormat timeFormat = new SimpleDateFormat("yyyyMMddhhmmss"); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); + String time = timeFormat.format(today); + date = dateFormat.format(today); + DocumentReference totalDB = db.collection("TotalDailyIntake").document(date); + Log.d(TAG, "totalDB error : " + totalDB.equals(date)); + + if (user != null) { + // DailyIntake 생성 + db.collection("User").document(user.getUid()) + .collection("DailyIntake").document(time) + .set(inputIntake) + .addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(Void aVoid) { + startToast("정보 입력에 성공했습니다.."); + getUser = true; + finish(); + } + }) + .addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + startToast("정보 입력에 실패했습니다.."); + Log.w(TAG, "Error writing document", e); + } + }); + + DocumentReference docRef = db.collection("User").document(user.getUid()).collection("TotalDailyIntake").document(date); + docRef.get().addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + DocumentSnapshot document = task.getResult(); + Log.d(TAG, "Document: " + document); + docRefMap = document.getData(); + if (document.exists()) { + Log.d(TAG, "docRefMap: " + docRefMap); + + } else { + Log.d(TAG, "docRefMap: " + docRefMap); + Log.d(TAG, "No such document"); + } + } else { + Log.d(TAG, "get failed with ", task.getException()); + } + // TotalDailyIntake 생성 + if (docRefMap == null) { + db.collection("User").document(user.getUid()) + .collection("TotalDailyIntake").document(date) + .set(inputTotal) + .addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(Void aVoid) { + startToast("정보를 초기화했습니다."); + getDocument = true; + finish(); + } + }) + .addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + startToast("정보 초기화를 실패했습니다."); + Log.w(TAG, "Error writing document", e); + } + }); + } else { + // TotalDailyIntake Increment + DocumentReference tdb = db.collection("User").document(user.getUid()) + .collection("TotalDailyIntake").document(date); + tdb.update("totalCalories", FieldValue.increment(calories)); + tdb.update("totalCarbohydrate", FieldValue.increment(carbohydrate)); + tdb.update("totalDietaryFiber", FieldValue.increment(dietaryFiber)); + tdb.update("totalFat", FieldValue.increment(protein)); + tdb.update("totalProtein", FieldValue.increment(fat)); + tdb.update("totalSaturatedFat", FieldValue.increment(saturatedFat)); + tdb.update("totalSodium", FieldValue.increment(sugar)); + tdb.update("totalSugar", FieldValue.increment(sodium)); + getDocument = true; + } + } + }); + } + } else { + startToast("사용자정보를 입력하세요."); + } + Intent intent = new Intent(getApplicationContext(), MainActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + //로그인 한 상태에서 뒤로가기 눌렀을 때 메인액티비로 이동, 나머지 스택 없어짐. + startActivity(intent); + } + } + @Override + public void onDialogPositiveClick(DialogFragment dialog) { + dialogCheck = true; + sendData(); + } + + @Override + public void onDialogNegativeClick(DialogFragment dialog) { + dialogCheck = true; + } + private void makeBundles(Bundle arg) { + arg.putString("calories", Integer.toString(calories)); + arg.putString("fat", Integer.toString(fat)); + arg.putString("carbohydrate", Integer.toString(carbohydrate)); + arg.putString("protein", Integer.toString(protein)); + arg.putString("saturFat", Integer.toString(saturatedFat)); + arg.putString("sugar", Integer.toString(sugar)); + arg.putString("dietaryFiber", Integer.toString(dietaryFiber)); + arg.putString("sodium", Integer.toString(sodium)); + } } \ No newline at end of file diff --git a/app/src/main/java/com/mp/test_cv/PreviewActivity.java b/app/src/main/java/com/mp/test_cv/PreviewActivity.java index af7ebcb..08443b4 100644 --- a/app/src/main/java/com/mp/test_cv/PreviewActivity.java +++ b/app/src/main/java/com/mp/test_cv/PreviewActivity.java @@ -19,6 +19,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.DialogFragment; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; @@ -35,7 +36,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -public class PreviewActivity extends AppCompatActivity { +public class PreviewActivity extends AppCompatActivity implements CheckDialog.CheckDialogListener { ImageView preview; FrameLayout frameLayout; TextView txt; @@ -63,7 +64,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { frameLayout = findViewById(R.id.frameLayout); - txt = findViewById(R.id.txt); + //txt = findViewById(R.id.txt); preview = findViewById(R.id.preview); @@ -208,7 +209,7 @@ protected void onPostExecute(String result) { } // 결과를 화면에 띄어줌 - txt.setText("칼로리(Calories) : " + calories + + /*txt.setText("칼로리(Calories) : " + calories + "\n탄수화물(Total Carbohydrate) : " + carbohydrate + "\n단백질(Protein) : " + protein + "\n지방(Total Fat) : " + fat + @@ -216,8 +217,7 @@ protected void onPostExecute(String result) { "\n당류(Total Sugars) : " + sugars + "\n나트륨(Sodium) : " + sodium + "\n식이섬유(Dietary Fiber) : " + dietaryFiber); - - +*/ /* System.out.println("Calories : " + calories); System.out.println("Total Fat : " + fat); @@ -230,11 +230,11 @@ protected void onPostExecute(String result) { // tockenizing -- //txt.setText(result); //Toast.makeText(PreviewActivity.this, "" + result, Toast.LENGTH_LONG).show(); - btnHome.setEnabled(true); btnHome.setText("인식 완료"); //button.setEnabled(true); //button.setText("텍스트 인식"); + showCheckDialog(); } // tockenizing -- @@ -275,4 +275,27 @@ protected int tokenizing(String oneline, String nutrition) { return intake; } // tockenizing end + private void showCheckDialog() { + // Create an instance of the dialog fragment and show it + DialogFragment dialog = new CheckDialog(); + Bundle scanInfo = new Bundle(); + makeBundles(scanInfo); + dialog.setArguments(scanInfo); + dialog.show(getSupportFragmentManager(), "CheckDialogFragment"); + } + public void onDialogPositiveClick(DialogFragment dialog) { + } + + public void onDialogNegativeClick(DialogFragment dialog) { + } + private void makeBundles(Bundle arg) { + arg.putString("calories", Integer.toString(calories)); + arg.putString("fat", Integer.toString(fat)); + arg.putString("carbohydrate", Integer.toString(carbohydrate)); + arg.putString("protein", Integer.toString(protein)); + arg.putString("saturFat", Integer.toString(saturFat)); + arg.putString("sugar", Integer.toString(sugars)); + arg.putString("dietaryFiber", Integer.toString(dietaryFiber)); + arg.putString("sodium", Integer.toString(sodium)); + } } diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoggedInUserView.java b/app/src/main/java/com/mp/test_cv/ui/login/LoggedInUserView.java deleted file mode 100644 index e394fbe..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoggedInUserView.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.mp.test_cv.ui.login; - -/** - * Class exposing authenticated user details to the UI. - */ -class LoggedInUserView { - private String displayName; - //... other data fields that may be accessible to the UI - - LoggedInUserView(String displayName) { - this.displayName = displayName; - } - - String getDisplayName() { - return displayName; - } -} diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoginFormState.java b/app/src/main/java/com/mp/test_cv/ui/login/LoginFormState.java deleted file mode 100644 index 8c7ee1e..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoginFormState.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mp.test_cv.ui.login; - -import androidx.annotation.Nullable; - -/** - * Data validation state of the login form. - */ -class LoginFormState { - @Nullable - private Integer usernameError; - @Nullable - private Integer passwordError; - private boolean isDataValid; - - LoginFormState(@Nullable Integer usernameError, @Nullable Integer passwordError) { - this.usernameError = usernameError; - this.passwordError = passwordError; - this.isDataValid = false; - } - - LoginFormState(boolean isDataValid) { - this.usernameError = null; - this.passwordError = null; - this.isDataValid = isDataValid; - } - - @Nullable - Integer getUsernameError() { - return usernameError; - } - - @Nullable - Integer getPasswordError() { - return passwordError; - } - - boolean isDataValid() { - return isDataValid; - } -} diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoginResult.java b/app/src/main/java/com/mp/test_cv/ui/login/LoginResult.java deleted file mode 100644 index 1968b5c..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoginResult.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.mp.test_cv.ui.login; - -import androidx.annotation.Nullable; - -/** - * Authentication result : success (user details) or error message. - */ -class LoginResult { - @Nullable - private LoggedInUserView success; - @Nullable - private Integer error; - - LoginResult(@Nullable Integer error) { - this.error = error; - } - - LoginResult(@Nullable LoggedInUserView success) { - this.success = success; - } - - @Nullable - LoggedInUserView getSuccess() { - return success; - } - - @Nullable - Integer getError() { - return error; - } -} diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModel.java b/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModel.java deleted file mode 100644 index 9873d80..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModel.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.mp.test_cv.ui.login; - -import androidx.lifecycle.LiveData; -import androidx.lifecycle.MutableLiveData; -import androidx.lifecycle.ViewModel; - -import android.util.Patterns; - -import com.mp.test_cv.data.LoginRepository; -import com.mp.test_cv.data.Result; -import com.mp.test_cv.data.model.LoggedInUser; -import com.mp.test_cv.R; - -public class LoginViewModel extends ViewModel { - - private MutableLiveData loginFormState = new MutableLiveData<>(); - private MutableLiveData loginResult = new MutableLiveData<>(); - private LoginRepository loginRepository; - - LoginViewModel(LoginRepository loginRepository) { - this.loginRepository = loginRepository; - } - - LiveData getLoginFormState() { - return loginFormState; - } - - LiveData getLoginResult() { - return loginResult; - } - - public void login(String username, String password) { - // can be launched in a separate asynchronous job - Result result = loginRepository.login(username, password); - - if (result instanceof Result.Success) { - LoggedInUser data = ((Result.Success) result).getData(); - loginResult.setValue(new LoginResult(new LoggedInUserView(data.getDisplayName()))); - } else { - loginResult.setValue(new LoginResult(R.string.login_failed)); - } - } - - public void loginDataChanged(String username, String password) { - if (!isUserNameValid(username)) { - loginFormState.setValue(new LoginFormState(R.string.invalid_username, null)); - } else if (!isPasswordValid(password)) { - loginFormState.setValue(new LoginFormState(null, R.string.invalid_password)); - } else { - loginFormState.setValue(new LoginFormState(true)); - } - } - - // A placeholder username validation check - private boolean isUserNameValid(String username) { - if (username == null) { - return false; - } - if (username.contains("@")) { - return Patterns.EMAIL_ADDRESS.matcher(username).matches(); - } else { - return !username.trim().isEmpty(); - } - } - - // A placeholder password validation check - private boolean isPasswordValid(String password) { - return password != null && password.trim().length() > 5; - } -} diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModelFactory.java b/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModelFactory.java deleted file mode 100644 index 19a0983..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModelFactory.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mp.test_cv.ui.login; - -import androidx.lifecycle.ViewModel; -import androidx.lifecycle.ViewModelProvider; -import androidx.annotation.NonNull; - -import com.mp.test_cv.data.LoginDataSource; -import com.mp.test_cv.data.LoginRepository; - -/** - * ViewModel provider factory to instantiate LoginViewModel. - * Required given LoginViewModel has a non-empty constructor - */ -public class LoginViewModelFactory implements ViewModelProvider.Factory { - - @NonNull - @Override - @SuppressWarnings("unchecked") - public T create(@NonNull Class modelClass) { - if (modelClass.isAssignableFrom(LoginViewModel.class)) { - return (T) new LoginViewModel(LoginRepository.getInstance(new LoginDataSource())); - } else { - throw new IllegalArgumentException("Unknown ViewModel class"); - } - } -} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cc70ef1..8f199e2 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,5 @@ - - + + - - - + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|center_vertical" + android:orientation="horizontal" + android:padding="10dp"> + android:text="오늘 섭취량 정보" + android:textColor="#FFFFFF" + android:textSize="25dp" + android:textStyle="bold">