allow changing the contact source at the edit screen

This commit is contained in:
tibbi
2018-04-30 22:42:47 +02:00
parent 98ea4ac020
commit 3fb66174f1

View File

@ -52,6 +52,7 @@ class EditContactActivity : ContactActivity() {
private var lastPhotoIntentUri: Uri? = null private var lastPhotoIntentUri: Uri? = null
private var isSaving = false private var isSaving = false
private var isThirdPartyIntent = false private var isThirdPartyIntent = false
private var originalContactSource = ""
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -212,6 +213,7 @@ class EditContactActivity : ContactActivity() {
contact_events_add_new.setOnClickListener { addNewEventField() } contact_events_add_new.setOnClickListener { addNewEventField() }
contact_websites_add_new.setOnClickListener { addNewWebsiteField() } contact_websites_add_new.setOnClickListener { addNewWebsiteField() }
contact_groups_add_new.setOnClickListener { showSelectGroupsDialog() } contact_groups_add_new.setOnClickListener { showSelectGroupsDialog() }
contact_source.setOnClickListener { showSelectContactSourceDialog() }
setupFieldVisibility() setupFieldVisibility()
@ -504,21 +506,16 @@ class EditContactActivity : ContactActivity() {
private fun setupContactSource() { private fun setupContactSource() {
contact_source.text = getPublicContactSource(contact!!.source) contact_source.text = getPublicContactSource(contact!!.source)
originalContactSource = contact!!.source
} }
private fun setupNewContact() { private fun setupNewContact() {
supportActionBar?.title = resources.getString(R.string.new_contact) supportActionBar?.title = resources.getString(R.string.new_contact)
val contactSource = if (hasContactPermissions()) config.lastUsedContactSource else SMT_PRIVATE originalContactSource = if (hasContactPermissions()) config.lastUsedContactSource else SMT_PRIVATE
val organization = Organization("", "") val organization = Organization("", "")
contact = Contact(0, "", "", "", "", "", "", ArrayList(), ArrayList(), ArrayList(), ArrayList(), contactSource, 0, 0, "", null, "", contact = Contact(0, "", "", "", "", "", "", ArrayList(), ArrayList(), ArrayList(), ArrayList(), originalContactSource, 0, 0, "", null, "",
ArrayList(), organization, ArrayList()) ArrayList(), organization, ArrayList())
contact_source.text = getPublicContactSource(contact!!.source) contact_source.text = getPublicContactSource(contact!!.source)
contact_source.setOnClickListener {
showContactSourcePicker(contact!!.source) {
contact!!.source = if (it == getString(R.string.phone_storage_hidden)) SMT_PRIVATE else it
contact_source.text = getPublicContactSource(it)
}
}
} }
private fun setupTypePickers() { private fun setupTypePickers() {
@ -708,6 +705,13 @@ class EditContactActivity : ContactActivity() {
} }
} }
private fun showSelectContactSourceDialog() {
showContactSourcePicker(contact!!.source) {
contact!!.source = if (it == getString(R.string.phone_storage_hidden)) SMT_PRIVATE else it
contact_source.text = getPublicContactSource(it)
}
}
private fun saveContact() { private fun saveContact() {
if (isSaving || contact == null) { if (isSaving || contact == null) {
return return
@ -726,7 +730,6 @@ class EditContactActivity : ContactActivity() {
emails = getFilledEmails() emails = getFilledEmails()
addresses = getFilledAddresses() addresses = getFilledAddresses()
events = getFilledEvents() events = getFilledEvents()
source = contact!!.source
starred = if (isContactStarred()) 1 else 0 starred = if (isContactStarred()) 1 else 0
notes = contact_notes.value notes = contact_notes.value
websites = getFilledWebsites() websites = getFilledWebsites()
@ -737,11 +740,13 @@ class EditContactActivity : ContactActivity() {
Thread { Thread {
config.lastUsedContactSource = source config.lastUsedContactSource = source
if (id == 0) { when {
insertNewContact() id == 0 -> insertNewContact(false)
} else { originalContactSource != source -> insertNewContact(true)
val photoUpdateStatus = getPhotoUpdateStatus(oldPhotoUri, photoUri) else -> {
updateContact(photoUpdateStatus) val photoUpdateStatus = getPhotoUpdateStatus(oldPhotoUri, photoUri)
updateContact(photoUpdateStatus)
}
} }
}.start() }.start()
} }
@ -821,10 +826,17 @@ class EditContactActivity : ContactActivity() {
return websites return websites
} }
private fun insertNewContact() { private fun insertNewContact(deleteCurrentContact: Boolean) {
isSaving = true isSaving = true
toast(R.string.inserting) if (!deleteCurrentContact) {
toast(R.string.inserting)
}
if (ContactsHelper(this@EditContactActivity).insertContact(contact!!)) { if (ContactsHelper(this@EditContactActivity).insertContact(contact!!)) {
if (deleteCurrentContact) {
contact!!.source = originalContactSource
ContactsHelper(this).deleteContact(contact!!)
}
finish() finish()
} else { } else {
toast(R.string.unknown_error_occurred) toast(R.string.unknown_error_occurred)