From 78f8bc7e9db4d16a649fee64da6a21bc848b1050 Mon Sep 17 00:00:00 2001 From: Nahyun Kim Date: Sun, 26 Jan 2025 02:46:44 +0900 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Refactor:=20=EC=B9=B4?= =?UTF-8?q?=ED=85=8C=EA=B3=A0=EB=A6=AC=20=ED=99=94=EB=A9=B4=20=EC=A7=84?= =?UTF-8?q?=EC=9E=85=20=EA=B3=BC=EC=A0=95=20=EA=B0=84=EC=86=8C=ED=99=94?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Related to: #346 --- app/src/main/AndroidManifest.xml | 6 - .../ui/home/category/CategoryActivity.kt | 21 -- .../ui/home/category/CategoryEditActivity.kt | 109 ---------- .../home/category/CategorySettingFragment.kt | 129 ------------ .../ScheduleDialogCategoryFragment.kt | 11 +- app/src/main/res/layout/activity_category.xml | 26 --- .../res/layout/activity_category_edit.xml | 52 ----- .../res/layout/fragment_category_setting.xml | 197 ------------------ 8 files changed, 2 insertions(+), 549 deletions(-) delete mode 100644 app/src/main/java/com/mongmong/namo/presentation/ui/home/category/CategoryActivity.kt delete mode 100644 app/src/main/java/com/mongmong/namo/presentation/ui/home/category/CategoryEditActivity.kt delete mode 100644 app/src/main/java/com/mongmong/namo/presentation/ui/home/category/CategorySettingFragment.kt delete mode 100644 app/src/main/res/layout/activity_category.xml delete mode 100644 app/src/main/res/layout/activity_category_edit.xml delete mode 100644 app/src/main/res/layout/fragment_category_setting.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dfbf512e..383ba76f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -75,12 +75,6 @@ android:name=".presentation.ui.home.schedule.map.MapActivity" android:exported="false" android:windowSoftInputMode="adjustPan" /> - - (R.layout.activity_category) { - override fun setup() { - supportFragmentManager.beginTransaction() - .replace(R.id.category_frm, CategorySettingFragment()) - .commitAllowingStateLoss() - - binding.categoryDarkView.setOnClickListener { - finish() - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/mongmong/namo/presentation/ui/home/category/CategoryEditActivity.kt b/app/src/main/java/com/mongmong/namo/presentation/ui/home/category/CategoryEditActivity.kt deleted file mode 100644 index c3ea4d87..00000000 --- a/app/src/main/java/com/mongmong/namo/presentation/ui/home/category/CategoryEditActivity.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.mongmong.namo.presentation.ui.home.category - -import android.content.Context -import android.widget.Toast -import androidx.activity.viewModels -import androidx.lifecycle.lifecycleScope -import com.google.gson.Gson -import com.google.gson.JsonParseException -import com.google.gson.reflect.TypeToken -import com.mongmong.namo.R -import com.mongmong.namo.databinding.ActivityCategoryEditBinding -import com.mongmong.namo.domain.model.CategoryModel -import com.mongmong.namo.presentation.config.BaseActivity -import com.mongmong.namo.presentation.enums.SuccessType -import com.mongmong.namo.presentation.ui.common.ConfirmDialog -import dagger.hilt.android.AndroidEntryPoint -import kotlinx.coroutines.launch - -@AndroidEntryPoint -class CategoryEditActivity - : BaseActivity(R.layout.activity_category_edit), - ConfirmDialog.ConfirmDialogInterface { - - private val viewModel: CategoryViewModel by viewModels() - - override fun setup() { - binding.viewModel = viewModel - - loadPref() - initClickListeners() - initObservers() - - supportFragmentManager.beginTransaction() - .replace(R.id.category_edit_frm, CategoryDetailFragment()) - .commitAllowingStateLoss() - } - - private fun initClickListeners() { - // 다크뷰 클릭 시 화면 종료 -// binding.categoryDarkView.setOnClickListener { -// finish() -// } - - // 카테고리 삭제 진행 - binding.categoryDeleteBtn.setOnClickListener { - if (viewModel.canDeleteCategory.value == false) { - Toast.makeText(this, "기본 카테고리는 삭제할 수 없습니다.", Toast.LENGTH_SHORT).show() - return@setOnClickListener - } - // 다이얼로그 - val title = "카테고리를 삭제하시겠어요?" - val content = "삭제하더라도 카테고리에\n포함된 일정은 사라지지 않습니다." - - val dialog = ConfirmDialog(this@CategoryEditActivity, title, content, "삭제", 0) - dialog.isCancelable = false - dialog.show(this.supportFragmentManager, "ConfirmDialog") - } - } - - private fun loadPref() { - // 삭제 여부 체크 - viewModel.setDeliable(intent.getBooleanExtra("canDelete", false)) - // roomDB - val spf = getSharedPreferences(CategorySettingFragment.CATEGORY_KEY_PREFS, Context.MODE_PRIVATE) - val gson = Gson() - val json = spf.getString(CategorySettingFragment.CATEGORY_DATA, "") - try { - // 데이터에 타입을 부여하기 위한 typeToken - val typeToken = object : TypeToken() {}.type - // 데이터 받기 - viewModel.setCategory(gson.fromJson(json, typeToken)) - } catch (e: JsonParseException) { // 파싱이 안 될 경우 - e.printStackTrace() - } - } - - private fun initObservers() { - viewModel.isComplete.observe(this) { isComplete -> - // 삭제 작업이 완료된 후 뒤로가기 - if (isComplete) { - viewModel.completeState.observe(this) { state -> - when(state) { - SuccessType.DELETE -> Toast.makeText(this, "카테고리가 삭제되었습니다.", Toast.LENGTH_SHORT).show() - else -> {} - } - } - finish() - } - } - } - - private fun deleteCategory() { - //TODO: 기본 카테고리 삭제 불가 처리 -// category.isUpload = UploadState.IS_NOT_UPLOAD.state -// category.state = RoomState.DELETED.state - viewModel.deleteCategory() - - // 서버 통신 -// uploadToServer(RoomState.DELETED.state) - } - - override fun onClickYesButton(id: Int) { - // 삭제 버튼 클릭하면 삭제 진행 - lifecycleScope.launch { - deleteCategory() - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/mongmong/namo/presentation/ui/home/category/CategorySettingFragment.kt b/app/src/main/java/com/mongmong/namo/presentation/ui/home/category/CategorySettingFragment.kt deleted file mode 100644 index bf2de3e6..00000000 --- a/app/src/main/java/com/mongmong/namo/presentation/ui/home/category/CategorySettingFragment.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.mongmong.namo.presentation.ui.home.category - -import android.content.Context -import android.content.Intent -import android.util.Log -import androidx.fragment.app.viewModels -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.GridLayoutManager -import com.mongmong.namo.R -import com.mongmong.namo.databinding.FragmentCategorySettingBinding -import com.mongmong.namo.presentation.ui.home.category.adapter.SetCategoryRVAdapter -import com.mongmong.namo.domain.model.CategoryModel -import com.google.gson.Gson -import com.mongmong.namo.presentation.config.BaseFragment -import dagger.hilt.android.AndroidEntryPoint -import kotlinx.coroutines.launch - -@AndroidEntryPoint -class CategorySettingFragment: BaseFragment(R.layout.fragment_category_setting) { - private lateinit var categoryRVAdapter: SetCategoryRVAdapter - - private val viewModel: CategoryViewModel by viewModels() - - override fun setup() { - binding.viewModel = viewModel - - initObserve() - onClickSchedule() - } - - override fun onResume() { - super.onResume() - - Log.d("CategorySettingFrag", "onResume()") - getCategoryList() - setAdapter() - } - - private fun onClickSchedule() { - // 닫힘 버튼 누르면 종료 - binding.categoryCloseTv.setOnClickListener { - activity?.finish() - } - - // 저장 버튼 - binding.categorySaveTv.setOnClickListener { - activity?.finish() - } - - // 팔레트 설정 - binding.categoryCalendarPaletteSetting.setOnClickListener { - - } - - // 카테고리 추가 - onClickCategoryAddBtn() - } - - private fun onClickCategoryAddBtn() { - binding.categoryAddBtn.setOnClickListener { // 새 카테고리 - requireActivity().supportFragmentManager.beginTransaction() - .add(R.id.category_frm, CategoryDetailFragment()) - .addToBackStack(null) // 백 스택에 트랜잭션을 추가 - .commitAllowingStateLoss() - } - } - - private fun setAdapter() { - Log.d("getCategories", "initRV") - categoryRVAdapter = SetCategoryRVAdapter() - binding.categoryCalendarRv.apply { - adapter = categoryRVAdapter - layoutManager = GridLayoutManager(context, 2) - } - categoryRVAdapter.setCategoryClickListener(object: SetCategoryRVAdapter.MyItemClickListener { - // 아이템 클릭 - override fun onItemClick(category: CategoryModel, position: Int) { - Log.d("Category-Set-FRAG", "카테고리 아이템을 클릭했음") - Log.e("SET-CATEGORY", "$category , $position") - - // 데이터 저장 - saveClickedData(category) - categoryRVAdapter.notifyItemChanged(position) - // 편집 화면으로 이동 - val intent = Intent(requireActivity(), CategoryEditActivity()::class.java) - intent.putExtra("canDelete", (position != 0 && position != 1)) // 기본 카테고리는 삭제 불가 - startActivity(intent) - } - }) - } - - private fun initObserve() { - viewModel.categoryList.observe(viewLifecycleOwner) { - if (!it.isNullOrEmpty()) { - categoryRVAdapter.addCategory(it as ArrayList) - } - } - } - - /** 카테고리 조회 */ - private fun getCategoryList() { - lifecycleScope.launch{ - viewModel.getCategories() - } - } - - private fun saveClickedData(dataSet: CategoryModel) { - // 클릭한 카테고리 데이터를 편집 화면으로 넘기기 위함 - val spf = requireActivity().getSharedPreferences(CATEGORY_KEY_PREFS, Context.MODE_PRIVATE) - val editor = spf.edit() - val gson = Gson() - val json = gson.toJson(dataSet) // 카테고리 데이터 변환 -// Log.d("Category", "categoryJson: $json") - - // spf에 저장 - editor - .putString(CATEGORY_DATA, json) - .putLong(CATEGORY_ID, dataSet.categoryId) - .apply() - - Log.d("debug", "Category Data saved") - } - - companion object { - const val CATEGORY_KEY_PREFS = "category" - const val CATEGORY_DATA = "category_data" - const val CATEGORY_ID = "categoryId" - } -} \ No newline at end of file diff --git a/app/src/main/java/com/mongmong/namo/presentation/ui/home/schedule/ScheduleDialogCategoryFragment.kt b/app/src/main/java/com/mongmong/namo/presentation/ui/home/schedule/ScheduleDialogCategoryFragment.kt index 4a9578fb..d117a3f3 100644 --- a/app/src/main/java/com/mongmong/namo/presentation/ui/home/schedule/ScheduleDialogCategoryFragment.kt +++ b/app/src/main/java/com/mongmong/namo/presentation/ui/home/schedule/ScheduleDialogCategoryFragment.kt @@ -1,16 +1,13 @@ package com.mongmong.namo.presentation.ui.home.schedule -import android.content.Intent -import android.util.Log import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import com.mongmong.namo.R -import com.mongmong.namo.presentation.ui.home.schedule.adapter.DialogCategoryRVAdapter -import com.mongmong.namo.domain.model.CategoryModel import com.mongmong.namo.databinding.FragmentScheduleDialogCategoryBinding +import com.mongmong.namo.domain.model.CategoryModel import com.mongmong.namo.presentation.config.BaseFragment -import com.mongmong.namo.presentation.ui.home.category.CategoryActivity +import com.mongmong.namo.presentation.ui.home.schedule.adapter.DialogCategoryRVAdapter import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint @@ -38,7 +35,6 @@ class ScheduleDialogCategoryFragment // 카테고리 추가 binding.dialogScheduleCategoryAddBtn.setOnClickListener { findNavController().navigate(R.id.action_scheduleDialogCategoryFragment_to_categoryFragment) -// startActivity(Intent(activity, CategoryActivity::class.java)) } } @@ -50,16 +46,13 @@ class ScheduleDialogCategoryFragment override fun onSelectCategory(category: CategoryModel) { viewModel.updateCategory(category) val action = ScheduleDialogCategoryFragmentDirections.actionScheduleDialogCategoryFragmentToScheduleDialogBasicFragment() - Log.d("CategoryFragment", "selected category: $category") findNavController().navigate(action) } // 카테고리 편집 화면으로 이동 override fun onEditCategory(category: CategoryModel) { val action = ScheduleDialogCategoryFragmentDirections.actionScheduleDialogCategoryFragmentToCategoryFragment(category) - Log.d("CategoryFragment", "selected category: $category") findNavController().navigate(action) -// findNavController().navigate(R.id.action_scheduleDialogCategoryFragment_to_categoryFragment) } }) diff --git a/app/src/main/res/layout/activity_category.xml b/app/src/main/res/layout/activity_category.xml deleted file mode 100644 index a26a4ceb..00000000 --- a/app/src/main/res/layout/activity_category.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_category_edit.xml b/app/src/main/res/layout/activity_category_edit.xml deleted file mode 100644 index 9e38bb4b..00000000 --- a/app/src/main/res/layout/activity_category_edit.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_category_setting.xml b/app/src/main/res/layout/fragment_category_setting.xml deleted file mode 100644 index 57986026..00000000 --- a/app/src/main/res/layout/fragment_category_setting.xml +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file