diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ContactActivity.kt index 61243300..0cec7881 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ContactActivity.kt @@ -298,7 +298,7 @@ class ContactActivity : SimpleActivity() { private fun setupNewContact() { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE) supportActionBar?.title = resources.getString(R.string.new_contact) - contact = Contact(0, "", "", "", "", ArrayList(), ArrayList(), ArrayList(), "") + contact = Contact(0, "", "", "", "", ArrayList(), ArrayList(), ArrayList(), "", 0) contact_source.text = config.lastUsedContactSource contact_source.setOnClickListener { showAccountSourcePicker() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt index c369e93d..1d720db2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SelectContactActivity.kt @@ -56,7 +56,7 @@ class SelectContactActivity : SimpleActivity() { contacts.sort() runOnUiThread { - select_contact_list.adapter = SelectContactsAdapter(this, contacts, HashSet(), false) { + select_contact_list.adapter = SelectContactsAdapter(this, contacts, ArrayList(), false) { confirmSelection(it) } select_contact_fastscroller.allowBubbleDisplay = baseConfig.showInfoBubble 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 9b4f32b5..4c14002f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt @@ -139,7 +139,6 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: MutableList() favoritesToRemove.mapTo(favoriteIDsToRemove, { it.id.toString() }) - activity.config.removeFavorites(favoriteIDsToRemove) if (contactItems.isEmpty()) { listener?.refreshFavorites() finishActMode() @@ -155,8 +154,6 @@ 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() } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt index fad7cf4e..4d68bbae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/SelectContactsAdapter.kt @@ -21,7 +21,7 @@ import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.* import java.util.* -class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List, val selectedContacts: Set, val allowPickMultiple: Boolean, +class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List, val selectedContacts: ArrayList, val allowPickMultiple: Boolean, val itemClick: ((Contact) -> Unit)? = null) : RecyclerView.Adapter() { private val itemViews = SparseArray() private val selectedPositions = HashSet() 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 5f6d72af..f1bbfa33 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/AddFavoritesDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/AddFavoritesDialog.kt @@ -28,12 +28,14 @@ class AddFavoritesDialog(val activity: SimpleActivity, val callback: () -> Unit) allContacts = allContacts.filter { contactSources.contains(it.source) } as ArrayList } + val favorites = allContacts.filter { it.starred == 1 }.map { it.id.toString() } as ArrayList + Contact.sorting = config.sorting allContacts.sort() activity.runOnUiThread { view.apply { - select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, config.favorites, true) + select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, favorites, true) select_contact_fastscroller.allowBubbleDisplay = activity.baseConfig.showInfoBubble select_contact_fastscroller.setViews(select_contact_list) { select_contact_fastscroller.updateBubbleText(allContacts[it].getBubbleText()) @@ -54,12 +56,10 @@ class AddFavoritesDialog(val activity: SimpleActivity, val callback: () -> Unit) val allDisplayedIDs = ArrayList() allContacts.mapTo(allDisplayedIDs, { it.id.toString() }) val selectedItems = (view.select_contact_list.adapter as SelectContactsAdapter).getSelectedItemsSet() - config.addFavorites(selectedItems) allDisplayedIDs.removeAll(selectedItems) val favoriteIDsToRemove = HashSet() allDisplayedIDs.mapTo(favoriteIDsToRemove, { it }) - config.removeFavorites(favoriteIDsToRemove) callback() dialog?.dismiss() } 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 bc2078b5..85405c36 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt @@ -89,8 +89,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) } contacts = if (this is FavoritesFragment) { - val favorites = config.favorites - contacts.filter { favorites.contains(it.id.toString()) } as ArrayList + contacts.filter { it.starred == 1 } as ArrayList } else { val contactSources = config.displayContactSources if (config.showAllContacts()) { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt index e97c84d6..25628b1c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt @@ -4,7 +4,6 @@ import android.content.Context import com.simplemobiletools.commons.helpers.BaseConfig import com.simplemobiletools.commons.helpers.SORTING import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME -import java.util.* class Config(context: Context) : BaseConfig(context) { companion object { @@ -40,24 +39,4 @@ class Config(context: Context) : BaseConfig(context) { var lastUsedViewPagerPage: Int get() = prefs.getInt(LAST_USED_VIEW_PAGER_PAGE, 0) set(lastUsedViewPagerPage) = prefs.edit().putInt(LAST_USED_VIEW_PAGER_PAGE, lastUsedViewPagerPage).apply() - - var favorites: Set - get() = prefs.getStringSet(FAVORITES, HashSet()) - set(favorites) = prefs.edit().remove(FAVORITES).putStringSet(FAVORITES, favorites).apply() - - fun addFavorite(id: String) { - addFavorites(HashSet(Arrays.asList(id))) - } - - fun addFavorites(favs: Set) { - val currFavorites = HashSet(favorites) - currFavorites.addAll(favs) - favorites = currFavorites - } - - fun removeFavorites(favs: Set) { - val currFavorites = HashSet(favorites) - currFavorites.removeAll(favs) - favorites = currFavorites - } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt index 9d54f9fb..eff937cf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt @@ -7,7 +7,6 @@ val DISPLAY_CONTACT_SOURCES = "display_contact_sources" val START_NAME_WITH_SURNAME = "start_name_with_surname" val LAST_USED_CONTACT_SOURCE = "last_used_contact_source" val LAST_USED_VIEW_PAGER_PAGE = "last_used_view_pager_page" -val FAVORITES = "favorites" val CONTACT_ID = "contact_id" diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt index 6d8f9f7d..a1e45ba4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt @@ -54,7 +54,8 @@ class ContactsHelper(val activity: BaseSimpleActivity) { val emails = ArrayList() val events = ArrayList() val accountName = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_NAME) - val contact = Contact(id, firstName, middleName, surname, photoUri, number, emails, events, accountName) + val starred = cursor.getIntValue(ContactsContract.CommonDataKinds.StructuredName.STARRED) + val contact = Contact(id, firstName, middleName, surname, photoUri, number, emails, events, accountName, starred) contacts.put(id, contact) } while (cursor.moveToNext()) } @@ -208,7 +209,8 @@ class ContactsHelper(val activity: BaseSimpleActivity) { val emails = getEmails(id)[id] ?: ArrayList() val events = getEvents(id)[id] ?: ArrayList() val accountName = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_NAME) - return Contact(id, firstName, middleName, surname, photoUri, number, emails, events, accountName) + val starred = cursor.getIntValue(ContactsContract.CommonDataKinds.StructuredName.STARRED) + return Contact(id, firstName, middleName, surname, photoUri, number, emails, events, accountName, starred) } } finally { cursor?.close() @@ -264,6 +266,7 @@ class ContactsHelper(val activity: BaseSimpleActivity) { ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME, ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, ContactsContract.CommonDataKinds.StructuredName.PHOTO_URI, + ContactsContract.CommonDataKinds.StructuredName.STARRED, ContactsContract.RawContacts.ACCOUNT_NAME ) @@ -557,7 +560,6 @@ class ContactsHelper(val activity: BaseSimpleActivity) { } activity.contentResolver.applyBatch(ContactsContract.AUTHORITY, operations) - activity.config.removeFavorites(contactIDs) } catch (e: Exception) { activity.showErrorToast(e) } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt index 6fd790d7..fab1fec3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt @@ -5,7 +5,8 @@ import com.simplemobiletools.commons.helpers.SORT_BY_MIDDLE_NAME import com.simplemobiletools.commons.helpers.SORT_DESCENDING data class Contact(val id: Int, var firstName: String, var middleName: String, var surname: String, var photoUri: String, - var phoneNumbers: ArrayList, var emails: ArrayList, var events: ArrayList, var source: String) : Comparable { + var phoneNumbers: ArrayList, var emails: ArrayList, var events: ArrayList, var source: String, + var starred: Int) : Comparable { companion object { var sorting: Int = 0 }