Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .idea/deploymentTargetSelector.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 43 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,49 @@
android:exported="false"
android:theme="@style/Base.Theme.Daejangjung2">
</activity>

<activity
android:name=".feature.auth.login.LoginFirstActivity"
android:exported="false">
</activity>

<activity
android:name=".feature.auth.login.LoginSecondActivity"
android:exported="false">
</activity>

<activity
android:name=".feature.auth.login.LoginThirdActivity"
android:exported="false">
</activity>

<activity
android:name=".feature.auth.login.LoginFourthActivity"
android:exported="false">
</activity>

<activity
android:name=".feature.auth.login.LoginSecondActivity2"
android:exported="false">
</activity>

<activity android:name=".feature.auth.signup.SignupFirstActivity"
android:exported="false">
</activity>

<activity android:name=".feature.auth.signup.SignupSecondActivity"
android:exported="false">
</activity>

<activity android:name=".feature.auth.signup.SignupThirdActivity"
android:exported="false">
</activity>

<activity android:name=".feature.auth.signup.SignupFourthActivity"
android:exported="false">
</activity>


</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,35 @@ import androidx.activity.viewModels
import com.example.daejangjung2.R
import com.example.daejangjung2.common.base.BindingActivity
import com.example.daejangjung2.databinding.ActivityLoginBinding
import com.example.daejangjung2.feature.auth.signup.SignupFirstActivity
import com.example.daejangjung2.feature.main.MainActivity

