commit
05bcdadbd5
4
.github/workflows/issue_closer.yml
vendored
4
.github/workflows/issue_closer.yml
vendored
@ -1,5 +1,7 @@
|
||||
name: Issue closer
|
||||
on: [issues]
|
||||
on:
|
||||
issues:
|
||||
types: [opened, edited, reopened]
|
||||
|
||||
jobs:
|
||||
autoclose:
|
||||
|
@ -141,7 +141,7 @@ dependencies {
|
||||
// AndroidX libraries
|
||||
implementation 'androidx.annotation:annotation:1.1.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'
|
||||
implementation 'androidx.biometric:biometric:1.1.0-alpha02'
|
||||
implementation 'androidx.biometric:biometric:1.1.0-beta01'
|
||||
implementation 'androidx.browser:browser:1.2.0'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
|
||||
@ -149,10 +149,10 @@ dependencies {
|
||||
implementation 'androidx.core:core-ktx:1.4.0-alpha01'
|
||||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
implementation 'androidx.preference:preference:1.1.1'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha05'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha06'
|
||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01'
|
||||
|
||||
final lifecycle_version = '2.3.0-alpha07'
|
||||
final lifecycle_version = '2.3.0-beta01'
|
||||
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
|
||||
implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"
|
||||
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
|
||||
@ -233,7 +233,7 @@ dependencies {
|
||||
implementation "com.github.bumptech.glide:okhttp3-integration:$glide_version"
|
||||
kapt "com.github.bumptech.glide:compiler:$glide_version"
|
||||
|
||||
implementation 'com.github.tachiyomiorg:subsampling-scale-image-view:bff2806'
|
||||
implementation 'com.github.tachiyomiorg:subsampling-scale-image-view:6caf219'
|
||||
|
||||
// Logging
|
||||
implementation 'com.jakewharton.timber:timber:4.7.1'
|
||||
|
@ -173,6 +173,17 @@ class DownloadManager(/* SY private */ val context: Context) {
|
||||
return cache.isChapterDownloaded(chapter, manga, skipCache)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the download from queue if the chapter is queued for download
|
||||
* else it will return null which means that the chapter is not queued for download
|
||||
*
|
||||
* @param chapter the chapter to check.
|
||||
*/
|
||||
fun getChapterDownloadOrNull(chapter: Chapter): Download? {
|
||||
return downloader.queue
|
||||
.firstOrNull { it.chapter.id == chapter.id && it.chapter.manga_id == chapter.manga_id }
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the amount of downloaded chapters for a manga.
|
||||
*
|
||||
|
@ -187,6 +187,8 @@ object PreferenceKeys {
|
||||
|
||||
const val defaultChapterDisplayByNameOrNumber = "default_chapter_display_by_name_or_number"
|
||||
|
||||
const val incognitoMode = "incognito_mode"
|
||||
|
||||
fun trackUsername(syncId: Int) = "pref_mangasync_username_$syncId"
|
||||
|
||||
fun trackPassword(syncId: Int) = "pref_mangasync_password_$syncId"
|
||||
|
@ -275,6 +275,8 @@ class PreferencesHelper(val context: Context) {
|
||||
|
||||
fun sortChapterByAscendingOrDescending() = prefs.getInt(Keys.defaultChapterSortByAscendingOrDescending, Manga.SORT_DESC)
|
||||
|
||||
fun incognitoMode() = flowPrefs.getBoolean(Keys.incognitoMode, false)
|
||||
|
||||
fun setChapterSettingsDefault(manga: Manga) {
|
||||
prefs.edit {
|
||||
putInt(Keys.defaultChapterFilterByRead, manga.readFilter)
|
||||
|
@ -226,10 +226,6 @@ class LibraryController(
|
||||
}
|
||||
}
|
||||
|
||||
if (preferences.downloadedOnly().get()) {
|
||||
binding.downloadedOnly.isVisible = true
|
||||
}
|
||||
|
||||
binding.btnGlobalSearch.clicks()
|
||||
.onEach {
|
||||
router.pushController(
|
||||
|
@ -230,6 +230,14 @@ class MainActivity : BaseActivity<MainActivityBinding>() {
|
||||
preferences.extensionUpdatesCount()
|
||||
.asImmediateFlow { setExtensionsBadge() }
|
||||
.launchIn(scope)
|
||||
|
||||
preferences.downloadedOnly()
|
||||
.asImmediateFlow { binding.downloadedOnly.isVisible = it }
|
||||
.launchIn(scope)
|
||||
|
||||
preferences.incognitoMode()
|
||||
.asImmediateFlow { binding.incognitoMode.isVisible = it }
|
||||
.launchIn(scope)
|
||||
}
|
||||
|
||||
override fun onNewIntent(intent: Intent) {
|
||||
|
@ -61,6 +61,7 @@ import eu.kanade.tachiyomi.ui.browse.source.SourceController
|
||||
import eu.kanade.tachiyomi.ui.browse.source.SourceController.Companion.SMART_SEARCH_SOURCE_TAG
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
||||
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController
|
||||
import eu.kanade.tachiyomi.ui.browse.source.latest.LatestUpdatesController
|
||||
import eu.kanade.tachiyomi.ui.library.ChangeMangaCategoriesDialog
|
||||
import eu.kanade.tachiyomi.ui.library.ChangeMangaCoverDialog
|
||||
import eu.kanade.tachiyomi.ui.library.LibraryController
|
||||
@ -879,6 +880,10 @@ class MangaController :
|
||||
val controller = router.getControllerWithTag(R.id.nav_library.toString()) as LibraryController
|
||||
controller.search(query)
|
||||
}
|
||||
is LatestUpdatesController -> {
|
||||
// Search doesn't currently work in source Latest view
|
||||
return
|
||||
}
|
||||
is BrowseSourceController -> {
|
||||
router.handleBack()
|
||||
previousController.searchWithQuery(query)
|
||||
|
@ -87,12 +87,12 @@ class ChaptersSettingsSheet(
|
||||
|
||||
inner class FilterGroup : Group {
|
||||
|
||||
private val unread = Item.TriStateGroup(R.string.action_filter_unread, this)
|
||||
private val downloaded = Item.TriStateGroup(R.string.action_filter_downloaded, this)
|
||||
private val unread = Item.TriStateGroup(R.string.action_filter_unread, this)
|
||||
private val bookmarked = Item.TriStateGroup(R.string.action_filter_bookmarked, this)
|
||||
|
||||
override val header = null
|
||||
override val items = listOf(unread, downloaded, bookmarked)
|
||||
override val items = listOf(downloaded, unread, bookmarked)
|
||||
override val footer = null
|
||||
|
||||
override fun initModels() {
|
||||
|
@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.manga.info
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
@ -22,7 +21,6 @@ import eu.kanade.tachiyomi.source.online.HttpSource
|
||||
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
|
||||
import eu.kanade.tachiyomi.util.view.setTooltip
|
||||
import exh.MERGED_SOURCE_ID
|
||||
import exh.source.EnhancedHttpSource.Companion.getMainSource
|
||||
import exh.util.SourceTagsUtil
|
||||
@ -115,27 +113,17 @@ class MangaInfoHeaderAdapter(
|
||||
isVisible = true
|
||||
|
||||
if (trackCount > 0) {
|
||||
setCompoundDrawablesWithIntrinsicBounds(
|
||||
null,
|
||||
ContextCompat.getDrawable(context, R.drawable.ic_done_24dp),
|
||||
null,
|
||||
null
|
||||
)
|
||||
setIconResource(R.drawable.ic_done_24dp)
|
||||
text = view.context.resources.getQuantityString(
|
||||
R.plurals.num_trackers,
|
||||
trackCount,
|
||||
trackCount
|
||||
)
|
||||
isSelected = true
|
||||
isActivated = true
|
||||
} else {
|
||||
setCompoundDrawablesWithIntrinsicBounds(
|
||||
null,
|
||||
ContextCompat.getDrawable(context, R.drawable.ic_sync_24dp),
|
||||
null,
|
||||
null
|
||||
)
|
||||
setIconResource(R.drawable.ic_sync_24dp)
|
||||
text = view.context.getString(R.string.manga_tracking_tab)
|
||||
isSelected = false
|
||||
isActivated = false
|
||||
}
|
||||
|
||||
clicks()
|
||||
@ -151,7 +139,6 @@ class MangaInfoHeaderAdapter(
|
||||
binding.btnWebview.clicks()
|
||||
.onEach { controller.openMangaInWebView() }
|
||||
.launchIn(scope)
|
||||
binding.btnWebview.setTooltip(R.string.action_open_in_web_view)
|
||||
}
|
||||
|
||||
// SY -->
|
||||
@ -320,18 +307,10 @@ class MangaInfoHeaderAdapter(
|
||||
// Set the Favorite drawable to the correct one.
|
||||
// Border drawable if false, filled drawable if true.
|
||||
binding.btnFavorite.apply {
|
||||
setCompoundDrawablesWithIntrinsicBounds(
|
||||
null,
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
if (isFavorite) R.drawable.ic_favorite_24dp else R.drawable.ic_favorite_border_24dp
|
||||
),
|
||||
null,
|
||||
null
|
||||
)
|
||||
setIconResource(if (isFavorite) R.drawable.ic_favorite_24dp else R.drawable.ic_favorite_border_24dp)
|
||||
text =
|
||||
context.getString(if (isFavorite) R.string.in_library else R.string.add_to_library)
|
||||
isSelected = isFavorite
|
||||
isActivated = isFavorite
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.ui.download.DownloadController
|
||||
import eu.kanade.tachiyomi.ui.setting.SettingsController
|
||||
import eu.kanade.tachiyomi.ui.setting.SettingsMainController
|
||||
import eu.kanade.tachiyomi.util.preference.add
|
||||
import eu.kanade.tachiyomi.util.preference.defaultValue
|
||||
import eu.kanade.tachiyomi.util.preference.iconRes
|
||||
import eu.kanade.tachiyomi.util.preference.iconTint
|
||||
import eu.kanade.tachiyomi.util.preference.onClick
|
||||
@ -54,6 +55,15 @@ class MoreController :
|
||||
iconTint = tintColor
|
||||
}
|
||||
|
||||
switchPreference {
|
||||
key = Keys.incognitoMode
|
||||
summaryRes = R.string.pref_incognito_mode_summary
|
||||
titleRes = R.string.pref_incognito_mode
|
||||
iconRes = R.drawable.ic_glasses_black_24dp
|
||||
iconTint = tintColor
|
||||
defaultValue = false
|
||||
}
|
||||
|
||||
preferenceCategory {
|
||||
preference {
|
||||
titleRes = R.string.label_download_queue
|
||||
|
@ -417,6 +417,7 @@ class ReaderPresenter(
|
||||
// SY <--
|
||||
updateTrackChapterRead(selectedChapter)
|
||||
deleteChapterIfNeeded(selectedChapter)
|
||||
deleteChapterFromDownloadQueue(currentChapters.currChapter)
|
||||
}
|
||||
|
||||
if (selectedChapter != currentChapters.currChapter) {
|
||||
@ -431,6 +432,16 @@ class ReaderPresenter(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes [currentChapter] from download queue
|
||||
* if setting is enabled and [currentChapter] is queued for download
|
||||
*/
|
||||
private fun deleteChapterFromDownloadQueue(currentChapter: ReaderChapter) {
|
||||
downloadManager.getChapterDownloadOrNull(currentChapter.chapter)?.let { download ->
|
||||
downloadManager.deletePendingDownload(download)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if deleting option is enabled and nth to last chapter actually exists.
|
||||
* If both conditions are satisfied enqueues chapter for delete
|
||||
@ -470,11 +481,13 @@ class ReaderPresenter(
|
||||
* Saves this [chapter] last read history.
|
||||
*/
|
||||
private fun saveChapterHistory(chapter: ReaderChapter) {
|
||||
val history = History.create(chapter.chapter).apply { last_read = Date().time }
|
||||
db.updateHistoryLastRead(history).asRxCompletable()
|
||||
.onErrorComplete()
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe()
|
||||
if (!preferences.incognitoMode().get()) {
|
||||
val history = History.create(chapter.chapter).apply { last_read = Date().time }
|
||||
db.updateHistoryLastRead(history).asRxCompletable()
|
||||
.onErrorComplete()
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -114,6 +114,16 @@ class SettingsAdvancedController : SettingsController() {
|
||||
ctrl.showDialog(router)
|
||||
}
|
||||
}
|
||||
preference {
|
||||
titleRes = R.string.pref_clear_history
|
||||
summaryRes = R.string.pref_clear_history_summary
|
||||
|
||||
onClick {
|
||||
val ctrl = ClearHistoryDialogController()
|
||||
ctrl.targetController = this@SettingsAdvancedController
|
||||
ctrl.showDialog(router)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
preferenceCategory {
|
||||
@ -402,6 +412,22 @@ class SettingsAdvancedController : SettingsController() {
|
||||
}
|
||||
}
|
||||
|
||||
class ClearHistoryDialogController : DialogController() {
|
||||
override fun onCreateDialog(savedViewState: Bundle?): Dialog {
|
||||
return MaterialDialog(activity!!)
|
||||
.message(R.string.clear_history_confirmation)
|
||||
.positiveButton(android.R.string.ok) {
|
||||
(targetController as? SettingsAdvancedController)?.clearHistory()
|
||||
}
|
||||
.negativeButton(android.R.string.cancel)
|
||||
}
|
||||
}
|
||||
|
||||
private fun clearHistory() {
|
||||
db.deleteHistory().executeAsBlocking()
|
||||
activity?.toast(R.string.clear_history_completed)
|
||||
}
|
||||
|
||||
private fun clearDatabase() {
|
||||
db.deleteMangasNotInLibrary().executeAsBlocking()
|
||||
db.deleteHistoryNoLastRead().executeAsBlocking()
|
||||
|
@ -160,9 +160,8 @@ fun syncChaptersWithSource(
|
||||
// Fix order in source.
|
||||
db.fixChaptersSourceOrder(sourceChapters).executeAsBlocking()
|
||||
|
||||
// Set manga's last update time to latest chapter's fetch time if possible
|
||||
val newestChapter = db.getChapters(manga).executeAsBlocking().maxBy { it.date_fetch }
|
||||
manga.last_update = newestChapter?.date_fetch ?: Date().time
|
||||
// Set this manga as updated since chapters were changed
|
||||
manga.last_update = Date().time
|
||||
db.updateLastUpdated(manga).executeAsBlocking()
|
||||
}
|
||||
|
||||
|
5
app/src/main/res/color/button_action_selector.xml
Normal file
5
app/src/main/res/color/button_action_selector.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="?attr/colorAccent" android:state_activated="true" />
|
||||
<item android:color="?attr/colorOnBackground" android:state_activated="false" />
|
||||
</selector>
|
@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:alpha="0.25" android:color="?attr/colorAccent" android:state_checked="true" />
|
||||
<item android:color="@android:color/transparent" android:state_checked="false" />
|
||||
</selector>
|
@ -10,24 +10,6 @@
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/downloaded_only"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/green"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:padding="4dp"
|
||||
android:text="@string/label_downloaded_only"
|
||||
android:textColor="@color/md_white_1000" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_global_search"
|
||||
style="@style/Theme.Widget.Button"
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/root_coordinator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
@ -25,6 +26,42 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/downloaded_only"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/green"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:padding="4dp"
|
||||
android:text="@string/label_downloaded_only"
|
||||
android:textColor="@color/md_white_1000" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/incognito_mode"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/md_grey_800"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:padding="4dp"
|
||||
android:text="@string/pref_incognito_mode"
|
||||
android:textColor="@color/md_white_1000" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</eu.kanade.tachiyomi.widget.ElevationAppBarLayout>
|
||||
|
||||
<com.bluelinelabs.conductor.ChangeHandlerFrameLayout
|
||||
|
@ -133,59 +133,56 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btn_favorite"
|
||||
style="@style/Theme.Widget.Button.Action"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:checkable="true"
|
||||
android:text="@string/add_to_library"
|
||||
app:drawableTopCompat="@drawable/ic_favorite_border_24dp"
|
||||
app:icon="@drawable/ic_favorite_border_24dp"
|
||||
app:layout_constraintEnd_toStartOf="@+id/btn_tracking"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btn_tracking"
|
||||
style="@style/Theme.Widget.Button.Action"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:checkable="true"
|
||||
android:text="@string/manga_tracking_tab"
|
||||
android:visibility="gone"
|
||||
app:drawableTopCompat="@drawable/ic_sync_24dp"
|
||||
app:icon="@drawable/ic_sync_24dp"
|
||||
app:layout_constraintEnd_toStartOf="@+id/btn_webview"
|
||||
app:layout_constraintStart_toEndOf="@+id/btn_favorite"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btn_webview"
|
||||
style="@style/Theme.Widget.Button.Action"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:text="@string/action_web_view"
|
||||
android:visibility="gone"
|
||||
app:drawableTopCompat="@drawable/ic_public_24dp"
|
||||
app:icon="@drawable/ic_public_24dp"
|
||||
app:layout_constraintEnd_toStartOf="@+id/btn_migrate"
|
||||
app:layout_constraintStart_toEndOf="@+id/btn_tracking"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/btn_migrate"
|
||||
style="@style/Theme.Widget.Button.Action"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:text="@string/migrate"
|
||||
android:visibility="gone"
|
||||
app:drawableTopCompat="@drawable/baseline_swap_calls_24"
|
||||
app:icon="@drawable/baseline_swap_calls_24"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/btn_webview"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
|
@ -69,6 +69,8 @@
|
||||
android:layout_height="0dp"
|
||||
android:layout_gravity="top"
|
||||
android:layout_weight="1"
|
||||
android:paddingBottom="8dp" />
|
||||
android:paddingBottom="8dp"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -403,6 +403,10 @@
|
||||
<string name="pref_disable_battery_optimization_summary">Helps with background library updates and backups</string>
|
||||
<string name="battery_optimization_disabled">Battery optimization is already disabled</string>
|
||||
<string name="battery_optimization_setting_activity_not_found">Couldn\'t open device settings</string>
|
||||
<string name="clear_history_completed">History deleted</string>
|
||||
<string name="clear_history_confirmation">Are you sure? All history will be lost.</string>
|
||||
<string name="pref_clear_history">Clear history</string>
|
||||
<string name="pref_clear_history_summary">Delete reading history for all manga</string>
|
||||
|
||||
<!-- About section -->
|
||||
<string name="website">Website</string>
|
||||
@ -421,6 +425,8 @@
|
||||
|
||||
<!-- More -->
|
||||
<string name="label_downloaded_only">Downloaded only</string>
|
||||
<string name="pref_incognito_mode">Incognito mode</string>
|
||||
<string name="pref_incognito_mode_summary">Pauses reading history</string>
|
||||
<string name="downloaded_only_summary">Filters all manga in your library</string>
|
||||
<plurals name="download_queue_summary">
|
||||
<item quantity="one">1 remaining</item>
|
||||
|
@ -254,17 +254,16 @@
|
||||
<item name="android:textAllCaps">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Widget.Button.Action" parent="Widget.MaterialComponents.Button.Icon">
|
||||
<item name="elevation">0dp</item>
|
||||
|
||||
<style name="Theme.Widget.Button.Action" parent="Widget.MaterialComponents.Button.UnelevatedButton.Icon">
|
||||
<item name="android:textSize">12sp</item>
|
||||
<item name="android:textAllCaps">false</item>
|
||||
|
||||
<item name="drawableTint">?attr/colorOnBackground</item>
|
||||
<item name="android:drawablePadding">4dp</item>
|
||||
<item name="rippleColor">?attr/colorAccent</item>
|
||||
<item name="android:textColor">?attr/colorOnBackground</item>
|
||||
<item name="backgroundTint">@android:color/transparent</item>
|
||||
|
||||
<item name="backgroundTint">@color/outlined_button_bg</item>
|
||||
<item name="iconGravity">top</item>
|
||||
<item name="iconTint">@color/button_action_selector</item>
|
||||
<item name="iconPadding">4dp</item>
|
||||
<item name="android:textColor">@color/button_action_selector</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Widget.Button.TextButton" parent="Widget.MaterialComponents.Button.TextButton">
|
||||
|
Loading…
x
Reference in New Issue
Block a user