diff options
author | glowinthedark <48893368+glowinthedark@users.noreply.github.com> | 2020-02-29 21:50:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-01 02:20:09 +0530 |
commit | 09005f804335ee86fdcedd50221f1bb5984646da (patch) | |
tree | bce6e459c9237a7f2e8331285df389149c940674 /app/src | |
parent | 947e41105b3fdfb7ce9734fb25119c46695f7bba (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.kt | 27 | ||||
-rw-r--r-- | app/src/main/res/layout/password_recycler_view.xml | 18 |
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" |