From 229d5b2088d8ccb7c11e4a5760a6c133ec95b101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Fri, 8 Mar 2024 02:20:58 +0900 Subject: [PATCH] =?UTF-8?q?v2.1.2=20=E6=96=B0=E5=A2=9E=201.=20=E6=B7=B1?= =?UTF-8?q?=E8=89=B2=E9=98=85=E8=AF=BB=E8=83=8C=E6=99=AF=E5=BC=80=E5=85=B3?= =?UTF-8?q?(fix=20#41)=20=E4=BF=AE=E5=A4=8D=201.=20=E4=B8=BB=E9=A1=B5?= =?UTF-8?q?=E6=9C=AA=E5=8A=A0=E8=BD=BD=E5=AE=8C=E5=85=A8=E6=97=B6=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=88=B7=E6=96=B0=202.=20=E5=89=8D=E8=BF=9B=E5=90=8E?= =?UTF-8?q?=E9=80=80=E5=90=8E=E4=B8=A2=E5=A4=B1=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=E5=A4=B1=E7=81=B5=203.=20=E7=82=B9=E4=B8=80=E6=9C=AC=E4=B9=A6?= =?UTF-8?q?=E5=90=8E=E8=BF=85=E9=80=9F=E8=BF=94=E5=9B=9E=E6=A6=82=E7=8E=87?= =?UTF-8?q?=E9=97=AA=E9=80=80=20=E4=BC=98=E5=8C=96=201.=20=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5=E5=A4=B4=E9=83=A8=E6=98=BE=E7=A4=BA=202.=20?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E8=AF=A6=E6=83=85=E9=A1=B5=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E6=94=BE=E5=A4=A7=203.=20=E5=A4=A7=E5=B1=8F=E4=B8=8B=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5caption=E7=BC=A9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../top/fumiama/copymanga/MainActivity.kt | 2 +- .../template/general/ActivityTemplate.kt | 3 +- .../fumiama/copymanga/ui/book/BookFragment.kt | 52 +++++++------- .../fumiama/copymanga/ui/book/BookHandler.kt | 34 ++++----- .../fumiama/copymanga/ui/home/HomeFragment.kt | 8 ++- .../fumiama/copymanga/ui/home/HomeHandler.kt | 12 +++- .../copymanga/ui/vm/ViewMangaActivity.kt | 12 +++- app/src/main/res/layout/fragment_book.xml | 51 ++++++++++---- app/src/main/res/layout/fragment_home.xml | 10 +-- app/src/main/res/layout/line_bookinfo.xml | 69 ++++++++++--------- app/src/main/res/layout/line_booktandb.xml | 4 +- app/src/main/res/layout/line_caption.xml | 3 +- app/src/main/res/values/dimens.xml | 4 ++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/xml/pref_setting.xml | 6 ++ 16 files changed, 169 insertions(+), 107 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 051c281..289a7dd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId 'top.fumiama.copymanga' minSdkVersion 23 targetSdkVersion 34 - versionCode 44 - versionName '2.1.1' + versionCode 45 + versionName '2.1.2' resConfigs 'zh', 'zh-rCN' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt index 22f6983..7cee5bf 100644 --- a/app/src/main/java/top/fumiama/copymanga/MainActivity.kt +++ b/app/src/main/java/top/fumiama/copymanga/MainActivity.kt @@ -57,7 +57,6 @@ import java.lang.Thread.sleep import java.lang.ref.WeakReference class MainActivity : AppCompatActivity() { - var isDrawerClosed = true private var menuMain: Menu? = null private var navController: NavController? = null @@ -366,6 +365,7 @@ class MainActivity : AppCompatActivity() { companion object{ var mainWeakReference: WeakReference? = null + var isDrawerClosed = true var ime: InputMethodManager? = null const val MSG_CROP_IMAGE = 1 var shelf: Shelf? = null diff --git a/app/src/main/java/top/fumiama/copymanga/template/general/ActivityTemplate.kt b/app/src/main/java/top/fumiama/copymanga/template/general/ActivityTemplate.kt index d0738a3..c3d8dfb 100644 --- a/app/src/main/java/top/fumiama/copymanga/template/general/ActivityTemplate.kt +++ b/app/src/main/java/top/fumiama/copymanga/template/general/ActivityTemplate.kt @@ -3,10 +3,11 @@ package top.fumiama.copymanga.template.general import android.app.Activity import android.os.Bundle import android.view.View +import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit import top.fumiama.copymanga.tools.ui.UITools -open class ActivityTemplate:Activity() { +open class ActivityTemplate:AppCompatActivity() { lateinit var toolsBox: UITools val pb = BoolPref() private val allFullScreen diff --git a/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt index 5c628cc..d10b449 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/book/BookFragment.kt @@ -8,6 +8,7 @@ import android.view.View import android.widget.Toast import androidx.navigation.fragment.findNavController import com.google.gson.Gson +import kotlinx.android.synthetic.main.app_bar_main.* import kotlinx.android.synthetic.main.fragment_book.* import kotlinx.android.synthetic.main.line_bookinfo_text.* import kotlinx.android.synthetic.main.line_booktandb.* @@ -25,6 +26,7 @@ import java.lang.ref.WeakReference class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) { var isOnPause = false + private var mBookHandler: BookHandler? = null override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -57,24 +59,26 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) { } } } - bookHandler = BookHandler(WeakReference(this), path) + mBookHandler = BookHandler(WeakReference(this), path) Log.d("MyBF", "read path: $path") + bookHandler = mBookHandler Thread { sleep(600) - bookHandler?.startLoad() + mBookHandler?.startLoad() }.start() + } else { + bookHandler = mBookHandler } } override fun onResume() { super.onResume() isOnPause = false - /*mainWeakReference?.get()?.apply { - toolbar.title = bookHandler?.book?.results?.comic?.name + bookHandler = mBookHandler + mainWeakReference?.get()?.apply { + toolbar.title = mBookHandler?.book?.results?.comic?.name } setStartRead() - fbibinfo?.layoutParams?.height = ((fbibinfo?.width?:0) * 4.0 / 9.0 + 0.5).toInt() - */ } override fun onPause() { @@ -84,25 +88,25 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) { override fun onDestroy() { super.onDestroy() - bookHandler?.destroy() - bookHandler?.ads?.forEach { + mBookHandler?.destroy() + mBookHandler?.ads?.forEach { it.exit = true } bookHandler = null } fun setStartRead() { - if(bookHandler?.chapterNames?.isNotEmpty() == true) mainWeakReference?.get()?.apply { - bookHandler?.book?.results?.comic?.let { comic -> + if(mBookHandler?.chapterNames?.isNotEmpty() == true) mainWeakReference?.get()?.apply { + mBookHandler?.book?.results?.comic?.let { comic -> getPreferences(MODE_PRIVATE).getInt(comic.name, -1).let { p -> this@BookFragment.lbbstart.apply { var i = 0 if(p >= 0) { - text = bookHandler!!.chapterNames[p] + text = mBookHandler!!.chapterNames[p] i = p } setOnClickListener { - bookHandler?.urlArray?.let { + mBookHandler?.urlArray?.let { Reader.viewMangaAt(comic.name, i, it) } } @@ -114,22 +118,22 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) { @SuppressLint("SetTextI18n") fun setAddToShelf() { - if(bookHandler?.chapterNames?.isNotEmpty() == true) { - val b = MainActivity.shelf?.query(bookHandler?.path!!) - bookHandler?.collect = b?.results?.collect?:-2 - Log.d("MyBF", "get collect of ${bookHandler?.path} = ${bookHandler?.collect}") + if(mBookHandler?.chapterNames?.isNotEmpty() == true) { + val b = MainActivity.shelf?.query(mBookHandler?.path!!) + mBookHandler?.collect = b?.results?.collect?:-2 + Log.d("MyBF", "get collect of ${mBookHandler?.path} = ${mBookHandler?.collect}") b?.results?.browse?.chapter_name?.let { name -> btsub.text = "${btsub.text} ${getString(R.string.text_format_cloud_read_to).format(name)}" } - bookHandler?.collect?.let { collect -> + mBookHandler?.collect?.let { collect -> if (collect > 0) { this@BookFragment.lbbsub.setText(R.string.button_sub_subscribed) } } - bookHandler?.book?.results?.comic?.let { comic -> + mBookHandler?.book?.results?.comic?.let { comic -> this@BookFragment.lbbsub.setOnClickListener { if (this@BookFragment.lbbsub.text != getString(R.string.button_sub)) { - bookHandler?.collect?.let { collect -> + mBookHandler?.collect?.let { collect -> if (collect < 0) return@setOnClickListener Thread{ val re = MainActivity.shelf?.del(collect) @@ -160,13 +164,13 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) { fun navigate2dl(){ val bundle = Bundle() bundle.putString("path", arguments?.getString("path")?:"null") - bundle.putString("name", bookHandler!!.book?.results?.comic?.name) - if(bookHandler!!.vols != null) { + bundle.putString("name", mBookHandler!!.book?.results?.comic?.name) + if(mBookHandler!!.vols != null) { bundle.putBoolean("loadJson", true) } - bundle.putStringArray("group", bookHandler!!.gpws) - bundle.putStringArray("groupNames", bookHandler!!.keys) - bundle.putIntArray("count", bookHandler!!.cnts) + bundle.putStringArray("group", mBookHandler!!.gpws) + bundle.putStringArray("groupNames", mBookHandler!!.keys) + bundle.putIntArray("count", mBookHandler!!.cnts) findNavController().let { Navigate.safeNavigateTo(it, R.id.action_nav_book_to_nav_group, bundle) } diff --git a/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt index 03a6768..80bddef 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/book/BookHandler.kt @@ -6,7 +6,6 @@ import android.os.Looper import android.os.Message import android.util.Log import android.view.View -import android.widget.LinearLayout import android.widget.TextView import android.widget.Toast import androidx.core.graphics.drawable.toBitmap @@ -74,7 +73,7 @@ class BookHandler(private val th: WeakReference, val path: String) 1 -> setCover() 2 -> setTexts() 3 -> setAuthorsAndTags() - 4 -> setOverScale() + //4 -> setOverScale() 6 -> if(complete) that?.navigate2dl() 7 -> setVolumes() 8 -> that?.apply { fbl?.addView(msg.obj as View) } @@ -118,22 +117,24 @@ class BookHandler(private val th: WeakReference, val path: String) private fun endSetLayouts() { if (exit) return - that?.fbloading?.visibility = View.GONE + that?.fbloading?.apply { + pauseAnimation() + visibility = View.GONE + } complete = true that?.setStartRead() that?.setAddToShelf() Log.d("MyBH", "Set complete: true") } - private fun setOverScale(){ - that?.fbov?.setScaleView(that!!.lbibg) - } + + /*private fun setOverScale() { + if (exit) return + that?.fbov?.setScaleView(that!!.fbapp) + }*/ private fun setCover() { + if (exit) return that?.apply { - that?.layoutInflater?.inflate(R.layout.line_bookinfo, that?.fbl, false)?.let { - fbl.addView(it) - setInfoHeight(it) - } book?.results?.comic?.cover?.let { cover -> val load = Glide.with(this).load( GlideUrl(CMApi.proxy?.wrap(cover)?:cover, CMApi.myGlideHeaders) @@ -144,7 +145,7 @@ class BookHandler(private val th: WeakReference, val path: String) ?.let { it3 -> load.apply(it3).into(lbibg) } } imf?.visibility = View.GONE - fbl?.addView(divider) + //fbl?.addView(divider) } } @@ -155,6 +156,7 @@ class BookHandler(private val th: WeakReference, val path: String) } private fun setTexts(){ + if (exit) return //that?.tic?.text = book?.name that?.tic?.visibility = View.GONE mainWeakReference?.get()?.toolbar?.title = book?.results?.comic?.name @@ -175,15 +177,6 @@ class BookHandler(private val th: WeakReference, val path: String) that?.fbl?.addView(divider) } - private fun setInfoHeight(v: View){ - v.viewTreeObserver.addOnGlobalLayoutListener { - Log.d("MyMy", "Width: ${v.width}") - val newH = (v.width * 4.0 / 9.0 + 0.5).toInt() - v.layoutParams.height = newH - v.invalidate() - } - } - private fun setTheme(caption: String, themeStructure: Array, nav: Int) { that?.apply { val t = layoutInflater.inflate(R.layout.line_caption, fbl, false) @@ -225,6 +218,7 @@ class BookHandler(private val th: WeakReference, val path: String) } private fun setAuthorsAndTags() { + if (exit) return that?.apply { book?.results?.comic?.apply { author?.let { diff --git a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt index 3c692a8..360b6cb 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeFragment.kt @@ -156,7 +156,7 @@ class HomeFragment : NoBackRefreshFragment(R.layout.fragment_home) { Thread{ homeHandler.obtainMessage(-1, true).sendToTarget() - while(mainWeakReference?.get()?.isDrawerClosed != true) sleep(233) + while(!MainActivity.isDrawerClosed) sleep(233) //homeHandler.sendEmptyMessage(6) //removeAllViews homeHandler.fhib = null sleep(600) @@ -164,6 +164,12 @@ class HomeFragment : NoBackRefreshFragment(R.layout.fragment_home) { }.start() } } + + override fun onResume() { + super.onResume() + swiperefresh?.isRefreshing = false + } + override fun onDestroy() { super.onDestroy() homeHandler.destroy() diff --git a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeHandler.kt b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeHandler.kt index f1781c0..c5d67c4 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/home/HomeHandler.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/home/HomeHandler.kt @@ -14,6 +14,7 @@ import androidx.cardview.widget.CardView import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.animation.doOnEnd import androidx.navigation.fragment.findNavController +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.bumptech.glide.Glide import com.bumptech.glide.load.model.GlideUrl import com.to.aboomy.pager2banner.Banner @@ -58,6 +59,7 @@ class HomeHandler(private val that: WeakReference) : AutoDownloadH -1 -> homeF?.swiperefresh?.isRefreshing = msg.obj as Boolean //0 -> setLayouts() 1 -> inflateCardLines() + 2 -> homeF?.swiperefresh?.let { setSwipe(it) } 3 -> setBanner(fhib as Banner) 5 -> setBannerInfo(msg.obj as Banner) 6 -> { @@ -107,6 +109,7 @@ class HomeHandler(private val that: WeakReference) : AutoDownloadH if(exit) return try { Thread { + sendEmptyMessage(2) //setSwipe sendEmptyMessage(7) //inflateBanner sendEmptyMessage(1) //inflateCardLines }.start() @@ -255,8 +258,11 @@ class HomeHandler(private val that: WeakReference) : AutoDownloadH ).adapter = homeF?.ViewData(v)?.RecyclerViewAdapter() } v.invalidate() - homeF?.fhov?.swipeRefreshLayout = homeF?.swiperefresh - homeF?.swiperefresh?.setOnRefreshListener { + } + + private fun setSwipe(sw: SwipeRefreshLayout) { + homeF?.fhov?.swipeRefreshLayout = sw + sw.setOnRefreshListener { Log.d("MyHFH", "Refresh items.") //index = null //Thread{this@HomeHandler.obtainMessage(-1, true).sendToTarget()}.start() //startLoad @@ -271,7 +277,7 @@ class HomeHandler(private val that: WeakReference) : AutoDownloadH } } - private fun allocateLine(title: String, iconResId: Int, comics: Array, finish: Boolean = false, isTopic: Boolean = false, onClick: (() -> Unit)? = null): Int{ + private fun allocateLine(title: String, iconResId: Int, comics: Array, finish: Boolean = false, isTopic: Boolean = false, onClick: (() -> Unit)? = null): Int{ val p = indexLines.size val c = comics.size / 3 homeF?.layoutInflater?.inflate( diff --git a/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt b/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt index 08adc90..0210737 100644 --- a/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt +++ b/app/src/main/java/top/fumiama/copymanga/ui/vm/ViewMangaActivity.kt @@ -17,6 +17,7 @@ import android.util.TypedValue import android.view.* import android.widget.SeekBar import android.widget.Toast +import androidx.appcompat.app.AppCompatDelegate import androidx.core.animation.doOnEnd import androidx.core.content.ContextCompat import androidx.core.content.edit @@ -127,10 +128,19 @@ class ViewMangaActivity : TitleActivityTemplate() { @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { + val settingsPref = MainActivity.mainWeakReference?.get()?.let { PreferenceManager.getDefaultSharedPreferences(it) } + settingsPref?.getBoolean("settings_cat_vm_sw_always_dark_bg", false)?.let { + if (it) { + Log.d("MyVM", "force dark") + delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES + } else { + delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM + } + } postponeEnterTransition() setContentView(R.layout.activity_viewmanga) super.onCreate(null) - val settingsPref = MainActivity.mainWeakReference?.get()?.let { PreferenceManager.getDefaultSharedPreferences(it) } + va = WeakReference(this) //dlZip2View = intent.getStringExtra("callFrom") == "Dl" || p["dlZip2View"] == "true" //zipFirst = intent.getStringExtra("callFrom") == "zipFirst" diff --git a/app/src/main/res/layout/fragment_book.xml b/app/src/main/res/layout/fragment_book.xml index ae49f73..a772adb 100644 --- a/app/src/main/res/layout/fragment_book.xml +++ b/app/src/main/res/layout/fragment_book.xml @@ -1,28 +1,51 @@ - - + + + + + + android:layout_height="wrap_content" + app:layout_behavior="@string/appbar_scrolling_view_behavior" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/fbiinf"> - + android:orientation="vertical" /> + - - \ No newline at end of file + android:layout_width="match_parent" + android:layout_height="match_parent" + android:alpha="0.5" + app:lottie_autoPlay="true" + app:lottie_loop="true" + app:lottie_rawRes="@raw/lottie_loading" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 630207a..398ef83 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -11,14 +11,14 @@ + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/search_layout_padding" + android:isScrollContainer="true"> diff --git a/app/src/main/res/layout/line_bookinfo.xml b/app/src/main/res/layout/line_bookinfo.xml index 893505e..799e81e 100644 --- a/app/src/main/res/layout/line_bookinfo.xml +++ b/app/src/main/res/layout/line_bookinfo.xml @@ -1,41 +1,48 @@ - + android:layout_height="wrap_content" + android:foreground="?android:attr/selectableItemBackground" + app:cardCornerRadius="@dimen/book_card_radius" + app:cardElevation="@dimen/book_card_elevation" + tools:layout_editor_absoluteX="8dp" + tools:layout_editor_absoluteY="8dp"> + android:scaleType="centerCrop" /> - + - + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/line_booktandb.xml b/app/src/main/res/layout/line_booktandb.xml index 4ee7399..387ab8e 100644 --- a/app/src/main/res/layout/line_booktandb.xml +++ b/app/src/main/res/layout/line_booktandb.xml @@ -1,8 +1,8 @@ + android:layout_width="match_parent" + android:layout_height="match_parent">