Skip to content

Commit

Permalink
[UI/#26] string edit
Browse files Browse the repository at this point in the history
  • Loading branch information
crownjoe committed Jan 7, 2024
2 parents 4f7f96b + 9aad080 commit ed67027
Show file tree
Hide file tree
Showing 51 changed files with 1,425 additions and 1 deletion.
13 changes: 12 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,15 @@
</intent-filter>
</activity>

<activity
android:name="com.going.presentation.todo.TodoActivity"
android:exported="false"
android:screenOrientation="portrait" />

<activity
android:name="com.going.presentation.onboarding.OnboardingProfileSettingActivity"
android:exported="false" />
android:exported="false"
android:screenOrientation="portrait" />

<activity
android:name="com.going.presentation.tendencytest.TendencyTestSplashActivity"
Expand All @@ -53,6 +59,11 @@
android:name="com.going.presentation.tendencytest.TendencyTestActivity"
android:exported="true" />

<activity
android:name="com.going.presentation.preferencetag.PreferenceTagActivity"
android:exported="false"
android:screenOrientation="portrait" />

</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.going.domain.entity

data class PreferenceData(
val number: Int,
val leftPrefer: String,
val rightPrefer: String,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.going.domain.entity.response

data class TripParticipantsListModel(
val participant: List<TripParticipantModel>,
val styleA: Int,
val styleB: Int,
val styleC: Int,
val styleD: Int,
val styleE: Int,
) {
data class TripParticipantModel(
val participantId: Long,
val name: String,
val result: Int
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.going.presentation.preferencetag

import android.os.Bundle
import androidx.activity.viewModels
import com.going.domain.entity.PreferenceData
import com.going.presentation.R
import com.going.presentation.databinding.ActivityPreferenceTagBinding
import com.going.ui.base.BaseActivity
import com.going.ui.extension.toast

class PreferenceTagActivity :
BaseActivity<ActivityPreferenceTagBinding>(R.layout.activity_preference_tag),
PreferenceTagAdapter.OnPreferenceSelectedListener {

private var _adapter: PreferenceTagAdapter? = null
private val adapter get() = requireNotNull(_adapter) { getString(R.string.adapter_not_initialized_error_msg) }

private val viewModel by viewModels<PreferenceTagViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

initAdapter()
}

private fun initAdapter() {
_adapter = PreferenceTagAdapter(this, this)
binding.rvPreferenceTag.adapter = adapter
adapter.submitList(viewModel.preferenceTagList)
}

override fun onPreferenceSelected(preference: PreferenceData) {
// 선택된 취향 태그 처리
}

override fun onDestroy() {
super.onDestroy()
_adapter = null
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.going.presentation.preferencetag

import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import com.going.domain.entity.PreferenceData
import androidx.recyclerview.widget.ListAdapter
import com.going.presentation.databinding.ItemPreferenceTagBinding
import com.going.ui.extension.ItemDiffCallback

class PreferenceTagAdapter(
context: Context,
private val listener: OnPreferenceSelectedListener
) :
ListAdapter<PreferenceData, PreferenceTagViewHolder>(diffUtil) {

private val inflater by lazy { LayoutInflater.from(context) }

interface OnPreferenceSelectedListener {
fun onPreferenceSelected(preference: PreferenceData)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PreferenceTagViewHolder {
val binding: ItemPreferenceTagBinding =
ItemPreferenceTagBinding.inflate(inflater, parent, false)
return PreferenceTagViewHolder(binding, listener)
}

override fun onBindViewHolder(holder: PreferenceTagViewHolder, position: Int) {
holder.onBind(getItem(position))
}

override fun getItemCount() = currentList.size

companion object {
private val diffUtil = ItemDiffCallback<PreferenceData>(
onItemsTheSame = { old, new -> old.number == new.number },
onContentsTheSame = { old, new -> old == new },
)
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.going.presentation.preferencetag

import androidx.appcompat.widget.AppCompatButton
import androidx.recyclerview.widget.RecyclerView
import com.going.domain.entity.PreferenceData
import com.going.presentation.R
import com.going.presentation.databinding.ItemPreferenceTagBinding

class PreferenceTagViewHolder(
val binding: ItemPreferenceTagBinding,
private val listener: PreferenceTagAdapter.OnPreferenceSelectedListener
) : RecyclerView.ViewHolder(binding.root) {

fun onBind(item: PreferenceData) {
binding.run {
tvPreferenceNumber.text = item.number.toString()
tvPreferenceLeft.text = item.leftPrefer
tvPreferenceRight.text = item.rightPrefer

rgPreferenceTag.setOnCheckedChangeListener { _, checkedId ->
val selectedButtonIdList = listOf(
R.id.rb_preference_1,
R.id.rb_preference_2,
R.id.rb_preference_3,
R.id.rb_preference_4,
R.id.rb_preference_5
)

if (checkedId in selectedButtonIdList) {
listener.onPreferenceSelected(item)
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.going.presentation.preferencetag

import androidx.lifecycle.ViewModel
import com.going.domain.entity.PreferenceData

class PreferenceTagViewModel : ViewModel() {

val preferenceTagList = listOf<PreferenceData>(
PreferenceData(
number = 1,
leftPrefer = "휴식",
rightPrefer = "관광"
),
PreferenceData(
number = 2,
leftPrefer = "관광지",
rightPrefer = "로컬 플레이스"
),
PreferenceData(
number = 3,
leftPrefer = "철처한 계획",
rightPrefer = "무계획"
),
PreferenceData(
number = 4,
leftPrefer = "찾아온 맛집",
rightPrefer = "끌리는 곳"
),
PreferenceData(
number = 5,
leftPrefer = "느긋하게",
rightPrefer = "효율적으로"
),
)

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.going.presentation.todo

import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import androidx.fragment.app.replace
import com.going.presentation.R
import com.going.presentation.databinding.ActivityTodoBinding
import com.going.presentation.todo.mytodo.MyTodoFragment
import com.going.presentation.todo.ourtodo.OurTodoFragment
import com.going.ui.base.BaseActivity
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class TodoActivity() : BaseActivity<ActivityTodoBinding>(R.layout.activity_todo) {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

initBnvItemIconTintList()
initBnvItemSelectedListener()
}

private fun initBnvItemIconTintList() {
binding.bnvTodo.itemIconTintList = null
binding.bnvTodo.selectedItemId = R.id.menu_our_todo
}

private fun initBnvItemSelectedListener() {
supportFragmentManager.findFragmentById(R.id.fcv_todo) ?: navigateTo<OurTodoFragment>()

binding.bnvTodo.setOnItemSelectedListener { menu ->
when (menu.itemId) {
R.id.menu_our_todo -> navigateTo<OurTodoFragment>()

R.id.menu_my_todo -> navigateTo<MyTodoFragment>()

else -> return@setOnItemSelectedListener false
}
true
}
}

private inline fun <reified T : Fragment> navigateTo() {
supportFragmentManager.commit {
replace<T>(R.id.fcv_todo, T::class.java.canonicalName)
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package com.going.presentation.todo.mytodo

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.going.presentation.todo.mytodo

import android.os.Bundle
import android.view.View
import com.going.presentation.R
import com.going.presentation.databinding.FragmentMyTodoBinding
import com.going.ui.base.BaseFragment
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class MyTodoFragment() : BaseFragment<FragmentMyTodoBinding>(R.layout.fragment_my_todo) {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package com.going.presentation.todo.mytodo

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
package com.going.presentation.todo.mytodo

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.going.presentation.todo.ourtodo

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import com.going.domain.entity.response.TripParticipantsListModel.TripParticipantModel
import com.going.presentation.databinding.ItemTodoFriendsBinding
import com.going.ui.extension.ItemDiffCallback

class OurTodoAdapter : ListAdapter<TripParticipantModel, OurTodoViewHolder>(diffUtil) {

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OurTodoViewHolder {
val binding: ItemTodoFriendsBinding =
ItemTodoFriendsBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return OurTodoViewHolder(binding)
}

override fun onBindViewHolder(holder: OurTodoViewHolder, position: Int) {
holder.onBind(getItem(position))
}

fun addList(newItems: List<TripParticipantModel>) {
val currentItems = currentList.toMutableList()
currentItems.addAll(newItems)
submitList(currentItems)
}

companion object {
private val diffUtil = ItemDiffCallback<TripParticipantModel>(
onItemsTheSame = { old, new -> old.participantId == new.participantId },
onContentsTheSame = { old, new -> old == new },
)
}
}
Loading

0 comments on commit ed67027

Please sign in to comment.