From daec0a696cb315a036441b903d4cd943d63bde6b Mon Sep 17 00:00:00 2001 From: Yogesh Choudhary Paliyal Date: Sun, 25 Jul 2021 21:02:39 +0530 Subject: [PATCH] added copy option and improve searching --- app/build.gradle | 4 ++-- .../java/com/yogeshpaliyal/keypass/db/DbDao.kt | 2 +- .../keypass/listener/AccountsClickListener.kt | 15 +++++++++++++++ .../keypass/ui/home/HomeFragment.kt | 18 +++++++++++++++++- app/src/main/res/layout/activity_dashboard.xml | 3 ++- app/src/main/res/layout/item_accounts.xml | 17 ++++++++++++++--- .../drawable/ic_twotone_content_copy_24.xml | 15 +++++++++++++++ 7 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/com/yogeshpaliyal/keypass/listener/AccountsClickListener.kt create mode 100644 app/src/staging/res/drawable/ic_twotone_content_copy_24.xml diff --git a/app/build.gradle b/app/build.gradle index cb2f65d7..80ff90e9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { applicationId appPackageId minSdkVersion 22 targetSdkVersion 30 - versionCode 1306 - versionName "1.3.6" + versionCode 1307 + versionName "1.3.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/yogeshpaliyal/keypass/db/DbDao.kt b/app/src/main/java/com/yogeshpaliyal/keypass/db/DbDao.kt index f19954d8..758871fd 100644 --- a/app/src/main/java/com/yogeshpaliyal/keypass/db/DbDao.kt +++ b/app/src/main/java/com/yogeshpaliyal/keypass/db/DbDao.kt @@ -29,7 +29,7 @@ abstract class DbDao { @Query("SELECT * FROM account ORDER BY title ASC") abstract fun getAllAccounts(): LiveData> - @Query("SELECT * FROM account WHERE CASE WHEN :tag IS NOT NULL THEN tags = :tag ELSE 1 END AND (username LIKE '%'||:query||'%' ) ORDER BY title ASC") + @Query("SELECT * FROM account WHERE CASE WHEN :tag IS NOT NULL THEN tags = :tag ELSE 1 END AND ((username LIKE '%'||:query||'%' ) OR (title LIKE '%'||:query||'%' ) OR (notes LIKE '%'||:query||'%' )) ORDER BY title ASC") abstract fun getAllAccounts(query: String?, tag: String?): LiveData> @Query("SELECT * FROM account WHERE id = :id") diff --git a/app/src/main/java/com/yogeshpaliyal/keypass/listener/AccountsClickListener.kt b/app/src/main/java/com/yogeshpaliyal/keypass/listener/AccountsClickListener.kt new file mode 100644 index 00000000..f0282797 --- /dev/null +++ b/app/src/main/java/com/yogeshpaliyal/keypass/listener/AccountsClickListener.kt @@ -0,0 +1,15 @@ +package com.yogeshpaliyal.keypass.listener + +import android.view.View + + +/* +* @author Yogesh Paliyal +* techpaliyal@gmail.com +* https://techpaliyal.com +* created on 31-01-2021 09:00 +*/ +interface AccountsClickListener { + fun onItemClick(view: View, model: T) + fun onCopyClicked(model: T) +} \ No newline at end of file diff --git a/app/src/main/java/com/yogeshpaliyal/keypass/ui/home/HomeFragment.kt b/app/src/main/java/com/yogeshpaliyal/keypass/ui/home/HomeFragment.kt index 56f4cf28..1e9dd5b6 100644 --- a/app/src/main/java/com/yogeshpaliyal/keypass/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/yogeshpaliyal/keypass/ui/home/HomeFragment.kt @@ -1,15 +1,20 @@ package com.yogeshpaliyal.keypass.ui.home +import android.content.ClipData +import android.content.ClipboardManager import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.activity.viewModels +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import com.yogeshpaliyal.keypass.R import com.yogeshpaliyal.keypass.data.AccountModel import com.yogeshpaliyal.keypass.databinding.FragmentHomeBinding +import com.yogeshpaliyal.keypass.listener.AccountsClickListener import com.yogeshpaliyal.keypass.listener.UniversalClickListener import com.yogeshpaliyal.keypass.ui.detail.DetailActivity import com.yogeshpaliyal.universal_adapter.adapter.UniversalAdapterViewType @@ -43,10 +48,21 @@ class HomeFragment : Fragment() { ).build() } - val mListener = object : UniversalClickListener { + val mListener = object : AccountsClickListener { override fun onItemClick(view: View, model: AccountModel) { DetailActivity.start(context, model.id) } + + override fun onCopyClicked(model: AccountModel) { + val clipboard = + ContextCompat.getSystemService( + requireContext(), + ClipboardManager::class.java + ) + val clip = ClipData.newPlainText("KeyPass", model.password) + clipboard?.setPrimaryClip(clip) + Toast.makeText(context, getString(R.string.copied_to_clipboard), Toast.LENGTH_SHORT).show() + } } override fun onCreateView( diff --git a/app/src/main/res/layout/activity_dashboard.xml b/app/src/main/res/layout/activity_dashboard.xml index 5ffb6c66..23ebb227 100644 --- a/app/src/main/res/layout/activity_dashboard.xml +++ b/app/src/main/res/layout/activity_dashboard.xml @@ -38,7 +38,8 @@ app:boxCornerRadiusTopEnd="@dimen/grid_1" app:boxCornerRadiusTopStart="@dimen/grid_1" app:hintAnimationEnabled="false" - app:hintEnabled="false"> + app:hintEnabled="false" + app:endIconMode="clear_text"> + type="com.yogeshpaliyal.keypass.listener.AccountsClickListener<AccountModel>" /> + + diff --git a/app/src/staging/res/drawable/ic_twotone_content_copy_24.xml b/app/src/staging/res/drawable/ic_twotone_content_copy_24.xml new file mode 100644 index 00000000..86652df4 --- /dev/null +++ b/app/src/staging/res/drawable/ic_twotone_content_copy_24.xml @@ -0,0 +1,15 @@ + + + +