Skip to content

Commit

Permalink
fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
kadersuutlu committed Aug 30, 2024
1 parent 7184005 commit 0cbab40
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.kader.kekodchallenge1.ui.activity

import android.graphics.drawable.Drawable
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
Expand All @@ -12,6 +14,7 @@ import com.kader.kekodchallenge1.ui.fragment.EgoFragment
class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding
private val addedSwitchIds = mutableListOf<Int>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -22,7 +25,8 @@ class MainActivity : AppCompatActivity() {
}

private fun setupNavigation() {
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
binding.bottomNavigation.setupWithNavController(navController)
}
Expand All @@ -31,21 +35,60 @@ class MainActivity : AppCompatActivity() {
val menu = binding.bottomNavigation.menu
menu.clear()

menu.add(0, R.id.egoFragment, 0, "Ana Ekran").setIcon(R.drawable.ic_ego_icon)
menu.add(0, R.id.egoFragment, 0, getString(R.string.ego)).setIcon(R.drawable.ic_ego_icon)

(supportFragmentManager.findFragmentById(R.id.nav_host_fragment)?.childFragmentManager?.fragments?.firstOrNull() as? EgoFragment)?.let { egoFragment ->
with(egoFragment.binding) {
if (switchJoy.isChecked) menu.add(0, R.id.joyFragment, 1, "Joy").setIcon(R.drawable.ic_joy_icon)
if (switchFear.isChecked) menu.add(0, R.id.fearFragment, 2, "Fear").setIcon(R.drawable.ic_fear_icon)
if (switchAnger.isChecked) menu.add(0, R.id.angerFragment, 3, "Anger").setIcon(R.drawable.ic_angry_icon)
if (switchDisgust.isChecked) menu.add(0, R.id.disgustFragment, 4, "Disgust").setIcon(R.drawable.ic_disgust_icon)
if (switchSadness.isChecked) menu.add(0, R.id.sadnessFragment, 5, "Sadness").setIcon(R.drawable.ic_sad_icon)
val fragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment)
?.childFragmentManager
?.fragments
?.firstOrNull { it is EgoFragment }
as? EgoFragment

fragment?.let { egoFragment ->
val switches = listOf(
R.id.joyFragment to egoFragment.binding.switchJoy,
R.id.fearFragment to egoFragment.binding.switchFear,
R.id.angerFragment to egoFragment.binding.switchAnger,
R.id.disgustFragment to egoFragment.binding.switchDisgust,
R.id.sadnessFragment to egoFragment.binding.switchSadness
)

addedSwitchIds.clear()
var switchCount = 0

switches.forEach { (fragmentId, switch) ->
if (switch.isChecked && !addedSwitchIds.contains(fragmentId)) {
if (switchCount < 4) {
menu.add(0, fragmentId, switchCount + 1, switch.text)
.setIcon(getIconForFragment(fragmentId))
addedSwitchIds.add(fragmentId)
switchCount++
} else {
switch.isChecked = false
showWarning()
return@forEach
}
}
}
}

binding.bottomNavigation.visibility = if (menu.size() > 1) View.VISIBLE else View.GONE
}

private fun showWarning() {
Toast.makeText(this, getString(R.string.max), Toast.LENGTH_SHORT).show()
}

private fun getIconForFragment(fragmentId: Int): Drawable? {
return when (fragmentId) {
R.id.joyFragment -> getDrawable(R.drawable.ic_joy_icon)
R.id.fearFragment -> getDrawable(R.drawable.ic_fear_icon)
R.id.angerFragment -> getDrawable(R.drawable.ic_angry_icon)
R.id.disgustFragment -> getDrawable(R.drawable.ic_disgust_icon)
R.id.sadnessFragment -> getDrawable(R.drawable.ic_sad_icon)
else -> null
}
}

fun hideBottomNavigation() {
binding.bottomNavigation.visibility = View.GONE
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,16 @@ class EgoFragment : BaseFragment<FragmentEgoBinding>() {
}

private fun setSwitchesEnabled(isEnabled: Boolean) {
binding.switchAnger.isEnabled = isEnabled
binding.switchDisgust.isEnabled = isEnabled
binding.switchFear.isEnabled = isEnabled
binding.switchSadness.isEnabled = isEnabled
binding.switchJoy.isEnabled = isEnabled
listOf(
binding.switchJoy,
binding.switchFear,
binding.switchAnger,
binding.switchDisgust,
binding.switchSadness
).forEach { switch ->
switch.isEnabled = isEnabled
if (!isEnabled) switch.isChecked = false
}
}

override fun createViewBinding(
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@
<string name="fear">Fear</string>
<string name="joy">Joy</string>
<string name="sadness">Sadness</string>
<string name="max">"Max 4 switch added to bottomnavigationbar "</string>
</resources>

0 comments on commit 0cbab40

Please sign in to comment.