From d21b3e7c4d05bcd93df41c2c1aa580e5e3fb4e83 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 30 Dec 2017 18:55:15 +0100 Subject: [PATCH] allow adding contacts to favorites by long pressing and Add --- .../contacts/activities/MainActivity.kt | 11 +++++++- .../contacts/adapters/ContactsAdapter.kt | 28 +++++++++++++++---- .../contacts/dialogs/AddFavoritesDialog.kt | 9 +++--- .../contacts/fragments/ContactsFragment.kt | 4 --- .../contacts/fragments/FavoritesFragment.kt | 4 --- .../contacts/fragments/MyViewPagerFragment.kt | 5 ++-- .../interfaces/RefreshContactsListener.kt | 7 +++++ app/src/main/res/menu/cab.xml | 5 ++++ app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-ko-rKR/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 14 files changed, 58 insertions(+), 21 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/interfaces/RefreshContactsListener.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt index a423d57d..c661d5e5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt @@ -3,6 +3,7 @@ package com.simplemobiletools.contacts.activities import android.content.Intent import android.graphics.drawable.ColorDrawable import android.os.Bundle +import android.util.Log import android.view.Menu import android.view.MenuItem import com.simplemobiletools.commons.extensions.* @@ -15,11 +16,12 @@ import com.simplemobiletools.contacts.dialogs.FilterContactSourcesDialog import com.simplemobiletools.contacts.extensions.config import com.simplemobiletools.contacts.extensions.onPageChanged import com.simplemobiletools.contacts.extensions.onTabSelectionChanged +import com.simplemobiletools.interfaces.RefreshContactsListener import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.fragment_contacts.* import kotlinx.android.synthetic.main.fragment_favorites.* -class MainActivity : SimpleActivity() { +class MainActivity : SimpleActivity(), RefreshContactsListener { private var isFirstResume = true private var storedUseEnglish = false @@ -183,4 +185,11 @@ class MainActivity : SimpleActivity() { private fun launchAbout() { startAboutActivity(R.string.app_name, LICENSE_KOTLIN or LICENSE_MULTISELECT or LICENSE_JODA or LICENSE_GLIDE, BuildConfig.VERSION_NAME) } + + override fun refreshItems() { + } + + override fun refreshFavorites() { + favorites_fragment?.initContacts() + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt index b835b1bb..ad463b9e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt @@ -13,7 +13,6 @@ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor import com.simplemobiletools.commons.extensions.isActivityDestroyed -import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.activities.SimpleActivity @@ -21,9 +20,10 @@ import com.simplemobiletools.contacts.extensions.config import com.simplemobiletools.contacts.extensions.openContact import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.models.Contact +import com.simplemobiletools.interfaces.RefreshContactsListener import kotlinx.android.synthetic.main.item_contact_with_number.view.* -class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList, val listener: RefreshRecyclerViewListener?, +class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList, val listener: RefreshContactsListener?, val isFavoritesFragment: Boolean, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) { @@ -45,6 +45,7 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList editContact() R.id.cab_select_all -> selectAll() R.id.cab_delete -> askConfirmDelete() + R.id.cab_add_to_favorites -> addToFavorites() R.id.cab_remove -> removeFavorites() } } @@ -107,9 +109,12 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList() - selectedPositions.forEach { contacts.add(contactItems[it]) } - ContactsHelper(activity).deleteContacts(contacts) + val contactsToRemove = ArrayList() + selectedPositions.sortedDescending().forEach { + contactsToRemove.add(contactItems[it]) + } + contactItems.removeAll(contactsToRemove) + ContactsHelper(activity).deleteContacts(contactsToRemove) removeSelectedItems() } @@ -117,6 +122,19 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList() + selectedPositions.forEach { newFavorites.add(contactItems[it].id.toString()) } + newFavorites.addAll(activity.config.favorites) + activity.config.favorites = newFavorites + listener?.refreshFavorites() + finishActMode() + } + override fun onViewRecycled(holder: ViewHolder?) { super.onViewRecycled(holder) if (!activity.isActivityDestroyed()) { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/AddFavoritesDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/AddFavoritesDialog.kt index 4617a174..94b83796 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/AddFavoritesDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/AddFavoritesDialog.kt @@ -14,16 +14,17 @@ class AddFavoritesDialog(val activity: SimpleActivity, val callback: () -> Unit) private var dialog: AlertDialog? = null private var view = activity.layoutInflater.inflate(R.layout.dialog_add_favorites, null) private val config = activity.config + private var allContacts = ArrayList() init { ContactsHelper(activity).getContacts { - var contacts = it + allContacts = it Contact.sorting = config.sorting - contacts.sort() + allContacts.sort() val contactSources = config.displayContactSources - contacts = contacts.filter { contactSources.contains(it.source) } as ArrayList - view.add_favorites_list.adapter = AddFavoritesAdapter(activity, contacts, config.favorites) + allContacts = allContacts.filter { contactSources.contains(it.source) } as ArrayList + view.add_favorites_list.adapter = AddFavoritesAdapter(activity, allContacts, config.favorites) activity.runOnUiThread { dialog = AlertDialog.Builder(activity) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/ContactsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/ContactsFragment.kt index 9b5d9ec4..18df3607 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/ContactsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/ContactsFragment.kt @@ -15,8 +15,4 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag override fun placeholderClicked() { activity!!.showFilterDialog() } - - override fun refreshItems() { - initContacts() - } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/FavoritesFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/FavoritesFragment.kt index 29455601..3e42d3aa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/FavoritesFragment.kt @@ -14,10 +14,6 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa showAddFavoritesDialog() } - override fun refreshItems() { - initContacts() - } - private fun showAddFavoritesDialog() { AddFavoritesDialog(activity!!) { initContacts() diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt index 98051209..f36d3091 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt @@ -10,7 +10,6 @@ import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME import com.simplemobiletools.commons.helpers.SORT_BY_SURNAME -import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.activities.MainActivity import com.simplemobiletools.contacts.activities.SimpleActivity @@ -23,7 +22,7 @@ import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.fragment_layout.view.* -abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : CoordinatorLayout(context, attributeSet), RefreshRecyclerViewListener { +abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : CoordinatorLayout(context, attributeSet) { var activity: MainActivity? = null lateinit var config: Config @@ -116,7 +115,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) val currAdapter = fragment_list.adapter if (currAdapter == null) { - ContactsAdapter(activity as SimpleActivity, contacts, this, this is FavoritesFragment, fragment_list) { + ContactsAdapter(activity as SimpleActivity, contacts, activity, this is FavoritesFragment, fragment_list) { if (config.callContact) { val contact = it as Contact if (contact.phoneNumbers.isNotEmpty()) { diff --git a/app/src/main/kotlin/com/simplemobiletools/interfaces/RefreshContactsListener.kt b/app/src/main/kotlin/com/simplemobiletools/interfaces/RefreshContactsListener.kt new file mode 100644 index 00000000..15e1a802 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/interfaces/RefreshContactsListener.kt @@ -0,0 +1,7 @@ +package com.simplemobiletools.interfaces + +interface RefreshContactsListener { + fun refreshItems() + + fun refreshFavorites() +} diff --git a/app/src/main/res/menu/cab.xml b/app/src/main/res/menu/cab.xml index ca7e4ca0..238db7b7 100644 --- a/app/src/main/res/menu/cab.xml +++ b/app/src/main/res/menu/cab.xml @@ -11,6 +11,11 @@ android:icon="@drawable/ic_select_all" android:title="@string/select_all" app:showAsAction="ifRoom"/> + Sieht so aus, als ob du keine Kontakte zu den Favoriten hinzugefügt hast. Zu Favoriten hinzufügen + Add to favorites Aus Favoriten entfernen diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 01f63a68..cbc195ee 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -43,6 +43,7 @@ Seems like you haven\'t added any favorite contacts yet. Add favorites + Add to favorites Remove from favorites diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 739ce256..c0a3b4ad 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -43,6 +43,7 @@ Seems like you haven\'t added any favorite contacts yet. Add favorites + Add to favorites Remove from favorites diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a923193d..8ea29b34 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -43,6 +43,7 @@ Seems like you haven\'t added any favorite contacts yet. Add favorites + Add to favorites Remove from favorites diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 61d5cd14..c0362318 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -43,6 +43,7 @@ Zdá sa, že ste ešte nepridali žiadne obľúbené kontakty. Pridať obľúbené + Pridať medzi obľúbené Odstrániť z obľúbených diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 682db87f..8513f3eb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -43,6 +43,7 @@ Seems like you haven\'t added any favorite contacts yet. Add favorites + Add to favorites Remove from favorites