diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d3198abc1..3a3428a9a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -11,6 +11,7 @@
+
(AppSettings.KEY_ZOOM_MODE)?.run {
- entryValues = ZoomMode.values().names()
- setDefaultValueCompat(ZoomMode.FIT_CENTER.name)
- }
preferenceScreen?.findPreference(AppSettings.KEY_LIST_MODE)?.run {
entryValues = ListMode.values().names()
setDefaultValueCompat(ListMode.GRID.name)
}
- findPreference(AppSettings.KEY_READER_SWITCHERS)?.summaryProvider =
- MultiSummaryProvider(R.string.gestures_only)
- findPreference(AppSettings.KEY_TRACK_SOURCES)?.summaryProvider =
- MultiSummaryProvider(R.string.dont_check)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -106,17 +92,6 @@ class MainSettingsFragment : BasePreferenceFragment(R.string.settings),
override fun onPreferenceTreeClick(preference: Preference?): Boolean {
return when (preference?.key) {
- AppSettings.KEY_NOTIFICATIONS_SETTINGS -> {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
- .putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName)
- .putExtra(Settings.EXTRA_CHANNEL_ID, TrackWorker.CHANNEL_ID)
- startActivity(intent)
- } else {
- (activity as? SettingsActivity)?.openNotificationSettingsLegacy()
- }
- true
- }
AppSettings.KEY_LOCAL_STORAGE -> {
val ctx = context ?: return false
StorageSelectDialog.Builder(ctx, settings.getStorageDir(ctx), this)
diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/TrackerSettingsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/TrackerSettingsFragment.kt
new file mode 100644
index 000000000..a8e045a98
--- /dev/null
+++ b/app/src/main/java/org/koitharu/kotatsu/settings/TrackerSettingsFragment.kt
@@ -0,0 +1,86 @@
+package org.koitharu.kotatsu.settings
+
+import android.annotation.SuppressLint
+import android.content.ActivityNotFoundException
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.os.Bundle
+import android.os.PowerManager
+import android.provider.Settings
+import androidx.preference.MultiSelectListPreference
+import androidx.preference.Preference
+import com.google.android.material.snackbar.Snackbar
+import org.koitharu.kotatsu.R
+import org.koitharu.kotatsu.base.ui.BasePreferenceFragment
+import org.koitharu.kotatsu.core.prefs.AppSettings
+import org.koitharu.kotatsu.settings.utils.MultiSummaryProvider
+import org.koitharu.kotatsu.tracker.work.TrackWorker
+
+class TrackerSettingsFragment : BasePreferenceFragment(R.string.new_chapters_checking) {
+
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ addPreferencesFromResource(R.xml.pref_tracker)
+
+ findPreference(AppSettings.KEY_TRACK_SOURCES)
+ ?.summaryProvider = MultiSummaryProvider(R.string.dont_check)
+ findPreference(AppSettings.KEY_DOZE_WHITELIST)
+ ?.isVisible = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
+ }
+
+ override fun onPreferenceTreeClick(preference: Preference?): Boolean {
+ return when (preference?.key) {
+ AppSettings.KEY_NOTIFICATIONS_SETTINGS -> {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
+ .putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName)
+ .putExtra(Settings.EXTRA_CHANNEL_ID, TrackWorker.CHANNEL_ID)
+ startActivity(intent)
+ } else {
+ (activity as? SettingsActivity)?.openNotificationSettingsLegacy()
+ }
+ true
+ }
+ AppSettings.KEY_DOZE_WHITELIST -> {
+ disablePowerOptimization()
+ true
+ }
+ else -> super.onPreferenceTreeClick(preference)
+ }
+ }
+
+ @SuppressLint("BatteryLife")
+ private fun disablePowerOptimization() {
+ val context = context ?: return
+ val powerManager = context.getSystemService(Context.POWER_SERVICE) as? PowerManager
+ if (powerManager == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ Snackbar.make(
+ listView ?: return,
+ R.string.operation_not_supported,
+ Snackbar.LENGTH_LONG
+ ).show()
+ return
+ }
+ val packageName = context.packageName
+ if (!powerManager.isIgnoringBatteryOptimizations(packageName)) {
+ val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
+ .setData(Uri.parse("package:$packageName"))
+ try {
+ startActivity(intent)
+ } catch (e: ActivityNotFoundException) {
+ Snackbar.make(
+ listView ?: return,
+ R.string.operation_not_supported,
+ Snackbar.LENGTH_LONG
+ ).show()
+ }
+ } else {
+ Snackbar.make(
+ listView ?: return,
+ R.string.power_optimization_already_disabled,
+ Snackbar.LENGTH_LONG
+ ).show()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 9684800c4..db68f9eba 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -195,4 +195,8 @@
Проверка новых глав: %1$d из %2$d
Очистить ленту
Вся история обновлений будет очищена и её нельзя будет вернуть. Вы уверены?
+ Может помочь с фоновыми операциями. Используйте только если фоновая проверка новых глав не работает
+ Отключить оптимизацию батареи
+ Отпимизация батареи уже отключена
+ Проверка новых глав
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ca4f78f7b..684899d15 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -197,4 +197,8 @@
Checking for new chapters: %1$d of %2$d
Clear feed
All updates history will be cleared and this action cannot be undone. Are you sure?
+ Power optimization is already disabled
+ Helps with background operations such as checking for new chapters. Use only if you have a troubles with it
+ Disable power optimization
+ New chapters checking
\ No newline at end of file
diff --git a/app/src/main/res/xml/pref_main.xml b/app/src/main/res/xml/pref_main.xml
index e6c10b869..9d69e6c5f 100644
--- a/app/src/main/res/xml/pref_main.xml
+++ b/app/src/main/res/xml/pref_main.xml
@@ -63,63 +63,16 @@
android:title="@string/protect_application"
app:iconSpaceReserved="false" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/xml/pref_tracker.xml b/app/src/main/res/xml/pref_tracker.xml
new file mode 100644
index 000000000..74f3c8361
--- /dev/null
+++ b/app/src/main/res/xml/pref_tracker.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file