handle prefix/suffix/organization exporting/importing

This commit is contained in:
tibbi 2018-04-08 12:05:34 +02:00
parent fea917e41c
commit d6f8bd43bf
3 changed files with 33 additions and 5 deletions

View File

@ -43,6 +43,8 @@ const val PHOTO = "PHOTO"
const val EMAIL = "EMAIL" const val EMAIL = "EMAIL"
const val ADR = "ADR" const val ADR = "ADR"
const val NOTE = "NOTE:" const val NOTE = "NOTE:"
const val ORG = "ORG:"
const val TITLE = "TITLE:"
const val ENCODING = "ENCODING" const val ENCODING = "ENCODING"
const val BASE64 = "BASE64" const val BASE64 = "BASE64"
const val JPEG = "JPEG" const val JPEG = "JPEG"

View File

@ -66,6 +66,11 @@ class VcfExporter {
out.writeLn("$NOTE${contact.notes.replace("\n", "\\n")}") out.writeLn("$NOTE${contact.notes.replace("\n", "\\n")}")
} }
if (!contact.organization.isEmpty()) {
out.writeLn("$ORG${contact.organization.company.replace("\n", "\\n")}")
out.writeLn("$TITLE${contact.organization.jobPosition.replace("\n", "\\n")}")
}
if (contact.thumbnailUri.isNotEmpty()) { if (contact.thumbnailUri.isNotEmpty()) {
val bitmap = MediaStore.Images.Media.getBitmap(activity.contentResolver, Uri.parse(contact.thumbnailUri)) val bitmap = MediaStore.Images.Media.getBitmap(activity.contentResolver, Uri.parse(contact.thumbnailUri))
addBitmap(bitmap, out) addBitmap(bitmap, out)
@ -116,17 +121,23 @@ class VcfExporter {
var firstName = contact.firstName var firstName = contact.firstName
var surName = contact.surname var surName = contact.surname
var middleName = contact.middleName var middleName = contact.middleName
var prefix = contact.prefix
var suffix = contact.suffix
if (QuotedPrintable.urlEncode(firstName) != firstName if (QuotedPrintable.urlEncode(firstName) != firstName
|| QuotedPrintable.urlEncode(surName) != surName || QuotedPrintable.urlEncode(surName) != surName
|| QuotedPrintable.urlEncode(middleName) != middleName) { || QuotedPrintable.urlEncode(middleName) != middleName
|| QuotedPrintable.urlEncode(prefix) != prefix
|| QuotedPrintable.urlEncode(suffix) != suffix) {
firstName = QuotedPrintable.encode(firstName) firstName = QuotedPrintable.encode(firstName)
surName = QuotedPrintable.encode(surName) surName = QuotedPrintable.encode(surName)
middleName = QuotedPrintable.encode(middleName) middleName = QuotedPrintable.encode(middleName)
prefix = QuotedPrintable.encode(prefix)
suffix = QuotedPrintable.encode(suffix)
result += ";CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE" result += ";CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE"
} }
return "$result:$surName;$firstName;$middleName;;" return "$result:$surName;$firstName;$middleName;$prefix;$suffix"
} }
private fun getPhoneNumberLabel(type: Int) = when (type) { private fun getPhoneNumberLabel(type: Int) = when (type) {

View File

@ -31,7 +31,8 @@ class VcfImporter(val activity: SimpleActivity) {
private var curEvents = ArrayList<Event>() private var curEvents = ArrayList<Event>()
private var curAddresses = ArrayList<Address>() private var curAddresses = ArrayList<Address>()
private var curGroups = ArrayList<Group>() private var curGroups = ArrayList<Group>()
private var curOrganization = Organization("", "") private var curCompany = ""
private var curJobPosition = ""
private var isGettingPhoto = false private var isGettingPhoto = false
private var currentPhotoString = StringBuilder() private var currentPhotoString = StringBuilder()
@ -87,6 +88,8 @@ class VcfImporter(val activity: SimpleActivity) {
line.toUpperCase().startsWith(BDAY) -> addBirthday(line.substring(BDAY.length)) line.toUpperCase().startsWith(BDAY) -> addBirthday(line.substring(BDAY.length))
line.toUpperCase().startsWith(ANNIVERSARY) -> addAnniversary(line.substring(ANNIVERSARY.length)) line.toUpperCase().startsWith(ANNIVERSARY) -> addAnniversary(line.substring(ANNIVERSARY.length))
line.toUpperCase().startsWith(PHOTO) -> addPhoto(line.substring(PHOTO.length)) line.toUpperCase().startsWith(PHOTO) -> addPhoto(line.substring(PHOTO.length))
line.toUpperCase().startsWith(ORG) -> addCompany(line.substring(ORG.length))
line.toUpperCase().startsWith(TITLE) -> addJobPosition(line.substring(TITLE.length))
line.toUpperCase() == END_VCARD -> saveContact(targetContactSource) line.toUpperCase() == END_VCARD -> saveContact(targetContactSource)
isGettingPhoto -> currentPhotoString.append(line.trim()) isGettingPhoto -> currentPhotoString.append(line.trim())
} }
@ -121,6 +124,8 @@ class VcfImporter(val activity: SimpleActivity) {
curFirstName = if (currentNameIsANSI) QuotedPrintable.decode(nameParts[1]) else nameParts[1] curFirstName = if (currentNameIsANSI) QuotedPrintable.decode(nameParts[1]) else nameParts[1]
if (nameParts.size > 2) { if (nameParts.size > 2) {
curMiddleName = if (currentNameIsANSI) QuotedPrintable.decode(nameParts[2]) else nameParts[2] curMiddleName = if (currentNameIsANSI) QuotedPrintable.decode(nameParts[2]) else nameParts[2]
curPrefix = if (currentNameIsANSI) QuotedPrintable.decode(nameParts[3]) else nameParts[3]
curSuffix = if (currentNameIsANSI) QuotedPrintable.decode(nameParts[4]) else nameParts[4]
} }
} }
@ -237,9 +242,18 @@ class VcfImporter(val activity: SimpleActivity) {
isGettingNotes = true isGettingNotes = true
} }
private fun addCompany(company: String) {
curCompany = company
}
private fun addJobPosition(jobPosition: String) {
curJobPosition = jobPosition
}
private fun saveContact(source: String) { private fun saveContact(source: String) {
val organization = Organization(curCompany, curJobPosition)
val contact = Contact(0, curPrefix, curFirstName, curMiddleName, curSurname, curSuffix, curPhotoUri, curPhoneNumbers, curEmails, curAddresses, curEvents, val contact = Contact(0, curPrefix, curFirstName, curMiddleName, curSurname, curSuffix, curPhotoUri, curPhoneNumbers, curEmails, curAddresses, curEvents,
source, 0, 0, "", null, curNotes, curGroups, curOrganization) source, 0, 0, "", null, curNotes, curGroups, organization)
if (ContactsHelper(activity).insertContact(contact)) { if (ContactsHelper(activity).insertContact(contact)) {
contactsImported++ contactsImported++
} }
@ -258,7 +272,8 @@ class VcfImporter(val activity: SimpleActivity) {
curEvents = ArrayList() curEvents = ArrayList()
curAddresses = ArrayList() curAddresses = ArrayList()
curGroups = ArrayList() curGroups = ArrayList()
curOrganization = Organization("", "") curCompany = ""
curJobPosition = ""
isGettingPhoto = false isGettingPhoto = false
currentPhotoString = StringBuilder() currentPhotoString = StringBuilder()