diff --git a/tvmon-app/app/build.gradle b/tvmon-app/app/build.gradle
index 081ed67..d959035 100644
--- a/tvmon-app/app/build.gradle
+++ b/tvmon-app/app/build.gradle
@@ -13,8 +13,8 @@ android {
applicationId "com.example.tvmon"
minSdk 28
targetSdk 34
- versionCode 7
- versionName "1.0.6"
+ versionCode 8
+ versionName "1.0.7"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/tvmon-app/app/src/main/AndroidManifest.xml b/tvmon-app/app/src/main/AndroidManifest.xml
index 0b197b6..113e60e 100644
--- a/tvmon-app/app/src/main/AndroidManifest.xml
+++ b/tvmon-app/app/src/main/AndroidManifest.xml
@@ -4,6 +4,7 @@
+
- Log.w(TAG, "Loading category: ${category.key} - ${category.name}")
- async {
- val row = loadCategoryRow(category)
- category.key to row
+ TvmonScraper.CATEGORIES.values
+ .filter { enabledCategories.contains(it.key) }
+ .map { category ->
+ Log.w(TAG, "Loading category: ${category.key} - ${category.name}")
+ async {
+ val row = loadCategoryRow(category)
+ category.key to row
+ }
}
- }
}
for (deferred in deferredRows) {
diff --git a/tvmon-app/app/src/main/java/com/example/tvmon/ui/settings/SettingsActivity.kt b/tvmon-app/app/src/main/java/com/example/tvmon/ui/settings/SettingsActivity.kt
index dcdae59..2bd3122 100644
--- a/tvmon-app/app/src/main/java/com/example/tvmon/ui/settings/SettingsActivity.kt
+++ b/tvmon-app/app/src/main/java/com/example/tvmon/ui/settings/SettingsActivity.kt
@@ -4,12 +4,15 @@ import android.app.AlertDialog
import android.os.Bundle
import android.view.WindowManager
import android.widget.Button
+import android.widget.LinearLayout
+import android.widget.Switch
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.example.tvmon.R
import com.example.tvmon.util.ApkDownloader
+import com.example.tvmon.util.CategoryPreferences
import com.example.tvmon.util.UpdateChecker
import kotlinx.coroutines.launch
import org.koin.android.ext.android.inject
@@ -28,9 +31,25 @@ class SettingsActivity : AppCompatActivity() {
private lateinit var btnClearCache: Button
private lateinit var btnCheckUpdate: Button
private lateinit var btnBack: Button
+ private lateinit var categoryTogglesContainer: LinearLayout
private var latestVersionInfo: com.example.tvmon.util.VersionInfo? = null
+ private val categories = listOf(
+ "popular" to "인기영상",
+ "movie" to "영화",
+ "kor_movie" to "한국영화",
+ "drama" to "드라마",
+ "ent" to "예능프로그램",
+ "sisa" to "시사/다큐",
+ "world" to "해외드라마",
+ "ott_ent" to "해외 (예능/다큐)",
+ "ani_movie" to "[극장판] 애니메이션",
+ "animation" to "일반 애니메이션",
+ "old_ent" to "추억의 예능",
+ "old_drama" to "추억의 드라마"
+ )
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -43,6 +62,7 @@ class SettingsActivity : AppCompatActivity() {
setContentView(R.layout.activity_settings)
initViews()
+ setupCategoryToggles()
loadSettings()
setupListeners()
}
@@ -53,6 +73,23 @@ class SettingsActivity : AppCompatActivity() {
btnClearCache = findViewById(R.id.btn_clear_cache)
btnCheckUpdate = findViewById(R.id.btn_check_update)
btnBack = findViewById(R.id.btn_back)
+ categoryTogglesContainer = findViewById(R.id.category_toggles_container)
+ }
+
+ private fun setupCategoryToggles() {
+ for ((key, name) in categories) {
+ val toggleView = layoutInflater.inflate(R.layout.item_category_toggle, categoryTogglesContainer, false)
+ val toggle = toggleView.findViewById(R.id.switch_category)
+ val label = toggleView.findViewById(R.id.tv_category_name)
+
+ label.text = name
+ toggle.isChecked = CategoryPreferences.isCategoryEnabled(this, key)
+ toggle.setOnCheckedChangeListener { _, isChecked ->
+ CategoryPreferences.setCategoryEnabled(this, key, isChecked)
+ }
+
+ categoryTogglesContainer.addView(toggleView)
+ }
}
private fun loadSettings() {
diff --git a/tvmon-app/app/src/main/java/com/example/tvmon/util/CategoryPreferences.kt b/tvmon-app/app/src/main/java/com/example/tvmon/util/CategoryPreferences.kt
new file mode 100644
index 0000000..dcad441
--- /dev/null
+++ b/tvmon-app/app/src/main/java/com/example/tvmon/util/CategoryPreferences.kt
@@ -0,0 +1,36 @@
+package com.example.tvmon.util
+
+import android.content.Context
+import android.content.SharedPreferences
+
+object CategoryPreferences {
+ private const val PREFS_NAME = "category_prefs"
+ private const val KEY_PREFIX = "category_enabled_"
+
+ private fun getPrefs(context: Context): SharedPreferences {
+ return context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
+ }
+
+ fun isCategoryEnabled(context: Context, categoryKey: String): Boolean {
+ return getPrefs(context).getBoolean(KEY_PREFIX + categoryKey, true)
+ }
+
+ fun setCategoryEnabled(context: Context, categoryKey: String, enabled: Boolean) {
+ getPrefs(context).edit().putBoolean(KEY_PREFIX + categoryKey, enabled).apply()
+ }
+
+ fun getEnabledCategories(context: Context): Set {
+ val prefs = getPrefs(context)
+ val enabled = mutableSetOf()
+
+ val categories = listOf("popular", "movie", "kor_movie", "drama", "ent", "sisa",
+ "world", "ott_ent", "ani_movie", "animation", "old_ent", "old_drama")
+
+ for (key in categories) {
+ if (prefs.getBoolean(KEY_PREFIX + key, true)) {
+ enabled.add(key)
+ }
+ }
+ return enabled
+ }
+}
\ No newline at end of file
diff --git a/tvmon-app/app/src/main/res/layout/activity_settings.xml b/tvmon-app/app/src/main/res/layout/activity_settings.xml
index af8621d..3efbf87 100644
--- a/tvmon-app/app/src/main/res/layout/activity_settings.xml
+++ b/tvmon-app/app/src/main/res/layout/activity_settings.xml
@@ -67,6 +67,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file