updating some code style and shortening it, no real change

This commit is contained in:
tibbi
2020-04-27 23:09:44 +02:00
parent 7aa9cfa328
commit 6b55adefbd
11 changed files with 326 additions and 334 deletions

View File

@ -3,7 +3,7 @@ package com.simplemobiletools.contacts.pro.activities
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.provider.ContactsContract import android.provider.ContactsContract.CommonDataKinds.*
import android.widget.ImageView import android.widget.ImageView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.DataSource
@ -121,67 +121,67 @@ abstract class ContactActivity : SimpleActivity() {
} }
fun getPhoneNumberTypeText(type: Int, label: String): String { fun getPhoneNumberTypeText(type: Int, label: String): String {
return if (type == ContactsContract.CommonDataKinds.BaseTypes.TYPE_CUSTOM) { return if (type == BaseTypes.TYPE_CUSTOM) {
label label
} else { } else {
getString(when (type) { getString(when (type) {
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE -> R.string.mobile Phone.TYPE_MOBILE -> R.string.mobile
ContactsContract.CommonDataKinds.Phone.TYPE_HOME -> R.string.home Phone.TYPE_HOME -> R.string.home
ContactsContract.CommonDataKinds.Phone.TYPE_WORK -> R.string.work Phone.TYPE_WORK -> R.string.work
ContactsContract.CommonDataKinds.Phone.TYPE_MAIN -> R.string.main_number Phone.TYPE_MAIN -> R.string.main_number
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK -> R.string.work_fax Phone.TYPE_FAX_WORK -> R.string.work_fax
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME -> R.string.home_fax Phone.TYPE_FAX_HOME -> R.string.home_fax
ContactsContract.CommonDataKinds.Phone.TYPE_PAGER -> R.string.pager Phone.TYPE_PAGER -> R.string.pager
else -> R.string.other else -> R.string.other
}) })
} }
} }
fun getEmailTypeText(type: Int, label: String): String { fun getEmailTypeText(type: Int, label: String): String {
return if (type == ContactsContract.CommonDataKinds.BaseTypes.TYPE_CUSTOM) { return if (type == BaseTypes.TYPE_CUSTOM) {
label label
} else { } else {
getString(when (type) { getString(when (type) {
ContactsContract.CommonDataKinds.Email.TYPE_HOME -> R.string.home Email.TYPE_HOME -> R.string.home
ContactsContract.CommonDataKinds.Email.TYPE_WORK -> R.string.work Email.TYPE_WORK -> R.string.work
ContactsContract.CommonDataKinds.Email.TYPE_MOBILE -> R.string.mobile Email.TYPE_MOBILE -> R.string.mobile
else -> R.string.other else -> R.string.other
}) })
} }
} }
fun getAddressTypeText(type: Int, label: String): String { fun getAddressTypeText(type: Int, label: String): String {
return if (type == ContactsContract.CommonDataKinds.BaseTypes.TYPE_CUSTOM) { return if (type == BaseTypes.TYPE_CUSTOM) {
label label
} else { } else {
getString(when (type) { getString(when (type) {
ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME -> R.string.home StructuredPostal.TYPE_HOME -> R.string.home
ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK -> R.string.work StructuredPostal.TYPE_WORK -> R.string.work
else -> R.string.other else -> R.string.other
}) })
} }
} }
fun getIMTypeText(type: Int, label: String): String { fun getIMTypeText(type: Int, label: String): String {
return if (type == ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM) { return if (type == Im.PROTOCOL_CUSTOM) {
label label
} else { } else {
getString(when (type) { getString(when (type) {
ContactsContract.CommonDataKinds.Im.PROTOCOL_AIM -> R.string.aim Im.PROTOCOL_AIM -> R.string.aim
ContactsContract.CommonDataKinds.Im.PROTOCOL_MSN -> R.string.windows_live Im.PROTOCOL_MSN -> R.string.windows_live
ContactsContract.CommonDataKinds.Im.PROTOCOL_YAHOO -> R.string.yahoo Im.PROTOCOL_YAHOO -> R.string.yahoo
ContactsContract.CommonDataKinds.Im.PROTOCOL_SKYPE -> R.string.skype Im.PROTOCOL_SKYPE -> R.string.skype
ContactsContract.CommonDataKinds.Im.PROTOCOL_QQ -> R.string.qq Im.PROTOCOL_QQ -> R.string.qq
ContactsContract.CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK -> R.string.hangouts Im.PROTOCOL_GOOGLE_TALK -> R.string.hangouts
ContactsContract.CommonDataKinds.Im.PROTOCOL_ICQ -> R.string.icq Im.PROTOCOL_ICQ -> R.string.icq
else -> R.string.jabber else -> R.string.jabber
}) })
} }
} }
fun getEventTextId(type: Int) = when (type) { fun getEventTextId(type: Int) = when (type) {
ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY -> R.string.anniversary Event.TYPE_ANNIVERSARY -> R.string.anniversary
ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY -> R.string.birthday Event.TYPE_BIRTHDAY -> R.string.birthday
else -> R.string.other else -> R.string.other
} }
} }

View File

