From adad574c18d2c76d52620814d61007ed40a014b4 Mon Sep 17 00:00:00 2001 From: rimthekid Date: Fri, 18 Mar 2022 08:13:07 -0700 Subject: [PATCH] general fixes --- .../github/libretube/CustomSwipeToRefresh.kt | 47 ++++--------------- .../main/java/com/github/libretube/Home.kt | 15 ++++++ .../java/com/github/libretube/LoginDialog.kt | 12 +++++ .../java/com/github/libretube/MainActivity.kt | 17 +++++++ app/src/main/res/drawable/ic_import.xml | 10 ++++ app/src/main/res/drawable/ic_language.xml | 10 ++++ app/src/main/res/drawable/ic_server.xml | 13 +++++ app/src/main/res/drawable/ic_theme.xml | 10 ++++ app/src/main/res/layout/dialog_login.xml | 15 +++--- .../layout/exo_styled_player_control_view.xml | 4 +- app/src/main/res/layout/fragment_home.xml | 7 ++- app/src/main/res/values/strings.xml | 5 +- app/src/main/res/xml/settings.xml | 17 +++---- 13 files changed, 123 insertions(+), 59 deletions(-) create mode 100644 app/src/main/res/drawable/ic_import.xml create mode 100644 app/src/main/res/drawable/ic_language.xml create mode 100644 app/src/main/res/drawable/ic_server.xml create mode 100644 app/src/main/res/drawable/ic_theme.xml diff --git a/app/src/main/java/com/github/libretube/CustomSwipeToRefresh.kt b/app/src/main/java/com/github/libretube/CustomSwipeToRefresh.kt index ade59a814..e00f5e3c1 100644 --- a/app/src/main/java/com/github/libretube/CustomSwipeToRefresh.kt +++ b/app/src/main/java/com/github/libretube/CustomSwipeToRefresh.kt @@ -2,57 +2,30 @@ package com.github.libretube import android.content.Context import android.util.AttributeSet -import android.view.KeyEvent.ACTION_DOWN -import android.view.KeyEvent.ACTION_UP import android.view.MotionEvent -import android.view.MotionEvent.ACTION_CANCEL import android.view.MotionEvent.ACTION_MOVE -import android.view.View import android.view.ViewConfiguration import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import kotlin.math.abs - -class CustomSwipeToRefresh -@JvmOverloads -constructor( - context: Context, - attrs: AttributeSet? = null -) : SwipeRefreshLayout(context, attrs) { - - private val touchSlop: Int = ViewConfiguration.get(context).scaledTouchSlop - private var startX = 0f - private var startY = 0f - private var forbidSwipe = false - private var isStartScrolledByY = false +class CustomSwipeToRefresh(context: Context?, attrs: AttributeSet?) : + SwipeRefreshLayout(context!!, attrs) { + private val mTouchSlop: Int + private var mPrevX = 0f override fun onInterceptTouchEvent(event: MotionEvent): Boolean { when (event.action) { - ACTION_DOWN -> { - startX = event.x - startY = event.y - } + MotionEvent.ACTION_DOWN -> mPrevX = MotionEvent.obtain(event).x ACTION_MOVE -> { - val isScrolledByX = abs(event.x - startX) > touchSlop - val isScrolledByY = abs(event.y - startY) > touchSlop - if (!forbidSwipe && isScrolledByY) { - isStartScrolledByY = true - } - if ((isScrolledByX || forbidSwipe) && !isStartScrolledByY) { - forbidSwipe = true + val eventX = event.x + val xDiff = Math.abs(eventX - mPrevX) + if (xDiff > mTouchSlop) { return false } } - ACTION_CANCEL, ACTION_UP -> { - forbidSwipe = false - isStartScrolledByY = false - } } return super.onInterceptTouchEvent(event) } - override fun onNestedScroll(target: View, dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int) { - if (forbidSwipe) return - super.onNestedScroll(target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed) + init { + mTouchSlop = ViewConfiguration.get(context).scaledTouchSlop } - } \ No newline at end of file diff --git a/app/src/main/java/com/github/libretube/Home.kt b/app/src/main/java/com/github/libretube/Home.kt index 0988352fc..b83725070 100644 --- a/app/src/main/java/com/github/libretube/Home.kt +++ b/app/src/main/java/com/github/libretube/Home.kt @@ -7,10 +7,12 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ProgressBar +import android.widget.Toast import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceManager import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import okhttp3.* import retrofit2.HttpException @@ -21,6 +23,7 @@ import java.io.IOException class Home : Fragment() { private val TAG = "HomeFragment" + private var refreshLayout: SwipeRefreshLayout? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments?.let { @@ -43,6 +46,13 @@ class Home : Fragment() { recyclerView.layoutManager = GridLayoutManager(view.context, resources.getInteger(R.integer.grid_items)) val progressbar = view.findViewById(R.id.progressBar) fetchJson(progressbar,recyclerView) + refreshLayout = view.findViewById(R.id.home_refresh) + refreshLayout?.isEnabled = true + refreshLayout?.setOnRefreshListener { + Log.d(TAG,"hmm") + fetchJson(progressbar,recyclerView) + } + } @@ -57,10 +67,14 @@ class Home : Fragment() { }catch(e: IOException) { println(e) Log.e(TAG, "IOException, you might not have internet connection") + Toast.makeText(context,R.string.unknown_error, Toast.LENGTH_SHORT).show() return@launchWhenCreated } catch (e: HttpException) { Log.e(TAG, "HttpException, unexpected response") + Toast.makeText(context,R.string.server_error, Toast.LENGTH_SHORT).show() return@launchWhenCreated + }finally { + refreshLayout?.isRefreshing = false } runOnUiThread { progressBar.visibility = View.GONE @@ -79,6 +93,7 @@ class Home : Fragment() { override fun onDestroyView() { view?.findViewById(R.id.recview)?.adapter=null + refreshLayout = null Log.e(TAG,"destroyview") super.onDestroyView() } diff --git a/app/src/main/java/com/github/libretube/LoginDialog.kt b/app/src/main/java/com/github/libretube/LoginDialog.kt index de47771fc..0d3e9405b 100644 --- a/app/src/main/java/com/github/libretube/LoginDialog.kt +++ b/app/src/main/java/com/github/libretube/LoginDialog.kt @@ -49,12 +49,20 @@ class LoginDialog : DialogFragment() { username=view.findViewById(R.id.username) password=view.findViewById(R.id.password) view.findViewById