diff --git a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt index f9beeaf3..87dfebed 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt @@ -21,6 +21,7 @@ class OfflineMangaAdapter( private val inflater: LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater private var originalItems: List = items + private var style = context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getInt("offline_view", 0) override fun getCount(): Int { return items.size @@ -37,15 +38,10 @@ class OfflineMangaAdapter( @SuppressLint("SetTextI18n") override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { - val style = context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getInt("offline_view", 0) - - var view = convertView - - if (view == null && style == 0 ) { - view = inflater.inflate(R.layout.item_media_large, parent, false) // large view - } - else if (view == null && style == 1){ - view = inflater.inflate(R.layout.item_media_compact, parent, false) // compact view + val view: View = convertView ?: when(style) { + 0 -> inflater.inflate(R.layout.item_media_large, parent, false) // large view + 1 -> inflater.inflate(R.layout.item_media_compact, parent, false) // compact view + else -> inflater.inflate(R.layout.item_media_compact, parent, false) // compact view } val item = getItem(position) as OfflineMangaModel @@ -69,7 +65,7 @@ class OfflineMangaAdapter( else if (style == 1){ val readchapter = view.findViewById(R.id.itemCompactUserProgress) // for compact view readchapter.text = item.readchapter - totalchapter.text = " | "+item.totalchapter + totalchapter.text = " | " + item.totalchapter } // Bind item data to the views @@ -104,4 +100,9 @@ class OfflineMangaAdapter( this.originalItems = items notifyDataSetChanged() } + + fun notifyNewGrid(){ + style = context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getInt("offline_view", 0) + notifyDataSetChanged() + } } \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt index a3d330a4..85a06bed 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt @@ -15,6 +15,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.animation.OvershootInterpolator +import android.widget.AbsListView import android.widget.AutoCompleteTextView import android.widget.GridView import android.widget.ImageView @@ -128,7 +129,11 @@ class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener { style = 0 context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() ?.putInt("offline_view", style!!)?.apply() - recreate(requireActivity()) + gridView.visibility = View.GONE + gridView = view.findViewById(R.id.gridView) + gridView.adapter = adapter + gridView.visibility = View.VISIBLE + adapter.notifyNewGrid() } @@ -137,7 +142,11 @@ class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener { style = 1 context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() ?.putInt("offline_view", style!!)?.apply() - recreate(requireActivity()) + gridView.visibility = View.GONE + gridView = view.findViewById(R.id.gridView1) + gridView.adapter = adapter + gridView.visibility = View.VISIBLE + adapter.notifyNewGrid() } gridView = if(style == 0) view.findViewById(R.id.gridView) else view.findViewById(R.id.gridView1) @@ -229,9 +238,25 @@ class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener { } scrollTop.setOnClickListener { - //TODO: scroll to top + gridView.smoothScrollToPosition(0) } + // Assuming 'scrollTop' is a view that you want to hide/show + scrollTop.visibility = View.GONE + + gridView.setOnScrollListener(object : AbsListView.OnScrollListener { + override fun onScrollStateChanged(view: AbsListView, scrollState: Int) { + // Implement behavior for different scroll states if needed + } + + override fun onScroll(view: AbsListView, firstVisibleItem: Int, visibleItemCount: Int, totalItemCount: Int) { + val first = view.getChildAt(0) + val visibility = first != null && first.top < -height + scrollTop.visibility = if (visibility) View.VISIBLE else View.GONE + } + }) + + } override fun onResume() { diff --git a/app/src/main/res/layout/fragment_manga_offline.xml b/app/src/main/res/layout/fragment_manga_offline.xml index be95cc1a..f829fe32 100644 --- a/app/src/main/res/layout/fragment_manga_offline.xml +++ b/app/src/main/res/layout/fragment_manga_offline.xml @@ -35,6 +35,7 @@ android:hint="@string/manga" android:textColorHint="@color/bg_opp" android:transitionName="@string/search" + android:fontFamily="@font/poppins_bold" app:boxBackgroundColor="?attr/colorPrimaryContainer" app:boxCornerRadiusBottomEnd="28dp" app:boxCornerRadiusBottomStart="28dp"