diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/build.gradle | 1 | ||||
-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 |
3 files changed, 40 insertions, 6 deletions
diff --git a/app/build.gradle b/app/build.gradle index 78557cc1..adf9e3f7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -84,6 +84,7 @@ dependencies { implementation deps.androidx.constraint_layout implementation deps.androidx.documentfile implementation deps.androidx.preference + implementation deps.androidx.swiperefreshlayout constraints { implementation(deps.androidx.recycler_view) { because 'versions above 1.0.0 have an accessibility related bug that causes crashes' 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" |