From dd678cc7d2f24a541130024252ea722c0a852079 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 10 Feb 2018 23:36:22 +0100 Subject: [PATCH] allow adding a contact to Favorites during creating --- .../activities/EditContactActivity.kt | 13 ++++---- .../contacts/helpers/ContactsHelper.kt | 31 +++++++++++++++++-- .../main/res/layout/activity_edit_contact.xml | 3 +- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt index 5c5f87c7..74dee76d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt @@ -182,6 +182,12 @@ class EditContactActivity : ContactActivity() { contact_email_add_new.setOnClickListener { addNewEmailField() } contact_event_add_new.setOnClickListener { addNewEventField() } + contact_toggle_favorite.apply { + setImageDrawable(getStarDrawable(contact!!.starred == 1)) + tag = contact!!.starred + applyColorFilter(textColor) + } + updateTextColors(contact_scrollview) wasActivityInitialized = true invalidateOptionsMenu() @@ -213,13 +219,6 @@ class EditContactActivity : ContactActivity() { contact_surname.setText(contact!!.surname) contact_source.text = getPublicContactSource(contact!!.source) - contact_toggle_favorite.apply { - beVisible() - setImageDrawable(getStarDrawable(contact!!.starred == 1)) - tag = contact!!.starred - applyColorFilter(config.textColor) - } - setupPhoneNumbers() setupEmails() setupEvents() 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 8a06ffe6..e4903577 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt @@ -301,6 +301,24 @@ class ContactsHelper(val activity: BaseSimpleActivity) { return sort } + private fun getRealContactId(id: Long): Int { + val uri = ContactsContract.Data.CONTENT_URI + val projection = getContactProjection() + val selection = "${ContactsContract.Data.MIMETYPE} = ? AND ${ContactsContract.Data.RAW_CONTACT_ID} = ?" + val selectionArgs = arrayOf(CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE, id.toString()) + var cursor: Cursor? = null + try { + cursor = activity.contentResolver.query(uri, projection, selection, selectionArgs, null) + if (cursor?.moveToFirst() == true) { + return cursor.getIntValue(ContactsContract.Data.CONTACT_ID) + } + } finally { + cursor?.close() + } + + return 0 + } + fun updateContact(contact: Contact, photoUpdateStatus: Int): Boolean { return try { activity.toast(R.string.updating) @@ -515,9 +533,18 @@ class ContactsHelper(val activity: BaseSimpleActivity) { } // fullsize photo + val rawId = ContentUris.parseId(results[0].uri) if (contact.photoUri.isNotEmpty() && fullSizePhotoData != null) { - val rawContactId = ContentUris.parseId(results[0].uri) - addFullSizePhoto(rawContactId, fullSizePhotoData) + addFullSizePhoto(rawId, fullSizePhotoData) + } + + // favorite + val userId = getRealContactId(rawId) + if (userId != 0 && contact.starred == 1) { + val uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, userId.toString()) + val contentValues = ContentValues(1) + contentValues.put(ContactsContract.Contacts.STARRED, contact.starred) + activity.contentResolver.update(uri, contentValues, null, null) } true diff --git a/app/src/main/res/layout/activity_edit_contact.xml b/app/src/main/res/layout/activity_edit_contact.xml index 4767e5a0..6684ce6d 100644 --- a/app/src/main/res/layout/activity_edit_contact.xml +++ b/app/src/main/res/layout/activity_edit_contact.xml @@ -31,8 +31,7 @@ android:layout_toRightOf="@+id/contact_photo" android:adjustViewBounds="true" android:padding="@dimen/tiny_margin" - android:src="@drawable/ic_star_off_big" - android:visibility="gone"/> + android:src="@drawable/ic_star_off_big"/>