class LoginActivity : BindingActivity<ActivityLoginBinding>(R.layout.activity_login ) {
private val viewModel: LoginViewModel by viewModels { LoginViewModel.Factory }

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = viewModel
binding.lifecycleOwner = this

//아이디 찾기
binding.tvFindId.setOnClickListener {
val intent = Intent(this, LoginFirstActivity::class.java)
startActivity(intent)
}

//비밀번호 찾기
binding.tvFindPw.setOnClickListener {
val intent = Intent(this, LoginThirdActivity::class.java)
startActivity(intent)
}

//회원가입
binding.tvSignup.setOnClickListener {
val intent = Intent(this, SignupFirstActivity::class.java)
startActivity(intent)
}

if(viewModel.isLogin.value){
login()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,30 +1,66 @@
package com.example.daejangjung2.feature.auth.login

import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.activity.viewModels
import androidx.core.widget.addTextChangedListener
import com.example.daejangjung2.R
import com.example.daejangjung2.common.base.BindingActivity
import com.example.daejangjung2.databinding.ActivityLoginBinding
import com.example.daejangjung2.databinding.ActivityLoginFirstBinding
import com.example.daejangjung2.feature.auth.signup.SignupSecondActivity
import com.example.daejangjung2.feature.main.MainActivity

class LoginFirstActivity : BindingActivity<ActivityLoginBinding>(R.layout.activity_login_first ) {
class LoginFirstActivity : BindingActivity<ActivityLoginFirstBinding>(R.layout.activity_login_first) {
private val viewModel: LoginViewModel by viewModels { LoginViewModel.Factory }

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = viewModel
binding.lifecycleOwner = this

if(viewModel.isLogin.value){
// 모든 입력 필드에 대해 텍스트 변경 리스너를 추가
binding.etFindEmail.addTextChangedListener { checkFieldsForEmptyValues() }

binding.btnContinue.setOnClickListener {
// 버튼이 활성화되어 있을 때만 다음 화면으로 이동
if (binding.btnContinue.isEnabled) {
val intent = Intent(this, LoginSecondActivity::class.java)
startActivity(intent)
}
}
}

// 모든 필드의 빈칸 여부를 확인하고 버튼 상태를 변경하는 함수
private fun checkFieldsForEmptyValues() {
val email = binding.etFindEmail.text.toString().trim()

val allFieldsFilled = email.isNotEmpty()

// 모든 필드가 비어있지 않으면 버튼 활성화
if (allFieldsFilled) {
binding.btnContinue.isEnabled = true
binding.btnContinue.setBackgroundColor(Color.parseColor("#4682FF")) // 진한 파란색으로 변경
} else {
binding.btnContinue.isEnabled = false
}



if (viewModel.isLogin.value) {
login()
}
}

private fun login(){
private fun login() {
startActivity(MainActivity.getIntent(this@LoginFirstActivity))
finish()
}

companion object {
private const val MOVE_MAIN_AFTER_LOGIN = "move_main_after_login_tag"
}
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,68 @@
package com.example.daejangjung2.feature.auth.login

import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.View
import androidx.activity.viewModels
import androidx.core.widget.addTextChangedListener
import com.example.daejangjung2.R
import com.example.daejangjung2.common.base.BindingActivity
import com.example.daejangjung2.databinding.ActivityLoginBinding
import com.example.daejangjung2.databinding.ActivityLoginFourthBinding
import com.example.daejangjung2.feature.main.MainActivity

class LoginFourthActivity : BindingActivity<ActivityLoginBinding>(R.layout.activity_login_fourth ) {
class LoginFourthActivity : BindingActivity<ActivityLoginFourthBinding>(R.layout.activity_login_fourth ) {
private val viewModel: LoginViewModel by viewModels { LoginViewModel.Factory }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = viewModel
binding.lifecycleOwner = this

// 모든 입력 필드에 대해 텍스트 변경 리스너를 추가
binding.etNewPw.addTextChangedListener { checkFieldsForEmptyValues() }
binding.etReNewPw.addTextChangedListener { checkFieldsForEmptyValues() }

binding.btnContinue.setOnClickListener {
// 버튼이 활성화되어 있을 때만 다음 화면으로 이동
if (binding.btnContinue.isEnabled) {
val intent = Intent(this, LoginFourthActivity::class.java)
startActivity(intent)
}
}
}

private val passwordPattern = Regex("^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@\$!%*?&])[A-Za-z\\d@\$!%*?&]{8,16}$")

private fun isPasswordValid(password: String): Boolean {
return passwordPattern.matches(password)
}

// 모든 필드의 빈칸 여부를 확인하고 버튼 상태를 변경하는 함수
private fun checkFieldsForEmptyValues() {
val pw = binding.etNewPw.text.toString().trim()
val repw = binding.etReNewPw.text.toString().trim()

val allFieldsFilled = pw.isNotEmpty() && repw.isNotEmpty()

val isPasswordValid = isPasswordValid(pw)

// 모든 필드가 비어있지 않으면 버튼 활성화
if (allFieldsFilled) {
binding.btnContinue.isEnabled = true
binding.btnContinue.setBackgroundColor(Color.parseColor("#4682FF")) // 진한 파란색으로 변경
} else {
binding.btnContinue.isEnabled = false
}

if (!isPasswordValid && pw.isNotEmpty()) {
binding.etNewPw.error = "비밀번호는 8~16자, 문자, 숫자, 특수 문자를 포함해야 합니다."
}

if(viewModel.isLogin.value){
login()
}

}

private fun login(){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,52 @@
package com.example.daejangjung2.feature.auth.login

import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.View
import androidx.activity.viewModels
import androidx.core.widget.addTextChangedListener
import com.example.daejangjung2.R
import com.example.daejangjung2.common.base.BindingActivity
import com.example.daejangjung2.databinding.ActivityLoginBinding
import com.example.daejangjung2.databinding.ActivityLoginSecondBinding
import com.example.daejangjung2.feature.main.MainActivity

class LoginSecondActivity : BindingActivity<ActivityLoginBinding>(R.layout.activity_login_second ) {
class LoginSecondActivity : BindingActivity<ActivityLoginSecondBinding>(R.layout.activity_login_second ) {
private val viewModel: LoginViewModel by viewModels { LoginViewModel.Factory }

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = viewModel
binding.lifecycleOwner = this

// 모든 입력 필드에 대해 텍스트 변경 리스너를 추가
binding.etCode.addTextChangedListener { checkFieldsForEmptyValues() }

binding.btnContinue.setOnClickListener {
// 버튼이 활성화되어 있을 때만 다음 화면으로 이동
if (binding.btnContinue.isEnabled) {
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
}
}
}

// 모든 필드의 빈칸 여부를 확인하고 버튼 상태를 변경하는 함수
private fun checkFieldsForEmptyValues() {
val code = binding.etCode.text.toString().trim()

val allFieldsFilled = code.isNotEmpty()

// 모든 필드가 비어있지 않으면 버튼 활성화
if (allFieldsFilled) {
binding.btnContinue.isEnabled = true
binding.btnContinue.setBackgroundColor(Color.parseColor("#4682FF")) // 진한 파란색으로 변경
} else {
binding.btnContinue.isEnabled = false
}


if(viewModel.isLogin.value){
login()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.example.daejangjung2.feature.auth.login

import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.View
import androidx.activity.viewModels
import androidx.core.widget.addTextChangedListener
import com.example.daejangjung2.R
import com.example.daejangjung2.common.base.BindingActivity
import com.example.daejangjung2.databinding.ActivityLoginBinding
import com.example.daejangjung2.databinding.ActivityLoginSecond2Binding
import com.example.daejangjung2.databinding.ActivityLoginSecondBinding
import com.example.daejangjung2.feature.main.MainActivity

class LoginSecondActivity2 : BindingActivity<ActivityLoginSecond2Binding>(R.layout.activity_login_second2 ) {
private val viewModel: LoginViewModel by viewModels { LoginViewModel.Factory }

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.vm = viewModel
binding.lifecycleOwner = this

// 모든 입력 필드에 대해 텍스트 변경 리스너를 추가
binding.etCode.addTextChangedListener { checkFieldsForEmptyValues() }

binding.btnContinue.setOnClickListener {
// 버튼이 활성화되어 있을 때만 다음 화면으로 이동
if (binding.btnContinue.isEnabled) {
val intent = Intent(this, LoginFourthActivity::class.java)
startActivity(intent)
}
}
}

// 모든 필드의 빈칸 여부를 확인하고 버튼 상태를 변경하는 함수
private fun checkFieldsForEmptyValues() {
val code = binding.etCode.text.toString().trim()

val allFieldsFilled = code.isNotEmpty()

// 모든 필드가 비어있지 않으면 버튼 활성화
if (allFieldsFilled) {
binding.btnContinue.isEnabled = true
binding.btnContinue.setBackgroundColor(Color.parseColor("#4682FF")) // 진한 파란색으로 변경
} else {
binding.btnContinue.isEnabled = false
}

if(viewModel.isLogin.value){
login()
}


if(viewModel.isLogin.value){
login()
}
}

private fun login(){
startActivity(MainActivity.getIntent(this@LoginSecondActivity2))
finish()
}

companion object {
private const val MOVE_MAIN_AFTER_LOGIN = "move_main_after_login_tag"
}
}
Loading