summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorglowinthedark <48893368+glowinthedark@users.noreply.github.com>2020-02-29 21:50:09 +0100
committerGitHub <noreply@github.com>2020-03-01 02:20:09 +0530
commit09005f804335ee86fdcedd50221f1bb5984646da (patch)
treebce6e459c9237a7f2e8331285df389149c940674 /app/src
parent947e41105b3fdfb7ce9734fb25119c46695f7bba (diff)
swipe to refresh using androidx SwipeRefreshLayout (#645)
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt27
-rw-r--r--app/src/main/res/layout/password_recycler_view.xml18
2 files changed, 39 insertions, 6 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
index ad01000c..744191b7 100644
--- a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
@@ -4,7 +4,9 @@
*/
package com.zeapo.pwdstore
+import android.app.Activity
import android.content.Context
+import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.view.LayoutInflater
@@ -16,7 +18,10 @@ import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.floatingactionbutton.FloatingActionButton
+import com.zeapo.pwdstore.git.GitActivity
import com.zeapo.pwdstore.ui.adapters.PasswordRecyclerAdapter
import com.zeapo.pwdstore.utils.PasswordItem
import com.zeapo.pwdstore.utils.PasswordRepository
@@ -44,6 +49,7 @@ class PasswordFragment : Fragment() {
private lateinit var recyclerView: RecyclerView
private lateinit var listener: OnFragmentInteractionListener
private lateinit var settings: SharedPreferences
+ private lateinit var swipe_refresher: SwipeRefreshLayout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -61,6 +67,19 @@ class PasswordFragment : Fragment() {
val view = inflater.inflate(R.layout.password_recycler_view, container, false)
// use a linear layout manager
val layoutManager = LinearLayoutManager(requireContext())
+ swipe_refresher = view.findViewById(R.id.swipe_refresher)
+ swipe_refresher.setOnRefreshListener {
+ if (!PasswordRepository.isInitialized) {
+ MaterialAlertDialogBuilder(requireContext())
+ .setMessage(getString(R.string.creation_dialog_text))
+ .setPositiveButton(getString(R.string.dialog_ok), null).show()
+ swipe_refresher.isRefreshing = false
+ } else {
+ val intent = Intent(context, GitActivity::class.java)
+ intent.putExtra("Operation", GitActivity.REQUEST_SYNC)
+ startActivityForResult(intent, GitActivity.REQUEST_SYNC)
+ }
+ }
recyclerView = view.findViewById(R.id.pass_recycler)
recyclerView.layoutManager = layoutManager
// use divider
@@ -126,6 +145,14 @@ class PasswordFragment : Fragment() {
}
}
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ if (resultCode == Activity.RESULT_OK) {
+ when (requestCode) {
+ GitActivity.REQUEST_SYNC -> swipe_refresher.isRefreshing = false
+ }
+ }
+ }
+
/** clears the adapter content and sets it back to the root view */
fun updateAdapter() {
passListStack.clear()
diff --git a/app/src/main/res/layout/password_recycler_view.xml b/app/src/main/res/layout/password_recycler_view.xml
index f58543ac..dd6b00c1 100644
--- a/app/src/main/res/layout/password_recycler_view.xml
+++ b/app/src/main/res/layout/password_recycler_view.xml
@@ -10,13 +10,19 @@
android:clipToPadding="false"
tools:context="com.zeapo.pwdstore.PasswordFragment">
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/pass_recycler"
- android:scrollbars="none"
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+ android:id="@+id/swipe_refresher"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:listitem="@layout/password_row_layout"
- tools:itemCount="20" />
+ android:layout_height="match_parent">
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/pass_recycler"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:scrollbars="none"
+ tools:itemCount="20"
+ tools:listitem="@layout/password_row_layout" />
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<LinearLayout
android:id="@+id/create_options"