Skip to content

Commit

Permalink
Separated libpupil to standalone repository
Browse files Browse the repository at this point in the history
Migrated to Kotlin 1.4
  • Loading branch information
tom5079 committed Aug 23, 2020
1 parent 735dbab commit 2169148
Show file tree
Hide file tree
Showing 60 changed files with 233 additions and 486 deletions.
16 changes: 16 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/dictionaries/tom50.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 11 additions & 12 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -58,24 +58,23 @@ android {
}

dependencies {
def markwonVersion = '3.1.0'

implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-core:1.0.0-RC"
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.preference:preference:1.1.1'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation "androidx.biometric:biometric:1.0.1"
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.fragment:fragment-ktx:1.2.5'
implementation "com.daimajia.swipelayout:library:1.2.0@aar"
implementation 'com.google.android.material:material:1.3.0-alpha02'
implementation 'com.google.firebase:firebase-core:17.4.4'
implementation 'com.google.firebase:firebase-analytics:17.4.4'
implementation 'com.google.firebase:firebase-crashlytics:17.1.1'
implementation 'com.google.firebase:firebase-core:17.5.0'
implementation 'com.google.firebase:firebase-analytics:17.5.0'
implementation 'com.google.firebase:firebase-crashlytics:17.2.1'
implementation 'com.google.firebase:firebase-perf:19.0.8'
implementation 'com.github.arimorty:floatingsearchview:2.1.1'
implementation 'com.github.clans:fab:1.6.4'
Expand All @@ -92,15 +91,15 @@ dependencies {
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
implementation 'com.andrognito.patternlockview:patternlockview:1.0.0'
//implementation 'com.andrognito.pinlockview:pinlockview:2.1.0'
implementation "ru.noties.markwon:core:${markwonVersion}"
implementation "ru.noties.markwon:core:3.1.0"
implementation 'xyz.quaver:libpupil:1.0'
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation project(path: ':libpupil')
}

androidExtensions {
experimental = true
}
}
4 changes: 2 additions & 2 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.SerializationKt
-keep,includedescriptorclasses class xyz.quaver.**$$serializer { *; } # <-- change package name to your app's
-keepclassmembers class xyz.quaver.** { # <-- change package name to your app's
-keepclassmembers class xyz.quaver.pupil** { # <-- change package name to your app's
*** Companion;
}
-keepclasseswithmembers class xyz.quaver.** { # <-- change package name to your app's
-keepclasseswithmembers class xyz.quaver.pupil** { # <-- change package name to your app's
kotlinx.serialization.KSerializer serializer(...);
}
3 changes: 1 addition & 2 deletions app/src/main/java/xyz/quaver/pupil/BroadcastReciever.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.FileProvider
import androidx.preference.PreferenceManager
import xyz.quaver.pupil.util.NOTIFICATION_ID_UPDATE
import xyz.quaver.pupil.util.cancelImport
import java.io.File

Expand Down Expand Up @@ -92,7 +91,7 @@ class BroadcastReciever : BroadcastReceiver() {
.setContentIntent(pendingIntent)
.build()

notificationManager.notify(NOTIFICATION_ID_UPDATE, notification)
notificationManager.notify(R.id.notification_id_update, notification)
}
ACTION_CANCEL_IMPORT -> {
cancelImport = true
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/java/xyz/quaver/pupil/adapters/ReaderAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@ import kotlin.concurrent.schedule
import kotlin.math.roundToInt

class ReaderAdapter(private val glide: RequestManager,
private val galleryID: Int,
private val activity: Activity) : RecyclerView.Adapter<ReaderAdapter.ViewHolder>() {
private val galleryID: Int) : RecyclerView.Adapter<ReaderAdapter.ViewHolder>() {

var reader: Reader? = null
val timer = Timer()
Expand Down
43 changes: 21 additions & 22 deletions app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,16 @@ 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
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
Expand Down Expand Up @@ -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
Expand All @@ -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)

Expand Down Expand Up @@ -236,15 +234,15 @@ 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()
fetchGalleries(query, sortMode)
loadBlocks()
}
}
REQUEST_LOCK -> {
R.id.request_lock -> {
if (resultCode != Activity.RESULT_OK)
finish()
}
Expand Down Expand Up @@ -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]
Expand All @@ -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

Expand All @@ -537,6 +536,7 @@ class MainActivity : AppCompatActivity() {

true
}
}

var origin = 0f
var target = -1
Expand Down Expand Up @@ -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 {
Expand All @@ -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 {
Expand Down Expand Up @@ -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")
})

Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -910,7 +909,7 @@ class MainActivity : AppCompatActivity() {
favorites.add(tag)
}

favoritesFile.writeText(json.stringify(serializer, favorites))
favoritesFile.writeText(Json.encodeToString(favorites))
}
}

Expand Down Expand Up @@ -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")
})
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
22 changes: 11 additions & 11 deletions app/src/main/java/xyz/quaver/pupil/ui/SettingsActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand All @@ -89,7 +89,7 @@ class SettingsActivity : AppCompatActivity() {
.commitAllowingStateLoss()
}
}
REQUEST_RESTORE -> {
R.id.request_restore -> {
if (resultCode == Activity.RESULT_OK) {
val uri = data?.data ?: return

Expand All @@ -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),
Expand All @@ -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 =
Expand All @@ -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)!!

Expand All @@ -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 =
Expand All @@ -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)!!

Expand All @@ -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())
}
}
}
Expand Down
Loading

0 comments on commit 2169148

Please sign in to comment.