mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-02-21 14:00:56 +01:00
move some edit and view shared functions into ContactActivity
This commit is contained in:
parent
32a9fa6884
commit
67511c07d0
@ -0,0 +1,161 @@
|
|||||||
|
package com.simplemobiletools.contacts.activities
|
||||||
|
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.provider.ContactsContract
|
||||||
|
import android.widget.ImageView
|
||||||
|
import android.widget.TextView
|
||||||
|
import com.bumptech.glide.Glide
|
||||||
|
import com.bumptech.glide.load.DataSource
|
||||||
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
|
import com.bumptech.glide.load.engine.GlideException
|
||||||
|
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
|
||||||
|
import com.bumptech.glide.request.RequestListener
|
||||||
|
import com.bumptech.glide.request.RequestOptions
|
||||||
|
import com.bumptech.glide.request.target.Target
|
||||||
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
|
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||||
|
import com.simplemobiletools.commons.extensions.getColoredBitmap
|
||||||
|
import com.simplemobiletools.commons.extensions.getContrastColor
|
||||||
|
import com.simplemobiletools.commons.helpers.getDateFormats
|
||||||
|
import com.simplemobiletools.commons.models.RadioItem
|
||||||
|
import com.simplemobiletools.contacts.R
|
||||||
|
import com.simplemobiletools.contacts.extensions.config
|
||||||
|
import com.simplemobiletools.contacts.extensions.sendEmailIntent
|
||||||
|
import com.simplemobiletools.contacts.extensions.sendSMSIntent
|
||||||
|
import com.simplemobiletools.contacts.extensions.shareContacts
|
||||||
|
import com.simplemobiletools.contacts.helpers.ContactsHelper
|
||||||
|
import com.simplemobiletools.contacts.models.Contact
|
||||||
|
import org.joda.time.DateTime
|
||||||
|
import org.joda.time.format.DateTimeFormat
|
||||||
|
import java.text.DateFormat
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
abstract class ContactActivity : SimpleActivity() {
|
||||||
|
var isEditActivity = false
|
||||||
|
var contact: Contact? = null
|
||||||
|
var currentContactPhotoPath = ""
|
||||||
|
|
||||||
|
fun showPhotoPlaceholder(photoView: ImageView) {
|
||||||
|
val placeholder = resources.getColoredBitmap(R.drawable.ic_person, config.primaryColor.getContrastColor())
|
||||||
|
val padding = resources.getDimension(R.dimen.activity_margin).toInt()
|
||||||
|
photoView.setPadding(padding, padding, padding, padding)
|
||||||
|
photoView.setImageBitmap(placeholder)
|
||||||
|
currentContactPhotoPath = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateContactPhoto(path: String, photoView: ImageView) {
|
||||||
|
currentContactPhotoPath = path
|
||||||
|
val options = RequestOptions()
|
||||||
|
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
||||||
|
.centerCrop()
|
||||||
|
|
||||||
|
Glide.with(this)
|
||||||
|
.load(path)
|
||||||
|
.transition(DrawableTransitionOptions.withCrossFade())
|
||||||
|
.apply(options)
|
||||||
|
.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)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
|
||||||
|
showPhotoPlaceholder(photoView)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}).into(photoView)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getDateTime(dateString: String, viewToUpdate: TextView? = null): DateTime {
|
||||||
|
val dateFormats = getDateFormats()
|
||||||
|
var date = DateTime()
|
||||||
|
for (format in dateFormats) {
|
||||||
|
try {
|
||||||
|
date = DateTime.parse(dateString, DateTimeFormat.forPattern(format))
|
||||||
|
|
||||||
|
val formatter = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault())
|
||||||
|
var localPattern = (formatter as SimpleDateFormat).toLocalizedPattern()
|
||||||
|
|
||||||
|
val hasYear = format.contains("y")
|
||||||
|
if (!hasYear) {
|
||||||
|
localPattern = localPattern.replace("y", "").trim()
|
||||||
|
date = date.withYear(DateTime().year)
|
||||||
|
}
|
||||||
|
|
||||||
|
val formattedString = date.toString(localPattern)
|
||||||
|
viewToUpdate?.text = formattedString
|
||||||
|
break
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return date
|
||||||
|
}
|
||||||
|
|
||||||
|
fun deleteContact() {
|
||||||
|
ConfirmationDialog(this) {
|
||||||
|
ContactsHelper(this).deleteContact(contact!!)
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun shareContact() {
|
||||||
|
shareContacts(arrayListOf(contact!!))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun trySendSMS() {
|
||||||
|
val numbers = contact!!.phoneNumbers
|
||||||
|
if (numbers.size == 1) {
|
||||||
|
sendSMSIntent(numbers.first().value)
|
||||||
|
} else if (numbers.size > 1) {
|
||||||
|
val items = ArrayList<RadioItem>()
|
||||||
|
numbers.forEachIndexed { index, phoneNumber ->
|
||||||
|
items.add(RadioItem(index, phoneNumber.value, phoneNumber.value))
|
||||||
|
}
|
||||||
|
|
||||||
|
RadioGroupDialog(this, items) {
|
||||||
|
sendSMSIntent(it as String)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun trySendEmail() {
|
||||||
|
val emails = contact!!.emails
|
||||||
|
if (emails.size == 1) {
|
||||||
|
sendEmailIntent(emails.first().value)
|
||||||
|
} else if (emails.size > 1) {
|
||||||
|
val items = ArrayList<RadioItem>()
|
||||||
|
emails.forEachIndexed { index, email ->
|
||||||
|
items.add(RadioItem(index, email.value, email.value))
|
||||||
|
}
|
||||||
|
|
||||||
|
RadioGroupDialog(this, items) {
|
||||||
|
sendEmailIntent(it as String)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getPhoneNumberTextId(type: Int) = 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
|
||||||
|
else -> R.string.other
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getEmailTextId(type: Int) = 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
|
||||||
|
else -> R.string.other
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getEventTextId(type: Int) = when (type) {
|
||||||
|
ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY -> R.string.birthday
|
||||||
|
ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY -> R.string.anniversary
|
||||||
|
else -> R.string.other
|
||||||
|
}
|
||||||
|
}
|
@ -4,7 +4,6 @@ import android.app.DatePickerDialog
|
|||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.graphics.drawable.Drawable
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.ContactsContract
|
import android.provider.ContactsContract
|
||||||
@ -16,20 +15,10 @@ import android.view.ViewGroup
|
|||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import com.bumptech.glide.Glide
|
|
||||||
import com.bumptech.glide.load.DataSource
|
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
|
||||||
import com.bumptech.glide.load.engine.GlideException
|
|
||||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
|
|
||||||
import com.bumptech.glide.request.RequestListener
|
|
||||||
import com.bumptech.glide.request.RequestOptions
|
|
||||||
import com.bumptech.glide.request.target.Target
|
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
||||||
import com.simplemobiletools.commons.helpers.getDateFormats
|
|
||||||
import com.simplemobiletools.commons.models.RadioItem
|
import com.simplemobiletools.commons.models.RadioItem
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.extensions.*
|
import com.simplemobiletools.contacts.extensions.*
|
||||||
@ -44,11 +33,9 @@ import kotlinx.android.synthetic.main.item_edit_phone_number.view.*
|
|||||||
import kotlinx.android.synthetic.main.item_event.view.*
|
import kotlinx.android.synthetic.main.item_event.view.*
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import org.joda.time.format.DateTimeFormat
|
import org.joda.time.format.DateTimeFormat
|
||||||
import java.text.DateFormat
|
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class EditContactActivity : SimpleActivity() {
|
class EditContactActivity : ContactActivity() {
|
||||||
private val INTENT_TAKE_PHOTO = 1
|
private val INTENT_TAKE_PHOTO = 1
|
||||||
private val INTENT_CHOOSE_PHOTO = 2
|
private val INTENT_CHOOSE_PHOTO = 2
|
||||||
private val INTENT_CROP_PHOTO = 3
|
private val INTENT_CROP_PHOTO = 3
|
||||||
@ -60,9 +47,7 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
private val KEY_PHONE = "phone"
|
private val KEY_PHONE = "phone"
|
||||||
|
|
||||||
private var wasActivityInitialized = false
|
private var wasActivityInitialized = false
|
||||||
private var currentContactPhotoPath = ""
|
|
||||||
private var lastPhotoIntentUri: Uri? = null
|
private var lastPhotoIntentUri: Uri? = null
|
||||||
private var contact: Contact? = null
|
|
||||||
private var isSaving = false
|
private var isSaving = false
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@ -111,7 +96,7 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
if (resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
when (requestCode) {
|
when (requestCode) {
|
||||||
INTENT_TAKE_PHOTO, INTENT_CHOOSE_PHOTO -> startCropPhotoIntent(lastPhotoIntentUri!!)
|
INTENT_TAKE_PHOTO, INTENT_CHOOSE_PHOTO -> startCropPhotoIntent(lastPhotoIntentUri!!)
|
||||||
INTENT_CROP_PHOTO -> updateContactPhoto(lastPhotoIntentUri.toString())
|
INTENT_CROP_PHOTO -> updateContactPhoto(lastPhotoIntentUri.toString(), contact_photo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -165,9 +150,9 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
contact_photo.background = ColorDrawable(config.primaryColor)
|
contact_photo.background = ColorDrawable(config.primaryColor)
|
||||||
|
|
||||||
if (contact!!.photoUri.isEmpty()) {
|
if (contact!!.photoUri.isEmpty()) {
|
||||||
showPhotoPlaceholder()
|
showPhotoPlaceholder(contact_photo)
|
||||||
} else {
|
} else {
|
||||||
updateContactPhoto(contact!!.photoUri)
|
updateContactPhoto(contact!!.photoUri, contact_photo)
|
||||||
}
|
}
|
||||||
|
|
||||||
val textColor = config.textColor
|
val textColor = config.textColor
|
||||||
@ -312,41 +297,6 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shareContact() {
|
|
||||||
shareContacts(arrayListOf(contact!!))
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun showPhotoPlaceholder() {
|
|
||||||
val placeholder = resources.getColoredBitmap(R.drawable.ic_person, config.primaryColor.getContrastColor())
|
|
||||||
val padding = resources.getDimension(R.dimen.activity_margin).toInt()
|
|
||||||
contact_photo.setPadding(padding, padding, padding, padding)
|
|
||||||
contact_photo.setImageBitmap(placeholder)
|
|
||||||
currentContactPhotoPath = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateContactPhoto(path: String) {
|
|
||||||
currentContactPhotoPath = path
|
|
||||||
val options = RequestOptions()
|
|
||||||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
|
||||||
.centerCrop()
|
|
||||||
|
|
||||||
Glide.with(this)
|
|
||||||
.load(path)
|
|
||||||
.transition(DrawableTransitionOptions.withCrossFade())
|
|
||||||
.apply(options)
|
|
||||||
.listener(object : RequestListener<Drawable> {
|
|
||||||
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
|
|
||||||
contact_photo.setPadding(0, 0, 0, 0)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
|
|
||||||
showPhotoPlaceholder()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}).into(contact_photo)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupTypePickers() {
|
private fun setupTypePickers() {
|
||||||
if (contact!!.phoneNumbers.isEmpty()) {
|
if (contact!!.phoneNumbers.isEmpty()) {
|
||||||
val numberHolder = contact_numbers_holder.getChildAt(0)
|
val numberHolder = contact_numbers_holder.getChildAt(0)
|
||||||
@ -431,31 +381,6 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
removeContactEventButton.beGone()
|
removeContactEventButton.beGone()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getDateTime(dateString: String, viewToUpdate: TextView? = null): DateTime {
|
|
||||||
val dateFormats = getDateFormats()
|
|
||||||
var date = DateTime()
|
|
||||||
for (format in dateFormats) {
|
|
||||||
try {
|
|
||||||
date = DateTime.parse(dateString, DateTimeFormat.forPattern(format))
|
|
||||||
|
|
||||||
val formatter = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault())
|
|
||||||
var localPattern = (formatter as SimpleDateFormat).toLocalizedPattern()
|
|
||||||
|
|
||||||
val hasYear = format.contains("y")
|
|
||||||
if (!hasYear) {
|
|
||||||
localPattern = localPattern.replace("y", "").trim()
|
|
||||||
date = date.withYear(DateTime().year)
|
|
||||||
}
|
|
||||||
|
|
||||||
val formattedString = date.toString(localPattern)
|
|
||||||
viewToUpdate?.text = formattedString
|
|
||||||
break
|
|
||||||
} catch (ignored: Exception) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return date
|
|
||||||
}
|
|
||||||
|
|
||||||
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(CommonDataKinds.Phone.TYPE_MOBILE, getString(R.string.mobile)),
|
||||||
@ -637,13 +562,6 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
contact_events_holder.addView(eventHolder)
|
contact_events_holder.addView(eventHolder)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteContact() {
|
|
||||||
ConfirmationDialog(this) {
|
|
||||||
ContactsHelper(this).deleteContact(contact!!)
|
|
||||||
finish()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun toggleFavorite() {
|
private fun toggleFavorite() {
|
||||||
val isStarred = isContactStarred()
|
val isStarred = isContactStarred()
|
||||||
contact_toggle_favorite.apply {
|
contact_toggle_favorite.apply {
|
||||||
@ -671,39 +589,7 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
when (it as Int) {
|
when (it as Int) {
|
||||||
TAKE_PHOTO -> startTakePhotoIntent()
|
TAKE_PHOTO -> startTakePhotoIntent()
|
||||||
CHOOSE_PHOTO -> startChoosePhotoIntent()
|
CHOOSE_PHOTO -> startChoosePhotoIntent()
|
||||||
else -> showPhotoPlaceholder()
|
else -> showPhotoPlaceholder(contact_photo)
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun trySendSMS() {
|
|
||||||
val numbers = contact!!.phoneNumbers
|
|
||||||
if (numbers.size == 1) {
|
|
||||||
sendSMSIntent(numbers.first().value)
|
|
||||||
} else if (numbers.size > 1) {
|
|
||||||
val items = ArrayList<RadioItem>()
|
|
||||||
numbers.forEachIndexed { index, phoneNumber ->
|
|
||||||
items.add(RadioItem(index, phoneNumber.value, phoneNumber.value))
|
|
||||||
}
|
|
||||||
|
|
||||||
RadioGroupDialog(this, items) {
|
|
||||||
sendSMSIntent(it as String)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun trySendEmail() {
|
|
||||||
val emails = contact!!.emails
|
|
||||||
if (emails.size == 1) {
|
|
||||||
sendEmailIntent(emails.first().value)
|
|
||||||
} else if (emails.size > 1) {
|
|
||||||
val items = ArrayList<RadioItem>()
|
|
||||||
emails.forEachIndexed { index, email ->
|
|
||||||
items.add(RadioItem(index, email.value, email.value))
|
|
||||||
}
|
|
||||||
|
|
||||||
RadioGroupDialog(this, items) {
|
|
||||||
sendEmailIntent(it as String)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -737,17 +623,6 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getPhoneNumberTextId(type: Int) = when (type) {
|
|
||||||
CommonDataKinds.Phone.TYPE_MOBILE -> R.string.mobile
|
|
||||||
CommonDataKinds.Phone.TYPE_HOME -> R.string.home
|
|
||||||
CommonDataKinds.Phone.TYPE_WORK -> R.string.work
|
|
||||||
CommonDataKinds.Phone.TYPE_MAIN -> R.string.main_number
|
|
||||||
CommonDataKinds.Phone.TYPE_FAX_WORK -> R.string.work_fax
|
|
||||||
CommonDataKinds.Phone.TYPE_FAX_HOME -> R.string.home_fax
|
|
||||||
CommonDataKinds.Phone.TYPE_PAGER -> R.string.pager
|
|
||||||
else -> R.string.other
|
|
||||||
}
|
|
||||||
|
|
||||||
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) -> CommonDataKinds.Phone.TYPE_MOBILE
|
||||||
getString(R.string.home) -> CommonDataKinds.Phone.TYPE_HOME
|
getString(R.string.home) -> CommonDataKinds.Phone.TYPE_HOME
|
||||||
@ -759,13 +634,6 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
else -> CommonDataKinds.Phone.TYPE_OTHER
|
else -> CommonDataKinds.Phone.TYPE_OTHER
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getEmailTextId(type: Int) = when (type) {
|
|
||||||
CommonDataKinds.Email.TYPE_HOME -> R.string.home
|
|
||||||
CommonDataKinds.Email.TYPE_WORK -> R.string.work
|
|
||||||
CommonDataKinds.Email.TYPE_MOBILE -> R.string.mobile
|
|
||||||
else -> R.string.other
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getEmailTypeId(value: String) = when (value) {
|
private fun getEmailTypeId(value: String) = when (value) {
|
||||||
getString(R.string.home) -> CommonDataKinds.Email.TYPE_HOME
|
getString(R.string.home) -> CommonDataKinds.Email.TYPE_HOME
|
||||||
getString(R.string.work) -> CommonDataKinds.Email.TYPE_WORK
|
getString(R.string.work) -> CommonDataKinds.Email.TYPE_WORK
|
||||||
@ -773,12 +641,6 @@ class EditContactActivity : SimpleActivity() {
|
|||||||
else -> CommonDataKinds.Email.TYPE_OTHER
|
else -> CommonDataKinds.Email.TYPE_OTHER
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getEventTextId(type: Int) = when (type) {
|
|
||||||
CommonDataKinds.Event.TYPE_BIRTHDAY -> R.string.birthday
|
|
||||||
CommonDataKinds.Event.TYPE_ANNIVERSARY -> R.string.anniversary
|
|
||||||
else -> R.string.other
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getEventTypeId(value: String) = when (value) {
|
private fun getEventTypeId(value: String) = when (value) {
|
||||||
getString(R.string.birthday) -> CommonDataKinds.Event.TYPE_BIRTHDAY
|
getString(R.string.birthday) -> CommonDataKinds.Event.TYPE_BIRTHDAY
|
||||||
getString(R.string.anniversary) -> CommonDataKinds.Event.TYPE_ANNIVERSARY
|
getString(R.string.anniversary) -> CommonDataKinds.Event.TYPE_ANNIVERSARY
|
||||||
|
@ -2,51 +2,29 @@ package com.simplemobiletools.contacts.activities
|
|||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.graphics.drawable.Drawable
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.ContactsContract
|
import android.provider.ContactsContract
|
||||||
import android.provider.ContactsContract.CommonDataKinds
|
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import com.bumptech.glide.Glide
|
|
||||||
import com.bumptech.glide.load.DataSource
|
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
|
||||||
import com.bumptech.glide.load.engine.GlideException
|
|
||||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
|
|
||||||
import com.bumptech.glide.request.RequestListener
|
|
||||||
import com.bumptech.glide.request.RequestOptions
|
|
||||||
import com.bumptech.glide.request.target.Target
|
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
||||||
import com.simplemobiletools.commons.helpers.getDateFormats
|
|
||||||
import com.simplemobiletools.commons.models.RadioItem
|
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.extensions.*
|
import com.simplemobiletools.contacts.extensions.*
|
||||||
import com.simplemobiletools.contacts.helpers.*
|
import com.simplemobiletools.contacts.helpers.*
|
||||||
import com.simplemobiletools.contacts.models.Contact
|
|
||||||
import kotlinx.android.synthetic.main.activity_view_contact.*
|
import kotlinx.android.synthetic.main.activity_view_contact.*
|
||||||
import kotlinx.android.synthetic.main.item_event.view.*
|
import kotlinx.android.synthetic.main.item_event.view.*
|
||||||
import kotlinx.android.synthetic.main.item_view_email.view.*
|
import kotlinx.android.synthetic.main.item_view_email.view.*
|
||||||
import kotlinx.android.synthetic.main.item_view_phone_number.view.*
|
import kotlinx.android.synthetic.main.item_view_phone_number.view.*
|
||||||
import org.joda.time.DateTime
|
|
||||||
import org.joda.time.format.DateTimeFormat
|
|
||||||
import java.text.DateFormat
|
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
class ViewContactActivity : SimpleActivity() {
|
|
||||||
private var currentContactPhotoPath = ""
|
|
||||||
private var contact: Contact? = null
|
|
||||||
|
|
||||||
|
class ViewContactActivity : ContactActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_view_contact)
|
setContentView(R.layout.activity_view_contact)
|
||||||
|
isEditActivity = false
|
||||||
|
|
||||||
handlePermission(PERMISSION_READ_CONTACTS) {
|
handlePermission(PERMISSION_READ_CONTACTS) {
|
||||||
if (it) {
|
if (it) {
|
||||||
@ -115,9 +93,9 @@ class ViewContactActivity : SimpleActivity() {
|
|||||||
contact_photo.background = ColorDrawable(config.primaryColor)
|
contact_photo.background = ColorDrawable(config.primaryColor)
|
||||||
|
|
||||||
if (contact!!.photoUri.isEmpty()) {
|
if (contact!!.photoUri.isEmpty()) {
|
||||||
showPhotoPlaceholder()
|
showPhotoPlaceholder(contact_photo)
|
||||||
} else {
|
} else {
|
||||||
updateContactPhoto(contact!!.photoUri)
|
updateContactPhoto(contact!!.photoUri, contact_photo)
|
||||||
}
|
}
|
||||||
|
|
||||||
val textColor = config.textColor
|
val textColor = config.textColor
|
||||||
@ -178,7 +156,7 @@ class ViewContactActivity : SimpleActivity() {
|
|||||||
contact_numbers_holder.addView(numberHolder)
|
contact_numbers_holder.addView(numberHolder)
|
||||||
}
|
}
|
||||||
|
|
||||||
numberHolder?.apply {
|
numberHolder!!.apply {
|
||||||
contact_number.text = number.value
|
contact_number.text = number.value
|
||||||
setupPhoneNumberTypePicker(contact_number_type, number.type)
|
setupPhoneNumberTypePicker(contact_number_type, number.type)
|
||||||
}
|
}
|
||||||
@ -197,7 +175,7 @@ class ViewContactActivity : SimpleActivity() {
|
|||||||
contact_emails_holder.addView(emailHolder)
|
contact_emails_holder.addView(emailHolder)
|
||||||
}
|
}
|
||||||
|
|
||||||
emailHolder?.apply {
|
emailHolder!!.apply {
|
||||||
contact_email.text = email.value
|
contact_email.text = email.value
|
||||||
setupEmailTypePicker(contact_email_type, email.type)
|
setupEmailTypePicker(contact_email_type, email.type)
|
||||||
}
|
}
|
||||||
@ -216,7 +194,7 @@ class ViewContactActivity : SimpleActivity() {
|
|||||||
contact_events_holder.addView(eventHolder)
|
contact_events_holder.addView(eventHolder)
|
||||||
}
|
}
|
||||||
|
|
||||||
(eventHolder as? ViewGroup)?.apply {
|
(eventHolder as ViewGroup).apply {
|
||||||
contact_event.apply {
|
contact_event.apply {
|
||||||
getDateTime(event.value, this)
|
getDateTime(event.value, this)
|
||||||
tag = event.value
|
tag = event.value
|
||||||
@ -239,41 +217,6 @@ class ViewContactActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shareContact() {
|
|
||||||
shareContacts(arrayListOf(contact!!))
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun showPhotoPlaceholder() {
|
|
||||||
val placeholder = resources.getColoredBitmap(R.drawable.ic_person, config.primaryColor.getContrastColor())
|
|
||||||
val padding = resources.getDimension(R.dimen.activity_margin).toInt()
|
|
||||||
contact_photo.setPadding(padding, padding, padding, padding)
|
|
||||||
contact_photo.setImageBitmap(placeholder)
|
|
||||||
currentContactPhotoPath = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateContactPhoto(path: String) {
|
|
||||||
currentContactPhotoPath = path
|
|
||||||
val options = RequestOptions()
|
|
||||||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
|
||||||
.centerCrop()
|
|
||||||
|
|
||||||
Glide.with(this)
|
|
||||||
.load(path)
|
|
||||||
.transition(DrawableTransitionOptions.withCrossFade())
|
|
||||||
.apply(options)
|
|
||||||
.listener(object : RequestListener<Drawable> {
|
|
||||||
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
|
|
||||||
contact_photo.setPadding(0, 0, 0, 0)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
|
|
||||||
showPhotoPlaceholder()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}).into(contact_photo)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupTypePickers() {
|
private fun setupTypePickers() {
|
||||||
if (contact!!.phoneNumbers.isEmpty()) {
|
if (contact!!.phoneNumbers.isEmpty()) {
|
||||||
val numberHolder = contact_numbers_holder.getChildAt(0)
|
val numberHolder = contact_numbers_holder.getChildAt(0)
|
||||||
@ -309,93 +252,5 @@ class ViewContactActivity : SimpleActivity() {
|
|||||||
eventHolder.contact_event_type.setText(getEventTextId(type))
|
eventHolder.contact_event_type.setText(getEventTextId(type))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getDateTime(dateString: String, viewToUpdate: TextView? = null): DateTime {
|
|
||||||
val dateFormats = getDateFormats()
|
|
||||||
var date = DateTime()
|
|
||||||
for (format in dateFormats) {
|
|
||||||
try {
|
|
||||||
date = DateTime.parse(dateString, DateTimeFormat.forPattern(format))
|
|
||||||
|
|
||||||
val formatter = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault())
|
|
||||||
var localPattern = (formatter as SimpleDateFormat).toLocalizedPattern()
|
|
||||||
|
|
||||||
val hasYear = format.contains("y")
|
|
||||||
if (!hasYear) {
|
|
||||||
localPattern = localPattern.replace("y", "").trim()
|
|
||||||
date = date.withYear(DateTime().year)
|
|
||||||
}
|
|
||||||
|
|
||||||
val formattedString = date.toString(localPattern)
|
|
||||||
viewToUpdate?.text = formattedString
|
|
||||||
break
|
|
||||||
} catch (ignored: Exception) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return date
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun deleteContact() {
|
|
||||||
ConfirmationDialog(this) {
|
|
||||||
ContactsHelper(this).deleteContact(contact!!)
|
|
||||||
finish()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getStarDrawable(on: Boolean) = resources.getDrawable(if (on) R.drawable.ic_star_on_big else R.drawable.ic_star_off_big)
|
private fun getStarDrawable(on: Boolean) = resources.getDrawable(if (on) R.drawable.ic_star_on_big else R.drawable.ic_star_off_big)
|
||||||
|
|
||||||
private fun trySendSMS() {
|
|
||||||
val numbers = contact!!.phoneNumbers
|
|
||||||
if (numbers.size == 1) {
|
|
||||||
sendSMSIntent(numbers.first().value)
|
|
||||||
} else if (numbers.size > 1) {
|
|
||||||
val items = ArrayList<RadioItem>()
|
|
||||||
numbers.forEachIndexed { index, phoneNumber ->
|
|
||||||
items.add(RadioItem(index, phoneNumber.value, phoneNumber.value))
|
|
||||||
}
|
|
||||||
|
|
||||||
RadioGroupDialog(this, items) {
|
|
||||||
sendSMSIntent(it as String)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun trySendEmail() {
|
|
||||||
val emails = contact!!.emails
|
|
||||||
if (emails.size == 1) {
|
|
||||||
sendEmailIntent(emails.first().value)
|
|
||||||
} else if (emails.size > 1) {
|
|
||||||
val items = ArrayList<RadioItem>()
|
|
||||||
emails.forEachIndexed { index, email ->
|
|
||||||
items.add(RadioItem(index, email.value, email.value))
|
|
||||||
}
|
|
||||||
|
|
||||||
RadioGroupDialog(this, items) {
|
|
||||||
sendEmailIntent(it as String)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getPhoneNumberTextId(type: Int) = when (type) {
|
|
||||||
CommonDataKinds.Phone.TYPE_MOBILE -> R.string.mobile
|
|
||||||
CommonDataKinds.Phone.TYPE_HOME -> R.string.home
|
|
||||||
CommonDataKinds.Phone.TYPE_WORK -> R.string.work
|
|
||||||
CommonDataKinds.Phone.TYPE_MAIN -> R.string.main_number
|
|
||||||
CommonDataKinds.Phone.TYPE_FAX_WORK -> R.string.work_fax
|
|
||||||
CommonDataKinds.Phone.TYPE_FAX_HOME -> R.string.home_fax
|
|
||||||
CommonDataKinds.Phone.TYPE_PAGER -> R.string.pager
|
|
||||||
else -> R.string.other
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getEmailTextId(type: Int) = when (type) {
|
|
||||||
CommonDataKinds.Email.TYPE_HOME -> R.string.home
|
|
||||||
CommonDataKinds.Email.TYPE_WORK -> R.string.work
|
|
||||||
CommonDataKinds.Email.TYPE_MOBILE -> R.string.mobile
|
|
||||||
else -> R.string.other
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getEventTextId(type: Int) = when (type) {
|
|
||||||
CommonDataKinds.Event.TYPE_BIRTHDAY -> R.string.birthday
|
|
||||||
CommonDataKinds.Event.TYPE_ANNIVERSARY -> R.string.anniversary
|
|
||||||
else -> R.string.other
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,11 @@ import android.net.Uri
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.provider.ContactsContract
|
import android.provider.ContactsContract
|
||||||
import android.support.v4.content.FileProvider
|
import android.support.v4.content.FileProvider
|
||||||
import com.simplemobiletools.commons.R
|
|
||||||
import com.simplemobiletools.commons.extensions.getIntValue
|
import com.simplemobiletools.commons.extensions.getIntValue
|
||||||
import com.simplemobiletools.commons.extensions.isLollipopPlus
|
import com.simplemobiletools.commons.extensions.isLollipopPlus
|
||||||
import com.simplemobiletools.commons.extensions.toast
|
import com.simplemobiletools.commons.extensions.toast
|
||||||
import com.simplemobiletools.contacts.BuildConfig
|
import com.simplemobiletools.contacts.BuildConfig
|
||||||
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.activities.ViewContactActivity
|
import com.simplemobiletools.contacts.activities.ViewContactActivity
|
||||||
import com.simplemobiletools.contacts.helpers.CONTACT_ID
|
import com.simplemobiletools.contacts.helpers.CONTACT_ID
|
||||||
import com.simplemobiletools.contacts.helpers.Config
|
import com.simplemobiletools.contacts.helpers.Config
|
||||||
|
Loading…
x
Reference in New Issue
Block a user