diff options
author | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-02-24 11:59:17 -0800 |
---|---|---|
committer | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-02-24 11:59:17 -0800 |
commit | a08328403be84d85c006f801169a3feed0d956a4 (patch) | |
tree | ceebece6443a3e6662a4937b911c58904bb5b1ff /app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt | |
download | WorkMode-a08328403be84d85c006f801169a3feed0d956a4.tar WorkMode-a08328403be84d85c006f801169a3feed0d956a4.tar.gz WorkMode-a08328403be84d85c006f801169a3feed0d956a4.tar.bz2 WorkMode-a08328403be84d85c006f801169a3feed0d956a4.zip |
First Commit
Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com>
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt')
-rw-r--r-- | app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt b/app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt new file mode 100644 index 0000000..c02af49 --- /dev/null +++ b/app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt @@ -0,0 +1,68 @@ +package moe.yuuta.workmode.suspend.data + +import android.content.Context +import android.content.SharedPreferences +import com.elvishew.xlog.XLog +import moe.yuuta.workmode.utils.Utils +import java.util.stream.Collectors + +/** + * An independent storage of suspended status + */ +class SuspendedStorage(private val mContext: Context) { + private val logger = XLog.tag("Storage").build() + + private fun getStorage(): SharedPreferences = mContext.getSharedPreferences("suspended", Context.MODE_PRIVATE) + + fun getList(): List<String> = (getStorage().getStringSet("list", setOf()) ?: listOf<String>()).toList() + + fun setList(set: Set<String>) { + logger.d("s() $set") + getStorage().edit().putStringSet("list", set).apply() + } + + fun setStatus(status: Status) { + getStorage().edit().putInt("status", + when (status) { + Status.OFF -> 0 + Status.ON -> 1 + }).apply() + } + + fun getStatus(): Status = + when (getStorage().getInt("status", 0)) { + 0 -> Status.OFF + 1 -> Status.ON + else -> Status.OFF + } + + fun setListMode(listMode: ListMode) { + getStorage().edit().putInt("list_mode", + when (listMode) { + ListMode.BLACKLIST -> 0 + ListMode.WHITELIST -> 1 + }).apply() + } + + fun getListMode(): ListMode = + when (getStorage().getInt("list_mode", 0)) { + 0 -> ListMode.BLACKLIST + 1 -> ListMode.WHITELIST + else -> ListMode.BLACKLIST + } + + fun cleanList(context: Context) { + val installed = mContext.packageManager.getInstalledApplications(0) + .stream() + .filter(Utils.buildGeneralApplicationInfoFilter(context)) + .map { + return@map it.packageName + } + .collect(Collectors.toList()) + setList(getList().stream() + .filter { + return@filter installed.contains(it) + } + .collect(Collectors.toSet())) + } +}
\ No newline at end of file |