Separated libpupil to standalone repository
Migrated to Kotlin 1.4
This commit is contained in:
@@ -51,7 +51,9 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
import kotlinx.android.synthetic.main.activity_main_content.*
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.serialization.builtins.list
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import xyz.quaver.hitomi.GalleryBlock
|
||||
import xyz.quaver.hitomi.doSearch
|
||||
import xyz.quaver.hitomi.getGalleryIDsFromNozomi
|
||||
@@ -59,7 +61,6 @@ import xyz.quaver.hitomi.getSuggestionsForQuery
|
||||
import xyz.quaver.pupil.Pupil
|
||||
import xyz.quaver.pupil.R
|
||||
import xyz.quaver.pupil.adapters.GalleryBlockAdapter
|
||||
import xyz.quaver.pupil.types.Tag
|
||||
import xyz.quaver.pupil.types.TagSuggestion
|
||||
import xyz.quaver.pupil.types.Tags
|
||||
import xyz.quaver.pupil.ui.dialog.GalleryDialog
|
||||
@@ -103,9 +104,6 @@ class MainActivity : AppCompatActivity() {
|
||||
private var mode = Mode.SEARCH
|
||||
private var sortMode = SortMode.NEWEST
|
||||
|
||||
private val REQUEST_SETTINGS = 45162
|
||||
private val REQUEST_LOCK = 561
|
||||
|
||||
private var galleryIDs: Deferred<List<Int>>? = null
|
||||
private var totalItems = 0
|
||||
private var loadingJob: Job? = null
|
||||
@@ -132,7 +130,7 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
if (lockManager.isNotEmpty())
|
||||
startActivityForResult(Intent(this, LockActivity::class.java), REQUEST_LOCK)
|
||||
startActivityForResult(Intent(this, LockActivity::class.java), R.id.request_lock.normalizeID())
|
||||
|
||||
val preference = PreferenceManager.getDefaultSharedPreferences(this)
|
||||
|
||||
@@ -236,7 +234,7 @@ class MainActivity : AppCompatActivity() {
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
when(requestCode) {
|
||||
REQUEST_SETTINGS -> {
|
||||
R.id.request_settings -> {
|
||||
runOnUiThread {
|
||||
cancelFetch()
|
||||
clearGalleries()
|
||||
@@ -244,7 +242,7 @@ class MainActivity : AppCompatActivity() {
|
||||
loadBlocks()
|
||||
}
|
||||
}
|
||||
REQUEST_LOCK -> {
|
||||
R.id.request_lock -> {
|
||||
if (resultCode != Activity.RESULT_OK)
|
||||
finish()
|
||||
}
|
||||
@@ -496,10 +494,10 @@ class MainActivity : AppCompatActivity() {
|
||||
closeAllItems()
|
||||
}
|
||||
}
|
||||
ItemClickSupport.addTo(this)
|
||||
.setOnItemClickListener { _, position, v ->
|
||||
ItemClickSupport.addTo(this).apply {
|
||||
onItemClickListener = listener@{ _, position, v ->
|
||||
if (v !is CardView)
|
||||
return@setOnItemClickListener
|
||||
return@listener
|
||||
|
||||
val intent = Intent(this@MainActivity, ReaderActivity::class.java)
|
||||
val gallery = galleries[position]
|
||||
@@ -509,10 +507,11 @@ class MainActivity : AppCompatActivity() {
|
||||
startActivity(intent)
|
||||
|
||||
histories.add(gallery.id)
|
||||
}.setOnItemLongClickListener { _, position, v ->
|
||||
}
|
||||
|
||||
onItemLongClickListener = listener@{ _, position, v ->
|
||||
if (v !is CardView)
|
||||
return@setOnItemLongClickListener true
|
||||
return@listener false
|
||||
|
||||
val galleryID = galleries[position].id
|
||||
|
||||
@@ -537,6 +536,7 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
var origin = 0f
|
||||
var target = -1
|
||||
@@ -766,11 +766,10 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
with(main_searchview as FloatingSearchViewDayNight) {
|
||||
val favoritesFile = File(ContextCompat.getDataDir(context), "favorites_tags.json")
|
||||
val serializer = Tag.serializer().list
|
||||
|
||||
if (!favoritesFile.exists()) {
|
||||
favoritesFile.createNewFile()
|
||||
favoritesFile.writeText(json.stringify(serializer, Tags(listOf())))
|
||||
favoritesFile.writeText(Json.encodeToString(Tags(listOf())))
|
||||
}
|
||||
|
||||
setOnLeftMenuClickListener(object: FloatingSearchView.OnLeftMenuClickListener {
|
||||
@@ -785,7 +784,7 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
setOnMenuItemClickListener {
|
||||
when(it.itemId) {
|
||||
R.id.main_menu_settings -> startActivityForResult(Intent(this@MainActivity, SettingsActivity::class.java), REQUEST_SETTINGS)
|
||||
R.id.main_menu_settings -> startActivityForResult(Intent(this@MainActivity, SettingsActivity::class.java), R.id.request_settings.normalizeID())
|
||||
R.id.main_menu_thin -> {
|
||||
main_recyclerview.apply {
|
||||
(adapter as GalleryBlockAdapter).apply {
|
||||
@@ -832,7 +831,7 @@ class MainActivity : AppCompatActivity() {
|
||||
clearSuggestions()
|
||||
|
||||
if (query.isEmpty() or query.endsWith(' ')) {
|
||||
swapSuggestions(json.parse(serializer, favoritesFile.readText()).map {
|
||||
swapSuggestions(Json.decodeFromString<Tags>(favoritesFile.readText()).map {
|
||||
TagSuggestion(it.tag, -1, "", it.area ?: "tag")
|
||||
})
|
||||
|
||||
@@ -846,7 +845,7 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
suggestions.filter {
|
||||
val tag = "${it.n}:${it.s.replace(Regex("\\s"), "_")}"
|
||||
Tags(json.parse(serializer, favoritesFile.readText())).contains(tag)
|
||||
Tags(Json.decodeFromString(favoritesFile.readText())).contains(tag)
|
||||
}.reversed().forEach {
|
||||
suggestions.remove(it)
|
||||
suggestions.add(0, it)
|
||||
@@ -884,7 +883,7 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
with(suggestionView.findViewById<ImageView>(R.id.right_icon)) {
|
||||
|
||||
if (Tags(json.parse(serializer, favoritesFile.readText())).contains(tag))
|
||||
if (Tags(Json.decodeFromString(favoritesFile.readText())).contains(tag))
|
||||
setImageResource(R.drawable.ic_star_filled)
|
||||
else
|
||||
setImageResource(R.drawable.ic_star_empty)
|
||||
@@ -895,7 +894,7 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
isClickable = true
|
||||
setOnClickListener {
|
||||
val favorites = Tags(json.parse(serializer, favoritesFile.readText()))
|
||||
val favorites = Tags(Json.decodeFromString(favoritesFile.readText()))
|
||||
|
||||
if (favorites.contains(tag)) {
|
||||
setImageResource(R.drawable.ic_star_empty)
|
||||
@@ -910,7 +909,7 @@ class MainActivity : AppCompatActivity() {
|
||||
favorites.add(tag)
|
||||
}
|
||||
|
||||
favoritesFile.writeText(json.stringify(serializer, favorites))
|
||||
favoritesFile.writeText(Json.encodeToString(favorites))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -950,7 +949,7 @@ class MainActivity : AppCompatActivity() {
|
||||
setOnFocusChangeListener(object: FloatingSearchView.OnFocusChangeListener {
|
||||
override fun onFocus() {
|
||||
if (query.isEmpty() or query.endsWith(' '))
|
||||
swapSuggestions(json.parse(serializer, favoritesFile.readText()).map {
|
||||
swapSuggestions(Json.decodeFromString<Tags>( favoritesFile.readText()).map {
|
||||
TagSuggestion(it.tag, -1, "", it.area ?: "tag")
|
||||
})
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ class ReaderActivity : AppCompatActivity() {
|
||||
|
||||
private fun initView() {
|
||||
with(reader_recyclerview) {
|
||||
adapter = ReaderAdapter(Glide.with(this@ReaderActivity), galleryID, this@ReaderActivity).apply {
|
||||
adapter = ReaderAdapter(Glide.with(this@ReaderActivity), galleryID).apply {
|
||||
onItemClickListener = {
|
||||
if (isScroll) {
|
||||
isScroll = false
|
||||
|
||||
@@ -30,8 +30,8 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import kotlinx.android.synthetic.main.settings_activity.*
|
||||
import kotlinx.serialization.builtins.list
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.json.Json
|
||||
import net.rdrei.android.dirchooser.DirectoryChooserActivity
|
||||
import xyz.quaver.pupil.Pupil
|
||||
import xyz.quaver.pupil.R
|
||||
@@ -80,7 +80,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
when(requestCode) {
|
||||
REQUEST_LOCK -> {
|
||||
R.id.request_lock -> {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
supportFragmentManager
|
||||
.beginTransaction()
|
||||
@@ -89,7 +89,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
.commitAllowingStateLoss()
|
||||
}
|
||||
}
|
||||
REQUEST_RESTORE -> {
|
||||
R.id.request_restore -> {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
val uri = data?.data ?: return
|
||||
|
||||
@@ -100,7 +100,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
inputStream.readBytes().toString(Charset.defaultCharset())
|
||||
}
|
||||
|
||||
(application as Pupil).favorites.addAll(json.parse(Int.serializer().list, str).also {
|
||||
(application as Pupil).favorites.addAll(Json.decodeFromString<List<Int>>(str).also {
|
||||
Snackbar.make(
|
||||
window.decorView,
|
||||
getString(R.string.settings_restore_successful, it.size),
|
||||
@@ -116,7 +116,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
REQUEST_DOWNLOAD_FOLDER -> {
|
||||
R.id.request_download_folder -> {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
data?.data?.also { uri ->
|
||||
val takeFlags: Int =
|
||||
@@ -140,7 +140,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
REQUEST_DOWNLOAD_FOLDER_OLD -> {
|
||||
R.id.request_download_folder_old -> {
|
||||
if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
|
||||
val directory = data?.getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR)!!
|
||||
|
||||
@@ -156,7 +156,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
.apply()
|
||||
}
|
||||
}
|
||||
REQUEST_IMPORT_OLD_GALLERIES -> {
|
||||
R.id.request_import_old_galleries -> {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
data?.data?.also { uri ->
|
||||
val takeFlags: Int =
|
||||
@@ -178,7 +178,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
REQUEST_IMPORT_OLD_GALLERIES_OLD -> {
|
||||
R.id.request_import_old_galleries_old -> {
|
||||
if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
|
||||
val directory = data?.getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR)!!
|
||||
|
||||
@@ -200,13 +200,13 @@ class SettingsActivity : AppCompatActivity() {
|
||||
@SuppressLint("InlinedApi")
|
||||
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
|
||||
when (requestCode) {
|
||||
REQUEST_WRITE_PERMISSION_AND_SAF -> {
|
||||
R.id.request_write_permission_and_saf -> {
|
||||
if (grantResults.firstOrNull() == PackageManager.PERMISSION_GRANTED) {
|
||||
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).apply {
|
||||
putExtra("android.content.extra.SHOW_ADVANCED", true)
|
||||
}
|
||||
|
||||
startActivityForResult(intent, REQUEST_DOWNLOAD_FOLDER)
|
||||
startActivityForResult(intent, R.id.request_download_folder.normalizeID())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,13 +96,13 @@ class DownloadLocationDialog(val activity: Activity) : AlertDialog(activity) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
|
||||
if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
|
||||
ActivityCompat.requestPermissions(activity, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_WRITE_PERMISSION_AND_SAF)
|
||||
ActivityCompat.requestPermissions(activity, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), R.id.request_write_permission_and_saf.normalizeID())
|
||||
else {
|
||||
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).apply {
|
||||
putExtra("android.content.extra.SHOW_ADVANCED", true)
|
||||
}
|
||||
|
||||
activity.startActivityForResult(intent, REQUEST_DOWNLOAD_FOLDER)
|
||||
activity.startActivityForResult(intent, R.id.request_download_folder.normalizeID())
|
||||
}
|
||||
|
||||
dismiss()
|
||||
@@ -116,7 +116,7 @@ class DownloadLocationDialog(val activity: Activity) : AlertDialog(activity) {
|
||||
putExtra(DirectoryChooserActivity.EXTRA_CONFIG, config)
|
||||
}
|
||||
|
||||
activity.startActivityForResult(intent, REQUEST_DOWNLOAD_FOLDER_OLD)
|
||||
activity.startActivityForResult(intent, R.id.request_download_folder_old.normalizeID())
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,14 +259,14 @@ class GalleryDialog(context: Context, private val glide: RequestManager, private
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
this.adapter = adapter
|
||||
|
||||
ItemClickSupport.addTo(this)
|
||||
.setOnItemClickListener { _, position, _ ->
|
||||
ItemClickSupport.addTo(this).apply {
|
||||
onItemClickListener = { _, position, _ ->
|
||||
context.startActivity(Intent(context, ReaderActivity::class.java).apply {
|
||||
putExtra("galleryID", galleries[position].id)
|
||||
})
|
||||
(context.applicationContext as Pupil).histories.add(galleries[position].id)
|
||||
}
|
||||
.setOnItemLongClickListener { _, position, _ ->
|
||||
onItemLongClickListener = { _, position, _ ->
|
||||
GalleryDialog(
|
||||
context,
|
||||
glide,
|
||||
@@ -279,6 +279,7 @@ class GalleryDialog(context: Context, private val glide: RequestManager, private
|
||||
|
||||
true
|
||||
}
|
||||
}
|
||||
}.let {
|
||||
gallery_details_contents.addView(it, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT))
|
||||
}
|
||||
|
||||
@@ -29,11 +29,12 @@ import android.widget.AdapterView
|
||||
import android.widget.ArrayAdapter
|
||||
import androidx.preference.PreferenceManager
|
||||
import kotlinx.android.synthetic.main.dialog_proxy.view.*
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import xyz.quaver.proxy
|
||||
import xyz.quaver.pupil.R
|
||||
import xyz.quaver.pupil.util.ProxyInfo
|
||||
import xyz.quaver.pupil.util.getProxyInfo
|
||||
import xyz.quaver.pupil.util.json
|
||||
import java.net.Proxy
|
||||
|
||||
class ProxyDialog(context: Context) : Dialog(context) {
|
||||
@@ -118,7 +119,7 @@ class ProxyDialog(context: Context) : Dialog(context) {
|
||||
ProxyInfo(type, addr, port, username, password).let {
|
||||
|
||||
PreferenceManager.getDefaultSharedPreferences(context).edit().putString("proxy",
|
||||
json.stringify(ProxyInfo.serializer(), it)
|
||||
Json.encodeToString(it)
|
||||
).apply()
|
||||
|
||||
proxy = it.proxy()
|
||||
|
||||
@@ -168,7 +168,7 @@ class SettingsFragment :
|
||||
}
|
||||
"app_lock" -> {
|
||||
val intent = Intent(requireContext(), LockActivity::class.java)
|
||||
activity?.startActivityForResult(intent, REQUEST_LOCK)
|
||||
activity?.startActivityForResult(intent, R.id.request_lock.normalizeID())
|
||||
}
|
||||
"mirrors" -> {
|
||||
MirrorDialog(requireContext())
|
||||
@@ -196,19 +196,19 @@ class SettingsFragment :
|
||||
type = "*/*"
|
||||
}
|
||||
|
||||
activity?.startActivityForResult(intent, REQUEST_RESTORE)
|
||||
activity?.startActivityForResult(intent, R.id.request_restore.normalizeID())
|
||||
}
|
||||
"old_import_galleries" -> {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
|
||||
if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
|
||||
ActivityCompat.requestPermissions(requireActivity(), arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_WRITE_PERMISSION_AND_SAF)
|
||||
ActivityCompat.requestPermissions(requireActivity(), arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), R.id.request_write_permission_and_saf.normalizeID())
|
||||
else {
|
||||
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).apply {
|
||||
putExtra("android.content.extra.SHOW_ADVANCED", true)
|
||||
}
|
||||
|
||||
activity?.startActivityForResult(intent, REQUEST_IMPORT_OLD_GALLERIES)
|
||||
activity?.startActivityForResult(intent, R.id.request_import_old_galleries.normalizeID())
|
||||
}
|
||||
} else { // Can't use SAF on old Androids!
|
||||
val config = DirectoryChooserConfig.builder()
|
||||
@@ -220,7 +220,7 @@ class SettingsFragment :
|
||||
putExtra(DirectoryChooserActivity.EXTRA_CONFIG, config)
|
||||
}
|
||||
|
||||
activity?.startActivityForResult(intent, REQUEST_IMPORT_OLD_GALLERIES_OLD)
|
||||
activity?.startActivityForResult(intent, R.id.request_import_old_galleries_old.normalizeID())
|
||||
}
|
||||
}
|
||||
"user_id" -> {
|
||||
|
||||
Reference in New Issue
Block a user