diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a5deacc6..0e570bcc 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ - + - - - - - - - @@ -45,6 +38,13 @@ android:name=".presentation.ui.login.LoginActivity" android:exported="true"> + + + + + + + ) : BaseAdapter() { + private var selectedjobList =arrayListOf() + + override fun getCount(): Int = jobgroups.size + + override fun getItem(position: Int): Any { + return jobgroups[position].jobgroup + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + var view: View = LayoutInflater.from(context).inflate(R.layout.item_job_group, null) + var btn: Button = view.findViewById(R.id.btn_job_group) + //var surroundView: View = LayoutInflater.from(context).inflate(R.layout.activity_job_group, null) + //var completeBtn: Button = surroundView.findViewById(R.id.btn_complete) + + fun setItem(jobgroup: String) { + btn.text= jobgroup + } + setItem(jobgroups[position].jobgroup) + + // 1개 이상 직군 선택시 완료 버튼 활성화 + /*fun activateCompleteBtn() { + if (selectedjobList.size > 0) { + completeBtn.setBackgroundColor(ContextCompat.getColor(context, R.color.main_pink)) + completeBtn.setBackgroundResource(R.drawable.ic_job_complete_clicked) + completeBtn.isEnabled = true + Log.d("JobGroupActivity", "selectedData크기 : ${selectedjobList.size}이므로 버튼 활성화 ") + } else { + completeBtn.setBackgroundResource(R.drawable.ic_job_complete) + completeBtn.isEnabled = false + } + }*/ + + btn.setOnClickListener{ +// 이미 선택했던 직군 선택시 버튼 변경 + if (selectedjobList.contains(btn.text)) { + btn.setBackgroundResource(R.drawable.ic_job_button) + btn.setTextColor(ContextCompat.getColor(context, R.color.black)) + selectedjobList.remove(btn.text) + Log.d("JobGroupAdapter", "removed ${btn.text} from selectedjobList") + } + // 최대 선택 가능한 직군 개수(=3) 제한 + else if(selectedjobList.size==3) { + // 아무일도 일어나지 않음^___^ + } + // 새롭게 직군 선택시 버튼 변경 + else { + btn.setBackgroundResource(R.drawable.ic_job_button_clicked) + btn.setTextColor(ContextCompat.getColor(context, R.color.sub_bage)) + selectedjobList.add(btn.text.toString()) + Log.d("JobGroupAdapter", "added ${btn.text} from selectedjobList") + Log.d("JobGroupAdapter", "selectedjobList크기 : ${selectedjobList.size} ") + } + + } + + return view + } + + fun getSelectedList(): ArrayList{ + + return selectedjobList + + } + + +} + + + diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroupActivity.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroupActivity.kt new file mode 100644 index 00000000..b022f909 --- /dev/null +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroupActivity.kt @@ -0,0 +1,95 @@ +package com.example.cherry_pick_android.presentation.ui.jobGroup + +import android.app.Activity +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import android.widget.AdapterView +import android.widget.Button +import android.widget.GridView +import android.widget.ImageButton +import com.example.cherry_pick_android.R +import com.example.cherry_pick_android.domain.model.JobGroup +import com.example.cherry_pick_android.presentation.adapter.JobGroupAdapter +import com.example.cherry_pick_android.presentation.ui.jobGroup.JobGroups.jobgroups +import com.example.cherry_pick_android.presentation.ui.mypage.ProfileActivity + +class JobGroupActivity : AppCompatActivity() { + private lateinit var adapter: JobGroupAdapter + private lateinit var gridView: GridView + private lateinit var arrayList: ArrayList + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_job_group) + + gridView = findViewById(R.id.gv_job_group) + arrayList = ArrayList() + adapter = JobGroupAdapter(applicationContext, jobgroups!!) + gridView?.adapter = adapter + + var selectedData = adapter.getSelectedList() + Log.d("JobGroupActivity", "$selectedData") + + gridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + Log.e("JobGroupActivity", "onItemCli ckListener is working") + var jobgroupItem: JobGroup = jobgroups.get(position) + arrayList.add(jobgroupItem.toString()) + Log.d("JobGroupActivity", "arrayList : $arrayList ") + + var selectedData = adapter.getSelectedList() + Log.d("JobGroupActivity", "$selectedData") + + } + + GoToProfile() + clickcompletebutton() + //activateCompleteBtn() + } + + private fun GoToProfile() { + val backbtn : ImageButton = findViewById(R.id.ibtn_job_change_back) + backbtn.setOnClickListener{ + var selectedData = adapter.getSelectedList() + Log.d("JobGroupActivity","$selectedData") + + finish() + } + } + + // 프로필페이지로 이동 = 완료버튼 클릭 + private fun clickcompletebutton() { + val completeBtn : Button = findViewById(R.id.btn_complete) + completeBtn.setOnClickListener{ + var selectedData = adapter.getSelectedList() + Log.d("JobGroupActivity","$selectedData") + + val intent = Intent(this, ProfileActivity::class.java).apply{ + putStringArrayListExtra("selectedJobList",selectedData) + } + setResult(Activity.RESULT_OK,intent) + if(!isFinishing) finish() + } + } + + private fun activateCompleteBtn() { + val completeBtn : Button = findViewById(R.id.btn_complete) + +// 직군 1개이상 선택시 완료 버튼 활성화 + if (arrayList.size > 0) { + completeBtn.setBackgroundResource(R.drawable.ic_job_complete_clicked) + completeBtn.isEnabled= true + Log.d("JobGroupActivity", "arrayList크기 : ${arrayList.size}이므로 버튼 활성화 ") + + } + else{ + completeBtn.setBackgroundResource(R.drawable.ic_job_complete) + completeBtn.isEnabled= false + } + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroups.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroups.kt new file mode 100644 index 00000000..ff9143ce --- /dev/null +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroups.kt @@ -0,0 +1,14 @@ +package com.example.cherry_pick_android.presentation.ui.jobGroup + +import com.example.cherry_pick_android.domain.model.JobGroup + +object JobGroups { + val jobgroups = listOf( + JobGroup("철강"), JobGroup("석유·화학"), JobGroup("정유"), + JobGroup("2차 전지"), JobGroup("반도체"), JobGroup("디스플레이"), + JobGroup("휴대폰"), JobGroup("IT"), JobGroup("자동차"), + JobGroup("조선"), JobGroup("해운"), JobGroup("F&B"), + JobGroup("소매유통"), JobGroup("건설"), JobGroup("호텔·여행·항공"), + JobGroup("섬유·의류"), + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt index 4b4c8b78..29abb1f7 100644 --- a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt @@ -1,20 +1,55 @@ package com.example.cherry_pick_android.presentation.ui.mypage +import android.content.Intent import androidx.fragment.app.Fragment import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.example.cherry_pick_android.R +import com.example.cherry_pick_android.databinding.FragmentMypageBinding class MyPageFragment : Fragment() { - + private var _binding: FragmentMypageBinding? = null + private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_mypage, container, false) + _binding = FragmentMypageBinding.inflate(inflater, container, false) + val view = binding.root + + setButton() + + return view + } + + override fun onDestroyView() { + super.onDestroyView() } + + private fun setButton() { + binding.apply { + // 계정설정 (프로필) 페이지로 이동 + ibtnMypageToProfile.setOnClickListener{ + val intent = Intent(it.context,ProfileActivity::class.java) + it.context.startActivity(intent) + } + // 스토어 별점 남기기 이동 + ibtnMoveToScore.setOnClickListener { + // val intent = Intent(Intent.ACTION_VIEW) + // intent.data = Uri.parse("market://details?id=$packageName") + // requireContext().startActivity(intent) + } + // 이용약관 및 사용자 정책 페이지 이동 + ibtnMoveToPolicy.setOnClickListener { + + } + // 언론사 연락처 + + // 개인정보처리방침 + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/ProfileActivity.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/ProfileActivity.kt index 28e71bd7..84df2c69 100644 --- a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/ProfileActivity.kt +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/ProfileActivity.kt @@ -1,15 +1,105 @@ package com.example.cherry_pick_android.presentation.ui.mypage +import android.app.Activity +import android.content.Intent import android.os.Bundle +import android.util.Log +import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity +import androidx.databinding.DataBindingUtil.setContentView +import com.example.cherry_pick_android.R import com.example.cherry_pick_android.databinding.ActivityProfileBinding +import com.example.cherry_pick_android.presentation.ui.jobGroup.JobGroupActivity class ProfileActivity : AppCompatActivity() { private lateinit var binding: ActivityProfileBinding + + private val getResultText = registerForActivityResult( + ActivityResultContracts.StartActivityForResult()){ + result-> if (result.resultCode == RESULT_OK){ + val returnString = result.data?.getExtras()?.getStringArrayList("selectedJobList") + Log.e("ProfileActivity","${returnString}") + binding.tvProfileJob.text = returnString?.joinToString(", ") + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityProfileBinding.inflate(layoutInflater) val view = binding.root setContentView(view) + + goBack() + ChangeImage() + ChangeName() + ChangeJobInterest() + LeaveAccount() + + } + + // 마이페이지로 돌아가기 = 뒤로가기 + private fun goBack() { + binding.ibtnProfileBack.setOnClickListener{ + finish() + } + } + + // 프로필 사진 변경 + private fun ChangeImage() { + binding.ivProfilePic.setOnClickListener{ + + // 앨범에서 사진 선택 + + // 촬영하기->고유 이름으로 파일 생성->갤러리에 사진추가 + //dispatchTakePictureIntent() + //createImageFile() + //galleryAddPic() + // 기본 이미지로 변경 + + // 취소 + + } + } + + // 직군정보 변경페이지로 이동 + private fun ChangeJobInterest() { + binding.ibtnProfileJobChange.setOnClickListener { + //val intent = Intent(this,JobGroupActivity::class.java) + //startActivity(intent) + val intent = Intent(this, JobGroupActivity::class.java) + getResultText.launch(intent) + } + } + + // 이름 변경을 위해 edittext 활성화 + var cnt=0 // 연필버튼 또는 완료버튼 + private fun ChangeName() { + binding.ibtnProfileNameChange.setOnClickListener{ + cnt+=1 + + if (cnt%2==0) { + binding.etProfileName.isClickable= false + binding.etProfileName.isFocusable= false + binding.etProfileName.isFocusableInTouchMode= false + binding.etProfileName.isEnabled= false + binding.etProfileName.setTextColor(getColor(R.color.black)) + binding.ibtnProfileNameChange.setImageResource(R.drawable.ic_pencil) + } + else { + binding.etProfileName.isClickable= true + binding.etProfileName.isFocusable= true + binding.etProfileName.isFocusableInTouchMode= true + binding.etProfileName.isEnabled= true + binding.etProfileName.setTextColor(getColor(R.color.main_pink)) + binding.ibtnProfileNameChange.setImageResource(R.drawable.ic_pencil_complete) + } + } + } + + // 회원 탈퇴 + private fun LeaveAccount() { + binding.tvLeaveAccount.setOnClickListener{ + + } } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_job_button.xml b/app/src/main/res/drawable/ic_job_button.xml new file mode 100644 index 00000000..11f3f7b3 --- /dev/null +++ b/app/src/main/res/drawable/ic_job_button.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_job_button_clicked.xml b/app/src/main/res/drawable/ic_job_button_clicked.xml new file mode 100644 index 00000000..22d5b17c --- /dev/null +++ b/app/src/main/res/drawable/ic_job_button_clicked.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_job_complete.xml b/app/src/main/res/drawable/ic_job_complete.xml new file mode 100644 index 00000000..3db8f67e --- /dev/null +++ b/app/src/main/res/drawable/ic_job_complete.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_job_complete_clicked.xml b/app/src/main/res/drawable/ic_job_complete_clicked.xml new file mode 100644 index 00000000..8bd3bf2b --- /dev/null +++ b/app/src/main/res/drawable/ic_job_complete_clicked.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_mypage_menu.xml b/app/src/main/res/drawable/ic_mypage_menu.xml new file mode 100644 index 00000000..0cdebe26 --- /dev/null +++ b/app/src/main/res/drawable/ic_mypage_menu.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable/ic_mypage_to_profile.xml b/app/src/main/res/drawable/ic_mypage_to_profile.xml new file mode 100644 index 00000000..f0f1131d --- /dev/null +++ b/app/src/main/res/drawable/ic_mypage_to_profile.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_mypage_user.xml b/app/src/main/res/drawable/ic_mypage_user.xml new file mode 100644 index 00000000..e6a098a7 --- /dev/null +++ b/app/src/main/res/drawable/ic_mypage_user.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_pensil.xml b/app/src/main/res/drawable/ic_pencil.xml similarity index 100% rename from app/src/main/res/drawable/ic_pensil.xml rename to app/src/main/res/drawable/ic_pencil.xml diff --git a/app/src/main/res/drawable/ic_pencil_complete.xml b/app/src/main/res/drawable/ic_pencil_complete.xml new file mode 100644 index 00000000..ba5b4602 --- /dev/null +++ b/app/src/main/res/drawable/ic_pencil_complete.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_change_job.png b/app/src/main/res/drawable/icon_change_job.png deleted file mode 100644 index a5f1a1e5..00000000 Binary files a/app/src/main/res/drawable/icon_change_job.png and /dev/null differ diff --git a/app/src/main/res/drawable/icon_keyword_setting.png b/app/src/main/res/drawable/icon_keyword_setting.png deleted file mode 100644 index 0583048b..00000000 Binary files a/app/src/main/res/drawable/icon_keyword_setting.png and /dev/null differ diff --git a/app/src/main/res/drawable/icon_profile_leave_account.png b/app/src/main/res/drawable/icon_profile_leave_account.png deleted file mode 100644 index a9413831..00000000 Binary files a/app/src/main/res/drawable/icon_profile_leave_account.png and /dev/null differ diff --git a/app/src/main/res/drawable/icon_profile_logout.png b/app/src/main/res/drawable/icon_profile_logout.png deleted file mode 100644 index c79180a6..00000000 Binary files a/app/src/main/res/drawable/icon_profile_logout.png and /dev/null differ diff --git a/app/src/main/res/drawable/icon_saved_article.png b/app/src/main/res/drawable/icon_saved_article.png deleted file mode 100644 index 633ce14e..00000000 Binary files a/app/src/main/res/drawable/icon_saved_article.png and /dev/null differ diff --git a/app/src/main/res/layout/activity_job_group.xml b/app/src/main/res/layout/activity_job_group.xml new file mode 100644 index 00000000..b5c91529 --- /dev/null +++ b/app/src/main/res/layout/activity_job_group.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index 046ded37..c87b00e2 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -74,7 +74,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/ic_my_page" /> + app:srcCompat="@drawable/ic_mypage_user" /> + app:srcCompat="@drawable/ic_pencil" /> @@ -237,8 +237,8 @@ android:layout_height="wrap_content" android:orientation="horizontal"> - + app:srcCompat="@drawable/ic_pencil" /> diff --git a/app/src/main/res/layout/fragment_mypage.xml b/app/src/main/res/layout/fragment_mypage.xml index 6379ceec..903a9fd6 100644 --- a/app/src/main/res/layout/fragment_mypage.xml +++ b/app/src/main/res/layout/fragment_mypage.xml @@ -1,34 +1,79 @@ - - + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toTopOf="@+id/ll_mypage_menu"> + + + + + + + + + - - + app:layout_constraintTop_toBottomOf="@+id/ll_mypage_buttons" > + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + android:orientation="horizontal"> - - + android:text="@string/mypage_score_appstore" + android:layout_gravity="start"/> + + - - + android:orientation="horizontal" + android:layout_marginTop="15dp"> + android:text="@string/mypage_user_policy" + android:layout_gravity="start"/> + + + + + + + + diff --git a/app/src/main/res/layout/item_job_group.xml b/app/src/main/res/layout/item_job_group.xml new file mode 100644 index 00000000..f49d1442 --- /dev/null +++ b/app/src/main/res/layout/item_job_group.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 43698bf4..dd192d21 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -6,6 +6,7 @@ #C8C8C8 #6B6B6B #373737 + #8A8A8A #FF4F6E #FFF4F6 #FEFFDE diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 08571705..8e68d3b8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,7 +35,6 @@ 2차전지 - 유저네임a 저장한 기사 @@ -81,7 +80,7 @@ 원하는 주제를 검색하세요 - + 앗! 아직 등록된 키워드가 없어요 이런 키워드는 어때요? @@ -134,5 +133,10 @@ 기사를 스크랩했어요! 기사 스크랩을 해제했어요! + + 님이 변경을 희망하는 + 직군을 선택해주세요! + 최대 3개 선택 및 추후 변경 가능합니다. + 완료 \ No newline at end of file