From 2e17efe82b48f394615b243b9ff22e74ca08b1af Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 11 Apr 2022 18:43:52 +0300 Subject: [PATCH 001/104] Update parsers --- app/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1225098d7..6c004a16c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,8 +14,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdkVersion 21 targetSdkVersion 32 - versionCode 400 - versionName '3.0' + versionCode 401 + versionName '3.1' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -65,7 +65,7 @@ android { } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) - implementation('com.github.nv95:kotatsu-parsers:0ee689cd2f') { + implementation('com.github.nv95:kotatsu-parsers:8e23a7fcd4') { exclude group: 'org.json', module: 'json' } From 1b3af7069062f52cb8faf26486d8b47f924b5b4c Mon Sep 17 00:00:00 2001 From: Koitharu Date: Thu, 14 Apr 2022 08:06:16 +0300 Subject: [PATCH 002/104] Add WindowInsetHolder view --- .../base/ui/widgets/WindowInsetHolder.kt | 72 +++++++++++++++++++ .../res/layout-w720dp-land/activity_main.xml | 3 +- app/src/main/res/layout/activity_main.xml | 2 - 3 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/org/koitharu/kotatsu/base/ui/widgets/WindowInsetHolder.kt diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/widgets/WindowInsetHolder.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/widgets/WindowInsetHolder.kt new file mode 100644 index 000000000..0d915dc4f --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/widgets/WindowInsetHolder.kt @@ -0,0 +1,72 @@ +package org.koitharu.kotatsu.base.ui.widgets + +import android.annotation.SuppressLint +import android.content.Context +import android.util.AttributeSet +import android.view.Gravity +import android.view.View +import android.view.WindowInsets +import android.widget.FrameLayout +import android.widget.LinearLayout +import androidx.annotation.AttrRes +import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.view.WindowInsetsCompat + +class WindowInsetHolder @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + @AttrRes defStyleAttr: Int = 0, +) : View(context, attrs, defStyleAttr) { + + private var desiredHeight = 0 + private var desiredWidth = 0 + + @SuppressLint("RtlHardcoded") + override fun dispatchApplyWindowInsets(insets: WindowInsets): WindowInsets { + val barsInsets = WindowInsetsCompat.toWindowInsetsCompat(insets, this) + .getInsets(WindowInsetsCompat.Type.systemBars()) + val gravity = getLayoutGravity() + val newWidth = when (gravity and Gravity.HORIZONTAL_GRAVITY_MASK) { + Gravity.LEFT -> barsInsets.left + Gravity.RIGHT -> barsInsets.right + else -> 0 + } + val newHeight = when (gravity and Gravity.VERTICAL_GRAVITY_MASK) { + Gravity.TOP -> barsInsets.top + Gravity.BOTTOM -> barsInsets.bottom + else -> 0 + } + if (newWidth != desiredWidth || newHeight != desiredHeight) { + desiredWidth = newWidth + desiredHeight = newHeight + requestLayout() + } + return super.dispatchApplyWindowInsets(insets) + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + val widthMode = MeasureSpec.getMode(widthMeasureSpec) + val heightMode = MeasureSpec.getMode(heightMeasureSpec) + super.onMeasure( + if (desiredWidth == 0 || widthMode == MeasureSpec.EXACTLY) { + widthMeasureSpec + } else { + MeasureSpec.makeMeasureSpec(desiredWidth, widthMode) + }, + if (desiredHeight == 0 || heightMode == MeasureSpec.EXACTLY) { + heightMeasureSpec + } else { + MeasureSpec.makeMeasureSpec(desiredHeight, heightMode) + }, + ) + } + + private fun getLayoutGravity(): Int { + return when (val lp = layoutParams) { + is FrameLayout.LayoutParams -> lp.gravity + is LinearLayout.LayoutParams -> lp.gravity + is CoordinatorLayout.LayoutParams -> lp.gravity + else -> Gravity.NO_GRAVITY + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout-w720dp-land/activity_main.xml b/app/src/main/res/layout-w720dp-land/activity_main.xml index 10570546c..1e507fbdc 100644 --- a/app/src/main/res/layout-w720dp-land/activity_main.xml +++ b/app/src/main/res/layout-w720dp-land/activity_main.xml @@ -32,6 +32,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="16dp" + android:background="@null" android:paddingRight="16dp" app:elevation="0dp" app:liftOnScroll="false"> @@ -81,8 +82,6 @@ android:text="@string/_continue" android:visibility="gone" app:backgroundTint="?attr/colorContainer" - app:behavior_autoHide="true" - app:behavior_autoShrink="true" app:icon="@drawable/ic_read" app:layout_anchor="@id/container" app:layout_anchorGravity="bottom|end" diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 78c3d932c..5b1c1571f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -75,8 +75,6 @@ android:text="@string/_continue" android:visibility="gone" app:backgroundTint="?attr/colorContainer" - app:behavior_autoHide="true" - app:behavior_autoShrink="true" app:icon="@drawable/ic_read" app:layout_anchor="@id/container" app:layout_anchorGravity="bottom|end" From 9c9a389aa55a26a7b487ed6a4c018e9e6a5a0385 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Thu, 14 Apr 2022 08:07:57 +0300 Subject: [PATCH 003/104] Rethrow CancellationException --- .../org/koitharu/kotatsu/download/domain/DownloadManager.kt | 3 ++- .../java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt | 3 ++- .../org/koitharu/kotatsu/reader/ui/pager/PageHolderDelegate.kt | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/download/domain/DownloadManager.kt b/app/src/main/java/org/koitharu/kotatsu/download/domain/DownloadManager.kt index e1933a683..0b3c67ccb 100644 --- a/app/src/main/java/org/koitharu/kotatsu/download/domain/DownloadManager.kt +++ b/app/src/main/java/org/koitharu/kotatsu/download/domain/DownloadManager.kt @@ -141,8 +141,9 @@ class DownloadManager( } val localManga = localMangaRepository.getFromFile(output.file) outState.value = DownloadState.Done(startId, data, cover, localManga) - } catch (_: CancellationException) { + } catch (e: CancellationException) { outState.value = DownloadState.Cancelled(startId, manga, cover) + throw e } catch (e: Throwable) { if (BuildConfig.DEBUG) { e.printStackTrace() diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt index 9f1f18983..688cca84f 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderViewModel.kt @@ -143,7 +143,8 @@ class ReaderViewModel( val page = getCurrentPage() ?: error("Page not found") externalStorageHelper.savePage(page, destination) onPageSaved.postCall(destination) - } catch (_: CancellationException) { + } catch (e: CancellationException) { + throw e } catch (e: Exception) { if (BuildConfig.DEBUG) { e.printStackTrace() diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/PageHolderDelegate.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/PageHolderDelegate.kt index 9ce52f4fe..5630cb1ba 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/PageHolderDelegate.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/PageHolderDelegate.kt @@ -109,7 +109,7 @@ class PageHolderDelegate( state = State.LOADED callback.onImageReady(file.toUri()) } catch (e: CancellationException) { - // do nothing + throw e } catch (e: Exception) { state = State.ERROR error = e From 5e82c758930b2c5f8fd7dd5c5268d2f1e7168bee Mon Sep 17 00:00:00 2001 From: Koitharu Date: Fri, 15 Apr 2022 09:09:40 +0300 Subject: [PATCH 004/104] Cleanup extensions --- .idea/gradle.xml | 2 +- .../koitharu/kotatsu/base/ui/BaseActivity.kt | 5 ++- .../base/ui/dialog/StorageSelectDialog.kt | 4 +- .../base/ui/widgets/ListItemTextView.kt | 7 ++- .../kotatsu/core/prefs/AppSettings.kt | 10 ++--- .../kotatsu/details/ui/DetailsFragment.kt | 12 +++-- .../ui/FavouritesContainerFragment.kt | 16 ++++--- .../ui/categories/CategoriesActivity.kt | 29 ++++++------ .../kotatsu/list/ui/ListModeSelectDialog.kt | 2 +- .../list/ui/MangaSelectionDecoration.kt | 2 +- .../ui/pager/webtoon/WebtoonReaderFragment.kt | 6 +-- .../SearchSuggestionItemCallback.kt | 2 +- .../settings/AppearanceSettingsFragment.kt | 5 ++- .../kotatsu/settings/SettingsModule.kt | 2 +- .../utils/BottomSheetToolbarController.kt | 6 +-- .../org/koitharu/kotatsu/utils/FileSize.kt | 2 +- .../koitharu/kotatsu/utils/GridTouchHelper.kt | 6 ++- .../kotatsu/utils/SelectionController.kt | 10 ----- .../org/koitharu/kotatsu/utils/WordSet.kt | 9 ---- .../koitharu/kotatsu/utils/ext/CommonExt.kt | 14 +----- .../kotatsu/utils/ext/CoroutineExt.kt | 4 +- .../org/koitharu/kotatsu/utils/ext/DateExt.kt | 2 +- .../koitharu/kotatsu/utils/ext/FragmentExt.kt | 7 +-- .../koitharu/kotatsu/utils/ext/LiveDataExt.kt | 4 +- .../kotatsu/utils/ext/PreferencesExt.kt | 6 +-- .../koitharu/kotatsu/utils/ext/TextViewExt.kt | 10 ++--- .../koitharu/kotatsu/utils/ext/ThemeExt.kt | 26 ++++++----- .../org/koitharu/kotatsu/utils/ext/ViewExt.kt | 45 +++++++------------ .../progress/IntPercentLabelFormatter.kt | 9 +++- 29 files changed, 119 insertions(+), 145 deletions(-) delete mode 100644 app/src/main/java/org/koitharu/kotatsu/utils/SelectionController.kt delete mode 100644 app/src/main/java/org/koitharu/kotatsu/utils/WordSet.kt diff --git a/.idea/gradle.xml b/.idea/gradle.xml index a0de2a152..6e5389ed9 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -7,7 +7,7 @@