mirror of
				https://github.com/SimpleMobileTools/Simple-Contacts.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	updating some code style and shortening it, no real change
This commit is contained in:
		| @@ -3,7 +3,7 @@ package com.simplemobiletools.contacts.pro.activities | ||||
| import android.graphics.Bitmap | ||||
| import android.graphics.drawable.ColorDrawable | ||||
| import android.graphics.drawable.Drawable | ||||
| import android.provider.ContactsContract | ||||
| import android.provider.ContactsContract.CommonDataKinds.* | ||||
| import android.widget.ImageView | ||||
| import com.bumptech.glide.Glide | ||||
| import com.bumptech.glide.load.DataSource | ||||
| @@ -48,30 +48,30 @@ abstract class ContactActivity : SimpleActivity() { | ||||
|     fun updateContactPhoto(path: String, photoView: ImageView, bitmap: Bitmap? = null) { | ||||
|         currentContactPhotoPath = path | ||||
|         val options = RequestOptions() | ||||
|                 .diskCacheStrategy(DiskCacheStrategy.RESOURCE) | ||||
|                 .centerCrop() | ||||
|             .diskCacheStrategy(DiskCacheStrategy.RESOURCE) | ||||
|             .centerCrop() | ||||
|  | ||||
|         if (isDestroyed || isFinishing) { | ||||
|             return | ||||
|         } | ||||
|  | ||||
|         Glide.with(this) | ||||
|                 .load(bitmap ?: path) | ||||
|                 .transition(DrawableTransitionOptions.withCrossFade()) | ||||
|                 .apply(options) | ||||
|                 .apply(RequestOptions.circleCropTransform()) | ||||
|                 .listener(object : RequestListener<Drawable> { | ||||
|                     override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { | ||||
|                         photoView.setPadding(0, 0, 0, 0) | ||||
|                         photoView.background = ColorDrawable(0) | ||||
|                         return false | ||||
|                     } | ||||
|             .load(bitmap ?: path) | ||||
|             .transition(DrawableTransitionOptions.withCrossFade()) | ||||
|             .apply(options) | ||||
|             .apply(RequestOptions.circleCropTransform()) | ||||
|             .listener(object : RequestListener<Drawable> { | ||||
|                 override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { | ||||
|                     photoView.setPadding(0, 0, 0, 0) | ||||
|                     photoView.background = ColorDrawable(0) | ||||
|                     return false | ||||
|                 } | ||||
|  | ||||
|                     override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean { | ||||
|                         showPhotoPlaceholder(photoView) | ||||
|                         return true | ||||
|                     } | ||||
|                 }).into(photoView) | ||||
|                 override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean { | ||||
|                     showPhotoPlaceholder(photoView) | ||||
|                     return true | ||||
|                 } | ||||
|             }).into(photoView) | ||||
|     } | ||||
|  | ||||
|     fun deleteContact() { | ||||
| @@ -121,67 +121,67 @@ abstract class ContactActivity : SimpleActivity() { | ||||
|     } | ||||
|  | ||||
|     fun getPhoneNumberTypeText(type: Int, label: String): String { | ||||
|         return if (type == ContactsContract.CommonDataKinds.BaseTypes.TYPE_CUSTOM) { | ||||
|         return if (type == BaseTypes.TYPE_CUSTOM) { | ||||
|             label | ||||
|         } else { | ||||
|             getString(when (type) { | ||||
|                 ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE -> R.string.mobile | ||||
|                 ContactsContract.CommonDataKinds.Phone.TYPE_HOME -> R.string.home | ||||
|                 ContactsContract.CommonDataKinds.Phone.TYPE_WORK -> R.string.work | ||||
|                 ContactsContract.CommonDataKinds.Phone.TYPE_MAIN -> R.string.main_number | ||||
|                 ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK -> R.string.work_fax | ||||
|                 ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME -> R.string.home_fax | ||||
|                 ContactsContract.CommonDataKinds.Phone.TYPE_PAGER -> R.string.pager | ||||
|                 Phone.TYPE_MOBILE -> R.string.mobile | ||||
|                 Phone.TYPE_HOME -> R.string.home | ||||
|                 Phone.TYPE_WORK -> R.string.work | ||||
|                 Phone.TYPE_MAIN -> R.string.main_number | ||||
|                 Phone.TYPE_FAX_WORK -> R.string.work_fax | ||||
|                 Phone.TYPE_FAX_HOME -> R.string.home_fax | ||||
|                 Phone.TYPE_PAGER -> R.string.pager | ||||
|                 else -> R.string.other | ||||
|             }) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun getEmailTypeText(type: Int, label: String): String { | ||||
|         return if (type == ContactsContract.CommonDataKinds.BaseTypes.TYPE_CUSTOM) { | ||||
|         return if (type == BaseTypes.TYPE_CUSTOM) { | ||||
|             label | ||||
|         } else { | ||||
|             getString(when (type) { | ||||
|                 ContactsContract.CommonDataKinds.Email.TYPE_HOME -> R.string.home | ||||
|                 ContactsContract.CommonDataKinds.Email.TYPE_WORK -> R.string.work | ||||
|                 ContactsContract.CommonDataKinds.Email.TYPE_MOBILE -> R.string.mobile | ||||
|                 Email.TYPE_HOME -> R.string.home | ||||
|                 Email.TYPE_WORK -> R.string.work | ||||
|                 Email.TYPE_MOBILE -> R.string.mobile | ||||
|                 else -> R.string.other | ||||
|             }) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun getAddressTypeText(type: Int, label: String): String { | ||||
|         return if (type == ContactsContract.CommonDataKinds.BaseTypes.TYPE_CUSTOM) { | ||||
|         return if (type == BaseTypes.TYPE_CUSTOM) { | ||||
|             label | ||||
|         } else { | ||||
|             getString(when (type) { | ||||
|                 ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME -> R.string.home | ||||
|                 ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK -> R.string.work | ||||
|                 StructuredPostal.TYPE_HOME -> R.string.home | ||||
|                 StructuredPostal.TYPE_WORK -> R.string.work | ||||
|                 else -> R.string.other | ||||
|             }) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun getIMTypeText(type: Int, label: String): String { | ||||
|         return if (type == ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM) { | ||||
|         return if (type == Im.PROTOCOL_CUSTOM) { | ||||
|             label | ||||
|         } else { | ||||
|             getString(when (type) { | ||||
|                 ContactsContract.CommonDataKinds.Im.PROTOCOL_AIM -> R.string.aim | ||||
|                 ContactsContract.CommonDataKinds.Im.PROTOCOL_MSN -> R.string.windows_live | ||||
|                 ContactsContract.CommonDataKinds.Im.PROTOCOL_YAHOO -> R.string.yahoo | ||||
|                 ContactsContract.CommonDataKinds.Im.PROTOCOL_SKYPE -> R.string.skype | ||||
|                 ContactsContract.CommonDataKinds.Im.PROTOCOL_QQ -> R.string.qq | ||||
|                 ContactsContract.CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK -> R.string.hangouts | ||||
|                 ContactsContract.CommonDataKinds.Im.PROTOCOL_ICQ -> R.string.icq | ||||
|                 Im.PROTOCOL_AIM -> R.string.aim | ||||
|                 Im.PROTOCOL_MSN -> R.string.windows_live | ||||
|                 Im.PROTOCOL_YAHOO -> R.string.yahoo | ||||
|                 Im.PROTOCOL_SKYPE -> R.string.skype | ||||
|                 Im.PROTOCOL_QQ -> R.string.qq | ||||
|                 Im.PROTOCOL_GOOGLE_TALK -> R.string.hangouts | ||||
|                 Im.PROTOCOL_ICQ -> R.string.icq | ||||
|                 else -> R.string.jabber | ||||
|             }) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun getEventTextId(type: Int) = when (type) { | ||||
|         ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY -> R.string.anniversary | ||||
|         ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY -> R.string.birthday | ||||
|         Event.TYPE_ANNIVERSARY -> R.string.anniversary | ||||
|         Event.TYPE_BIRTHDAY -> R.string.birthday | ||||
|         else -> R.string.other | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -9,6 +9,7 @@ import android.graphics.Bitmap | ||||
| import android.net.Uri | ||||
| import android.os.Bundle | ||||
| import android.provider.ContactsContract.CommonDataKinds | ||||
| import android.provider.ContactsContract.CommonDataKinds.* | ||||
| import android.provider.MediaStore | ||||
| import android.view.Menu | ||||
| 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.helpers.* | ||||
| 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.item_edit_address.view.* | ||||
| import kotlinx.android.synthetic.main.item_edit_email.view.* | ||||
| @@ -220,36 +224,22 @@ class EditContactActivity : ContactActivity() { | ||||
|         } | ||||
|  | ||||
|         val textColor = config.textColor | ||||
|         contact_send_sms.applyColorFilter(textColor) | ||||
|         contact_start_call.applyColorFilter(textColor) | ||||
|         contact_send_email.applyColorFilter(textColor) | ||||
|         contact_name_image.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) | ||||
|         arrayOf(contact_send_sms, contact_start_call, contact_send_email, contact_name_image, contact_numbers_image, contact_emails_image, contact_addresses_image, | ||||
|             contact_ims_image, contact_events_image, contact_notes_image, contact_organization_image, contact_websites_image, contact_groups_image, | ||||
|             contact_source_image).forEach { | ||||
|             it.applyColorFilter(textColor) | ||||
|         } | ||||
|  | ||||
|         val adjustedPrimaryColor = getAdjustedPrimaryColor() | ||||
|         contact_numbers_add_new.applyColorFilter(adjustedPrimaryColor) | ||||
|         contact_numbers_add_new.background.applyColorFilter(textColor) | ||||
|         contact_emails_add_new.applyColorFilter(adjustedPrimaryColor) | ||||
|         contact_emails_add_new.background.applyColorFilter(textColor) | ||||
|         contact_addresses_add_new.applyColorFilter(adjustedPrimaryColor) | ||||
|         contact_addresses_add_new.background.applyColorFilter(textColor) | ||||
|         contact_ims_add_new.applyColorFilter(adjustedPrimaryColor) | ||||
|         contact_ims_add_new.background.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) | ||||
|         arrayOf(contact_numbers_add_new, contact_emails_add_new, contact_addresses_add_new, contact_ims_add_new, contact_events_add_new, | ||||
|             contact_websites_add_new, contact_groups_add_new).forEach { | ||||
|             it.applyColorFilter(adjustedPrimaryColor) | ||||
|         } | ||||
|  | ||||
|         arrayOf(contact_numbers_add_new.background, contact_emails_add_new.background, contact_addresses_add_new.background, contact_ims_add_new.background, | ||||
|             contact_events_add_new.background, contact_websites_add_new.background, contact_groups_add_new.background).forEach { | ||||
|             it.applyColorFilter(textColor) | ||||
|         } | ||||
|  | ||||
|         contact_toggle_favorite.setOnClickListener { toggleFavorite() } | ||||
|         contact_photo.setOnClickListener { trySetPhoto() } | ||||
| @@ -755,20 +745,20 @@ class EditContactActivity : ContactActivity() { | ||||
|  | ||||
|     private fun showNumberTypePicker(numberTypeField: TextView) { | ||||
|         val items = arrayListOf( | ||||
|                 RadioItem(CommonDataKinds.Phone.TYPE_MOBILE, getString(R.string.mobile)), | ||||
|                 RadioItem(CommonDataKinds.Phone.TYPE_HOME, getString(R.string.home)), | ||||
|                 RadioItem(CommonDataKinds.Phone.TYPE_WORK, getString(R.string.work)), | ||||
|                 RadioItem(CommonDataKinds.Phone.TYPE_MAIN, getString(R.string.main_number)), | ||||
|                 RadioItem(CommonDataKinds.Phone.TYPE_FAX_WORK, getString(R.string.work_fax)), | ||||
|                 RadioItem(CommonDataKinds.Phone.TYPE_FAX_HOME, getString(R.string.home_fax)), | ||||
|                 RadioItem(CommonDataKinds.Phone.TYPE_PAGER, getString(R.string.pager)), | ||||
|                 RadioItem(CommonDataKinds.Phone.TYPE_OTHER, getString(R.string.other)), | ||||
|                 RadioItem(CommonDataKinds.Phone.TYPE_CUSTOM, getString(R.string.custom)) | ||||
|             RadioItem(Phone.TYPE_MOBILE, getString(R.string.mobile)), | ||||
|             RadioItem(Phone.TYPE_HOME, getString(R.string.home)), | ||||
|             RadioItem(Phone.TYPE_WORK, getString(R.string.work)), | ||||
|             RadioItem(Phone.TYPE_MAIN, getString(R.string.main_number)), | ||||
|             RadioItem(Phone.TYPE_FAX_WORK, getString(R.string.work_fax)), | ||||
|             RadioItem(Phone.TYPE_FAX_HOME, getString(R.string.home_fax)), | ||||
|             RadioItem(Phone.TYPE_PAGER, getString(R.string.pager)), | ||||
|             RadioItem(Phone.TYPE_OTHER, getString(R.string.other)), | ||||
|             RadioItem(Phone.TYPE_CUSTOM, getString(R.string.custom)) | ||||
|         ) | ||||
|  | ||||
|         val currentNumberTypeId = getPhoneNumberTypeId(numberTypeField.value) | ||||
|         RadioGroupDialog(this, items, currentNumberTypeId) { | ||||
|             if (it as Int == CommonDataKinds.Phone.TYPE_CUSTOM) { | ||||
|             if (it as Int == Phone.TYPE_CUSTOM) { | ||||
|                 CustomLabelDialog(this) { | ||||
|                     numberTypeField.text = it | ||||
|                 } | ||||
| @@ -780,11 +770,11 @@ class EditContactActivity : ContactActivity() { | ||||
|  | ||||
|     private fun showEmailTypePicker(emailTypeField: TextView) { | ||||
|         val items = arrayListOf( | ||||
|                 RadioItem(CommonDataKinds.Email.TYPE_HOME, getString(R.string.home)), | ||||
|                 RadioItem(CommonDataKinds.Email.TYPE_WORK, getString(R.string.work)), | ||||
|                 RadioItem(CommonDataKinds.Email.TYPE_MOBILE, getString(R.string.mobile)), | ||||
|                 RadioItem(CommonDataKinds.Email.TYPE_OTHER, getString(R.string.other)), | ||||
|                 RadioItem(CommonDataKinds.Email.TYPE_CUSTOM, getString(R.string.custom)) | ||||
|             RadioItem(CommonDataKinds.Email.TYPE_HOME, getString(R.string.home)), | ||||
|             RadioItem(CommonDataKinds.Email.TYPE_WORK, getString(R.string.work)), | ||||
|             RadioItem(CommonDataKinds.Email.TYPE_MOBILE, getString(R.string.mobile)), | ||||
|             RadioItem(CommonDataKinds.Email.TYPE_OTHER, getString(R.string.other)), | ||||
|             RadioItem(CommonDataKinds.Email.TYPE_CUSTOM, getString(R.string.custom)) | ||||
|         ) | ||||
|  | ||||
|         val currentEmailTypeId = getEmailTypeId(emailTypeField.value) | ||||
| @@ -801,15 +791,15 @@ class EditContactActivity : ContactActivity() { | ||||
|  | ||||
|     private fun showAddressTypePicker(addressTypeField: TextView) { | ||||
|         val items = arrayListOf( | ||||
|                 RadioItem(CommonDataKinds.StructuredPostal.TYPE_HOME, getString(R.string.home)), | ||||
|                 RadioItem(CommonDataKinds.StructuredPostal.TYPE_WORK, getString(R.string.work)), | ||||
|                 RadioItem(CommonDataKinds.StructuredPostal.TYPE_OTHER, getString(R.string.other)), | ||||
|                 RadioItem(CommonDataKinds.StructuredPostal.TYPE_CUSTOM, getString(R.string.custom)) | ||||
|             RadioItem(StructuredPostal.TYPE_HOME, getString(R.string.home)), | ||||
|             RadioItem(StructuredPostal.TYPE_WORK, getString(R.string.work)), | ||||
|             RadioItem(StructuredPostal.TYPE_OTHER, getString(R.string.other)), | ||||
|             RadioItem(StructuredPostal.TYPE_CUSTOM, getString(R.string.custom)) | ||||
|         ) | ||||
|  | ||||
|         val currentAddressTypeId = getAddressTypeId(addressTypeField.value) | ||||
|         RadioGroupDialog(this, items, currentAddressTypeId) { | ||||
|             if (it as Int == CommonDataKinds.StructuredPostal.TYPE_CUSTOM) { | ||||
|             if (it as Int == StructuredPostal.TYPE_CUSTOM) { | ||||
|                 CustomLabelDialog(this) { | ||||
|                     addressTypeField.text = it | ||||
|                 } | ||||
| @@ -821,20 +811,20 @@ class EditContactActivity : ContactActivity() { | ||||
|  | ||||
|     private fun showIMTypePicker(imTypeField: TextView) { | ||||
|         val items = arrayListOf( | ||||
|                 RadioItem(CommonDataKinds.Im.PROTOCOL_AIM, getString(R.string.aim)), | ||||
|                 RadioItem(CommonDataKinds.Im.PROTOCOL_MSN, getString(R.string.windows_live)), | ||||
|                 RadioItem(CommonDataKinds.Im.PROTOCOL_YAHOO, getString(R.string.yahoo)), | ||||
|                 RadioItem(CommonDataKinds.Im.PROTOCOL_SKYPE, getString(R.string.skype)), | ||||
|                 RadioItem(CommonDataKinds.Im.PROTOCOL_QQ, getString(R.string.qq)), | ||||
|                 RadioItem(CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK, getString(R.string.hangouts)), | ||||
|                 RadioItem(CommonDataKinds.Im.PROTOCOL_ICQ, getString(R.string.icq)), | ||||
|                 RadioItem(CommonDataKinds.Im.PROTOCOL_JABBER, getString(R.string.jabber)), | ||||
|                 RadioItem(CommonDataKinds.Im.PROTOCOL_CUSTOM, getString(R.string.custom)) | ||||
|             RadioItem(Im.PROTOCOL_AIM, getString(R.string.aim)), | ||||
|             RadioItem(Im.PROTOCOL_MSN, getString(R.string.windows_live)), | ||||
|             RadioItem(Im.PROTOCOL_YAHOO, getString(R.string.yahoo)), | ||||
|             RadioItem(Im.PROTOCOL_SKYPE, getString(R.string.skype)), | ||||
|             RadioItem(Im.PROTOCOL_QQ, getString(R.string.qq)), | ||||
|             RadioItem(Im.PROTOCOL_GOOGLE_TALK, getString(R.string.hangouts)), | ||||
|             RadioItem(Im.PROTOCOL_ICQ, getString(R.string.icq)), | ||||
|             RadioItem(Im.PROTOCOL_JABBER, getString(R.string.jabber)), | ||||
|             RadioItem(Im.PROTOCOL_CUSTOM, getString(R.string.custom)) | ||||
|         ) | ||||
|  | ||||
|         val currentIMTypeId = getIMTypeId(imTypeField.value) | ||||
|         RadioGroupDialog(this, items, currentIMTypeId) { | ||||
|             if (it as Int == CommonDataKinds.Im.PROTOCOL_CUSTOM) { | ||||
|             if (it as Int == Im.PROTOCOL_CUSTOM) { | ||||
|                 CustomLabelDialog(this) { | ||||
|                     imTypeField.text = it | ||||
|                 } | ||||
| @@ -846,9 +836,9 @@ class EditContactActivity : ContactActivity() { | ||||
|  | ||||
|     private fun showEventTypePicker(eventTypeField: TextView) { | ||||
|         val items = arrayListOf( | ||||
|                 RadioItem(CommonDataKinds.Event.TYPE_ANNIVERSARY, getString(R.string.anniversary)), | ||||
|                 RadioItem(CommonDataKinds.Event.TYPE_BIRTHDAY, getString(R.string.birthday)), | ||||
|                 RadioItem(CommonDataKinds.Event.TYPE_OTHER, getString(R.string.other)) | ||||
|             RadioItem(CommonDataKinds.Event.TYPE_ANNIVERSARY, getString(R.string.anniversary)), | ||||
|             RadioItem(CommonDataKinds.Event.TYPE_BIRTHDAY, getString(R.string.birthday)), | ||||
|             RadioItem(CommonDataKinds.Event.TYPE_OTHER, getString(R.string.other)) | ||||
|         ) | ||||
|  | ||||
|         val currentEventTypeId = getEventTypeId(eventTypeField.value) | ||||
| @@ -922,7 +912,7 @@ class EditContactActivity : ContactActivity() { | ||||
|             val numberHolder = contact_numbers_holder.getChildAt(i) | ||||
|             val number = numberHolder.contact_number.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()) { | ||||
|                 phoneNumbers.add(PhoneNumber(number, numberType, numberLabel, number.normalizeNumber())) | ||||
| @@ -954,7 +944,7 @@ class EditContactActivity : ContactActivity() { | ||||
|             val addressHolder = contact_addresses_holder.getChildAt(i) | ||||
|             val address = addressHolder.contact_address.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()) { | ||||
|                 addresses.add(Address(address, addressType, addressLabel)) | ||||
| @@ -970,7 +960,7 @@ class EditContactActivity : ContactActivity() { | ||||
|             val IMsHolder = contact_ims_holder.getChildAt(i) | ||||
|             val IM = IMsHolder.contact_im.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()) { | ||||
|                 IMs.add(IM(IM, IMType, IMLabel)) | ||||
| @@ -1128,8 +1118,8 @@ class EditContactActivity : ContactActivity() { | ||||
|  | ||||
|     private fun trySetPhoto() { | ||||
|         val items = arrayListOf( | ||||
|                 RadioItem(TAKE_PHOTO, getString(R.string.take_photo)), | ||||
|                 RadioItem(CHOOSE_PHOTO, getString(R.string.choose_photo)) | ||||
|             RadioItem(TAKE_PHOTO, getString(R.string.take_photo)), | ||||
|             RadioItem(CHOOSE_PHOTO, getString(R.string.choose_photo)) | ||||
|         ) | ||||
|  | ||||
|         if (currentContactPhotoPath.isNotEmpty() || contact!!.photo != null) { | ||||
| @@ -1147,13 +1137,13 @@ class EditContactActivity : ContactActivity() { | ||||
|  | ||||
|     private fun parseIntentData(data: ArrayList<ContentValues>) { | ||||
|         data.forEach { | ||||
|             when (it.get(CommonDataKinds.StructuredName.MIMETYPE)) { | ||||
|             when (it.get(StructuredName.MIMETYPE)) { | ||||
|                 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.Event.CONTENT_ITEM_TYPE -> parseEvent(it) | ||||
|                 CommonDataKinds.Website.CONTENT_ITEM_TYPE -> parseWebsite(it) | ||||
|                 CommonDataKinds.Note.CONTENT_ITEM_TYPE -> parseNote(it) | ||||
|                 Website.CONTENT_ITEM_TYPE -> parseWebsite(it) | ||||
|                 Note.CONTENT_ITEM_TYPE -> parseNote(it) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @@ -1166,9 +1156,9 @@ class EditContactActivity : ContactActivity() { | ||||
|     } | ||||
|  | ||||
|     private fun parseAddress(contentValues: ContentValues) { | ||||
|         val type = contentValues.getAsInteger(CommonDataKinds.StructuredPostal.DATA2) ?: DEFAULT_ADDRESS_TYPE | ||||
|         val addressValue = contentValues.getAsString(CommonDataKinds.StructuredPostal.DATA4) | ||||
|                 ?: contentValues.getAsString(CommonDataKinds.StructuredPostal.DATA1) ?: return | ||||
|         val type = contentValues.getAsInteger(StructuredPostal.DATA2) ?: DEFAULT_ADDRESS_TYPE | ||||
|         val addressValue = contentValues.getAsString(StructuredPostal.DATA4) | ||||
|             ?: contentValues.getAsString(StructuredPostal.DATA1) ?: return | ||||
|         val address = Address(addressValue, type, "") | ||||
|         contact!!.addresses.add(address) | ||||
|     } | ||||
| @@ -1187,12 +1177,12 @@ class EditContactActivity : ContactActivity() { | ||||
|     } | ||||
|  | ||||
|     private fun parseWebsite(contentValues: ContentValues) { | ||||
|         val website = contentValues.getAsString(CommonDataKinds.Website.DATA1) ?: return | ||||
|         val website = contentValues.getAsString(Website.DATA1) ?: return | ||||
|         contact!!.websites.add(website) | ||||
|     } | ||||
|  | ||||
|     private fun parseNote(contentValues: ContentValues) { | ||||
|         val note = contentValues.getAsString(CommonDataKinds.Note.DATA1) ?: return | ||||
|         val note = contentValues.getAsString(Note.DATA1) ?: return | ||||
|         contact!!.notes = note | ||||
|     } | ||||
|  | ||||
| @@ -1226,15 +1216,15 @@ class EditContactActivity : ContactActivity() { | ||||
|     } | ||||
|  | ||||
|     private fun getPhoneNumberTypeId(value: String) = when (value) { | ||||
|         getString(R.string.mobile) -> CommonDataKinds.Phone.TYPE_MOBILE | ||||
|         getString(R.string.home) -> CommonDataKinds.Phone.TYPE_HOME | ||||
|         getString(R.string.work) -> CommonDataKinds.Phone.TYPE_WORK | ||||
|         getString(R.string.main_number) -> CommonDataKinds.Phone.TYPE_MAIN | ||||
|         getString(R.string.work_fax) -> CommonDataKinds.Phone.TYPE_FAX_WORK | ||||
|         getString(R.string.home_fax) -> CommonDataKinds.Phone.TYPE_FAX_HOME | ||||
|         getString(R.string.pager) -> CommonDataKinds.Phone.TYPE_PAGER | ||||
|         getString(R.string.other) -> CommonDataKinds.Phone.TYPE_OTHER | ||||
|         else -> CommonDataKinds.Phone.TYPE_CUSTOM | ||||
|         getString(R.string.mobile) -> Phone.TYPE_MOBILE | ||||
|         getString(R.string.home) -> Phone.TYPE_HOME | ||||
|         getString(R.string.work) -> Phone.TYPE_WORK | ||||
|         getString(R.string.main_number) -> Phone.TYPE_MAIN | ||||
|         getString(R.string.work_fax) -> Phone.TYPE_FAX_WORK | ||||
|         getString(R.string.home_fax) -> Phone.TYPE_FAX_HOME | ||||
|         getString(R.string.pager) -> Phone.TYPE_PAGER | ||||
|         getString(R.string.other) -> Phone.TYPE_OTHER | ||||
|         else -> Phone.TYPE_CUSTOM | ||||
|     } | ||||
|  | ||||
|     private fun getEmailTypeId(value: String) = when (value) { | ||||
| @@ -1252,21 +1242,21 @@ class EditContactActivity : ContactActivity() { | ||||
|     } | ||||
|  | ||||
|     private fun getAddressTypeId(value: String) = when (value) { | ||||
|         getString(R.string.home) -> CommonDataKinds.StructuredPostal.TYPE_HOME | ||||
|         getString(R.string.work) -> CommonDataKinds.StructuredPostal.TYPE_WORK | ||||
|         getString(R.string.other) -> CommonDataKinds.StructuredPostal.TYPE_OTHER | ||||
|         else -> CommonDataKinds.StructuredPostal.TYPE_CUSTOM | ||||
|         getString(R.string.home) -> StructuredPostal.TYPE_HOME | ||||
|         getString(R.string.work) -> StructuredPostal.TYPE_WORK | ||||
|         getString(R.string.other) -> StructuredPostal.TYPE_OTHER | ||||
|         else -> StructuredPostal.TYPE_CUSTOM | ||||
|     } | ||||
|  | ||||
|     private fun getIMTypeId(value: String) = when (value) { | ||||
|         getString(R.string.aim) -> CommonDataKinds.Im.PROTOCOL_AIM | ||||
|         getString(R.string.windows_live) -> CommonDataKinds.Im.PROTOCOL_MSN | ||||
|         getString(R.string.yahoo) -> CommonDataKinds.Im.PROTOCOL_YAHOO | ||||
|         getString(R.string.skype) -> CommonDataKinds.Im.PROTOCOL_SKYPE | ||||
|         getString(R.string.qq) -> CommonDataKinds.Im.PROTOCOL_QQ | ||||
|         getString(R.string.hangouts) -> CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK | ||||
|         getString(R.string.icq) -> CommonDataKinds.Im.PROTOCOL_ICQ | ||||
|         getString(R.string.jabber) -> CommonDataKinds.Im.PROTOCOL_JABBER | ||||
|         else -> CommonDataKinds.Im.PROTOCOL_CUSTOM | ||||
|         getString(R.string.aim) -> Im.PROTOCOL_AIM | ||||
|         getString(R.string.windows_live) -> Im.PROTOCOL_MSN | ||||
|         getString(R.string.yahoo) -> Im.PROTOCOL_YAHOO | ||||
|         getString(R.string.skype) -> Im.PROTOCOL_SKYPE | ||||
|         getString(R.string.qq) -> Im.PROTOCOL_QQ | ||||
|         getString(R.string.hangouts) -> Im.PROTOCOL_GOOGLE_TALK | ||||
|         getString(R.string.icq) -> Im.PROTOCOL_ICQ | ||||
|         getString(R.string.jabber) -> Im.PROTOCOL_JABBER | ||||
|         else -> Im.PROTOCOL_CUSTOM | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -38,8 +38,8 @@ class InsertOrEditContactActivity : SimpleActivity(), RefreshContactsListener { | ||||
|     private var searchMenuItem: MenuItem? = null | ||||
|  | ||||
|     private val contactsFavoritesList = arrayListOf( | ||||
|             CONTACTS_TAB_MASK, | ||||
|             FAVORITES_TAB_MASK | ||||
|         CONTACTS_TAB_MASK, | ||||
|         FAVORITES_TAB_MASK | ||||
|     ) | ||||
|  | ||||
|     override fun onCreate(savedInstanceState: Bundle?) { | ||||
| @@ -116,17 +116,17 @@ class InsertOrEditContactActivity : SimpleActivity(), RefreshContactsListener { | ||||
|         } | ||||
|  | ||||
|         insert_or_edit_tabs_holder.onTabSelectionChanged( | ||||
|                 tabUnselectedAction = { | ||||
|                     it.icon?.applyColorFilter(config.textColor) | ||||
|                 }, | ||||
|                 tabSelectedAction = { | ||||
|                     if (isSearchOpen) { | ||||
|                         getCurrentFragment()?.onSearchQueryChanged("") | ||||
|                         searchMenuItem?.collapseActionView() | ||||
|                     } | ||||
|                     viewpager.currentItem = it.position | ||||
|                     it.icon?.applyColorFilter(getAdjustedPrimaryColor()) | ||||
|             tabUnselectedAction = { | ||||
|                 it.icon?.applyColorFilter(config.textColor) | ||||
|             }, | ||||
|             tabSelectedAction = { | ||||
|                 if (isSearchOpen) { | ||||
|                     getCurrentFragment()?.onSearchQueryChanged("") | ||||
|                     searchMenuItem?.collapseActionView() | ||||
|                 } | ||||
|                 viewpager.currentItem = it.position | ||||
|                 it.icon?.applyColorFilter(getAdjustedPrimaryColor()) | ||||
|             } | ||||
|         ) | ||||
|  | ||||
|         insert_or_edit_tabs_holder.removeAllTabs() | ||||
|   | ||||
| @@ -313,11 +313,11 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { | ||||
|         val intent = Intent(this, DialpadActivity::class.java) | ||||
|         intent.action = Intent.ACTION_VIEW | ||||
|         return ShortcutInfo.Builder(this, "launch_dialpad") | ||||
|                 .setShortLabel(newEvent) | ||||
|                 .setLongLabel(newEvent) | ||||
|                 .setIcon(Icon.createWithBitmap(bmp)) | ||||
|                 .setIntent(intent) | ||||
|                 .build() | ||||
|             .setShortLabel(newEvent) | ||||
|             .setLongLabel(newEvent) | ||||
|             .setIcon(Icon.createWithBitmap(bmp)) | ||||
|             .setIntent(intent) | ||||
|             .build() | ||||
|     } | ||||
|  | ||||
|     @SuppressLint("NewApi") | ||||
| @@ -330,11 +330,11 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { | ||||
|         val intent = Intent(this, EditContactActivity::class.java) | ||||
|         intent.action = Intent.ACTION_VIEW | ||||
|         return ShortcutInfo.Builder(this, "create_new_contact") | ||||
|                 .setShortLabel(newEvent) | ||||
|                 .setLongLabel(newEvent) | ||||
|                 .setIcon(Icon.createWithBitmap(bmp)) | ||||
|                 .setIntent(intent) | ||||
|                 .build() | ||||
|             .setShortLabel(newEvent) | ||||
|             .setLongLabel(newEvent) | ||||
|             .setIcon(Icon.createWithBitmap(bmp)) | ||||
|             .setIntent(intent) | ||||
|             .build() | ||||
|     } | ||||
|  | ||||
|     private fun getCurrentFragment(): MyViewPagerFragment? { | ||||
| @@ -398,17 +398,17 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { | ||||
|         } | ||||
|  | ||||
|         main_tabs_holder.onTabSelectionChanged( | ||||
|                 tabUnselectedAction = { | ||||
|                     it.icon?.applyColorFilter(config.textColor) | ||||
|                 }, | ||||
|                 tabSelectedAction = { | ||||
|                     if (isSearchOpen) { | ||||
|                         getCurrentFragment()?.onSearchQueryChanged("") | ||||
|                         searchMenuItem?.collapseActionView() | ||||
|                     } | ||||
|                     viewpager.currentItem = it.position | ||||
|                     it.icon?.applyColorFilter(getAdjustedPrimaryColor()) | ||||
|             tabUnselectedAction = { | ||||
|                 it.icon?.applyColorFilter(config.textColor) | ||||
|             }, | ||||
|             tabSelectedAction = { | ||||
|                 if (isSearchOpen) { | ||||
|                     getCurrentFragment()?.onSearchQueryChanged("") | ||||
|                     searchMenuItem?.collapseActionView() | ||||
|                 } | ||||
|                 viewpager.currentItem = it.position | ||||
|                 it.icon?.applyColorFilter(getAdjustedPrimaryColor()) | ||||
|             } | ||||
|         ) | ||||
|  | ||||
|         if (intent?.action == Intent.ACTION_VIEW && intent.data != null) { | ||||
| @@ -561,10 +561,10 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { | ||||
|         val licenses = LICENSE_JODA or LICENSE_GLIDE or LICENSE_GSON or LICENSE_INDICATOR_FAST_SCROLL | ||||
|  | ||||
|         val faqItems = arrayListOf( | ||||
|                 FAQItem(R.string.faq_1_title, R.string.faq_1_text), | ||||
|                 FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons), | ||||
|                 FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons), | ||||
|                 FAQItem(R.string.faq_7_title_commons, R.string.faq_7_text_commons) | ||||
|             FAQItem(R.string.faq_1_title, R.string.faq_1_text), | ||||
|             FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons), | ||||
|             FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons), | ||||
|             FAQItem(R.string.faq_7_title_commons, R.string.faq_7_text_commons) | ||||
|         ) | ||||
|  | ||||
|         startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true) | ||||
|   | ||||
| @@ -6,6 +6,8 @@ import android.content.Intent | ||||
| import android.net.Uri | ||||
| import android.os.Bundle | ||||
| import android.provider.ContactsContract | ||||
| import android.provider.ContactsContract.CommonDataKinds.Email | ||||
| import android.provider.ContactsContract.CommonDataKinds.Phone | ||||
| import android.view.Menu | ||||
| import android.view.MenuItem | ||||
| import androidx.appcompat.widget.SearchView | ||||
| @@ -46,8 +48,8 @@ class SelectContactActivity : SimpleActivity() { | ||||
|                 handlePermission(PERMISSION_WRITE_CONTACTS) { | ||||
|                     if (it) { | ||||
|                         specialMimeType = when (intent.data) { | ||||
|                             ContactsContract.CommonDataKinds.Email.CONTENT_URI -> ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE | ||||
|                             ContactsContract.CommonDataKinds.Phone.CONTENT_URI -> ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE | ||||
|                             Email.CONTENT_URI -> Email.CONTENT_ITEM_TYPE | ||||
|                             Phone.CONTENT_URI -> Phone.CONTENT_ITEM_TYPE | ||||
|                             else -> null | ||||
|                         } | ||||
|                         initContacts() | ||||
| @@ -178,8 +180,8 @@ class SelectContactActivity : SimpleActivity() { | ||||
|             var contacts = it.filter { | ||||
|                 if (specialMimeType != null) { | ||||
|                     val hasRequiredValues = when (specialMimeType) { | ||||
|                         ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE -> it.emails.isNotEmpty() | ||||
|                         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE -> it.phoneNumbers.isNotEmpty() | ||||
|                         Email.CONTENT_ITEM_TYPE -> it.emails.isNotEmpty() | ||||
|                         Phone.CONTENT_ITEM_TYPE -> it.phoneNumbers.isNotEmpty() | ||||
|                         else -> true | ||||
|                     } | ||||
|                     !it.isPrivate() && hasRequiredValues | ||||
| @@ -242,8 +244,8 @@ class SelectContactActivity : SimpleActivity() { | ||||
|         select_contact_placeholder_2.beVisibleIf(contacts.isEmpty()) | ||||
|         select_contact_placeholder.beVisibleIf(contacts.isEmpty()) | ||||
|         select_contact_placeholder.setText(when (specialMimeType) { | ||||
|             ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails | ||||
|             ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers | ||||
|             Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails | ||||
|             Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers | ||||
|             else -> R.string.no_contacts_found | ||||
|         }) | ||||
|     } | ||||
|   | ||||
| @@ -92,10 +92,10 @@ class SettingsActivity : SimpleActivity() { | ||||
|         settings_font_size.text = getFontSizeText() | ||||
|         settings_font_size_holder.setOnClickListener { | ||||
|             val items = arrayListOf( | ||||
|                     RadioItem(FONT_SIZE_SMALL, getString(R.string.small)), | ||||
|                     RadioItem(FONT_SIZE_MEDIUM, getString(R.string.medium)), | ||||
|                     RadioItem(FONT_SIZE_LARGE, getString(R.string.large)), | ||||
|                     RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large))) | ||||
|                 RadioItem(FONT_SIZE_SMALL, getString(R.string.small)), | ||||
|                 RadioItem(FONT_SIZE_MEDIUM, getString(R.string.medium)), | ||||
|                 RadioItem(FONT_SIZE_LARGE, getString(R.string.large)), | ||||
|                 RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large))) | ||||
|  | ||||
|             RadioGroupDialog(this@SettingsActivity, items, config.fontSize) { | ||||
|                 config.fontSize = it as Int | ||||
| @@ -166,9 +166,9 @@ class SettingsActivity : SimpleActivity() { | ||||
|         settings_on_contact_click.text = getOnContactClickText() | ||||
|         settings_on_contact_click_holder.setOnClickListener { | ||||
|             val items = arrayListOf( | ||||
|                     RadioItem(ON_CLICK_CALL_CONTACT, getString(R.string.call_contact)), | ||||
|                     RadioItem(ON_CLICK_VIEW_CONTACT, getString(R.string.view_contact)), | ||||
|                     RadioItem(ON_CLICK_EDIT_CONTACT, getString(R.string.edit_contact))) | ||||
|                 RadioItem(ON_CLICK_CALL_CONTACT, getString(R.string.call_contact)), | ||||
|                 RadioItem(ON_CLICK_VIEW_CONTACT, getString(R.string.view_contact)), | ||||
|                 RadioItem(ON_CLICK_EDIT_CONTACT, getString(R.string.edit_contact))) | ||||
|  | ||||
|             RadioGroupDialog(this@SettingsActivity, items, config.onContactClick) { | ||||
|                 config.onContactClick = it as Int | ||||
|   | ||||
| @@ -1,40 +1,39 @@ | ||||
| package com.simplemobiletools.contacts.pro.activities | ||||
|  | ||||
| import android.annotation.TargetApi | ||||
| import android.content.ContentValues | ||||
| import android.content.Intent | ||||
| import android.graphics.drawable.Drawable | ||||
| import android.net.Uri | ||||
| import android.os.Build | ||||
| import android.telecom.TelecomManager | ||||
| import com.simplemobiletools.commons.activities.BaseSimpleActivity | ||||
| import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor | ||||
| import com.simplemobiletools.commons.extensions.toast | ||||
| import com.simplemobiletools.contacts.pro.R | ||||
| 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() { | ||||
|     override fun getAppIconIDs() = arrayListOf( | ||||
|             R.mipmap.ic_launcher_red, | ||||
|             R.mipmap.ic_launcher_pink, | ||||
|             R.mipmap.ic_launcher_purple, | ||||
|             R.mipmap.ic_launcher_deep_purple, | ||||
|             R.mipmap.ic_launcher_indigo, | ||||
|             R.mipmap.ic_launcher_blue, | ||||
|             R.mipmap.ic_launcher_light_blue, | ||||
|             R.mipmap.ic_launcher_cyan, | ||||
|             R.mipmap.ic_launcher_teal, | ||||
|             R.mipmap.ic_launcher_green, | ||||
|             R.mipmap.ic_launcher_light_green, | ||||
|             R.mipmap.ic_launcher_lime, | ||||
|             R.mipmap.ic_launcher_yellow, | ||||
|             R.mipmap.ic_launcher_amber, | ||||
|             R.mipmap.ic_launcher, | ||||
|             R.mipmap.ic_launcher_deep_orange, | ||||
|             R.mipmap.ic_launcher_brown, | ||||
|             R.mipmap.ic_launcher_blue_grey, | ||||
|             R.mipmap.ic_launcher_grey_black | ||||
|         R.mipmap.ic_launcher_red, | ||||
|         R.mipmap.ic_launcher_pink, | ||||
|         R.mipmap.ic_launcher_purple, | ||||
|         R.mipmap.ic_launcher_deep_purple, | ||||
|         R.mipmap.ic_launcher_indigo, | ||||
|         R.mipmap.ic_launcher_blue, | ||||
|         R.mipmap.ic_launcher_light_blue, | ||||
|         R.mipmap.ic_launcher_cyan, | ||||
|         R.mipmap.ic_launcher_teal, | ||||
|         R.mipmap.ic_launcher_green, | ||||
|         R.mipmap.ic_launcher_light_green, | ||||
|         R.mipmap.ic_launcher_lime, | ||||
|         R.mipmap.ic_launcher_yellow, | ||||
|         R.mipmap.ic_launcher_amber, | ||||
|         R.mipmap.ic_launcher, | ||||
|         R.mipmap.ic_launcher_deep_orange, | ||||
|         R.mipmap.ic_launcher_brown, | ||||
|         R.mipmap.ic_launcher_blue_grey, | ||||
|         R.mipmap.ic_launcher_grey_black | ||||
|     ) | ||||
|  | ||||
|     override fun getAppLauncherName() = getString(R.string.app_launcher_name) | ||||
|   | ||||
| @@ -176,19 +176,11 @@ class ViewContactActivity : ContactActivity() { | ||||
|         } | ||||
|  | ||||
|         val textColor = config.textColor | ||||
|         contact_send_sms.applyColorFilter(textColor) | ||||
|         contact_start_call.applyColorFilter(textColor) | ||||
|         contact_send_email.applyColorFilter(textColor) | ||||
|         contact_name_image.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) | ||||
|         arrayOf(contact_send_sms, contact_start_call, contact_send_email, contact_name_image, contact_numbers_image, contact_emails_image, | ||||
|             contact_addresses_image, contact_events_image, contact_source_image, contact_notes_image, contact_organization_image, | ||||
|             contact_websites_image, contact_groups_image).forEach { | ||||
|             it.applyColorFilter(textColor) | ||||
|         } | ||||
|  | ||||
|         contact_send_sms.setOnClickListener { trySendSMS() } | ||||
|         contact_start_call.setOnClickListener { tryStartCall(contact!!) } | ||||
| @@ -288,7 +280,7 @@ class ViewContactActivity : ContactActivity() { | ||||
|             contact_nickname.copyOnLongClick(nickname) | ||||
|  | ||||
|             if (contact_prefix.isGone() && contact_first_name.isGone() && contact_middle_name.isGone() && contact_surname.isGone() && contact_suffix.isGone() | ||||
|                     && contact_nickname.isGone()) { | ||||
|                 && contact_nickname.isGone()) { | ||||
|                 contact_name_image.beInvisible() | ||||
|                 (contact_photo.layoutParams as RelativeLayout.LayoutParams).bottomMargin = resources.getDimension(R.dimen.medium_margin).toInt() | ||||
|             } | ||||
|   | ||||
| @@ -108,8 +108,8 @@ class ContactsHelper(val context: Context) { | ||||
|  | ||||
|     private fun fillSourcesFromUri(uri: Uri, sources: HashSet<ContactSource>) { | ||||
|         val projection = arrayOf( | ||||
|                 RawContacts.ACCOUNT_NAME, | ||||
|                 RawContacts.ACCOUNT_TYPE | ||||
|             RawContacts.ACCOUNT_NAME, | ||||
|             RawContacts.ACCOUNT_TYPE | ||||
|         ) | ||||
|  | ||||
|         context.queryCursor(uri, projection) { cursor -> | ||||
| @@ -176,7 +176,7 @@ class ContactsHelper(val context: Context) { | ||||
|             val websites = ArrayList<String>() | ||||
|             val ims = ArrayList<IM>() | ||||
|             val contact = Contact(id, prefix, firstName, middleName, surname, suffix, nickname, photoUri, numbers, emails, addresses, | ||||
|                     events, accountName, starred, contactId, thumbnailUri, null, notes, groups, organization, websites, ims) | ||||
|                 events, accountName, starred, contactId, thumbnailUri, null, notes, groups, organization, websites, ims) | ||||
|  | ||||
|             contacts.put(id, contact) | ||||
|         } | ||||
| @@ -252,11 +252,11 @@ class ContactsHelper(val context: Context) { | ||||
|         val phoneNumbers = SparseArray<ArrayList<PhoneNumber>>() | ||||
|         val uri = Phone.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.RAW_CONTACT_ID, | ||||
|                 Phone.NUMBER, | ||||
|                 Phone.NORMALIZED_NUMBER, | ||||
|                 Phone.TYPE, | ||||
|                 Phone.LABEL | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             Phone.NUMBER, | ||||
|             Phone.NORMALIZED_NUMBER, | ||||
|             Phone.TYPE, | ||||
|             Phone.LABEL | ||||
|         ) | ||||
|  | ||||
|         val selection = if (contactId == null) getSourcesSelection() else "${Data.RAW_CONTACT_ID} = ?" | ||||
| @@ -284,8 +284,8 @@ class ContactsHelper(val context: Context) { | ||||
|         val nicknames = SparseArray<String>() | ||||
|         val uri = Data.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.RAW_CONTACT_ID, | ||||
|                 Nickname.NAME | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             Nickname.NAME | ||||
|         ) | ||||
|  | ||||
|         val selection = getSourcesSelection(true, contactId != null) | ||||
| @@ -304,10 +304,10 @@ class ContactsHelper(val context: Context) { | ||||
|         val emails = SparseArray<ArrayList<Email>>() | ||||
|         val uri = CommonDataKinds.Email.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.RAW_CONTACT_ID, | ||||
|                 CommonDataKinds.Email.DATA, | ||||
|                 CommonDataKinds.Email.TYPE, | ||||
|                 CommonDataKinds.Email.LABEL | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             CommonDataKinds.Email.DATA, | ||||
|             CommonDataKinds.Email.TYPE, | ||||
|             CommonDataKinds.Email.LABEL | ||||
|         ) | ||||
|  | ||||
|         val selection = if (contactId == null) getSourcesSelection() else "${Data.RAW_CONTACT_ID} = ?" | ||||
| @@ -333,10 +333,10 @@ class ContactsHelper(val context: Context) { | ||||
|         val addresses = SparseArray<ArrayList<Address>>() | ||||
|         val uri = StructuredPostal.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.RAW_CONTACT_ID, | ||||
|                 StructuredPostal.FORMATTED_ADDRESS, | ||||
|                 StructuredPostal.TYPE, | ||||
|                 StructuredPostal.LABEL | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             StructuredPostal.FORMATTED_ADDRESS, | ||||
|             StructuredPostal.TYPE, | ||||
|             StructuredPostal.LABEL | ||||
|         ) | ||||
|  | ||||
|         val selection = if (contactId == null) getSourcesSelection() else "${Data.RAW_CONTACT_ID} = ?" | ||||
| @@ -362,10 +362,10 @@ class ContactsHelper(val context: Context) { | ||||
|         val IMs = SparseArray<ArrayList<IM>>() | ||||
|         val uri = Data.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.RAW_CONTACT_ID, | ||||
|                 Im.DATA, | ||||
|                 Im.PROTOCOL, | ||||
|                 Im.CUSTOM_PROTOCOL | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             Im.DATA, | ||||
|             Im.PROTOCOL, | ||||
|             Im.CUSTOM_PROTOCOL | ||||
|         ) | ||||
|  | ||||
|         val selection = getSourcesSelection(true, contactId != null) | ||||
| @@ -391,9 +391,9 @@ class ContactsHelper(val context: Context) { | ||||
|         val events = SparseArray<ArrayList<Event>>() | ||||
|         val uri = Data.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.RAW_CONTACT_ID, | ||||
|                 CommonDataKinds.Event.START_DATE, | ||||
|                 CommonDataKinds.Event.TYPE | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             CommonDataKinds.Event.START_DATE, | ||||
|             CommonDataKinds.Event.TYPE | ||||
|         ) | ||||
|  | ||||
|         val selection = getSourcesSelection(true, contactId != null) | ||||
| @@ -418,8 +418,8 @@ class ContactsHelper(val context: Context) { | ||||
|         val notes = SparseArray<String>() | ||||
|         val uri = Data.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.RAW_CONTACT_ID, | ||||
|                 Note.NOTE | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             Note.NOTE | ||||
|         ) | ||||
|  | ||||
|         val selection = getSourcesSelection(true, contactId != null) | ||||
| @@ -438,9 +438,9 @@ class ContactsHelper(val context: Context) { | ||||
|         val organizations = SparseArray<Organization>() | ||||
|         val uri = Data.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.RAW_CONTACT_ID, | ||||
|                 CommonDataKinds.Organization.COMPANY, | ||||
|                 CommonDataKinds.Organization.TITLE | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             CommonDataKinds.Organization.COMPANY, | ||||
|             CommonDataKinds.Organization.TITLE | ||||
|         ) | ||||
|  | ||||
|         val selection = getSourcesSelection(true, contactId != null) | ||||
| @@ -465,8 +465,8 @@ class ContactsHelper(val context: Context) { | ||||
|         val websites = SparseArray<ArrayList<String>>() | ||||
|         val uri = Data.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.RAW_CONTACT_ID, | ||||
|                 Website.URL | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             Website.URL | ||||
|         ) | ||||
|  | ||||
|         val selection = getSourcesSelection(true, contactId != null) | ||||
| @@ -494,8 +494,8 @@ class ContactsHelper(val context: Context) { | ||||
|  | ||||
|         val uri = Data.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Data.CONTACT_ID, | ||||
|                 Data.DATA1 | ||||
|             Data.CONTACT_ID, | ||||
|             Data.DATA1 | ||||
|         ) | ||||
|  | ||||
|         val selection = getSourcesSelection(true, contactId != null, false) | ||||
| @@ -581,9 +581,9 @@ class ContactsHelper(val context: Context) { | ||||
|  | ||||
|         val uri = Groups.CONTENT_URI | ||||
|         val projection = arrayOf( | ||||
|                 Groups._ID, | ||||
|                 Groups.TITLE, | ||||
|                 Groups.SYSTEM_ID | ||||
|             Groups._ID, | ||||
|             Groups.TITLE, | ||||
|             Groups.SYSTEM_ID | ||||
|         ) | ||||
|  | ||||
|         val selection = "${Groups.AUTO_ADD} = ? AND ${Groups.FAVORITES} = ?" | ||||
| @@ -650,8 +650,8 @@ class ContactsHelper(val context: Context) { | ||||
|     fun deleteGroup(id: Long) { | ||||
|         val operations = ArrayList<ContentProviderOperation>() | ||||
|         val uri = ContentUris.withAppendedId(Groups.CONTENT_URI, id).buildUpon() | ||||
|                 .appendQueryParameter(CALLER_IS_SYNCADAPTER, "true") | ||||
|                 .build() | ||||
|             .appendQueryParameter(CALLER_IS_SYNCADAPTER, "true") | ||||
|             .build() | ||||
|  | ||||
|         operations.add(ContentProviderOperation.newDelete(uri).build()) | ||||
|  | ||||
| @@ -721,7 +721,7 @@ class ContactsHelper(val context: Context) { | ||||
|                 val websites = getWebsites(id)[id] ?: ArrayList() | ||||
|                 val ims = getIMs(id)[id] ?: ArrayList() | ||||
|                 return Contact(id, prefix, firstName, middleName, surname, suffix, nickname, photoUri, number, emails, addresses, events, | ||||
|                         accountName, starred, contactId, thumbnailUri, null, notes, groups, organization, websites, ims) | ||||
|                     accountName, starred, contactId, thumbnailUri, null, notes, groups, organization, websites, ims) | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @@ -743,9 +743,9 @@ class ContactsHelper(val context: Context) { | ||||
|     fun getSaveableContactSources(callback: (ArrayList<ContactSource>) -> Unit) { | ||||
|         ensureBackgroundThread { | ||||
|             val ignoredTypes = arrayListOf( | ||||
|                     SIGNAL_PACKAGE, | ||||
|                     TELEGRAM_PACKAGE, | ||||
|                     WHATSAPP_PACKAGE | ||||
|                 SIGNAL_PACKAGE, | ||||
|                 TELEGRAM_PACKAGE, | ||||
|                 WHATSAPP_PACKAGE | ||||
|             ) | ||||
|  | ||||
|             val contactSources = getContactSourcesSync() | ||||
| @@ -806,19 +806,19 @@ class ContactsHelper(val context: Context) { | ||||
|     private fun getContactSourceType(accountName: String) = getDeviceContactSources().firstOrNull { it.name == accountName }?.type ?: "" | ||||
|  | ||||
|     private fun getContactProjection() = arrayOf( | ||||
|             Data.MIMETYPE, | ||||
|             Data.CONTACT_ID, | ||||
|             Data.RAW_CONTACT_ID, | ||||
|             StructuredName.PREFIX, | ||||
|             StructuredName.GIVEN_NAME, | ||||
|             StructuredName.MIDDLE_NAME, | ||||
|             StructuredName.FAMILY_NAME, | ||||
|             StructuredName.SUFFIX, | ||||
|             StructuredName.PHOTO_URI, | ||||
|             StructuredName.PHOTO_THUMBNAIL_URI, | ||||
|             StructuredName.STARRED, | ||||
|             RawContacts.ACCOUNT_NAME, | ||||
|             RawContacts.ACCOUNT_TYPE | ||||
|         Data.MIMETYPE, | ||||
|         Data.CONTACT_ID, | ||||
|         Data.RAW_CONTACT_ID, | ||||
|         StructuredName.PREFIX, | ||||
|         StructuredName.GIVEN_NAME, | ||||
|         StructuredName.MIDDLE_NAME, | ||||
|         StructuredName.FAMILY_NAME, | ||||
|         StructuredName.SUFFIX, | ||||
|         StructuredName.PHOTO_URI, | ||||
|         StructuredName.PHOTO_THUMBNAIL_URI, | ||||
|         StructuredName.STARRED, | ||||
|         RawContacts.ACCOUNT_NAME, | ||||
|         RawContacts.ACCOUNT_TYPE | ||||
|     ) | ||||
|  | ||||
|     private fun getSortString(): String { | ||||
|   | ||||
| @@ -2,6 +2,7 @@ package com.simplemobiletools.contacts.pro.helpers | ||||
|  | ||||
| import android.net.Uri | ||||
| import android.provider.ContactsContract.CommonDataKinds | ||||
| import android.provider.ContactsContract.CommonDataKinds.* | ||||
| import android.provider.MediaStore | ||||
| import com.simplemobiletools.commons.activities.BaseSimpleActivity | ||||
| import com.simplemobiletools.commons.extensions.showErrorToast | ||||
| @@ -15,6 +16,10 @@ import ezvcard.Ezvcard | ||||
| import ezvcard.VCard | ||||
| import ezvcard.parameter.ImageType | ||||
| import ezvcard.property.* | ||||
| import ezvcard.property.Email | ||||
| import ezvcard.property.Organization | ||||
| import ezvcard.property.Photo | ||||
| import ezvcard.property.StructuredName | ||||
| import ezvcard.util.PartialDate | ||||
| import java.io.OutputStream | ||||
| import java.util.* | ||||
| @@ -67,11 +72,11 @@ class VcfExporter { | ||||
|                 } | ||||
|  | ||||
|                 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() | ||||
|                         if (it.value.startsWith("--")) { | ||||
|                             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)) | ||||
|                             } else { | ||||
|                                 card.anniversaries.add(Anniversary(partialDate)) | ||||
| @@ -82,7 +87,7 @@ class VcfExporter { | ||||
|                                 set(Calendar.YEAR, dateTime.year) | ||||
|                                 set(Calendar.MONTH, dateTime.monthOfYear - 1) | ||||
|                                 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)) | ||||
|                                 } else { | ||||
|                                     card.anniversaries.add(Anniversary(time)) | ||||
| @@ -101,14 +106,14 @@ class VcfExporter { | ||||
|  | ||||
|                 contact.IMs.forEach { | ||||
|                     val impp = when (it.type) { | ||||
|                         CommonDataKinds.Im.PROTOCOL_AIM -> Impp.aim(it.value) | ||||
|                         CommonDataKinds.Im.PROTOCOL_YAHOO -> Impp.yahoo(it.value) | ||||
|                         CommonDataKinds.Im.PROTOCOL_MSN -> Impp.msn(it.value) | ||||
|                         CommonDataKinds.Im.PROTOCOL_ICQ -> Impp.icq(it.value) | ||||
|                         CommonDataKinds.Im.PROTOCOL_SKYPE -> Impp.skype(it.value) | ||||
|                         CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK -> Impp(HANGOUTS, it.value) | ||||
|                         CommonDataKinds.Im.PROTOCOL_QQ -> Impp(QQ, it.value) | ||||
|                         CommonDataKinds.Im.PROTOCOL_JABBER -> Impp(JABBER, it.value) | ||||
|                         Im.PROTOCOL_AIM -> Impp.aim(it.value) | ||||
|                         Im.PROTOCOL_YAHOO -> Impp.yahoo(it.value) | ||||
|                         Im.PROTOCOL_MSN -> Impp.msn(it.value) | ||||
|                         Im.PROTOCOL_ICQ -> Impp.icq(it.value) | ||||
|                         Im.PROTOCOL_SKYPE -> Impp.skype(it.value) | ||||
|                         Im.PROTOCOL_GOOGLE_TALK -> Impp(HANGOUTS, it.value) | ||||
|                         Im.PROTOCOL_QQ -> Impp(QQ, it.value) | ||||
|                         Im.PROTOCOL_JABBER -> Impp(JABBER, it.value) | ||||
|                         else -> Impp(it.label, it.value) | ||||
|                     } | ||||
|  | ||||
| @@ -162,14 +167,14 @@ class VcfExporter { | ||||
|     } | ||||
|  | ||||
|     private fun getPhoneNumberTypeLabel(type: Int, label: String) = when (type) { | ||||
|         CommonDataKinds.Phone.TYPE_MOBILE -> CELL | ||||
|         CommonDataKinds.Phone.TYPE_HOME -> HOME | ||||
|         CommonDataKinds.Phone.TYPE_WORK -> WORK | ||||
|         CommonDataKinds.Phone.TYPE_MAIN -> PREF | ||||
|         CommonDataKinds.Phone.TYPE_FAX_WORK -> WORK_FAX | ||||
|         CommonDataKinds.Phone.TYPE_FAX_HOME -> HOME_FAX | ||||
|         CommonDataKinds.Phone.TYPE_PAGER -> PAGER | ||||
|         CommonDataKinds.Phone.TYPE_OTHER -> OTHER | ||||
|         Phone.TYPE_MOBILE -> CELL | ||||
|         Phone.TYPE_HOME -> HOME | ||||
|         Phone.TYPE_WORK -> WORK | ||||
|         Phone.TYPE_MAIN -> PREF | ||||
|         Phone.TYPE_FAX_WORK -> WORK_FAX | ||||
|         Phone.TYPE_FAX_HOME -> HOME_FAX | ||||
|         Phone.TYPE_PAGER -> PAGER | ||||
|         Phone.TYPE_OTHER -> OTHER | ||||
|         else -> label | ||||
|     } | ||||
|  | ||||
| @@ -182,9 +187,9 @@ class VcfExporter { | ||||
|     } | ||||
|  | ||||
|     private fun getAddressTypeLabel(type: Int, label: String) = when (type) { | ||||
|         CommonDataKinds.StructuredPostal.TYPE_HOME -> HOME | ||||
|         CommonDataKinds.StructuredPostal.TYPE_WORK -> WORK | ||||
|         CommonDataKinds.StructuredPostal.TYPE_OTHER -> OTHER | ||||
|         StructuredPostal.TYPE_HOME -> HOME | ||||
|         StructuredPostal.TYPE_WORK -> WORK | ||||
|         StructuredPostal.TYPE_OTHER -> OTHER | ||||
|         else -> label | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -3,6 +3,7 @@ package com.simplemobiletools.contacts.pro.helpers | ||||
| import android.graphics.Bitmap | ||||
| import android.graphics.BitmapFactory | ||||
| import android.provider.ContactsContract.CommonDataKinds | ||||
| import android.provider.ContactsContract.CommonDataKinds.* | ||||
| import android.widget.Toast | ||||
| import com.simplemobiletools.commons.extensions.showErrorToast | ||||
| 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.helpers.VcfImporter.ImportResult.* | ||||
| 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.VCard | ||||
| import java.io.File | ||||
| @@ -50,7 +54,7 @@ class VcfImporter(val activity: SimpleActivity) { | ||||
|                 ezContact.telephoneNumbers.forEach { | ||||
|                     val number = it.text | ||||
|                     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 ?: "" | ||||
|                     } else { | ||||
|                         "" | ||||
| @@ -76,7 +80,7 @@ class VcfImporter(val activity: SimpleActivity) { | ||||
|                 ezContact.addresses.forEach { | ||||
|                     val address = it.streetAddress | ||||
|                     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 ?: "" | ||||
|                     } else { | ||||
|                         "" | ||||
| @@ -115,24 +119,24 @@ class VcfImporter(val activity: SimpleActivity) { | ||||
|                     val typeString = it.uri.scheme | ||||
|                     val value = URLDecoder.decode(it.uri.toString().substring(it.uri.scheme.length + 1), "UTF-8") | ||||
|                     val type = when { | ||||
|                         it.isAim -> CommonDataKinds.Im.PROTOCOL_AIM | ||||
|                         it.isYahoo -> CommonDataKinds.Im.PROTOCOL_YAHOO | ||||
|                         it.isMsn -> CommonDataKinds.Im.PROTOCOL_MSN | ||||
|                         it.isIcq -> CommonDataKinds.Im.PROTOCOL_ICQ | ||||
|                         it.isSkype -> CommonDataKinds.Im.PROTOCOL_SKYPE | ||||
|                         typeString == HANGOUTS -> CommonDataKinds.Im.PROTOCOL_GOOGLE_TALK | ||||
|                         typeString == QQ -> CommonDataKinds.Im.PROTOCOL_QQ | ||||
|                         typeString == JABBER -> CommonDataKinds.Im.PROTOCOL_JABBER | ||||
|                         else -> CommonDataKinds.Im.PROTOCOL_CUSTOM | ||||
|                         it.isAim -> Im.PROTOCOL_AIM | ||||
|                         it.isYahoo -> Im.PROTOCOL_YAHOO | ||||
|                         it.isMsn -> Im.PROTOCOL_MSN | ||||
|                         it.isIcq -> Im.PROTOCOL_ICQ | ||||
|                         it.isSkype -> Im.PROTOCOL_SKYPE | ||||
|                         typeString == HANGOUTS -> Im.PROTOCOL_GOOGLE_TALK | ||||
|                         typeString == QQ -> Im.PROTOCOL_QQ | ||||
|                         typeString == JABBER -> Im.PROTOCOL_JABBER | ||||
|                         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) | ||||
|                     IMs.add(IM) | ||||
|                 } | ||||
|  | ||||
|                 val contact = Contact(0, prefix, firstName, middleName, surname, suffix, nickname, photoUri, phoneNumbers, emails, addresses, events, | ||||
|                         targetContactSource, starred, contactId, thumbnailUri, photo, notes, groups, organization, websites, IMs) | ||||
|                     targetContactSource, starred, contactId, thumbnailUri, photo, notes, groups, organization, websites, IMs) | ||||
|  | ||||
|                 // if there is no N and ORG fields at the given contact, only FN, treat it as an organization | ||||
|                 if (contact.getNameToDisplay().isEmpty() && contact.organization.isEmpty() && ezContact.formattedName?.value?.isNotEmpty() == true) { | ||||
| @@ -189,28 +193,28 @@ class VcfImporter(val activity: SimpleActivity) { | ||||
|     } | ||||
|  | ||||
|     private fun getPhoneNumberTypeId(type: String, subtype: String?) = when (type.toUpperCase()) { | ||||
|         CELL -> CommonDataKinds.Phone.TYPE_MOBILE | ||||
|         CELL -> Phone.TYPE_MOBILE | ||||
|         HOME -> { | ||||
|             if (subtype?.toUpperCase() == FAX) { | ||||
|                 CommonDataKinds.Phone.TYPE_FAX_HOME | ||||
|                 Phone.TYPE_FAX_HOME | ||||
|             } else { | ||||
|                 CommonDataKinds.Phone.TYPE_HOME | ||||
|                 Phone.TYPE_HOME | ||||
|             } | ||||
|         } | ||||
|         WORK -> { | ||||
|             if (subtype?.toUpperCase() == FAX) { | ||||
|                 CommonDataKinds.Phone.TYPE_FAX_WORK | ||||
|                 Phone.TYPE_FAX_WORK | ||||
|             } else { | ||||
|                 CommonDataKinds.Phone.TYPE_WORK | ||||
|                 Phone.TYPE_WORK | ||||
|             } | ||||
|         } | ||||
|         PREF, MAIN -> CommonDataKinds.Phone.TYPE_MAIN | ||||
|         WORK_FAX -> CommonDataKinds.Phone.TYPE_FAX_WORK | ||||
|         HOME_FAX -> CommonDataKinds.Phone.TYPE_FAX_HOME | ||||
|         FAX -> CommonDataKinds.Phone.TYPE_FAX_WORK | ||||
|         PAGER -> CommonDataKinds.Phone.TYPE_PAGER | ||||
|         OTHER -> CommonDataKinds.Phone.TYPE_OTHER | ||||
|         else -> CommonDataKinds.Phone.TYPE_CUSTOM | ||||
|         PREF, MAIN -> Phone.TYPE_MAIN | ||||
|         WORK_FAX -> Phone.TYPE_FAX_WORK | ||||
|         HOME_FAX -> Phone.TYPE_FAX_HOME | ||||
|         FAX -> Phone.TYPE_FAX_WORK | ||||
|         PAGER -> Phone.TYPE_PAGER | ||||
|         OTHER -> Phone.TYPE_OTHER | ||||
|         else -> Phone.TYPE_CUSTOM | ||||
|     } | ||||
|  | ||||
|     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()) { | ||||
|         HOME -> CommonDataKinds.StructuredPostal.TYPE_HOME | ||||
|         WORK -> CommonDataKinds.StructuredPostal.TYPE_WORK | ||||
|         OTHER -> CommonDataKinds.StructuredPostal.TYPE_OTHER | ||||
|         else -> CommonDataKinds.StructuredPostal.TYPE_CUSTOM | ||||
|         HOME -> StructuredPostal.TYPE_HOME | ||||
|         WORK -> StructuredPostal.TYPE_WORK | ||||
|         OTHER -> StructuredPostal.TYPE_OTHER | ||||
|         else -> StructuredPostal.TYPE_CUSTOM | ||||
|     } | ||||
|  | ||||
|     private fun savePhoto(byteArray: ByteArray?): String { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user