From a7ecaa8ca759a78e0f73d8ef6611d1e9c81d5201 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Tue, 14 May 2019 03:54:41 +0900 Subject: [PATCH 1/5] Show transparent status bar --- .../quaver/pupil/ExampleInstrumentedTest.kt | 6 --- .../java/xyz/quaver/pupil/GalleryActivity.kt | 12 ++++- .../java/xyz/quaver/pupil/MainActivity.kt | 35 ++++++++----- .../pupil/adapters/GalleryBlockAdapter.kt | 49 +++++++++++++++---- app/src/main/res/layout/activity_main.xml | 2 - .../main/res/layout/activity_main_content.xml | 4 +- app/src/main/res/layout/item_galleryblock.xml | 11 ++++- app/src/main/res/values-v23/styles.xml | 4 +- app/src/main/res/values/dimen.xml | 3 +- 9 files changed, 90 insertions(+), 36 deletions(-) diff --git a/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt b/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt index 5a6f14f7..f6cbca02 100644 --- a/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt @@ -4,16 +4,10 @@ import android.graphics.BitmapFactory import android.util.Log import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith -import xyz.quaver.hiyobi.getReader import java.io.File -import java.util.* /** * Instrumented test, which will execute on an Android device. diff --git a/app/src/main/java/xyz/quaver/pupil/GalleryActivity.kt b/app/src/main/java/xyz/quaver/pupil/GalleryActivity.kt index 24fe0795..f134bcce 100644 --- a/app/src/main/java/xyz/quaver/pupil/GalleryActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/GalleryActivity.kt @@ -2,6 +2,7 @@ package xyz.quaver.pupil import android.os.Bundle import android.util.Log +import android.view.ContextMenu import android.view.View import android.view.WindowManager import androidx.appcompat.app.AppCompatActivity @@ -26,6 +27,7 @@ class GalleryActivity : AppCompatActivity() { private var screenMode = 0 override fun onCreate(savedInstanceState: Bundle?) { + Log.d("Pupil", "Reader Opened") super.onCreate(savedInstanceState) window.setFlags( @@ -39,6 +41,7 @@ class GalleryActivity : AppCompatActivity() { galleryID = intent.getIntExtra("GALLERY_ID", 0) CoroutineScope(Dispatchers.Unconfined).launch { reader = async(Dispatchers.IO) { + Log.d("Pupil", "Loading reader") val preference = PreferenceManager.getDefaultSharedPreferences(this@GalleryActivity) if (preference.getBoolean("use_hiyobi", false)) { try { @@ -53,6 +56,7 @@ class GalleryActivity : AppCompatActivity() { } initView() + Log.d("Pupil", "Reader view init complete") loadImages() } @@ -73,6 +77,10 @@ class GalleryActivity : AppCompatActivity() { loadJob?.cancel() } + override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) { + super.onCreateContextMenu(menu, v, menuInfo) + } + private fun initView() { gallery_recyclerview.adapter = GalleryAdapter(images).apply { setOnClick { @@ -96,12 +104,14 @@ class GalleryActivity : AppCompatActivity() { } private fun loadImages() { - fun webpUrlFromUrl(url: URL) = URL(url.toString().replace("/galleries/", "/webp/") + ".webp") loadJob = CoroutineScope(Dispatchers.Default).launch { + Log.d("Pupil", "Reader Waiting for the data") val reader = reader.await() + Log.d("Pupil", "Reader Data recieved") + launch(Dispatchers.Main) { with(gallery_progressbar) { max = reader.size diff --git a/app/src/main/java/xyz/quaver/pupil/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/MainActivity.kt index 65ea4cec..e7ab2b42 100644 --- a/app/src/main/java/xyz/quaver/pupil/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/MainActivity.kt @@ -7,23 +7,18 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.content.pm.PackageManager -import android.graphics.Bitmap -import android.graphics.BitmapFactory import android.net.Uri -import android.os.Build import android.os.Bundle import android.os.Environment import android.preference.PreferenceManager import android.text.* import android.text.style.AlignmentSpan -import android.util.Log import android.view.View import android.view.WindowManager import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat -import androidx.core.app.NotificationCompat import androidx.core.content.ContextCompat import androidx.core.content.FileProvider import androidx.core.content.res.ResourcesCompat @@ -48,7 +43,7 @@ import xyz.quaver.pupil.util.SetLineOverlap import xyz.quaver.pupil.util.checkUpdate import xyz.quaver.pupil.util.getApkUrl import java.io.File -import java.lang.StringBuilder +import java.io.FileOutputStream import java.util.* import javax.net.ssl.HttpsURLConnection import kotlin.collections.ArrayList @@ -56,7 +51,7 @@ import kotlin.collections.ArrayList class MainActivity : AppCompatActivity() { private val permissionRequestCode = 4585 - private val galleries = ArrayList>() + private val galleries = ArrayList>>() private var query = "" @@ -67,6 +62,11 @@ class MainActivity : AppCompatActivity() { Histories.default = Histories(File(cacheDir, "histories.json")) super.onCreate(savedInstanceState) + window.setFlags( + WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, + WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS + ) + setContentView(R.layout.activity_main) checkPermission() @@ -81,7 +81,11 @@ class MainActivity : AppCompatActivity() { ) with(main_swipe_layout) { - setProgressViewOffset(false, 0, resources.getDimensionPixelSize(R.dimen.progress_view_offset)) + setProgressViewOffset( + false, + resources.getDimensionPixelSize(R.dimen.progress_view_start), + resources.getDimensionPixelSize(R.dimen.progress_view_offset) + ) setOnRefreshListener { CoroutineScope(Dispatchers.Main).launch { @@ -485,10 +489,19 @@ class MainActivity : AppCompatActivity() { chunked.map { async { val galleryBlock = getGalleryBlock(it) - val thumbnail: Bitmap - with(galleryBlock.thumbnails[0].openConnection() as HttpsURLConnection) { - thumbnail = BitmapFactory.decodeStream(inputStream) + val thumbnail = async { + val cache = File(cacheDir, "imageCache/$it/thumbnail.${galleryBlock.thumbnails[0].path.split('.').last()}") + + if (!cache.exists()) + with(galleryBlock.thumbnails[0].openConnection() as HttpsURLConnection) { + if (!cache.parentFile.exists()) + cache.parentFile.mkdirs() + + inputStream.copyTo(FileOutputStream(cache)) + } + + cache.absolutePath } Pair(galleryBlock, thumbnail) diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt index 71851505..8eacdfe2 100644 --- a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt +++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt @@ -1,18 +1,21 @@ package xyz.quaver.pupil.adapters -import android.graphics.Bitmap +import android.graphics.BitmapFactory import android.view.LayoutInflater +import android.view.View import android.view.ViewGroup import android.widget.LinearLayout import androidx.cardview.widget.CardView import androidx.recyclerview.widget.RecyclerView import com.google.android.material.chip.Chip import kotlinx.android.synthetic.main.item_galleryblock.view.* +import kotlinx.coroutines.* import xyz.quaver.hitomi.GalleryBlock import xyz.quaver.hitomi.toTag import xyz.quaver.pupil.R +import java.io.File -class GalleryBlockAdapter(private val galleries: List>) : RecyclerView.Adapter() { +class GalleryBlockAdapter(private val galleries: List>>) : RecyclerView.Adapter() { private enum class ViewType { VIEW_ITEM, @@ -70,21 +73,47 @@ class GalleryBlockAdapter(private val galleries: List View.VISIBLE + else -> View.GONE + } + } + with(galleryblock_series) { + text = + resources.getString( + R.string.galleryblock_series, + series.joinToString(", ") { it.wordCapitalize() }) + visibility = when { + series.isNotEmpty() -> View.VISIBLE + else -> View.GONE + } + } galleryblock_type.text = resources.getString(R.string.galleryblock_type, gallery.type).wordCapitalize() - galleryblock_language.text = - resources.getString(R.string.galleryblock_language, languages[gallery.language]) + with(galleryblock_language) { + text = + resources.getString(R.string.galleryblock_language, languages[gallery.language]) + visibility = when { + gallery.language.isNotEmpty() -> View.VISIBLE + else -> View.GONE + } + } galleryblock_tag_group.removeAllViews() gallery.relatedTags.forEach { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 3d702355..0aec4ddd 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -6,7 +6,6 @@ android:id="@+id/main_drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" - android:fitsSystemWindows="true" tools:openDrawer="start"> diff --git a/app/src/main/res/layout/activity_main_content.xml b/app/src/main/res/layout/activity_main_content.xml index f0d84786..a1100d90 100644 --- a/app/src/main/res/layout/activity_main_content.xml +++ b/app/src/main/res/layout/activity_main_content.xml @@ -22,7 +22,7 @@ + + diff --git a/app/src/main/res/values-v23/styles.xml b/app/src/main/res/values-v23/styles.xml index 0cce6118..1c4f0c38 100644 --- a/app/src/main/res/values-v23/styles.xml +++ b/app/src/main/res/values-v23/styles.xml @@ -1,9 +1,9 @@