Skip to content

Commit c9a0482

Browse files
committed
change language "on fly" + fix some bugs when app not active and then restore state
1 parent 0004920 commit c9a0482

File tree

4 files changed

+48
-6
lines changed

4 files changed

+48
-6
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.test.runar.receivers
2+
3+
import android.content.BroadcastReceiver
4+
import android.content.Context
5+
import android.content.Intent
6+
import com.test.runar.RunarLogger
7+
import com.test.runar.repository.DatabaseRepository
8+
import com.test.runar.repository.SharedDataRepository
9+
import com.test.runar.room.AppDB
10+
import com.test.runar.room.DataDB
11+
12+
class LanguageBroadcastReceiver: BroadcastReceiver() {
13+
14+
override fun onReceive(context: Context?, intent: Intent?) {
15+
AppDB.init(context!!)
16+
DatabaseRepository.reinit()
17+
SharedDataRepository.init(context)
18+
RunarLogger.logDebug("receive change language")
19+
}
20+
}

app/src/main/java/com/test/runar/repository/DatabaseRepository.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@ import com.test.runar.room.AppDB
88
import com.test.runar.room.DataDB
99

1010
object DatabaseRepository {
11-
private val appDao = AppDB.getLayoutDB().appDAO()
12-
private val dataDao = DataDB.getDataDB().dataDAO()
11+
private var appDao = AppDB.getLayoutDB().appDAO()
12+
private var dataDao = DataDB.getDataDB().dataDAO()
13+
fun reinit(){
14+
appDao = AppDB.getLayoutDB().appDAO()
15+
dataDao = DataDB.getDataDB().dataDAO()
16+
}
1317

1418
suspend fun notShow(id: Int) {
1519
dataDao.notShow(id)

app/src/main/java/com/test/runar/room/AppDB.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,9 @@ abstract class AppDB : RoomDatabase() {
2828
} else {
2929
dataBaseFilePath = "database/en_layouts.db"
3030
}
31-
synchronized(this) {
32-
context.deleteDatabase("LD_DATABASE") //stupid solution need to fix in future (maybe)
33-
INSTANCE = Room.databaseBuilder(context, AppDB::class.java, "LD_DATABASE")
31+
context.deleteDatabase("LD_DATABASE") //stupid solution need to fix in future (maybe)
32+
INSTANCE = Room.databaseBuilder(context, AppDB::class.java, "LD_DATABASE")
3433
.createFromAsset(dataBaseFilePath).build()
35-
}
3634
}
3735

3836
fun getLayoutDB(): AppDB {

app/src/main/java/com/test/runar/ui/activity/MainActivity.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.test.runar.ui.activity
22

3+
import android.content.IntentFilter
34
import android.os.Bundle
45
import android.view.WindowManager
56
import androidx.activity.viewModels
@@ -10,6 +11,7 @@ import com.test.runar.R
1011
import com.test.runar.RunarLogger
1112
import com.test.runar.databinding.ActivityMainBinding
1213
import com.test.runar.presentation.viewmodel.MainViewModel
14+
import com.test.runar.receivers.LanguageBroadcastReceiver
1315
import com.test.runar.ui.Navigator
1416
import com.test.runar.ui.dialogs.CancelDialog
1517
import com.test.runar.ui.fragments.*
@@ -18,6 +20,7 @@ class MainActivity : AppCompatActivity(), Navigator {
1820

1921
private val viewModel: MainViewModel by viewModels()
2022
private var fontSize: Float = 0f
23+
private var languageReceiver = LanguageBroadcastReceiver()
2124

2225
private lateinit var binding: ActivityMainBinding
2326

@@ -35,6 +38,9 @@ class MainActivity : AppCompatActivity(), Navigator {
3538
initFragments()
3639
}
3740

41+
this.registerReceiver(languageReceiver, IntentFilter("android.intent.action.LOCALE_CHANGED"))
42+
43+
3844
viewModel.identify()
3945
supportActionBar?.hide()
4046

@@ -66,6 +72,11 @@ class MainActivity : AppCompatActivity(), Navigator {
6672

6773
}
6874

75+
override fun onResume() {
76+
forceBarHide()
77+
super.onResume()
78+
}
79+
6980
private fun initFragments() {
7081
supportFragmentManager.beginTransaction()
7182
.add(R.id.fragmentContainer, LayoutFragment())
@@ -139,6 +150,15 @@ class MainActivity : AppCompatActivity(), Navigator {
139150
binding.bottomNavigationBar.isVisible = true
140151
}
141152

153+
fun forceBarHide(){
154+
val topFragment = supportFragmentManager.findFragmentById(R.id.fragmentContainer)
155+
when(topFragment){
156+
is LayoutFragment -> binding.bottomNavigationBar.isVisible = true
157+
is LibraryFragment -> binding.bottomNavigationBar.isVisible = true
158+
else-> binding.bottomNavigationBar.isVisible = false
159+
}
160+
}
161+
142162
companion object {
143163
private const val KEY_TO_LAYOUT_FRAGMENT_BACK = "KEY_LAYOUT_FRAGMENT"
144164
}

0 commit comments

Comments
 (0)