diff --git a/app/src/main/kotlin/com/hippo/ehviewer/icons/filled/Crop.kt b/app/src/main/kotlin/com/hippo/ehviewer/icons/filled/Crop.kt
new file mode 100644
index 000000000..a3ff9eedc
--- /dev/null
+++ b/app/src/main/kotlin/com/hippo/ehviewer/icons/filled/Crop.kt
@@ -0,0 +1,39 @@
+package com.hippo.ehviewer.icons.filled
+
+import androidx.compose.material.icons.materialIcon
+import androidx.compose.material.icons.materialPath
+import com.hippo.ehviewer.icons.EhIcons
+import com.hippo.ehviewer.util.unsafeLazy
+
+val EhIcons.Filled.Crop by unsafeLazy {
+ materialIcon(name = "Crop") {
+ materialPath {
+ moveTo(17.0F, 15.0F)
+ horizontalLineToRelative(2.0F)
+ verticalLineTo(7.0F)
+ curveToRelative(0.0F, -1.1F, -0.9F, -2.0F, -2.0F, -2.0F)
+ horizontalLineTo(9.0F)
+ verticalLineToRelative(2.0F)
+ horizontalLineToRelative(8.0F)
+ verticalLineToRelative(8.0F)
+ close()
+ moveTo(7.0F, 17.0F)
+ verticalLineTo(1.0F)
+ horizontalLineTo(5.0F)
+ verticalLineToRelative(4.0F)
+ horizontalLineTo(1.0F)
+ verticalLineToRelative(2.0F)
+ horizontalLineToRelative(4.0F)
+ verticalLineToRelative(10.0F)
+ curveToRelative(0.0F, 1.1F, 0.9F, 2.0F, 2.0F, 2.0F)
+ horizontalLineToRelative(10.0F)
+ verticalLineToRelative(4.0F)
+ horizontalLineToRelative(2.0F)
+ verticalLineToRelative(-4.0F)
+ horizontalLineToRelative(4.0F)
+ verticalLineToRelative(-2.0F)
+ horizontalLineTo(7.0F)
+ close()
+ }
+ }
+}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/icons/filled/CropOff.kt b/app/src/main/kotlin/com/hippo/ehviewer/icons/filled/CropOff.kt
new file mode 100644
index 000000000..c4fdc4893
--- /dev/null
+++ b/app/src/main/kotlin/com/hippo/ehviewer/icons/filled/CropOff.kt
@@ -0,0 +1,60 @@
+package com.hippo.ehviewer.icons.filled
+
+import androidx.compose.material.icons.materialIcon
+import androidx.compose.material.icons.materialPath
+import com.hippo.ehviewer.icons.EhIcons
+import com.hippo.ehviewer.util.unsafeLazy
+
+val EhIcons.Filled.CropOff by unsafeLazy {
+ materialIcon(name = "CropOff") {
+ materialPath {
+ moveTo(7.0F, 1.0F)
+ lineToRelative(-2.0F, 0.0F)
+ lineToRelative(0.0F, 1.18F)
+ lineToRelative(2.0F, 2.0F)
+ lineToRelative(0.0F, -3.18F)
+ close()
+ moveTo(17.0F, 7.0F)
+ verticalLineToRelative(7.18F)
+ lineToRelative(0.82F, 0.82F)
+ horizontalLineTo(19.0F)
+ verticalLineTo(7.0F)
+ arcToRelative(2.0059F, 2.0059F, 0.0F, false, false, -2.0F, -2.0F)
+ horizontalLineTo(9.0F)
+ verticalLineTo(6.18F)
+ lineTo(9.82F, 7.0F)
+ close()
+ moveTo(19.0001F, 19.0F)
+ lineToRelative(-2.0F, -2.0F)
+ horizontalLineToRelative(0.0F)
+ lineTo(2.1F, 2.1F)
+ lineTo(0.68F, 3.51F)
+ lineTo(2.1707F, 5.0F)
+ horizontalLineTo(1.0F)
+ verticalLineTo(7.0F)
+ horizontalLineTo(4.1718F)
+ lineTo(5.0F, 7.8278F)
+ verticalLineTo(17.0F)
+ arcToRelative(2.0059F, 2.0059F, 0.0F, false, false, 2.0F, 2.0F)
+ horizontalLineToRelative(9.1778F)
+ lineTo(17.0F, 19.8218F)
+ verticalLineTo(23.0F)
+ horizontalLineToRelative(2.0F)
+ verticalLineTo(21.8207F)
+ lineTo(20.49F, 23.31F)
+ lineTo(21.9F, 21.9F)
+ lineToRelative(-2.9F, -2.9F)
+ close()
+ moveTo(7.0F, 17.0F)
+ verticalLineTo(9.8268F)
+ lineTo(14.1768F, 17.0F)
+ close()
+ moveTo(19.82F, 17.0F)
+ lineToRelative(2.0F, 2.0F)
+ lineToRelative(1.18F, 0.0F)
+ lineToRelative(0.0F, -2.0F)
+ lineToRelative(-3.18F, 0.0F)
+ close()
+ }
+ }
+}
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/BottomReaderBar.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/BottomReaderBar.kt
index ef12f3ec0..0397e6db5 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/BottomReaderBar.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/BottomReaderBar.kt
@@ -33,6 +33,9 @@ import com.hippo.ehviewer.R
import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.asMutableState
import com.hippo.ehviewer.collectAsState
+import com.hippo.ehviewer.icons.EhIcons
+import com.hippo.ehviewer.icons.filled.Crop
+import com.hippo.ehviewer.icons.filled.CropOff
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
@@ -110,11 +113,9 @@ fun BottomReaderBar(onClickSettings: () -> Unit) {
)
}
var cropBorder by Settings.cropBorder.asMutableState()
- val crop = painterResource(R.drawable.ic_crop_24dp)
- val cropOff = painterResource(R.drawable.ic_crop_off_24dp)
IconButton(onClick = { cropBorder = !cropBorder }) {
Icon(
- painter = if (cropBorder) crop else cropOff,
+ imageVector = if (cropBorder) EhIcons.Default.Crop else EhIcons.Default.CropOff,
contentDescription = stringResource(R.string.pref_crop_borders),
)
}
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
index c1ed7e842..6bd20aa98 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
@@ -146,7 +146,7 @@ class ReaderActivity : EhActivity() {
* Whether the menu is currently visible.
*/
var menuVisible by mutableStateOf(false)
- var mGalleryProvider by lazyMut { vm::galleryProvider }
+ private var mGalleryProvider by lazyMut { vm::galleryProvider }
private var mCurrentIndex: Int = 0
private val galleryDetailUrl: String?
@@ -338,7 +338,18 @@ class ReaderActivity : EhActivity() {
initializeMenu()
}
- fun setGallery() {
+ fun retryPage(index: Int, orgImg: Boolean = false) {
+ mGalleryProvider?.retryPage(index, orgImg)
+ }
+
+ fun restartGalleryProvider() {
+ mGalleryProvider?.let {
+ it.restart()
+ viewer?.refreshAdapter()
+ }
+ }
+
+ private fun setGallery() {
if (mGalleryProvider?.isReady != true) return
// Get start page
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt
index 321b03f3c..af2b98972 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt
@@ -43,10 +43,10 @@ fun ReaderPageSheet(page: ReaderPage, dismiss: () -> Unit) {
Text(text = stringResource(id = text))
}
Item(icon = Icons.Default.Refresh, text = R.string.refresh) {
- activity.mGalleryProvider?.retryPage(page.index)
+ activity.retryPage(page.index)
}
Item(icon = Icons.Default.Refresh, text = R.string.refresh_original) {
- activity.mGalleryProvider?.retryPage(page.index, true)
+ activity.retryPage(page.index, true)
}
Item(icon = Icons.Default.Share, text = R.string.action_share) {
activity.shareImage(page.index)
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt
index 2bc41bfa0..c3863aec4 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt
@@ -58,7 +58,7 @@ abstract class PageLoader {
preloadPages(pagesAbsent, (index - 10).coerceAtLeast(0) to (mPreloads + index + 10).coerceAtMost(size))
}
- fun retryPage(index: Int, orgImg: Boolean = false) {
+ fun retryPage(index: Int, orgImg: Boolean) {
notifyPageWait(index)
onForceRequest(index, orgImg)
}
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/setting/ReaderColorFilterSettings.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/setting/ReaderColorFilterSettings.kt
index 700256e48..9bb5080f6 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/setting/ReaderColorFilterSettings.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/setting/ReaderColorFilterSettings.kt
@@ -47,10 +47,7 @@ class ReaderColorFilterSettings @JvmOverloads constructor(context: Context, attr
val activity = context as ReaderActivity
readerPreferences.cropBorders().asHotFlow {
- with(activity) {
- mGalleryProvider?.restart()
- setGallery()
- }
+ activity.restartGalleryProvider()
}.launchIn(activity.lifecycleScope)
readerPreferences.wideColorGamut().asHotFlow {
@@ -59,8 +56,7 @@ class ReaderColorFilterSettings @JvmOverloads constructor(context: Context, attr
with(activity) {
if (window.colorMode != colorMode) {
window.colorMode = colorMode
- mGalleryProvider?.restart()
- setGallery()
+ restartGalleryProvider()
}
}
}.launchIn(activity.lifecycleScope)
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt
index ec40e3266..50ed5e6d1 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt
@@ -42,4 +42,6 @@ interface BaseViewer {
* return true if the event was handled, false otherwise.
*/
fun handleGenericMotionEvent(event: MotionEvent): Boolean
+
+ fun refreshAdapter()
}
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
index 02758495b..8ef7befd3 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
@@ -202,7 +202,7 @@ class PagerPageHolder(
errorLayout = ReaderErrorBinding.inflate(LayoutInflater.from(context), this, true)
errorLayout?.actionRetry?.viewer = viewer
errorLayout?.actionRetry?.setOnClickListener {
- viewer.activity.mGalleryProvider?.retryPage(page.index)
+ viewer.activity.retryPage(page.index)
}
}
page.errorMsg?.let { errorLayout!!.errorMessage.text = it }
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt
index 71fce9ade..599d4272c 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt
@@ -276,11 +276,15 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
moveToNext()
}
+ override fun refreshAdapter() {
+ refreshAdapter(pager.currentItem)
+ }
+
/**
* Resets the adapter in order to recreate all the views. Used when a image configuration is
* changed.
*/
- private fun refreshAdapter(currentItem: Int = pager.currentItem) {
+ private fun refreshAdapter(currentItem: Int) {
adapter.refresh()
pager.adapter = adapter
pager.setCurrentItem(currentItem, false)
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
index a53b9268d..724aee0b1 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
@@ -252,7 +252,7 @@ class WebtoonPageHolder(
errorLayout = ReaderErrorBinding.inflate(LayoutInflater.from(context), frame, true)
errorLayout?.root?.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, defaultHeight)
errorLayout?.actionRetry?.setOnClickListener {
- viewer.activity.mGalleryProvider?.retryPage(page!!.index)
+ viewer.activity.retryPage(page!!.index)
}
}
page?.errorMsg?.let { errorLayout!!.errorMessage.text = it }
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
index 0a051418f..0bc9e1919 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
@@ -259,11 +259,15 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
return false
}
+ override fun refreshAdapter() {
+ refreshAdapter(layoutManager.findLastEndVisibleItemPosition())
+ }
+
/**
* Notifies adapter of changes around the current page to trigger a relayout in the recycler.
* Used when an image configuration is changed.
*/
- private fun refreshAdapter(position: Int = layoutManager.findLastEndVisibleItemPosition()) {
+ private fun refreshAdapter(position: Int) {
val positionStart = maxOf(0, position - 3)
val positionEnd = minOf(position + 3, adapter.itemCount - 1)
adapter.refresh()
diff --git a/app/src/main/res/drawable/ic_crop_24dp.xml b/app/src/main/res/drawable/ic_crop_24dp.xml
deleted file mode 100644
index cc9409940..000000000
--- a/app/src/main/res/drawable/ic_crop_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_crop_off_24dp.xml b/app/src/main/res/drawable/ic_crop_off_24dp.xml
deleted file mode 100644
index 50be29bff..000000000
--- a/app/src/main/res/drawable/ic_crop_off_24dp.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 53220c1f1..ffd63a0e1 100755
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -264,7 +264,6 @@
Download-Elemente wiederherstellen
Alle Download-Elemente im Downloadpfad wiederherstellen
Keine zu wiederhestellenden Elemente
- Wiederherstellung gescheitert
%d Element(e) wiederhergestellt
Unnötige Dateien löschen
Bilddateien, die sich im Downloadpfad befinden, aber nicht in Downloadliste, löschen
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 33a37cb6e..de37e3b55 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -295,7 +295,6 @@
Restaurar los elementos de descarga
Restaurar todos los elementos de descarga en la ruta de descarga
No se han encontrado elementos para restaurar
- Restauración fallida
Restauración de %d elementos completados
Borrar imágenes sobrantes
Elimina las imágenes almacenadas en la ruta de descarga que no se encuentran en la lista de descarga
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 5b5f68ff3..92d39a77e 100755
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -330,7 +330,6 @@
Rétablir les galeries téléchargées
Rétablir tous objets déjà téléchargés dans la destination de téléchargement
Aucun objet trouvé à rétablir
- Échec de rétablissement
%d objets rétablis avec succès
Effacer fiches inutiles de téléchargement
Effacer les fiches des galeries qui ne sont pas dans la liste de téléchargement mais se trouvent dans la destination de téléchargement
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 2d746ab23..8bfcf7af7 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -328,7 +328,6 @@
ダウンロードタスクを復元
ダウンロードディレクトリのダウンロードタスクを復元
復元可能なダウンロードが見つかりません
- 復元できませんでした
%d件のタスクが復元されました
ダウンロードフォルダの不要なファイルを整理
ダウンロードディレクトリからダウンロードタスクにない画像ファイルを削除
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 357ad20db..ef68849ea 100755
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -303,7 +303,6 @@
다운로드 항목 복구
다운로드 위치에 존재하는 모든 다운로드 항목 복구
복구할 다운로드 항목을 찾을 수 없습니다.
- 복구하지 못했습니다.
%d개 항목을 복구했습니다.
잉여 파일 삭제
다운로드 위치에 존재하지만 다운로드 목록에는 없는 갤러리 이미지 제거
diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml
index fd1e6da1c..c666ed9f7 100644
--- a/app/src/main/res/values-th/strings.xml
+++ b/app/src/main/res/values-th/strings.xml
@@ -318,7 +318,6 @@
คืนรายการดาวน์โหลด
คืนรายการดาวน์โหลดทั้งหมดในแหล่งดาวน์โหลด
ไม่พบรายการดาวน์โหลดที่จะคืนค่า
- การคืนค่าล้มเหลว
การคืนค่า %d รายการสำเร็จแล้ว
ลบการดาวน์โหลดที่ไม่จำเป็น
ลบรูปภาพแกลเลอรี่ที่ไม่ได้อยู่ในรายการดาวน์โหลด แต่อยู่ในแหล่งดาวน์โหลด
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index b06a9b438..58ca6ff48 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -103,7 +103,6 @@
已存在相同的快速搜索,名称为“%s”。
已存在相同名称
保存进度
- 删除快速搜索“%s”?
第 %1$d 页,共 %2$d 页
不限
@@ -263,7 +262,6 @@
“默认”是无效标签
标签已存在
重命名标签
- 删除标签“%s”?
这里是阅读历史
全部清除
@@ -348,7 +346,6 @@
恢复下载项
恢复下载目录里的所有下载项
未找到可恢复下载项
- 恢复失败
成功恢复 %d 项
清理下载冗余
清理下载目录中不在下载列表里的图片文件
@@ -511,7 +508,6 @@
详情模式下缩略图大小
账户
激进地预载缩略图
- 启用预见式返回导航动画
自动检查更新
从不
每天
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 710d76057..65805aca5 100755
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -353,7 +353,6 @@
恢復下載項
恢復下載目錄裏的所有下載項
未找到可恢復下載項
- 恢復失敗
成功恢復 %d 項
清理下載宂餘
清理下載目錄中不在下載列表裏的圖片文件
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index f0366c948..920390696 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -103,7 +103,6 @@
已存在相同的快速搜尋,名稱為“%s”。
已經由重複的名稱了
儲存進度
- 刪除快速搜尋“%s”?
第 %1$d 頁,共 %2$d 頁
不限
@@ -263,7 +262,6 @@
“預設”是無效的標籤
標籤已存在
重新命名標籤
- 刪除標籤“%s”?
歷史紀錄將會顯示在這裡
全部清除
@@ -346,7 +344,6 @@
復原下載的檔案
復原下載路徑中的所有下載的檔案
未尋獲可復原的已下載檔案
- 復原失敗
成功復原 %d 項
清除冗餘的檔案
清除已下載但不在下載列表中的圖檔
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b725e8d5c..ed085a964 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -143,7 +143,6 @@
A duplicate quick search exists. The name is \"%s\".
This name is already in use.
Save progress
- Delete quick search \"%s\"?
Page %1$d, total %2$d pages
Any
@@ -305,7 +304,6 @@
\"Default\" is an invalid label
Label exists
Rename label
- Delete label \"%s\"?
Viewed galleries will be shown here
Clear all
@@ -392,7 +390,6 @@
Restore download items
Restore all download items in download location
Not found download items to restore
- Restore failed
Restore %d items successfully
Clear download redundancy
Remove gallery images which are not in download list but in download location
@@ -574,7 +571,6 @@
Thumb size in thumb mode
Account
Preload thumbs aggressively
- Enable predictive back navigation animation
User Agent
Automatically check for updates
Never