Skip to content

Commit

Permalink
refactor: merge the features of DataDirectoryChangeListener into Data…
Browse files Browse the repository at this point in the history
…Manager
  • Loading branch information
WhiredPlanck committed Feb 2, 2024
1 parent 5833dba commit 5d5319d
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 57 deletions.

This file was deleted.

19 changes: 19 additions & 0 deletions app/src/main/java/com/osfans/trime/data/DataManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.osfans.trime.data
import com.blankj.utilcode.util.PathUtils
import com.blankj.utilcode.util.ResourceUtils
import com.osfans.trime.util.Const
import com.osfans.trime.util.WeakHashSet
import timber.log.Timber
import java.io.File

Expand All @@ -12,6 +13,24 @@ object DataManager {

val defaultDataDirectory = File(PathUtils.getExternalStoragePath(), "rime")

private val onDataDirChangeListeners = WeakHashSet<OnDataDirChangeListener>()

fun interface OnDataDirChangeListener {
fun onDataDirChange()
}

fun addOnChangedListener(listener: OnDataDirChangeListener) {
onDataDirChangeListeners.add(listener)
}

fun removeOnChangedListener(listener: OnDataDirChangeListener) {
onDataDirChangeListeners.remove(listener)
}

fun dirFireChange() {
onDataDirChangeListeners.forEach { it.onDataDirChange() }
}

@JvmStatic
val sharedDataDir
get() = File(prefs.profile.sharedDataDir)
Expand Down
24 changes: 13 additions & 11 deletions app/src/main/java/com/osfans/trime/data/opencc/OpenCCDictManager.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.osfans.trime.data.opencc

import com.osfans.trime.data.DataDirectoryChangeListener
import androidx.annotation.Keep
import com.osfans.trime.data.DataManager
import com.osfans.trime.data.opencc.dict.Dictionary
import com.osfans.trime.data.opencc.dict.OpenCCDictionary
Expand All @@ -11,24 +11,26 @@ import java.io.File
import java.io.InputStream
import kotlin.system.measureTimeMillis

object OpenCCDictManager : DataDirectoryChangeListener.Listener {
object OpenCCDictManager {
/**
* Update sharedDir and userDir.
*/
@Keep
private val onDataDirChange =
DataManager.OnDataDirChangeListener {
sharedDir = File(DataManager.sharedDataDir, "opencc").also { it.mkdirs() }
userDir = File(DataManager.userDataDir, "opencc").also { it.mkdirs() }
}

init {
System.loadLibrary("rime_jni")
// register listener
DataDirectoryChangeListener.addDirectoryChangeListener(this)
DataManager.addOnChangedListener(onDataDirChange)
}

var sharedDir = File(DataManager.sharedDataDir, "opencc").also { it.mkdirs() }
var userDir = File(DataManager.userDataDir, "opencc").also { it.mkdirs() }

/**
* Update sharedDir and userDir.
*/
override fun onDataDirectoryChange() {
sharedDir = File(DataManager.sharedDataDir, "opencc").also { it.mkdirs() }
userDir = File(DataManager.userDataDir, "opencc").also { it.mkdirs() }
}

fun sharedDictionaries(): List<Dictionary> =
sharedDir
.listFiles()
Expand Down
19 changes: 9 additions & 10 deletions app/src/main/java/com/osfans/trime/data/sound/SoundThemeManager.kt
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
package com.osfans.trime.data.sound

import androidx.annotation.Keep
import com.charleskorn.kaml.Yaml
import com.charleskorn.kaml.YamlConfiguration
import com.osfans.trime.data.AppPrefs
import com.osfans.trime.data.DataDirectoryChangeListener
import com.osfans.trime.data.DataManager
import timber.log.Timber
import java.io.File

object SoundThemeManager : DataDirectoryChangeListener.Listener {
object SoundThemeManager {
var userDir = File(DataManager.userDataDir, "sound")

init {
// register listener
DataDirectoryChangeListener.addDirectoryChangeListener(this)
}

/**
* Update userDir.
*/
override fun onDataDirectoryChange() {
userDir = File(DataManager.userDataDir, "sound")
}
@Keep
private val onDataDirChange =
DataManager.OnDataDirChangeListener {
userDir = File(DataManager.userDataDir, "sound")
}

private val yaml =
Yaml(
Expand Down Expand Up @@ -64,6 +61,8 @@ object SoundThemeManager : DataDirectoryChangeListener.Listener {
}

fun init() {
// register listener
DataManager.addOnChangedListener(onDataDirChange)
currentSoundTheme = getSound(AppPrefs.defaultInstance().keyboard.customSoundPackage) ?: return
}

Expand Down
30 changes: 17 additions & 13 deletions app/src/main/java/com/osfans/trime/data/theme/ThemeManager.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,26 @@
package com.osfans.trime.data.theme

import androidx.annotation.Keep
import com.osfans.trime.data.AppPrefs
import com.osfans.trime.data.DataDirectoryChangeListener
import com.osfans.trime.data.DataManager
import java.io.File

object ThemeManager : DataDirectoryChangeListener.Listener {
object ThemeManager {
/**
* Update sharedThemes and userThemes.
*/
@Keep
private val onDataDirChange =
DataManager.OnDataDirChangeListener {
sharedThemes.clear()
userThemes.clear()
sharedThemes.addAll(listThemes(DataManager.sharedDataDir))
userThemes.addAll(listThemes(DataManager.userDataDir))
}

init {
// register listener
DataDirectoryChangeListener.addDirectoryChangeListener(this)
DataManager.addOnChangedListener(onDataDirChange)
}

private fun listThemes(path: File): MutableList<String> {
Expand All @@ -22,17 +34,9 @@ object ThemeManager : DataDirectoryChangeListener.Listener {
AppPrefs.defaultInstance().themeAndColor.selectedTheme = theme
}

var sharedThemes: MutableList<String> = listThemes(DataManager.sharedDataDir)
val sharedThemes: MutableList<String> = listThemes(DataManager.sharedDataDir)

var userThemes: MutableList<String> = listThemes(DataManager.userDataDir)

/**
* Update sharedThemes and userThemes.
*/
override fun onDataDirectoryChange() {
sharedThemes = listThemes(DataManager.sharedDataDir)
userThemes = listThemes(DataManager.userDataDir)
}
val userThemes: MutableList<String> = listThemes(DataManager.userDataDir)

@JvmStatic
fun getAllThemes(): List<String> {
Expand Down
6 changes: 2 additions & 4 deletions app/src/main/java/com/osfans/trime/ime/core/RimeWrapper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.osfans.trime.ime.core
import android.os.Looper
import androidx.core.os.HandlerCompat
import com.osfans.trime.core.Rime
import com.osfans.trime.data.DataDirectoryChangeListener
import com.osfans.trime.data.DataManager
import com.osfans.trime.data.theme.Theme
import com.osfans.trime.util.appContext
import com.osfans.trime.util.isStorageAvailable
Expand Down Expand Up @@ -67,9 +67,7 @@ object RimeWrapper {
_statusStateFlow.value = Status.IN_PROGRESS
mutex.unlock()

DataDirectoryChangeListener.directoryChangeListeners.forEach {
it.onDataDirectoryChange()
}
DataManager.dirFireChange()

Rime.deploy()

Expand Down

0 comments on commit 5d5319d

Please sign in to comment.