|
|
|
@ -37,22 +37,6 @@ class ReaderActivity :
|
|
|
|
|
private val repository: Repository by instance()
|
|
|
|
|
private val appSettingsService: AppSettingsService by instance()
|
|
|
|
|
|
|
|
|
|
private fun showMenuItem(willAddToFavorite: Boolean) {
|
|
|
|
|
if (willAddToFavorite) {
|
|
|
|
|
toolbarMenu.findItem(R.id.star).icon?.setTint(Color.WHITE)
|
|
|
|
|
} else {
|
|
|
|
|
toolbarMenu.findItem(R.id.star).icon?.setTint(Color.RED)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun canFavorite() {
|
|
|
|
|
showMenuItem(true)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun canRemoveFromFavorite() {
|
|
|
|
|
showMenuItem(false)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Suppress("detekt:SwallowedException")
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
@ -73,14 +57,21 @@ class ReaderActivity :
|
|
|
|
|
finish()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
readItem(allItems[currentItem])
|
|
|
|
|
} catch (e: IndexOutOfBoundsException) {
|
|
|
|
|
finish()
|
|
|
|
|
}
|
|
|
|
|
readItem()
|
|
|
|
|
|
|
|
|
|
binding.pager.adapter = ScreenSlidePagerAdapter(this)
|
|
|
|
|
binding.pager.setCurrentItem(currentItem, false)
|
|
|
|
|
|
|
|
|
|
binding.pager.registerOnPageChangeCallback(
|
|
|
|
|
object : ViewPager2.OnPageChangeCallback() {
|
|
|
|
|
override fun onPageSelected(position: Int) {
|
|
|
|
|
super.onPageSelected(position)
|
|
|
|
|
currentItem = position
|
|
|
|
|
updateStarIcon()
|
|
|
|
|
readItem()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onResume() {
|
|
|
|
@ -89,14 +80,20 @@ class ReaderActivity :
|
|
|
|
|
binding.indicator.setViewPager(binding.pager)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun readItem(item: SelfossModel.Item) {
|
|
|
|
|
if (appSettingsService.isMarkOnScrollEnabled() && !appSettingsService.getPublicAccess()) {
|
|
|
|
|
private fun readItem() {
|
|
|
|
|
val item = allItems.getOrNull(currentItem)
|
|
|
|
|
if (appSettingsService.isMarkOnScrollEnabled() && !appSettingsService.getPublicAccess() && item != null) {
|
|
|
|
|
CoroutineScope(Dispatchers.IO).launch {
|
|
|
|
|
repository.markAsRead(item)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun updateStarIcon() {
|
|
|
|
|
val isStarred = allItems.getOrNull(currentItem)?.starred ?: false
|
|
|
|
|
toolbarMenu.findItem(R.id.star)?.icon?.setTint(if (isStarred) Color.RED else Color.WHITE)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onSaveInstanceState(oldInstanceState: Bundle) {
|
|
|
|
|
super.onSaveInstanceState(oldInstanceState)
|
|
|
|
|
oldInstanceState.clear()
|
|
|
|
@ -141,8 +138,7 @@ class ReaderActivity :
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
|
|
|
|
val inflater = menuInflater
|
|
|
|
|
inflater.inflate(R.menu.reader_menu, menu)
|
|
|
|
|
menuInflater.inflate(R.menu.reader_menu, menu)
|
|
|
|
|
toolbarMenu = menu
|
|
|
|
|
|
|
|
|
|
alignmentMenu()
|
|
|
|
@ -150,87 +146,50 @@ class ReaderActivity :
|
|
|
|
|
if (appSettingsService.getPublicAccess()) {
|
|
|
|
|
menu.removeItem(R.id.star)
|
|
|
|
|
} else {
|
|
|
|
|
if (allItems.isNotEmpty() && allItems[currentItem].starred) {
|
|
|
|
|
canRemoveFromFavorite()
|
|
|
|
|
} else {
|
|
|
|
|
canFavorite()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
binding.pager.registerOnPageChangeCallback(
|
|
|
|
|
object : ViewPager2.OnPageChangeCallback() {
|
|
|
|
|
override fun onPageSelected(position: Int) {
|
|
|
|
|
super.onPageSelected(position)
|
|
|
|
|
|
|
|
|
|
if (!allItems.isNullOrEmpty() && allItems.size >= position) {
|
|
|
|
|
if (allItems[position].starred) {
|
|
|
|
|
canRemoveFromFavorite()
|
|
|
|
|
} else {
|
|
|
|
|
canFavorite()
|
|
|
|
|
}
|
|
|
|
|
readItem(allItems[position])
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
updateStarIcon()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
|
|
|
|
fun afterSave() {
|
|
|
|
|
allItems[binding.pager.currentItem] =
|
|
|
|
|
allItems[binding.pager.currentItem].toggleStar()
|
|
|
|
|
canRemoveFromFavorite()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun afterUnsave() {
|
|
|
|
|
allItems[binding.pager.currentItem] = allItems[binding.pager.currentItem].toggleStar()
|
|
|
|
|
canFavorite()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
when (item.itemId) {
|
|
|
|
|
android.R.id.home -> {
|
|
|
|
|
onBackPressedDispatcher.onBackPressed()
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
R.id.star -> {
|
|
|
|
|
if (allItems[binding.pager.currentItem].starred) {
|
|
|
|
|
CoroutineScope(Dispatchers.IO).launch {
|
|
|
|
|
repository.unstarr(allItems[binding.pager.currentItem])
|
|
|
|
|
}
|
|
|
|
|
afterUnsave()
|
|
|
|
|
} else {
|
|
|
|
|
CoroutineScope(Dispatchers.IO).launch {
|
|
|
|
|
repository.starr(allItems[binding.pager.currentItem])
|
|
|
|
|
}
|
|
|
|
|
afterSave()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
R.id.align_left -> {
|
|
|
|
|
switchAlignmentSetting(AppSettingsService.ALIGN_LEFT)
|
|
|
|
|
refreshFragment()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
R.id.align_justify -> {
|
|
|
|
|
switchAlignmentSetting(AppSettingsService.JUSTIFY)
|
|
|
|
|
refreshFragment()
|
|
|
|
|
}
|
|
|
|
|
android.R.id.home -> onBackPressedDispatcher.onBackPressed()
|
|
|
|
|
R.id.star -> toggleFavorite()
|
|
|
|
|
R.id.align_left -> switchAlignmentSetting(AppSettingsService.ALIGN_LEFT)
|
|
|
|
|
R.id.align_justify -> switchAlignmentSetting(AppSettingsService.JUSTIFY)
|
|
|
|
|
}
|
|
|
|
|
return super.onOptionsItemSelected(item)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun switchAlignmentSetting(allignment: Int) {
|
|
|
|
|
appSettingsService.changeAllignment(allignment)
|
|
|
|
|
alignmentMenu()
|
|
|
|
|
private fun toggleFavorite() {
|
|
|
|
|
val item = allItems.getOrNull(currentItem) ?: return
|
|
|
|
|
|
|
|
|
|
val starred = item.starred
|
|
|
|
|
|
|
|
|
|
CoroutineScope(Dispatchers.IO).launch {
|
|
|
|
|
if (starred) {
|
|
|
|
|
repository.unstarr(item)
|
|
|
|
|
} else {
|
|
|
|
|
repository.starr(item)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
item.toggleStar()
|
|
|
|
|
updateStarIcon()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun refreshFragment() {
|
|
|
|
|
finish()
|
|
|
|
|
overridePendingTransition(0, 0)
|
|
|
|
|
startActivity(intent)
|
|
|
|
|
overridePendingTransition(0, 0)
|
|
|
|
|
private fun switchAlignmentSetting(alignment: Int) {
|
|
|
|
|
appSettingsService.changeAllignment(alignment)
|
|
|
|
|
alignmentMenu()
|
|
|
|
|
|
|
|
|
|
val fragmentManager = supportFragmentManager
|
|
|
|
|
val fragments = fragmentManager.fragments
|
|
|
|
|
|
|
|
|
|
for (fragment in fragments) {
|
|
|
|
|
if (fragment is ArticleFragment) {
|
|
|
|
|
fragment.refreshAlignment()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|