diff --git a/app/src/main/java/kr/co/sujungvillage/CommDetailActivity.kt b/app/src/main/java/kr/co/sujungvillage/CommDetailActivity.kt index e522404..d60b135 100644 --- a/app/src/main/java/kr/co/sujungvillage/CommDetailActivity.kt +++ b/app/src/main/java/kr/co/sujungvillage/CommDetailActivity.kt @@ -143,22 +143,22 @@ class CommDetailActivity : AppCompatActivity() { binding.textTitle.text = response.body()?.title binding.textCalDate.text = "${ - response.body()?.regDate?.subSequence( - 0, - 4 - ) + response.body()?.regDate?.subSequence( + 0, + 4 + ) }/${ - response.body()?.regDate?.subSequence( - 5, - 7 - ) + response.body()?.regDate?.subSequence( + 5, + 7 + ) }/${ - response.body()?.regDate?.subSequence( - 8, - 10 - ) + response.body()?.regDate?.subSequence( + 8, + 10 + ) } ${ - response.body()?.regDate?.subSequence(11, 13) + response.body()?.regDate?.subSequence(11, 13) }:${response.body()?.regDate?.subSequence(14, 16)}" binding.textContent.text = response.body()?.content // 관리자 마크 @@ -167,7 +167,8 @@ class CommDetailActivity : AppCompatActivity() { if (postWriterId >= 99990000) { binding.textAdmin.visibility = View.VISIBLE } - } catch (e: NumberFormatException) { } + } catch (e: NumberFormatException) { + } // 글 작성자 id 와 studentNum이 같으면 삭제 버튼 보이게 if (studentNum == postWriterId.toString()) { diff --git a/app/src/main/java/kr/co/sujungvillage/QnADetailActivity.kt b/app/src/main/java/kr/co/sujungvillage/QnADetailActivity.kt index f2830c5..2cebaf1 100644 --- a/app/src/main/java/kr/co/sujungvillage/QnADetailActivity.kt +++ b/app/src/main/java/kr/co/sujungvillage/QnADetailActivity.kt @@ -46,7 +46,11 @@ class QnADetailActivity : AppCompatActivity() { Log.d("MY_QUESTION_DELETE", "내 질문 삭제 성공") Log.d("MY_QUESTION_DELETE", "response : " + response.body()) - Toast.makeText(this@QnADetailActivity, "삭제되었습니다.", Toast.LENGTH_SHORT) + Toast.makeText( + this@QnADetailActivity, + "삭제되었습니다.", + Toast.LENGTH_SHORT + ) .show() finish() } diff --git a/app/src/main/java/kr/co/sujungvillage/SignUpActivity.kt b/app/src/main/java/kr/co/sujungvillage/SignUpActivity.kt index ad5b76a..db872f6 100644 --- a/app/src/main/java/kr/co/sujungvillage/SignUpActivity.kt +++ b/app/src/main/java/kr/co/sujungvillage/SignUpActivity.kt @@ -1,7 +1,6 @@ package kr.co.sujungvillage import android.content.Context -import android.content.res.AssetManager import android.graphics.Color import android.os.Bundle import android.text.Editable @@ -24,7 +23,6 @@ import retrofit2.Callback import retrofit2.Response import java.io.BufferedReader import java.io.IOException -import java.io.InputStream import java.io.InputStreamReader class SignUpActivity : AppCompatActivity() { @@ -44,9 +42,9 @@ class SignUpActivity : AppCompatActivity() { var number3 = "" var dormitory = "" var address = "" - var agreement=false - var agreement1=false - var agreement2=false + var agreement = false + var agreement1 = false + var agreement2 = false // 키보드 내리기 binding.signUpLayout.setOnClickListener { hideKeyboard() } binding.linearSignUp.setOnClickListener { hideKeyboard() } @@ -200,11 +198,11 @@ class SignUpActivity : AppCompatActivity() { override fun onNothingSelected(p0: AdapterView<*>?) { } } - //이용약관 - binding.textAgreement1Content.text=getAssetsTextString(this,"agreement1") - binding.textAgreement2Content.text=getAssetsTextString(this,"agreement2") - binding.textAgreement1Content.movementMethod= ScrollingMovementMethod() - binding.textAgreement2Content.movementMethod= ScrollingMovementMethod() + // 이용약관 + binding.textAgreement1Content.text = getAssetsTextString(this, "agreement1") + binding.textAgreement2Content.text = getAssetsTextString(this, "agreement2") + binding.textAgreement1Content.movementMethod = ScrollingMovementMethod() + binding.textAgreement2Content.movementMethod = ScrollingMovementMethod() binding.textAgreement1Content.setOnTouchListener { view, motionEvent -> binding.scroll.requestDisallowInterceptTouchEvent(true) return@setOnTouchListener false @@ -215,51 +213,55 @@ class SignUpActivity : AppCompatActivity() { } binding.checkboxAgreement.setOnClickListener { - if(binding.checkboxAgreement.isChecked){ - changeAgreement12(binding.checkboxAgreement1,true) - changeAgreement12(binding.checkboxAgreement2,true) - changeAgreement(binding.checkboxAgreement,true) - } - else{ - changeAgreement12(binding.checkboxAgreement1,false) - changeAgreement12(binding.checkboxAgreement2,false) - changeAgreement(binding.checkboxAgreement,false) + if (binding.checkboxAgreement.isChecked) { + changeAgreement12(binding.checkboxAgreement1, true) + changeAgreement12(binding.checkboxAgreement2, true) + changeAgreement(binding.checkboxAgreement, true) + } else { + changeAgreement12(binding.checkboxAgreement1, false) + changeAgreement12(binding.checkboxAgreement2, false) + changeAgreement(binding.checkboxAgreement, false) } } - binding.checkboxAgreement1.setOnClickListener{ - changeAgreement(binding.checkboxAgreement,binding.checkboxAgreement1.isChecked&&binding.checkboxAgreement2.isChecked) - if(binding.checkboxAgreement1.isChecked) - changeAgreement12(binding.checkboxAgreement1,true) - else - changeAgreement12(binding.checkboxAgreement1,false) + binding.checkboxAgreement1.setOnClickListener { + changeAgreement( + binding.checkboxAgreement, + binding.checkboxAgreement1.isChecked && binding.checkboxAgreement2.isChecked + ) + if (binding.checkboxAgreement1.isChecked) { + changeAgreement12(binding.checkboxAgreement1, true) + } else { + changeAgreement12(binding.checkboxAgreement1, false) + } } - binding.checkboxAgreement2.setOnClickListener{ - changeAgreement(binding.checkboxAgreement,binding.checkboxAgreement1.isChecked&&binding.checkboxAgreement2.isChecked) - if(binding.checkboxAgreement2.isChecked) - changeAgreement12(binding.checkboxAgreement2,true) - else - changeAgreement12(binding.checkboxAgreement2,false) + binding.checkboxAgreement2.setOnClickListener { + changeAgreement( + binding.checkboxAgreement, + binding.checkboxAgreement1.isChecked && binding.checkboxAgreement2.isChecked + ) + if (binding.checkboxAgreement2.isChecked) { + changeAgreement12(binding.checkboxAgreement2, true) + } else { + changeAgreement12(binding.checkboxAgreement2, false) + } } - - binding.btnAgreement1Detail.setOnClickListener{ - if(agreement1){ - binding.textAgreement1Content.visibility=View.GONE - agreement1=false - } - else{ - binding.textAgreement1Content.visibility=View.VISIBLE - agreement1=true + binding.btnAgreement1Detail.setOnClickListener { + if (agreement1) { + binding.textAgreement1Content.visibility = View.GONE + agreement1 = false + } else { + binding.textAgreement1Content.visibility = View.VISIBLE + agreement1 = true } } - binding.btnAgreement2Detail.setOnClickListener{ - if(agreement2){ - binding.textAgreement2Content.visibility=View.GONE - agreement2=false - } - else{ - binding.textAgreement2Content.visibility=View.VISIBLE - agreement2=true + binding.btnAgreement2Detail.setOnClickListener { + if (agreement2) { + binding.textAgreement2Content.visibility = View.GONE + agreement2 = false + } else { + binding.textAgreement2Content.visibility = View.VISIBLE + agreement2 = true } } // 회원가입 버튼 @@ -270,12 +272,13 @@ class SignUpActivity : AppCompatActivity() { number3 = binding.editNumber3.text.toString().trim() number = number1 + number2 + number3 address = binding.editAddress.text.toString().trim() - agreement=binding.checkboxAgreement.isChecked + agreement = binding.checkboxAgreement.isChecked if (id_overlap_check == 1) { if (binding.textPasswordCheckResult.visibility.toString() != "0") { if (password != "" && name != "" && number1 != "" && number2 != "" && number3 != "" && address != "") { - if(agreement){ - val signUpInfo = SignUpDTO(id, password, name, dormitory, address, number) + if (agreement) { + val signUpInfo = + SignUpDTO(id, password, name, dormitory, address, number) RetrofitBuilder.signupApi.signUp(signUpInfo) .enqueue(object : Callback { override fun onResponse( @@ -283,7 +286,11 @@ class SignUpActivity : AppCompatActivity() { response: Response ) { Log.d("SIGN_UP", response.body().toString()) - Toast.makeText(this@SignUpActivity,"회원가입이 성공적으로 완료되었습니다.",Toast.LENGTH_SHORT).show() + Toast.makeText( + this@SignUpActivity, + "회원가입이 성공적으로 완료되었습니다.", + Toast.LENGTH_SHORT + ).show() finish() } @@ -291,58 +298,76 @@ class SignUpActivity : AppCompatActivity() { Log.e("SIGN_UP", t.message.toString()) } }) - }else{ + } else { Log.d("SIGN_UP", "필수 이용약관을 모두 동의해주세요.") - Toast.makeText(this@SignUpActivity,"필수 이용약관을 모두 동의해주세요.",Toast.LENGTH_SHORT).show() + Toast.makeText( + this@SignUpActivity, + "필수 이용약관을 모두 동의해주세요.", + Toast.LENGTH_SHORT + ).show() } } else { Log.d("SIGN_UP", "모든 칸을 작성해주세요.") - Toast.makeText(this@SignUpActivity,"모든 칸을 작성해주세요.",Toast.LENGTH_SHORT).show() + Toast.makeText(this@SignUpActivity, "모든 칸을 작성해주세요.", Toast.LENGTH_SHORT) + .show() } } else { Log.d("SIGN_UP", "비밀번호를 확인해주세요.") - Toast.makeText(this@SignUpActivity,"비밀번호를 확인해주세요.",Toast.LENGTH_SHORT).show() + Toast.makeText(this@SignUpActivity, "비밀번호를 확인해주세요.", Toast.LENGTH_SHORT).show() } } else { Log.d("SIGN_UP", "id를 확인해주세요.") - Toast.makeText(this@SignUpActivity,"id를 확인해주세요.",Toast.LENGTH_SHORT).show() + Toast.makeText(this@SignUpActivity, "id를 확인해주세요.", Toast.LENGTH_SHORT).show() } } } - //이용약관, 개인정보처리방침 txt 파일 읽어오기 - fun getAssetsTextString(mContext: Context, fileName:String):String{ - val termsString=StringBuilder() - val reader:BufferedReader + + // 이용약관, 개인정보처리방침 txt 파일 읽어오기 + fun getAssetsTextString(mContext: Context, fileName: String): String { + val termsString = StringBuilder() + val reader: BufferedReader try { - reader= BufferedReader( + reader = BufferedReader( InputStreamReader(mContext.resources.assets.open("$fileName.txt")) ) - var str:String? - while(reader.readLine().also { str=it }!=null){ + var str: String? + while (reader.readLine().also { str = it } != null) { termsString.append(str) - termsString.append('\n')//줄변경 + termsString.append('\n') // 줄변경 } reader.close() return termsString.toString() - }catch (e:IOException){ + } catch (e: IOException) { e.printStackTrace() } return "fail" } - fun changeAgreement(content: CheckBox, checked:Boolean){ - val color=if(checked)ContextCompat.getColor(this,R.color.primary)else ContextCompat.getColor(this,R.color.gray_350) - content.isChecked=checked - content.background=if(checked)ContextCompat.getDrawable(this@SignUpActivity, R.drawable.style_signup_selected)else ContextCompat.getDrawable(this@SignUpActivity, R.drawable.style_signup_unselected) + fun changeAgreement(content: CheckBox, checked: Boolean) { + val color = + if (checked) ContextCompat.getColor(this, R.color.primary) else ContextCompat.getColor( + this, + R.color.gray_350 + ) + content.isChecked = checked + content.background = if (checked) ContextCompat.getDrawable( + this@SignUpActivity, + R.drawable.style_signup_selected + ) else ContextCompat.getDrawable(this@SignUpActivity, R.drawable.style_signup_unselected) content.setTextColor(color) } - fun changeAgreement12(content: CheckBox,checked:Boolean){ - val color=if(checked)ContextCompat.getColor(this,R.color.primary)else ContextCompat.getColor(this,R.color.gray_350) - content.isChecked=checked + fun changeAgreement12(content: CheckBox, checked: Boolean) { + val color = + if (checked) ContextCompat.getColor(this, R.color.primary) else ContextCompat.getColor( + this, + R.color.gray_350 + ) + content.isChecked = checked content.setTextColor(color) } + fun passwordCheck(a: String, b: String) { if (a.equals(b)) { // 비밀번호 일치 binding.textPasswordCheckResult.visibility = View.INVISIBLE diff --git a/app/src/main/java/kr/co/sujungvillage/adapter/CommAdapter.kt b/app/src/main/java/kr/co/sujungvillage/adapter/CommAdapter.kt index 2f74a7b..a114535 100644 --- a/app/src/main/java/kr/co/sujungvillage/adapter/CommAdapter.kt +++ b/app/src/main/java/kr/co/sujungvillage/adapter/CommAdapter.kt @@ -33,7 +33,12 @@ class CommAdapter : RecyclerView.Adapter() { class CommHolder(val binding: ListitemCommBinding) : RecyclerView.ViewHolder(binding.root) { fun setComm(comm: CommDTO) { binding.textTitle.text = comm.title - binding.textDate.text = "${comm.regDate.subSequence(0, 4)}.${comm.regDate.subSequence(5, 7)}.${comm.regDate.subSequence(8, 10)}" + binding.textDate.text = "${comm.regDate.subSequence(0, 4)}.${ + comm.regDate.subSequence( + 5, + 7 + ) + }.${comm.regDate.subSequence(8, 10)}" binding.textContent.text = comm.content binding.commentCount.text = "${comm.numOfComments}" @@ -42,7 +47,8 @@ class CommHolder(val binding: ListitemCommBinding) : RecyclerView.ViewHolder(bin if (comm.writerId.toInt() >= 99990000) { // 관리자인 경우 binding.textAdmin.visibility = View.VISIBLE } - } catch (e: NumberFormatException) { } + } catch (e: NumberFormatException) { + } // 게시글 클릭 시 상세 액티비티 생성 binding.root.setOnClickListener { diff --git a/app/src/main/java/kr/co/sujungvillage/adapter/CommDetailAdapter.kt b/app/src/main/java/kr/co/sujungvillage/adapter/CommDetailAdapter.kt index 75c5d8b..9cf28cf 100644 --- a/app/src/main/java/kr/co/sujungvillage/adapter/CommDetailAdapter.kt +++ b/app/src/main/java/kr/co/sujungvillage/adapter/CommDetailAdapter.kt @@ -45,9 +45,20 @@ class CommDetailHolder(val binding: ListitemCommDetailBinding, val context: Cont if (postWriterId.toString() == commDetail.writerId) { binding.textName.text = "글쓴이" } else { - binding.textName.text = "익명${commentIndex?.indexOf(commDetail.writerId)?.plus(1)}" // 익명 처리해야함. + binding.textName.text = + "익명${commentIndex?.indexOf(commDetail.writerId)?.plus(1)}" // 익명 처리해야함. } - binding.textCalDate.text = "${commDetail.regDate?.subSequence(0, 4)}/${commDetail.regDate?.subSequence(5, 7)}/${commDetail.regDate?.subSequence(8, 10)} ${commDetail.regDate?.subSequence(11, 13)}:${commDetail.regDate?.subSequence(14, 16)}" + binding.textCalDate.text = "${commDetail.regDate?.subSequence(0, 4)}/${ + commDetail.regDate?.subSequence( + 5, + 7 + ) + }/${commDetail.regDate?.subSequence(8, 10)} ${ + commDetail.regDate?.subSequence( + 11, + 13 + ) + }:${commDetail.regDate?.subSequence(14, 16)}" binding.textContent.text = "${commDetail.content}" // 관리자인지 아닌지 마크 띄우기 @@ -55,7 +66,8 @@ class CommDetailHolder(val binding: ListitemCommDetailBinding, val context: Cont if (commDetail.writerId.toInt() >= 99990000) { // 관리자인 경우 binding.textAdmin.visibility = View.VISIBLE } - } catch (e: NumberFormatException) { } + } catch (e: NumberFormatException) { + } binding.root.setOnClickListener { binding.root.context.hideKeyboard(itemView) } // 댓글 삭제 버튼 @@ -73,7 +85,10 @@ class CommDetailHolder(val binding: ListitemCommDetailBinding, val context: Cont RetrofitBuilder.communityApi.commCommentDelete(token, commDetail.id) .enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { + override fun onResponse( + call: Call, + response: Response + ) { Log.d("COMM_DELETE", response.message().toString()) } diff --git a/app/src/main/java/kr/co/sujungvillage/adapter/NoticeAdapter.kt b/app/src/main/java/kr/co/sujungvillage/adapter/NoticeAdapter.kt index 18ecdfe..284ae94 100644 --- a/app/src/main/java/kr/co/sujungvillage/adapter/NoticeAdapter.kt +++ b/app/src/main/java/kr/co/sujungvillage/adapter/NoticeAdapter.kt @@ -33,7 +33,12 @@ class NoticeHolder(val binding: ListitemNoticePostBinding) : RecyclerView.ViewHo binding.textId.text = notice.id binding.textDormitory.text = notice.dormitory binding.textTitle.text = notice.title - binding.textDate.text = "${notice.date.subSequence(0, 4)}.${notice.date.subSequence(5, 7)}.${notice.date.subSequence(8, 10)}" + binding.textDate.text = "${notice.date.subSequence(0, 4)}.${ + notice.date.subSequence( + 5, + 7 + ) + }.${notice.date.subSequence(8, 10)}" // 공지사항 클릭 시 상세 액티비티 생성 binding.root.setOnClickListener { diff --git a/app/src/main/java/kr/co/sujungvillage/api/UserService.kt b/app/src/main/java/kr/co/sujungvillage/api/UserService.kt new file mode 100644 index 0000000..66de2a3 --- /dev/null +++ b/app/src/main/java/kr/co/sujungvillage/api/UserService.kt @@ -0,0 +1,13 @@ +package kr.co.sujungvillage.api + +import retrofit2.Call +import retrofit2.http.GET +import retrofit2.http.Header + +interface UserService { + // 탈퇴하기 + @GET("/api/common/deleteUser") + fun deleteUse( + @Header("jwt_token") token: String + ): Call +} diff --git a/app/src/main/java/kr/co/sujungvillage/data/Login.kt b/app/src/main/java/kr/co/sujungvillage/data/Login.kt index 6d14cd2..4384c08 100644 --- a/app/src/main/java/kr/co/sujungvillage/data/Login.kt +++ b/app/src/main/java/kr/co/sujungvillage/data/Login.kt @@ -26,4 +26,4 @@ data class RequestTokenRefreshDto( data class ResponseTokenRefreshDto( val jwtToken: String -) : Serializable \ No newline at end of file +) : Serializable diff --git a/app/src/main/java/kr/co/sujungvillage/data/Stayout.kt b/app/src/main/java/kr/co/sujungvillage/data/Stayout.kt index 9c2454a..43bbcee 100644 --- a/app/src/main/java/kr/co/sujungvillage/data/Stayout.kt +++ b/app/src/main/java/kr/co/sujungvillage/data/Stayout.kt @@ -4,29 +4,18 @@ import com.google.gson.annotations.SerializedName import java.io.Serializable data class StayoutCreateDTO( - @SerializedName("destination") - val destination: String, - @SerializedName("reason") - val reason: String, - @SerializedName("emergencyPhoneNumber") - val emergencyNumber: String, - @SerializedName("dateToStart") - val startDate: String, - @SerializedName("dateToEnd") - val endDate: String + @SerializedName("destination") val destination: String, + @SerializedName("reason") val reason: String, + @SerializedName("emergencyPhoneNumber") val emergencyNumber: String, + @SerializedName("dateToStart") val startDate: String, + @SerializedName("dateToEnd") val endDate: String ) : Serializable data class StayoutCheckResultDTO( - @SerializedName("id") - val id: Long, - @SerializedName("userId") - val userId: String, - @SerializedName("destination") - val destination: String, - @SerializedName("reason") - val reason: String, - @SerializedName("emergencyPhoneNumber") - val emergencyNumber: String, - @SerializedName("dateToUse") - val date: String + @SerializedName("id") val id: Long, + @SerializedName("userId") val userId: String, + @SerializedName("destination") val destination: String, + @SerializedName("reason") val reason: String, + @SerializedName("emergencyPhoneNumber") val emergencyNumber: String, + @SerializedName("dateToUse") val date: String ) : Serializable diff --git a/app/src/main/java/kr/co/sujungvillage/fragment/SettingFragment.kt b/app/src/main/java/kr/co/sujungvillage/fragment/SettingFragment.kt index aceb187..1c5d362 100644 --- a/app/src/main/java/kr/co/sujungvillage/fragment/SettingFragment.kt +++ b/app/src/main/java/kr/co/sujungvillage/fragment/SettingFragment.kt @@ -1,5 +1,6 @@ package kr.co.sujungvillage.fragment +import android.app.AlertDialog import android.content.Context import android.content.Intent import android.net.Uri @@ -12,6 +13,7 @@ import android.widget.Toast import androidx.fragment.app.Fragment import kr.co.sujungvillage.AlarmActivity import kr.co.sujungvillage.LoginActivity +import kr.co.sujungvillage.base.showToast import kr.co.sujungvillage.data.HomeInfoResultDTO import kr.co.sujungvillage.databinding.FragmentSettingBinding import kr.co.sujungvillage.retrofit.RetrofitBuilder @@ -108,7 +110,29 @@ class SettingFragment : Fragment() { Toast.makeText(this.activity, "로그아웃되었습니다.", Toast.LENGTH_SHORT).show() var intent = Intent(this.activity, LoginActivity::class.java) startActivity(intent) - this.activity?.finish() + requireActivity().finish() + } + // 탈퇴하기 버튼 연결 + binding.layoutDelete.setOnClickListener { + RetrofitBuilder.userApi.deleteUse(token).enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + val dialogBuilder = AlertDialog.Builder(context) + dialogBuilder.setTitle("탈퇴하시겠습니까?") + .setPositiveButton("확인") { dialog, id -> + val intent = Intent(activity, LoginActivity::class.java) + requireContext().showToast("탈퇴가 완료되었습니다.") + startActivity(intent) + requireActivity().finish() + } + .setNegativeButton("취소") { dialog, id -> } + dialogBuilder.show() + } + + override fun onFailure(call: Call, t: Throwable) { + Log.e("SETTING_DELETE_ACCOUNT", "회원 탈퇴 실패") + Log.e("SETTING_DELETE_ACCOUNT", t.message.toString()) + } + }) } return binding.root diff --git a/app/src/main/java/kr/co/sujungvillage/retrofit/AuthIntercepter.kt b/app/src/main/java/kr/co/sujungvillage/retrofit/AuthIntercepter.kt index 56e125f..51230cc 100644 --- a/app/src/main/java/kr/co/sujungvillage/retrofit/AuthIntercepter.kt +++ b/app/src/main/java/kr/co/sujungvillage/retrofit/AuthIntercepter.kt @@ -4,7 +4,6 @@ import android.content.Intent import android.util.Log import kr.co.sujungvillage.App import kr.co.sujungvillage.LoginActivity -import kr.co.sujungvillage.base.showSnackbar import kr.co.sujungvillage.data.RequestTokenRefreshDto import kr.co.sujungvillage.data.ResponseTokenRefreshDto import kr.co.sujungvillage.retrofit.RetrofitBuilder.loginApi diff --git a/app/src/main/java/kr/co/sujungvillage/retrofit/RetrofitBuilder.kt b/app/src/main/java/kr/co/sujungvillage/retrofit/RetrofitBuilder.kt index 6cd55da..4db3449 100644 --- a/app/src/main/java/kr/co/sujungvillage/retrofit/RetrofitBuilder.kt +++ b/app/src/main/java/kr/co/sujungvillage/retrofit/RetrofitBuilder.kt @@ -11,15 +11,16 @@ import retrofit2.converter.gson.GsonConverterFactory object RetrofitBuilder { // 사용할 API 인터페이스 선언 - var communityApi: CommunityService - var homeApi: HomeService - var noticeApi: NoticeService - var qnaApi: QnAService - var rollcallApi: RollcallService - var stayoutApi: StayoutService - var loginApi: LoginService - var rewardApi: RewardService - var signupApi: SignUpService + val communityApi: CommunityService + val homeApi: HomeService + val noticeApi: NoticeService + val qnaApi: QnAService + val rollcallApi: RollcallService + val stayoutApi: StayoutService + val loginApi: LoginService + val rewardApi: RewardService + val signupApi: SignUpService + val userApi: UserService val gson: Gson = GsonBuilder().setLenient().create() @@ -50,5 +51,6 @@ object RetrofitBuilder { loginApi = retrofit.create(LoginService::class.java) rewardApi = retrofit.create(RewardService::class.java) signupApi = retrofit.create(SignUpService::class.java) + userApi = retrofit.create(UserService::class.java) } } diff --git a/app/src/main/res/layout/fragment_setting.xml b/app/src/main/res/layout/fragment_setting.xml index a99c790..07cc47d 100644 --- a/app/src/main/res/layout/fragment_setting.xml +++ b/app/src/main/res/layout/fragment_setting.xml @@ -5,26 +5,26 @@ android:id="@+id/frame" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".fragment.SettingFragment" > + tools:context=".fragment.SettingFragment"> + android:layout_height="match_parent" + android:background="#FFFBFBFB"> + app:layout_constraintTop_toTopOf="parent"> + android:textSize="20sp" /> @@ -92,8 +92,8 @@ android:layout_height="wrap_content" android:layout_marginTop="7dp" android:layout_marginRight="17dp" - android:text="" android:fontFamily="@font/medium" + android:text="" android:textColor="@color/gray_330" /> + android:fontFamily="@font/medium" + android:text="" /> @@ -153,8 +153,8 @@ android:id="@+id/text_alarm" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="알람 설정" android:fontFamily="@font/medium" + android:text="알람 설정" android:textColor="@color/gray_600" android:textSize="18sp" app:layout_constraintBottom_toBottomOf="parent" @@ -182,8 +182,8 @@ android:id="@+id/text_portal" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="성신 포탈" android:fontFamily="@font/medium" + android:text="성신 포탈" android:textColor="@color/gray_600" android:textSize="18sp" app:layout_constraintBottom_toBottomOf="parent" @@ -214,8 +214,8 @@ android:id="@+id/text_manual" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="앱 사용법" android:fontFamily="@font/medium" + android:text="앱 사용법" android:textColor="@color/gray_600" android:textSize="18sp" app:layout_constraintBottom_toBottomOf="parent" @@ -246,8 +246,8 @@ android:id="@+id/text_inquire" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="앱 문의하기" android:fontFamily="@font/medium" + android:text="앱 문의하기" android:textColor="@color/gray_600" android:textSize="18sp" app:layout_constraintBottom_toBottomOf="parent" @@ -298,6 +298,38 @@ app:layout_constraintTop_toTopOf="parent" tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" /> + + + + + + + @@ -310,9 +342,9 @@ android:layout_gravity="right" android:layout_marginTop="39dp" android:layout_marginEnd="21dp" - android:visibility="invisible" android:scaleType="fitXY" android:src="@drawable/icon_alarm_black_unread" + android:visibility="invisible" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> \ No newline at end of file