allow adding contacts to favorites by long pressing and Add

This commit is contained in:
tibbi
2017-12-30 18:55:15 +01:00
parent 0a72b5040a
commit d21b3e7c4d
14 changed files with 58 additions and 21 deletions

View File

@ -3,6 +3,7 @@ package com.simplemobiletools.contacts.activities
import android.content.Intent import android.content.Intent
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import com.simplemobiletools.commons.extensions.* 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.config
import com.simplemobiletools.contacts.extensions.onPageChanged import com.simplemobiletools.contacts.extensions.onPageChanged
import com.simplemobiletools.contacts.extensions.onTabSelectionChanged import com.simplemobiletools.contacts.extensions.onTabSelectionChanged
import com.simplemobiletools.interfaces.RefreshContactsListener
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_contacts.* import kotlinx.android.synthetic.main.fragment_contacts.*
import kotlinx.android.synthetic.main.fragment_favorites.* import kotlinx.android.synthetic.main.fragment_favorites.*
class MainActivity : SimpleActivity() { class MainActivity : SimpleActivity(), RefreshContactsListener {
private var isFirstResume = true private var isFirstResume = true
private var storedUseEnglish = false private var storedUseEnglish = false
@ -183,4 +185,11 @@ class MainActivity : SimpleActivity() {
private fun launchAbout() { private fun launchAbout() {
startAboutActivity(R.string.app_name, LICENSE_KOTLIN or LICENSE_MULTISELECT or LICENSE_JODA or LICENSE_GLIDE, BuildConfig.VERSION_NAME) 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()
}
} }

View File

@ -13,7 +13,6 @@ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
import com.simplemobiletools.commons.extensions.isActivityDestroyed import com.simplemobiletools.commons.extensions.isActivityDestroyed
import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener
import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.commons.views.MyRecyclerView
import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.R
import com.simplemobiletools.contacts.activities.SimpleActivity 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.extensions.openContact
import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.helpers.ContactsHelper
import com.simplemobiletools.contacts.models.Contact import com.simplemobiletools.contacts.models.Contact
import com.simplemobiletools.interfaces.RefreshContactsListener
import kotlinx.android.synthetic.main.item_contact_with_number.view.* import kotlinx.android.synthetic.main.item_contact_with_number.view.*
class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList<Contact>, val listener: RefreshRecyclerViewListener?, class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList<Contact>, val listener: RefreshContactsListener?,
val isFavoritesFragment: Boolean, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : val isFavoritesFragment: Boolean, recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) :
MyRecyclerViewAdapter(activity, recyclerView, itemClick) { MyRecyclerViewAdapter(activity, recyclerView, itemClick) {
@ -45,6 +45,7 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList<Co
findItem(R.id.cab_edit).isVisible = activity.config.callContact && isOneItemSelected() findItem(R.id.cab_edit).isVisible = activity.config.callContact && isOneItemSelected()
findItem(R.id.cab_remove).isVisible = isFavoritesFragment findItem(R.id.cab_remove).isVisible = isFavoritesFragment
findItem(R.id.cab_select_all).isVisible = isFavoritesFragment findItem(R.id.cab_select_all).isVisible = isFavoritesFragment
findItem(R.id.cab_add_to_favorites).isVisible = !isFavoritesFragment
findItem(R.id.cab_delete).isVisible = !isFavoritesFragment findItem(R.id.cab_delete).isVisible = !isFavoritesFragment
} }
} }
@ -60,6 +61,7 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList<Co
R.id.cab_edit -> editContact() R.id.cab_edit -> editContact()
R.id.cab_select_all -> selectAll() R.id.cab_select_all -> selectAll()
R.id.cab_delete -> askConfirmDelete() R.id.cab_delete -> askConfirmDelete()
R.id.cab_add_to_favorites -> addToFavorites()
R.id.cab_remove -> removeFavorites() R.id.cab_remove -> removeFavorites()
} }
} }
@ -107,9 +109,12 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList<Co
return return
} }
val contacts = ArrayList<Contact>() val contactsToRemove = ArrayList<Contact>()
selectedPositions.forEach { contacts.add(contactItems[it]) } selectedPositions.sortedDescending().forEach {
ContactsHelper(activity).deleteContacts(contacts) contactsToRemove.add(contactItems[it])
}
contactItems.removeAll(contactsToRemove)
ContactsHelper(activity).deleteContacts(contactsToRemove)
removeSelectedItems() removeSelectedItems()
} }
@ -117,6 +122,19 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList<Co
} }
private fun addToFavorites() {
if (selectedPositions.isEmpty()) {
return
}
val newFavorites = HashSet<String>()
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?) { override fun onViewRecycled(holder: ViewHolder?) {
super.onViewRecycled(holder) super.onViewRecycled(holder)
if (!activity.isActivityDestroyed()) { if (!activity.isActivityDestroyed()) {

View File

@ -14,16 +14,17 @@ class AddFavoritesDialog(val activity: SimpleActivity, val callback: () -> Unit)
private var dialog: AlertDialog? = null private var dialog: AlertDialog? = null
private var view = activity.layoutInflater.inflate(R.layout.dialog_add_favorites, null) private var view = activity.layoutInflater.inflate(R.layout.dialog_add_favorites, null)
private val config = activity.config private val config = activity.config
private var allContacts = ArrayList<Contact>()
init { init {
ContactsHelper(activity).getContacts { ContactsHelper(activity).getContacts {
var contacts = it allContacts = it
Contact.sorting = config.sorting Contact.sorting = config.sorting
contacts.sort() allContacts.sort()
val contactSources = config.displayContactSources val contactSources = config.displayContactSources
contacts = contacts.filter { contactSources.contains(it.source) } as ArrayList<Contact> allContacts = allContacts.filter { contactSources.contains(it.source) } as ArrayList<Contact>
view.add_favorites_list.adapter = AddFavoritesAdapter(activity, contacts, config.favorites) view.add_favorites_list.adapter = AddFavoritesAdapter(activity, allContacts, config.favorites)
activity.runOnUiThread { activity.runOnUiThread {
dialog = AlertDialog.Builder(activity) dialog = AlertDialog.Builder(activity)

View File

@ -15,8 +15,4 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
override fun placeholderClicked() { override fun placeholderClicked() {
activity!!.showFilterDialog() activity!!.showFilterDialog()
} }
override fun refreshItems() {
initContacts()
}
} }

View File

@ -14,10 +14,6 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
showAddFavoritesDialog() showAddFavoritesDialog()
} }
override fun refreshItems() {
initContacts()
}
private fun showAddFavoritesDialog() { private fun showAddFavoritesDialog() {
AddFavoritesDialog(activity!!) { AddFavoritesDialog(activity!!) {
initContacts() initContacts()

View File

@ -10,7 +10,6 @@ import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.commons.extensions.updateTextColors
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
import com.simplemobiletools.commons.helpers.SORT_BY_SURNAME import com.simplemobiletools.commons.helpers.SORT_BY_SURNAME
import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener
import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.R
import com.simplemobiletools.contacts.activities.MainActivity import com.simplemobiletools.contacts.activities.MainActivity
import com.simplemobiletools.contacts.activities.SimpleActivity import com.simplemobiletools.contacts.activities.SimpleActivity
@ -23,7 +22,7 @@ import com.simplemobiletools.contacts.helpers.ContactsHelper
import com.simplemobiletools.contacts.models.Contact import com.simplemobiletools.contacts.models.Contact
import kotlinx.android.synthetic.main.fragment_layout.view.* 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 var activity: MainActivity? = null
lateinit var config: Config lateinit var config: Config
@ -116,7 +115,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
val currAdapter = fragment_list.adapter val currAdapter = fragment_list.adapter
if (currAdapter == null) { 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) { if (config.callContact) {
val contact = it as Contact val contact = it as Contact
if (contact.phoneNumbers.isNotEmpty()) { if (contact.phoneNumbers.isNotEmpty()) {

View File

@ -0,0 +1,7 @@
package com.simplemobiletools.interfaces
interface RefreshContactsListener {
fun refreshItems()
fun refreshFavorites()
}

View File

@ -11,6 +11,11 @@
android:icon="@drawable/ic_select_all" android:icon="@drawable/ic_select_all"
android:title="@string/select_all" android:title="@string/select_all"
app:showAsAction="ifRoom"/> app:showAsAction="ifRoom"/>
<item
android:id="@+id/cab_add_to_favorites"
android:icon="@drawable/ic_star_on"
android:title="@string/add_to_favorites"
app:showAsAction="ifRoom"/>
<item <item
android:id="@+id/cab_delete" android:id="@+id/cab_delete"
android:icon="@drawable/ic_delete" android:icon="@drawable/ic_delete"

View File

@ -43,6 +43,7 @@
<!-- Favorites --> <!-- Favorites -->
<string name="no_favorites">Sieht so aus, als ob du keine Kontakte zu den Favoriten hinzugefügt hast.</string> <string name="no_favorites">Sieht so aus, als ob du keine Kontakte zu den Favoriten hinzugefügt hast.</string>
<string name="add_favorites">Zu Favoriten hinzufügen</string> <string name="add_favorites">Zu Favoriten hinzufügen</string>
<string name="add_to_favorites">Add to favorites</string>
<string name="remove_from_favorites">Aus Favoriten entfernen</string> <string name="remove_from_favorites">Aus Favoriten entfernen</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -43,6 +43,7 @@
<!-- Favorites --> <!-- Favorites -->
<string name="no_favorites">Seems like you haven\'t added any favorite contacts yet.</string> <string name="no_favorites">Seems like you haven\'t added any favorite contacts yet.</string>
<string name="add_favorites">Add favorites</string> <string name="add_favorites">Add favorites</string>
<string name="add_to_favorites">Add to favorites</string>
<string name="remove_from_favorites">Remove from favorites</string> <string name="remove_from_favorites">Remove from favorites</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -43,6 +43,7 @@
<!-- Favorites --> <!-- Favorites -->
<string name="no_favorites">Seems like you haven\'t added any favorite contacts yet.</string> <string name="no_favorites">Seems like you haven\'t added any favorite contacts yet.</string>
<string name="add_favorites">Add favorites</string> <string name="add_favorites">Add favorites</string>
<string name="add_to_favorites">Add to favorites</string>
<string name="remove_from_favorites">Remove from favorites</string> <string name="remove_from_favorites">Remove from favorites</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -43,6 +43,7 @@
<!-- Favorites --> <!-- Favorites -->
<string name="no_favorites">Seems like you haven\'t added any favorite contacts yet.</string> <string name="no_favorites">Seems like you haven\'t added any favorite contacts yet.</string>
<string name="add_favorites">Add favorites</string> <string name="add_favorites">Add favorites</string>
<string name="add_to_favorites">Add to favorites</string>
<string name="remove_from_favorites">Remove from favorites</string> <string name="remove_from_favorites">Remove from favorites</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -43,6 +43,7 @@
<!-- Favorites --> <!-- Favorites -->
<string name="no_favorites">Zdá sa, že ste ešte nepridali žiadne obľúbené kontakty.</string> <string name="no_favorites">Zdá sa, že ste ešte nepridali žiadne obľúbené kontakty.</string>
<string name="add_favorites">Pridať obľúbené</string> <string name="add_favorites">Pridať obľúbené</string>
<string name="add_to_favorites">Pridať medzi obľúbené</string>
<string name="remove_from_favorites">Odstrániť z obľúbených</string> <string name="remove_from_favorites">Odstrániť z obľúbených</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -43,6 +43,7 @@
<!-- Favorites --> <!-- Favorites -->
<string name="no_favorites">Seems like you haven\'t added any favorite contacts yet.</string> <string name="no_favorites">Seems like you haven\'t added any favorite contacts yet.</string>
<string name="add_favorites">Add favorites</string> <string name="add_favorites">Add favorites</string>
<string name="add_to_favorites">Add to favorites</string>
<string name="remove_from_favorites">Remove from favorites</string> <string name="remove_from_favorites">Remove from favorites</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have --> <!-- Strings displayed only on Google Playstore. Optional, but good to have -->