@ -9,6 +9,7 @@ import android.graphics.Bitmap
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.ContactsContract.CommonDataKinds import android.provider.ContactsContract.CommonDataKinds
import android.provider.ContactsContract.CommonDataKinds.*
import android.provider.MediaStore import android.provider.MediaStore
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
@ -29,6 +30,9 @@ import com.simplemobiletools.contacts.pro.dialogs.SelectGroupsDialog
import com.simplemobiletools.contacts.pro.extensions.* import com.simplemobiletools.contacts.pro.extensions.*
import com.simplemobiletools.contacts.pro.helpers.* import com.simplemobiletools.contacts.pro.helpers.*
import com.simplemobiletools.contacts.pro.models.* import com.simplemobiletools.contacts.pro.models.*
import com.simplemobiletools.contacts.pro.models.Email
import com.simplemobiletools.contacts.pro.models.Event
import com.simplemobiletools.contacts.pro.models.Organization
import kotlinx.android.synthetic.main.activity_edit_contact.* import kotlinx.android.synthetic.main.activity_edit_contact.*
import kotlinx.android.synthetic.main.item_edit_address.view.* import kotlinx.android.synthetic.main.item_edit_address.view.*
import kotlinx.android.synthetic.main.item_edit_email.view.* import kotlinx.android.synthetic.main.item_edit_email.view.*
@ -220,36 +224,22 @@ class EditContactActivity : ContactActivity() {
} }
val textColor = config.textColor val textColor = config.textColor
contact_send_sms.applyColorFilter(textColor) arrayOf(contact_send_sms, contact_start_call, contact_send_email, contact_name_image, contact_numbers_image, contact_emails_image, contact_addresses_image,
contact_start_call.applyColorFilter(textColor) contact_ims_image, contact_events_image, contact_notes_image, contact_organization_image, contact_websites_image, contact_groups_image,
contact_send_email.applyColorFilter(textColor) contact_source_image).forEach {
contact_name_image.applyColorFilter(textColor) it.applyColorFilter(textColor)
contact_numbers_image.applyColorFilter(textColor) }
contact_emails_image.applyColorFilter(textColor)
contact_addresses_image.applyColorFilter(textColor)
contact_ims_image.applyColorFilter(textColor)
contact_events_image.applyColorFilter(textColor)
contact_notes_image.applyColorFilter(textColor)
contact_organization_image.applyColorFilter(textColor)
contact_websites_image.applyColorFilter(textColor)
contact_groups_image.applyColorFilter(textColor)
contact_source_image.applyColorFilter(textColor)
val adjustedPrimaryColor = getAdjustedPrimaryColor() val adjustedPrimaryColor = getAdjustedPrimaryColor()
contact_numbers_add_new.applyColorFilter(adjustedPrimaryColor) arrayOf(contact_numbers_add_new, contact_emails_add_new, contact_addresses_add_new, contact_ims_add_new, contact_events_add_new,
contact_numbers_add_new.background.applyColorFilter(textColor) contact_websites_add_new, contact_groups_add_new).forEach {
contact_emails_add_new.applyColorFilter(adjustedPrimaryColor) it.applyColorFilter(adjustedPrimaryColor)
contact_emails_add_new.background.applyColorFilter(textColor) }
contact_addresses_add_new.applyColorFilter(adjustedPrimaryColor)
contact_addresses_add_new.background.applyColorFilter(textColor) arrayOf(contact_numbers_add_new.background, contact_emails_add_new.background, contact_addresses_add_new.background, contact_ims_add_new.background,
contact_ims_add_new.applyColorFilter(adjustedPrimaryColor) contact_events_add_new.background, contact_websites_add_new.background, contact_groups_add_new.background).forEach {
contact_ims_add_new.background.applyColorFilter(textColor) it.applyColorFilter(textColor)
contact_events_add_new.applyColorFilter(adjustedPrimaryColor) }
contact_events_add_new.background.applyColorFilter(textColor)
contact_websites_add_new.applyColorFilter(adjustedPrimaryColor)
contact_websites_add_new.background.applyColorFilter(textColor)
contact_groups_add_new.applyColorFilter(adjustedPrimaryColor)
contact_groups_add_new.background.applyColorFilter(textColor)
contact_toggle_favorite.setOnClickListener { toggleFavorite() } contact_toggle_favorite.setOnClickListener { toggleFavorite() }
contact_photo.setOnClickListener { trySetPhoto() } contact_photo.setOnClickListener { trySetPhoto() }
@ -755,20 +745,20 @@ class EditContactActivity : ContactActivity() {
private fun showNumberTypePicker(numberTypeField: TextView) { private fun showNumberTypePicker(numberTypeField: TextView) {
val items = arrayListOf( val items = arrayListOf(
RadioItem(CommonDataKinds.Phone.TYPE_MOBILE, getString(R.string.mobile)), RadioItem(Phone.TYPE_MOBILE, getString(R.string.mobile)),
RadioItem(CommonDataKinds.Phone.TYPE_HOME, getString(R.string.home)), RadioItem(Phone.TYPE_HOME, getString(R.string.home)),
RadioItem(CommonDataKinds.Phone.TYPE_WORK, getString(R.string.work)), RadioItem(Phone.TYPE_WORK, getString(R.string.work)),
RadioItem(CommonDataKinds.Phone.TYPE_MAIN, getString(R.string.main_number)), RadioItem(Phone.TYPE_MAIN, getString(R.string.main_number)),
RadioItem(CommonDataKinds.Phone.TYPE_FAX_WORK, getString(R.string.work_fax)), RadioItem(Phone.TYPE_FAX_WORK, getString(R.string.work_fax)),
RadioItem(CommonDataKinds.Phone.TYPE_FAX_HOME, getString(R.string.home_fax)), RadioItem(Phone.TYPE_FAX_HOME, getString(R.string.home_fax)),
RadioItem(CommonDataKinds.Phone.TYPE_PAGER, getString(R.string.pager)), RadioItem(Phone.TYPE_PAGER, getString(R.string.pager)),
RadioItem(CommonDataKinds.Phone.TYPE_OTHER, getString(R.string.other)), RadioItem(Phone.TYPE_OTHER, getString(R.string.other)),
RadioItem(CommonDataKinds.Phone.TYPE_CUSTOM, getString(R.string.custom)) RadioItem(Phone.TYPE_CUSTOM, getString(R.string.custom))
) )
val currentNumberTypeId = getPhoneNumberTypeId(numberTypeField.value) val currentNumberTypeId = getPhoneNumberTypeId(numberTypeField.value)
RadioGroupDialog(this, items, currentNumberTypeId) { RadioGroupDialog(this, items, currentNumberTypeId) {
if (it as Int == CommonDataKinds.Phone.TYPE_CUSTOM) { if (it as Int == Phone.TYPE_CUSTOM) {
CustomLabelDialog(this) { CustomLabelDialog(this) {
numberTypeField.text = it numberTypeField.text = it
} }
@ -801,15 +791,15 @@ class EditContactActivity : ContactActivity() {
private fun showAddressTypePicker(addressTypeField: TextView) { private fun showAddressTypePicker(addressTypeField: TextView) {
val items = arrayListOf( val items = arrayListOf(
RadioItem(CommonDataKinds.StructuredPostal.TYPE_HOME, getString(R.string.home)), RadioItem(StructuredPostal.TYPE_HOME, getString(R.string.home)),
RadioItem(CommonDataKinds.StructuredPostal.TYPE_WORK, getString(R.string.work)), RadioItem(StructuredPostal.TYPE_WORK, getString(R.string.work)),
RadioItem(CommonDataKinds.StructuredPostal.TYPE_OTHER, getString(R.string.other)), RadioItem(StructuredPostal.TYPE_OTHER, getString(R.string.other)),
RadioItem(CommonDataKinds.StructuredPostal.TYPE_CUSTOM, getString(R.string.custom)) RadioItem(StructuredPostal.TYPE_CUSTOM, getString(R.string.custom))
) )
val currentAddressTypeId = getAddressTypeId(addressTypeField.value) val currentAddressTypeId = getAddressTypeId(addressTypeField.value)
RadioGroupDialog(this, items, currentAddressTypeId) { RadioGroupDialog(this, items, currentAddressTypeId) {
if (it as Int == CommonDataKinds.StructuredPostal.TYPE_CUSTOM) { if (it as Int == StructuredPostal.TYPE_CUSTOM) {
CustomLabelDialog(this) { CustomLabelDialog(this) {
addressTypeField.text = it addressTypeField.text = it
} }
@ -821,20 +811,20 @@ class EditContactActivity : ContactActivity() {
private fun showIMTypePicker(imTypeField: TextView) { private fun showIMTypePicker(imTypeField: TextView) {
val items = arrayListOf( val items = arrayListOf(
RadioItem(CommonDataKinds.Im.PROTOCOL_AIM, getString(R.string.aim)), RadioItem(Im.PROTOCOL_AIM, getString(R.string.aim)),
RadioItem(CommonDataKinds.Im.PROTOCOL_MSN, getString(R.string.windows_live)), RadioItem(Im.PROTOCOL_MSN, getString(R.string.windows_live)),
RadioItem(CommonDataKinds.Im.PROTOCOL_YAHOO, getString(R.string.yahoo)), RadioItem(Im.PROTOCOL_YAHOO, getString(R.string.yahoo)),
RadioItem(CommonDataKinds.Im.PROTOCOL_SKYPE, getString(R.string.skype)), RadioItem(Im.PROTOCOL_SKYPE, getString(R.string.skype)),
RadioItem(CommonDataKinds.Im.PROTOCOL_QQ, getString(R.string.qq)), RadioItem(Im.PROTOCOL_QQ, getString(R.string.qq)),
RadioItem(CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK, getString(R.string.hangouts)), RadioItem(Im.PROTOCOL_GOOGLE_TALK, getString(R.string.hangouts)),
RadioItem(CommonDataKinds.Im.PROTOCOL_ICQ, getString(R.string.icq)), RadioItem(Im.PROTOCOL_ICQ, getString(R.string.icq)),
RadioItem(CommonDataKinds.Im.PROTOCOL_JABBER, getString(R.string.jabber)), RadioItem(Im.PROTOCOL_JABBER, getString(R.string.jabber)),
RadioItem(CommonDataKinds.Im.PROTOCOL_CUSTOM, getString(R.string.custom)) RadioItem(Im.PROTOCOL_CUSTOM, getString(R.string.custom))
) )
val currentIMTypeId = getIMTypeId(imTypeField.value) val currentIMTypeId = getIMTypeId(imTypeField.value)
RadioGroupDialog(this, items, currentIMTypeId) { RadioGroupDialog(this, items, currentIMTypeId) {
if (it as Int == CommonDataKinds.Im.PROTOCOL_CUSTOM) { if (it as Int == Im.PROTOCOL_CUSTOM) {
CustomLabelDialog(this) { CustomLabelDialog(this) {
imTypeField.text = it imTypeField.text = it
} }
@ -922,7 +912,7 @@ class EditContactActivity : ContactActivity() {
val numberHolder = contact_numbers_holder.getChildAt(i) val numberHolder = contact_numbers_holder.getChildAt(i)
val number = numberHolder.contact_number.value val number = numberHolder.contact_number.value
val numberType = getPhoneNumberTypeId(numberHolder.contact_number_type.value) val numberType = getPhoneNumberTypeId(numberHolder.contact_number_type.value)
val numberLabel = if (numberType == CommonDataKinds.Phone.TYPE_CUSTOM) numberHolder.contact_number_type.value else "" val numberLabel = if (numberType == Phone.TYPE_CUSTOM) numberHolder.contact_number_type.value else ""
if (number.isNotEmpty()) { if (number.isNotEmpty()) {
phoneNumbers.add(PhoneNumber(number, numberType, numberLabel, number.normalizeNumber())) phoneNumbers.add(PhoneNumber(number, numberType, numberLabel, number.normalizeNumber()))
@ -954,7 +944,7 @@ class EditContactActivity : ContactActivity() {
val addressHolder = contact_addresses_holder.getChildAt(i) val addressHolder = contact_addresses_holder.getChildAt(i)
val address = addressHolder.contact_address.value val address = addressHolder.contact_address.value
val addressType = getAddressTypeId(addressHolder.contact_address_type.value) val addressType = getAddressTypeId(addressHolder.contact_address_type.value)
val addressLabel = if (addressType == CommonDataKinds.StructuredPostal.TYPE_CUSTOM) addressHolder.contact_address_type.value else "" val addressLabel = if (addressType == StructuredPostal.TYPE_CUSTOM) addressHolder.contact_address_type.value else ""
if (address.isNotEmpty()) { if (address.isNotEmpty()) {
addresses.add(Address(address, addressType, addressLabel)) addresses.add(Address(address, addressType, addressLabel))
@ -970,7 +960,7 @@ class EditContactActivity : ContactActivity() {
val IMsHolder = contact_ims_holder.getChildAt(i) val IMsHolder = contact_ims_holder.getChildAt(i)
val IM = IMsHolder.contact_im.value val IM = IMsHolder.contact_im.value
val IMType = getIMTypeId(IMsHolder.contact_im_type.value) val IMType = getIMTypeId(IMsHolder.contact_im_type.value)
val IMLabel = if (IMType == CommonDataKinds.Im.PROTOCOL_CUSTOM) IMsHolder.contact_im_type.value else "" val IMLabel = if (IMType == Im.PROTOCOL_CUSTOM) IMsHolder.contact_im_type.value else ""
if (IM.isNotEmpty()) { if (IM.isNotEmpty()) {
IMs.add(IM(IM, IMType, IMLabel)) IMs.add(IM(IM, IMType, IMLabel))
@ -1147,13 +1137,13 @@ class EditContactActivity : ContactActivity() {
private fun parseIntentData(data: ArrayList<ContentValues>) { private fun parseIntentData(data: ArrayList<ContentValues>) {
data.forEach { data.forEach {
when (it.get(CommonDataKinds.StructuredName.MIMETYPE)) { when (it.get(StructuredName.MIMETYPE)) {
CommonDataKinds.Email.CONTENT_ITEM_TYPE -> parseEmail(it) CommonDataKinds.Email.CONTENT_ITEM_TYPE -> parseEmail(it)
CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE -> parseAddress(it) StructuredPostal.CONTENT_ITEM_TYPE -> parseAddress(it)
CommonDataKinds.Organization.CONTENT_ITEM_TYPE -> parseOrganization(it) CommonDataKinds.Organization.CONTENT_ITEM_TYPE -> parseOrganization(it)
CommonDataKinds.Event.CONTENT_ITEM_TYPE -> parseEvent(it) CommonDataKinds.Event.CONTENT_ITEM_TYPE -> parseEvent(it)
CommonDataKinds.Website.CONTENT_ITEM_TYPE -> parseWebsite(it) Website.CONTENT_ITEM_TYPE -> parseWebsite(it)
CommonDataKinds.Note.CONTENT_ITEM_TYPE -> parseNote(it) Note.CONTENT_ITEM_TYPE -> parseNote(it)
} }
} }
} }
@ -1166,9 +1156,9 @@ class EditContactActivity : ContactActivity() {
} }
private fun parseAddress(contentValues: ContentValues) { private fun parseAddress(contentValues: ContentValues) {
val type = contentValues.getAsInteger(CommonDataKinds.StructuredPostal.DATA2) ?: DEFAULT_ADDRESS_TYPE val type = contentValues.getAsInteger(StructuredPostal.DATA2) ?: DEFAULT_ADDRESS_TYPE
val addressValue = contentValues.getAsString(CommonDataKinds.StructuredPostal.DATA4) val addressValue = contentValues.getAsString(StructuredPostal.DATA4)
?: contentValues.getAsString(CommonDataKinds.StructuredPostal.DATA1) ?: return ?: contentValues.getAsString(StructuredPostal.DATA1) ?: return
val address = Address(addressValue, type, "") val address = Address(addressValue, type, "")
contact!!.addresses.add(address) contact!!.addresses.add(address)
} }
@ -1187,12 +1177,12 @@ class EditContactActivity : ContactActivity() {
} }
private fun parseWebsite(contentValues: ContentValues) { private fun parseWebsite(contentValues: ContentValues) {
val website = contentValues.getAsString(CommonDataKinds.Website.DATA1) ?: return val website = contentValues.getAsString(Website.DATA1) ?: return
contact!!.websites.add(website) contact!!.websites.add(website)
} }
private fun parseNote(contentValues: ContentValues) { private fun parseNote(contentValues: ContentValues) {
val note = contentValues.getAsString(CommonDataKinds.Note.DATA1) ?: return val note = contentValues.getAsString(Note.DATA1) ?: return
contact!!.notes = note contact!!.notes = note
} }
@ -1226,15 +1216,15 @@ class EditContactActivity : ContactActivity() {
} }
private fun getPhoneNumberTypeId(value: String) = when (value) { private fun getPhoneNumberTypeId(value: String) = when (value) {
getString(R.string.mobile) -> CommonDataKinds.Phone.TYPE_MOBILE getString(R.string.mobile) -> Phone.TYPE_MOBILE
getString(R.string.home) -> CommonDataKinds.Phone.TYPE_HOME getString(R.string.home) -> Phone.TYPE_HOME
getString(R.string.work) -> CommonDataKinds.Phone.TYPE_WORK getString(R.string.work) -> Phone.TYPE_WORK
getString(R.string.main_number) -> CommonDataKinds.Phone.TYPE_MAIN getString(R.string.main_number) -> Phone.TYPE_MAIN
getString(R.string.work_fax) -> CommonDataKinds.Phone.TYPE_FAX_WORK getString(R.string.work_fax) -> Phone.TYPE_FAX_WORK
getString(R.string.home_fax) -> CommonDataKinds.Phone.TYPE_FAX_HOME getString(R.string.home_fax) -> Phone.TYPE_FAX_HOME
getString(R.string.pager) -> CommonDataKinds.Phone.TYPE_PAGER getString(R.string.pager) -> Phone.TYPE_PAGER
getString(R.string.other) -> CommonDataKinds.Phone.TYPE_OTHER getString(R.string.other) -> Phone.TYPE_OTHER
else -> CommonDataKinds.Phone.TYPE_CUSTOM else -> Phone.TYPE_CUSTOM
} }
private fun getEmailTypeId(value: String) = when (value) { private fun getEmailTypeId(value: String) = when (value) {
@ -1252,21 +1242,21 @@ class EditContactActivity : ContactActivity() {
} }
private fun getAddressTypeId(value: String) = when (value) { private fun getAddressTypeId(value: String) = when (value) {
getString(R.string.home) -> CommonDataKinds.StructuredPostal.TYPE_HOME getString(R.string.home) -> StructuredPostal.TYPE_HOME
getString(R.string.work) -> CommonDataKinds.StructuredPostal.TYPE_WORK getString(R.string.work) -> StructuredPostal.TYPE_WORK
getString(R.string.other) -> CommonDataKinds.StructuredPostal.TYPE_OTHER getString(R.string.other) -> StructuredPostal.TYPE_OTHER
else -> CommonDataKinds.StructuredPostal.TYPE_CUSTOM else -> StructuredPostal.TYPE_CUSTOM
} }
private fun getIMTypeId(value: String) = when (value) { private fun getIMTypeId(value: String) = when (value) {
getString(R.string.aim) -> CommonDataKinds.Im.PROTOCOL_AIM getString(R.string.aim) -> Im.PROTOCOL_AIM
getString(R.string.windows_live) -> CommonDataKinds.Im.PROTOCOL_MSN getString(R.string.windows_live) -> Im.PROTOCOL_MSN
getString(R.string.yahoo) -> CommonDataKinds.Im.PROTOCOL_YAHOO getString(R.string.yahoo) -> Im.PROTOCOL_YAHOO
getString(R.string.skype) -> CommonDataKinds.Im.PROTOCOL_SKYPE getString(R.string.skype) -> Im.PROTOCOL_SKYPE
getString(R.string.qq) -> CommonDataKinds.Im.PROTOCOL_QQ getString(R.string.qq) -> Im.PROTOCOL_QQ
getString(R.string.hangouts) -> CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK getString(R.string.hangouts) -> Im.PROTOCOL_GOOGLE_TALK
getString(R.string.icq) -> CommonDataKinds.Im.PROTOCOL_ICQ getString(R.string.icq) -> Im.PROTOCOL_ICQ
getString(R.string.jabber) -> CommonDataKinds.Im.PROTOCOL_JABBER getString(R.string.jabber) -> Im.PROTOCOL_JABBER
else -> CommonDataKinds.Im.PROTOCOL_CUSTOM else -> Im.PROTOCOL_CUSTOM
} }
} }

View File

@ -6,6 +6,8 @@ import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.ContactsContract import android.provider.ContactsContract
import android.provider.ContactsContract.CommonDataKinds.Email
import android.provider.ContactsContract.CommonDataKinds.Phone
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
@ -46,8 +48,8 @@ class SelectContactActivity : SimpleActivity() {
handlePermission(PERMISSION_WRITE_CONTACTS) { handlePermission(PERMISSION_WRITE_CONTACTS) {
if (it) { if (it) {
specialMimeType = when (intent.data) { specialMimeType = when (intent.data) {
ContactsContract.CommonDataKinds.Email.CONTENT_URI -> ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE Email.CONTENT_URI -> Email.CONTENT_ITEM_TYPE
ContactsContract.CommonDataKinds.Phone.CONTENT_URI -> ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE Phone.CONTENT_URI -> Phone.CONTENT_ITEM_TYPE
else -> null else -> null
} }
initContacts() initContacts()
@ -178,8 +180,8 @@ class SelectContactActivity : SimpleActivity() {
var contacts = it.filter { var contacts = it.filter {
if (specialMimeType != null) { if (specialMimeType != null) {
val hasRequiredValues = when (specialMimeType) { val hasRequiredValues = when (specialMimeType) {
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE -> it.emails.isNotEmpty() Email.CONTENT_ITEM_TYPE -> it.emails.isNotEmpty()
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE -> it.phoneNumbers.isNotEmpty() Phone.CONTENT_ITEM_TYPE -> it.phoneNumbers.isNotEmpty()
else -> true else -> true
} }
!it.isPrivate() && hasRequiredValues !it.isPrivate() && hasRequiredValues
@ -242,8 +244,8 @@ class SelectContactActivity : SimpleActivity() {
select_contact_placeholder_2.beVisibleIf(contacts.isEmpty()) select_contact_placeholder_2.beVisibleIf(contacts.isEmpty())
select_contact_placeholder.beVisibleIf(contacts.isEmpty()) select_contact_placeholder.beVisibleIf(contacts.isEmpty())
select_contact_placeholder.setText(when (specialMimeType) { select_contact_placeholder.setText(when (specialMimeType) {
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers
else -> R.string.no_contacts_found else -> R.string.no_contacts_found
}) })
} }

View File

@ -1,18 +1,17 @@
package com.simplemobiletools.contacts.pro.activities package com.simplemobiletools.contacts.pro.activities
import android.annotation.TargetApi
import android.content.ContentValues import android.content.ContentValues
import android.content.Intent import android.content.Intent
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.net.Uri import android.net.Uri
import android.os.Build
import android.telecom.TelecomManager
import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.R
import com.simplemobiletools.contacts.pro.extensions.config import com.simplemobiletools.contacts.pro.extensions.config
import com.simplemobiletools.contacts.pro.helpers.* import com.simplemobiletools.contacts.pro.helpers.KEY_MAILTO
import com.simplemobiletools.contacts.pro.helpers.KEY_PHONE
import com.simplemobiletools.contacts.pro.helpers.LOCATION_CONTACTS_TAB
import com.simplemobiletools.contacts.pro.helpers.LOCATION_FAVORITES_TAB
open class SimpleActivity : BaseSimpleActivity() { open class SimpleActivity : BaseSimpleActivity() {
override fun getAppIconIDs() = arrayListOf( override fun getAppIconIDs() = arrayListOf(

View File

@ -176,19 +176,11 @@ class ViewContactActivity : ContactActivity() {
} }
val textColor = config.textColor val textColor = config.textColor
contact_send_sms.applyColorFilter(textColor) arrayOf(contact_send_sms, contact_start_call, contact_send_email, contact_name_image, contact_numbers_image, contact_emails_image,
contact_start_call.applyColorFilter(textColor) contact_addresses_image, contact_events_image, contact_source_image, contact_notes_image, contact_organization_image,
contact_send_email.applyColorFilter(textColor) contact_websites_image, contact_groups_image).forEach {
contact_name_image.applyColorFilter(textColor) it.applyColorFilter(textColor)
contact_numbers_image.applyColorFilter(textColor) }
contact_emails_image.applyColorFilter(textColor)
contact_addresses_image.applyColorFilter(textColor)
contact_events_image.applyColorFilter(textColor)
contact_source_image.applyColorFilter(textColor)
contact_notes_image.applyColorFilter(textColor)
contact_organization_image.applyColorFilter(textColor)
contact_websites_image.applyColorFilter(textColor)
contact_groups_image.applyColorFilter(textColor)
contact_send_sms.setOnClickListener { trySendSMS() } contact_send_sms.setOnClickListener { trySendSMS() }
contact_start_call.setOnClickListener { tryStartCall(contact!!) } contact_start_call.setOnClickListener { tryStartCall(contact!!) }

View File

@ -2,6 +2,7 @@ package com.simplemobiletools.contacts.pro.helpers
import android.net.Uri import android.net.Uri
import android.provider.ContactsContract.CommonDataKinds import android.provider.ContactsContract.CommonDataKinds
import android.provider.ContactsContract.CommonDataKinds.*
import android.provider.MediaStore import android.provider.MediaStore
import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.extensions.showErrorToast
@ -15,6 +16,10 @@ import ezvcard.Ezvcard
import ezvcard.VCard import ezvcard.VCard
import ezvcard.parameter.ImageType import ezvcard.parameter.ImageType
import ezvcard.property.* import ezvcard.property.*
import ezvcard.property.Email
import ezvcard.property.Organization
import ezvcard.property.Photo
import ezvcard.property.StructuredName
import ezvcard.util.PartialDate import ezvcard.util.PartialDate
import java.io.OutputStream import java.io.OutputStream
import java.util.* import java.util.*
@ -67,11 +72,11 @@ class VcfExporter {
} }
contact.events.forEach { contact.events.forEach {
if (it.type == CommonDataKinds.Event.TYPE_ANNIVERSARY || it.type == CommonDataKinds.Event.TYPE_BIRTHDAY) { if (it.type == Event.TYPE_ANNIVERSARY || it.type == Event.TYPE_BIRTHDAY) {
val dateTime = it.value.getDateTimeFromDateString() val dateTime = it.value.getDateTimeFromDateString()
if (it.value.startsWith("--")) { if (it.value.startsWith("--")) {
val partialDate = PartialDate.builder().year(null).month(dateTime.monthOfYear).date(dateTime.dayOfMonth).build() val partialDate = PartialDate.builder().year(null).month(dateTime.monthOfYear).date(dateTime.dayOfMonth).build()
if (it.type == CommonDataKinds.Event.TYPE_BIRTHDAY) { if (it.type == Event.TYPE_BIRTHDAY) {
card.birthdays.add(Birthday(partialDate)) card.birthdays.add(Birthday(partialDate))
} else { } else {
card.anniversaries.add(Anniversary(partialDate)) card.anniversaries.add(Anniversary(partialDate))
@ -82,7 +87,7 @@ class VcfExporter {
set(Calendar.YEAR, dateTime.year) set(Calendar.YEAR, dateTime.year)
set(Calendar.MONTH, dateTime.monthOfYear - 1) set(Calendar.MONTH, dateTime.monthOfYear - 1)
set(Calendar.DAY_OF_MONTH, dateTime.dayOfMonth) set(Calendar.DAY_OF_MONTH, dateTime.dayOfMonth)
if (it.type == CommonDataKinds.Event.TYPE_BIRTHDAY) { if (it.type == Event.TYPE_BIRTHDAY) {
card.birthdays.add(Birthday(time)) card.birthdays.add(Birthday(time))
} else { } else {
card.anniversaries.add(Anniversary(time)) card.anniversaries.add(Anniversary(time))
@ -101,14 +106,14 @@ class VcfExporter {
contact.IMs.forEach { contact.IMs.forEach {
val impp = when (it.type) { val impp = when (it.type) {
CommonDataKinds.Im.PROTOCOL_AIM -> Impp.aim(it.value) Im.PROTOCOL_AIM -> Impp.aim(it.value)
CommonDataKinds.Im.PROTOCOL_YAHOO -> Impp.yahoo(it.value) Im.PROTOCOL_YAHOO -> Impp.yahoo(it.value)
CommonDataKinds.Im.PROTOCOL_MSN -> Impp.msn(it.value) Im.PROTOCOL_MSN -> Impp.msn(it.value)
CommonDataKinds.Im.PROTOCOL_ICQ -> Impp.icq(it.value) Im.PROTOCOL_ICQ -> Impp.icq(it.value)
CommonDataKinds.Im.PROTOCOL_SKYPE -> Impp.skype(it.value) Im.PROTOCOL_SKYPE -> Impp.skype(it.value)
CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK -> Impp(HANGOUTS, it.value) Im.PROTOCOL_GOOGLE_TALK -> Impp(HANGOUTS, it.value)
CommonDataKinds.Im.PROTOCOL_QQ -> Impp(QQ, it.value) Im.PROTOCOL_QQ -> Impp(QQ, it.value)
CommonDataKinds.Im.PROTOCOL_JABBER -> Impp(JABBER, it.value) Im.PROTOCOL_JABBER -> Impp(JABBER, it.value)
else -> Impp(it.label, it.value) else -> Impp(it.label, it.value)
} }
@ -162,14 +167,14 @@ class VcfExporter {
} }
private fun getPhoneNumberTypeLabel(type: Int, label: String) = when (type) { private fun getPhoneNumberTypeLabel(type: Int, label: String) = when (type) {
CommonDataKinds.Phone.TYPE_MOBILE -> CELL Phone.TYPE_MOBILE -> CELL
CommonDataKinds.Phone.TYPE_HOME -> HOME Phone.TYPE_HOME -> HOME
CommonDataKinds.Phone.TYPE_WORK -> WORK Phone.TYPE_WORK -> WORK
CommonDataKinds.Phone.TYPE_MAIN -> PREF Phone.TYPE_MAIN -> PREF
CommonDataKinds.Phone.TYPE_FAX_WORK -> WORK_FAX Phone.TYPE_FAX_WORK -> WORK_FAX
CommonDataKinds.Phone.TYPE_FAX_HOME -> HOME_FAX Phone.TYPE_FAX_HOME -> HOME_FAX
CommonDataKinds.Phone.TYPE_PAGER -> PAGER Phone.TYPE_PAGER -> PAGER
CommonDataKinds.Phone.TYPE_OTHER -> OTHER Phone.TYPE_OTHER -> OTHER
else -> label else -> label
} }
@ -182,9 +187,9 @@ class VcfExporter {
} }
private fun getAddressTypeLabel(type: Int, label: String) = when (type) { private fun getAddressTypeLabel(type: Int, label: String) = when (type) {
CommonDataKinds.StructuredPostal.TYPE_HOME -> HOME StructuredPostal.TYPE_HOME -> HOME
CommonDataKinds.StructuredPostal.TYPE_WORK -> WORK StructuredPostal.TYPE_WORK -> WORK
CommonDataKinds.StructuredPostal.TYPE_OTHER -> OTHER StructuredPostal.TYPE_OTHER -> OTHER
else -> label else -> label
} }
} }

View File

@ -3,6 +3,7 @@ package com.simplemobiletools.contacts.pro.helpers
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.provider.ContactsContract.CommonDataKinds import android.provider.ContactsContract.CommonDataKinds
import android.provider.ContactsContract.CommonDataKinds.*
import android.widget.Toast import android.widget.Toast
import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.extensions.showErrorToast
import com.simplemobiletools.contacts.pro.activities.SimpleActivity import com.simplemobiletools.contacts.pro.activities.SimpleActivity
@ -12,6 +13,9 @@ import com.simplemobiletools.contacts.pro.extensions.groupsDB
import com.simplemobiletools.contacts.pro.extensions.normalizeNumber import com.simplemobiletools.contacts.pro.extensions.normalizeNumber
import com.simplemobiletools.contacts.pro.helpers.VcfImporter.ImportResult.* import com.simplemobiletools.contacts.pro.helpers.VcfImporter.ImportResult.*
import com.simplemobiletools.contacts.pro.models.* import com.simplemobiletools.contacts.pro.models.*
import com.simplemobiletools.contacts.pro.models.Email
import com.simplemobiletools.contacts.pro.models.Event
import com.simplemobiletools.contacts.pro.models.Organization
import ezvcard.Ezvcard import ezvcard.Ezvcard
import ezvcard.VCard import ezvcard.VCard
import java.io.File import java.io.File
@ -50,7 +54,7 @@ class VcfImporter(val activity: SimpleActivity) {
ezContact.telephoneNumbers.forEach { ezContact.telephoneNumbers.forEach {
val number = it.text val number = it.text
val type = getPhoneNumberTypeId(it.types.firstOrNull()?.value ?: MOBILE, it.types.getOrNull(1)?.value) val type = getPhoneNumberTypeId(it.types.firstOrNull()?.value ?: MOBILE, it.types.getOrNull(1)?.value)
val label = if (type == CommonDataKinds.Phone.TYPE_CUSTOM) { val label = if (type == Phone.TYPE_CUSTOM) {
it.types.firstOrNull()?.value ?: "" it.types.firstOrNull()?.value ?: ""
} else { } else {
"" ""
@ -76,7 +80,7 @@ class VcfImporter(val activity: SimpleActivity) {
ezContact.addresses.forEach { ezContact.addresses.forEach {
val address = it.streetAddress val address = it.streetAddress
val type = getAddressTypeId(it.types.firstOrNull()?.value ?: HOME) val type = getAddressTypeId(it.types.firstOrNull()?.value ?: HOME)
val label = if (type == CommonDataKinds.StructuredPostal.TYPE_CUSTOM) { val label = if (type == StructuredPostal.TYPE_CUSTOM) {
it.types.firstOrNull()?.value ?: "" it.types.firstOrNull()?.value ?: ""
} else { } else {
"" ""
@ -115,18 +119,18 @@ class VcfImporter(val activity: SimpleActivity) {
val typeString = it.uri.scheme val typeString = it.uri.scheme
val value = URLDecoder.decode(it.uri.toString().substring(it.uri.scheme.length + 1), "UTF-8") val value = URLDecoder.decode(it.uri.toString().substring(it.uri.scheme.length + 1), "UTF-8")
val type = when { val type = when {
it.isAim -> CommonDataKinds.Im.PROTOCOL_AIM it.isAim -> Im.PROTOCOL_AIM
it.isYahoo -> CommonDataKinds.Im.PROTOCOL_YAHOO it.isYahoo -> Im.PROTOCOL_YAHOO
it.isMsn -> CommonDataKinds.Im.PROTOCOL_MSN it.isMsn -> Im.PROTOCOL_MSN
it.isIcq -> CommonDataKinds.Im.PROTOCOL_ICQ it.isIcq -> Im.PROTOCOL_ICQ
it.isSkype -> CommonDataKinds.Im.PROTOCOL_SKYPE it.isSkype -> Im.PROTOCOL_SKYPE
typeString == HANGOUTS -> CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK typeString == HANGOUTS -> Im.PROTOCOL_GOOGLE_TALK
typeString == QQ -> CommonDataKinds.Im.PROTOCOL_QQ typeString == QQ -> Im.PROTOCOL_QQ
typeString == JABBER -> CommonDataKinds.Im.PROTOCOL_JABBER typeString == JABBER -> Im.PROTOCOL_JABBER
else -> CommonDataKinds.Im.PROTOCOL_CUSTOM else -> Im.PROTOCOL_CUSTOM
} }
val label = if (type == CommonDataKinds.Im.PROTOCOL_CUSTOM) URLDecoder.decode(typeString, "UTF-8") else "" val label = if (type == Im.PROTOCOL_CUSTOM) URLDecoder.decode(typeString, "UTF-8") else ""
val IM = IM(value, type, label) val IM = IM(value, type, label)
IMs.add(IM) IMs.add(IM)
} }
@ -189,28 +193,28 @@ class VcfImporter(val activity: SimpleActivity) {
} }
private fun getPhoneNumberTypeId(type: String, subtype: String?) = when (type.toUpperCase()) { private fun getPhoneNumberTypeId(type: String, subtype: String?) = when (type.toUpperCase()) {
CELL -> CommonDataKinds.Phone.TYPE_MOBILE CELL -> Phone.TYPE_MOBILE
HOME -> { HOME -> {
if (subtype?.toUpperCase() == FAX) { if (subtype?.toUpperCase() == FAX) {
CommonDataKinds.Phone.TYPE_FAX_HOME Phone.TYPE_FAX_HOME
} else { } else {
CommonDataKinds.Phone.TYPE_HOME Phone.TYPE_HOME
} }
} }
WORK -> { WORK -> {
if (subtype?.toUpperCase() == FAX) { if (subtype?.toUpperCase() == FAX) {
CommonDataKinds.Phone.TYPE_FAX_WORK Phone.TYPE_FAX_WORK
} else { } else {
CommonDataKinds.Phone.TYPE_WORK Phone.TYPE_WORK
} }
} }
PREF, MAIN -> CommonDataKinds.Phone.TYPE_MAIN PREF, MAIN -> Phone.TYPE_MAIN
WORK_FAX -> CommonDataKinds.Phone.TYPE_FAX_WORK WORK_FAX -> Phone.TYPE_FAX_WORK
HOME_FAX -> CommonDataKinds.Phone.TYPE_FAX_HOME HOME_FAX -> Phone.TYPE_FAX_HOME
FAX -> CommonDataKinds.Phone.TYPE_FAX_WORK FAX -> Phone.TYPE_FAX_WORK
PAGER -> CommonDataKinds.Phone.TYPE_PAGER PAGER -> Phone.TYPE_PAGER
OTHER -> CommonDataKinds.Phone.TYPE_OTHER OTHER -> Phone.TYPE_OTHER
else -> CommonDataKinds.Phone.TYPE_CUSTOM else -> Phone.TYPE_CUSTOM
} }
private fun getEmailTypeId(type: String) = when (type.toUpperCase()) { private fun getEmailTypeId(type: String) = when (type.toUpperCase()) {
@ -222,10 +226,10 @@ class VcfImporter(val activity: SimpleActivity) {
} }
private fun getAddressTypeId(type: String) = when (type.toUpperCase()) { private fun getAddressTypeId(type: String) = when (type.toUpperCase()) {
HOME -> CommonDataKinds.StructuredPostal.TYPE_HOME HOME -> StructuredPostal.TYPE_HOME
WORK -> CommonDataKinds.StructuredPostal.TYPE_WORK WORK -> StructuredPostal.TYPE_WORK
OTHER -> CommonDataKinds.StructuredPostal.TYPE_OTHER OTHER -> StructuredPostal.TYPE_OTHER
else -> CommonDataKinds.StructuredPostal.TYPE_CUSTOM else -> StructuredPostal.TYPE_CUSTOM
} }
private fun savePhoto(byteArray: ByteArray?): String { private fun savePhoto(byteArray: ByteArray?): String {