diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt index 421a808c..3512e988 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt @@ -386,7 +386,8 @@ class EditContactActivity : ContactActivity() { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE) supportActionBar?.title = resources.getString(R.string.new_contact) val contactSource = if (hasContactPermissions()) config.lastUsedContactSource else SMT_PRIVATE - contact = Contact(0, "", "", "", "", ArrayList(), ArrayList(), ArrayList(), ArrayList(), contactSource, 0, 0, "", null, "", ArrayList(), "") + val organization = Organization("", "") + contact = Contact(0, "", "", "", "", ArrayList(), ArrayList(), ArrayList(), ArrayList(), contactSource, 0, 0, "", null, "", ArrayList(), organization) contact_source.text = getPublicContactSource(contact!!.source) contact_source.setOnClickListener { showContactSourcePicker(contact!!.source) { @@ -603,6 +604,10 @@ class EditContactActivity : ContactActivity() { starred = if (isContactStarred()) 1 else 0 notes = contact_notes.value + val company = contact_organization_company.value + val jobPosition = contact_organization_job_position.value + organization = Organization(company, jobPosition) + Thread { config.lastUsedContactSource = source if (id == 0) { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt index 1d28a026..4b5f8308 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt @@ -255,9 +255,11 @@ class ViewContactActivity : ContactActivity() { private fun setupOrganization() { val organization = contact!!.organization - contact_organization.text = organization - contact_organization_image.beVisibleIf(organization.isNotEmpty()) - contact_organization.beVisibleIf(organization.isNotEmpty()) + contact_organization_company.text = organization.company + contact_organization_job_position.text = organization.jobPosition + contact_organization_image.beGoneIf(organization.isEmpty()) + contact_organization_company.beGoneIf(organization.company.isEmpty()) + contact_organization_job_position.beGoneIf(organization.jobPosition.isEmpty()) } private fun setupGroups() { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt index a7d6ad06..39cd30a7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt @@ -83,7 +83,7 @@ class ContactsHelper(val activity: BaseSimpleActivity) { val thumbnailUri = cursor.getStringValue(CommonDataKinds.StructuredName.PHOTO_THUMBNAIL_URI) ?: "" val notes = "" val groups = ArrayList() - val organization = "" + val organization = Organization("", "") val contact = Contact(id, firstName, middleName, surname, photoUri, number, emails, addresses, events, accountName, starred, contactId, thumbnailUri, null, notes, groups, organization) contacts.put(id, contact) @@ -328,12 +328,13 @@ class ContactsHelper(val activity: BaseSimpleActivity) { return notes } - private fun getOrganizations(contactId: Int? = null): SparseArray { - val organizations = SparseArray() + private fun getOrganizations(contactId: Int? = null): SparseArray { + val organizations = SparseArray() val uri = ContactsContract.Data.CONTENT_URI val projection = arrayOf( ContactsContract.Data.RAW_CONTACT_ID, - CommonDataKinds.Organization.COMPANY + CommonDataKinds.Organization.COMPANY, + CommonDataKinds.Organization.TITLE ) var selection = "${ContactsContract.Data.MIMETYPE} = ?" @@ -350,7 +351,9 @@ class ContactsHelper(val activity: BaseSimpleActivity) { if (cursor?.moveToFirst() == true) { do { val id = cursor.getIntValue(ContactsContract.Data.RAW_CONTACT_ID) - val organization = cursor.getStringValue(CommonDataKinds.Organization.COMPANY) ?: continue + val company = cursor.getStringValue(CommonDataKinds.Organization.COMPANY) ?: continue + val title = cursor.getStringValue(CommonDataKinds.Organization.TITLE) ?: continue + val organization = Organization(company, title) organizations.put(id, organization) } while (cursor.moveToNext()) } @@ -551,7 +554,7 @@ class ContactsHelper(val activity: BaseSimpleActivity) { val contactId = cursor.getIntValue(ContactsContract.Data.CONTACT_ID) val groups = getContactGroups(storedGroups, contactId)[contactId] ?: ArrayList() val thumbnailUri = cursor.getStringValue(CommonDataKinds.StructuredName.PHOTO_THUMBNAIL_URI) ?: "" - val organization = getOrganizations(id)[id] ?: "" + val organization = getOrganizations(id)[id] ?: Organization("", "") return Contact(id, firstName, middleName, surname, photoUri, number, emails, addresses, events, accountName, starred, contactId, thumbnailUri, null, notes, groups, organization) } @@ -772,6 +775,18 @@ class ContactsHelper(val activity: BaseSimpleActivity) { operations.add(build()) } + // organization + ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI).apply { + val selection = "${ContactsContract.Data.RAW_CONTACT_ID} = ? AND ${ContactsContract.Data.MIMETYPE} = ?" + val selectionArgs = arrayOf(contact.id.toString(), CommonDataKinds.Organization.CONTENT_ITEM_TYPE) + withSelection(selection, selectionArgs) + withValue(CommonDataKinds.Organization.COMPANY, contact.organization.company) + withValue(CommonDataKinds.Organization.TYPE, CommonDataKinds.Organization.TYPE_WORK) + withValue(CommonDataKinds.Organization.TITLE, contact.organization.jobPosition) + withValue(CommonDataKinds.Organization.TYPE, CommonDataKinds.Organization.TYPE_WORK) + operations.add(build()) + } + // delete groups val relevantGroupIDs = getStoredGroups().map { it.id } if (relevantGroupIDs.isNotEmpty()) { @@ -955,6 +970,17 @@ class ContactsHelper(val activity: BaseSimpleActivity) { operations.add(build()) } + // organization + ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).apply { + withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) + withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Organization.CONTENT_ITEM_TYPE) + withValue(CommonDataKinds.Organization.COMPANY, contact.organization.company) + withValue(CommonDataKinds.Organization.TYPE, CommonDataKinds.Organization.TYPE_WORK) + withValue(CommonDataKinds.Organization.TITLE, contact.organization.jobPosition) + withValue(CommonDataKinds.Organization.TYPE, CommonDataKinds.Organization.TYPE_WORK) + operations.add(build()) + } + // groups contact.groups.forEach { ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).apply { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt index d3ca9181..341e4297 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt @@ -267,7 +267,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont val groupIds = Gson().fromJson>(groupIdsJson, groupIdsToken) ?: ArrayList(1) val groups = storedGroups.filter { groupIds.contains(it.id) } as ArrayList - val organization = "" + val organization = Organization("", "") val contact = Contact(id, firstName, middleName, surname, "", phoneNumbers, emails, addresses, events, SMT_PRIVATE, starred, id, "", photo, notes, groups, organization) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/VcfImporter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/VcfImporter.kt index 1341ead5..48cfe6c4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/VcfImporter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/VcfImporter.kt @@ -24,12 +24,12 @@ class VcfImporter(val activity: SimpleActivity) { private var curSurname = "" private var curPhotoUri = "" private var curNotes = "" - private var curOrganization = "" private var curPhoneNumbers = ArrayList() private var curEmails = ArrayList() private var curEvents = ArrayList() private var curAddresses = ArrayList
() private var curGroups = ArrayList() + private var curOrganization = Organization("", "") private var isGettingPhoto = false private var currentPhotoString = StringBuilder() @@ -249,12 +249,12 @@ class VcfImporter(val activity: SimpleActivity) { curSurname = "" curPhotoUri = "" curNotes = "" - curOrganization = "" curPhoneNumbers = ArrayList() curEmails = ArrayList() curEvents = ArrayList() curAddresses = ArrayList() curGroups = ArrayList() + curOrganization = Organization("", "") isGettingPhoto = false currentPhotoString = StringBuilder() diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt index cbb34453..b086c253 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt @@ -8,7 +8,7 @@ import com.simplemobiletools.commons.helpers.SORT_DESCENDING data class Contact(val id: Int, var firstName: String, var middleName: String, var surname: String, var photoUri: String, var phoneNumbers: ArrayList, var emails: ArrayList, var addresses: ArrayList
, var events: ArrayList, var source: String, var starred: Int, val contactId: Int, val thumbnailUri: String, var photo: Bitmap?, var notes: String, - var groups: ArrayList, var organization: String) : Comparable { + var groups: ArrayList, var organization: Organization) : Comparable { companion object { var sorting = 0 } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/models/Organization.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Organization.kt new file mode 100644 index 00000000..fbb7b69c --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Organization.kt @@ -0,0 +1,5 @@ +package com.simplemobiletools.contacts.models + +data class Organization(var company: String, var jobPosition: String) { + fun isEmpty() = company.isEmpty() && jobPosition.isEmpty() +} diff --git a/app/src/main/res/layout/activity_edit_contact.xml b/app/src/main/res/layout/activity_edit_contact.xml index f7a2fa11..d6b7e5ad 100644 --- a/app/src/main/res/layout/activity_edit_contact.xml +++ b/app/src/main/res/layout/activity_edit_contact.xml @@ -313,6 +313,47 @@ android:textCursorDrawable="@null" android:textSize="@dimen/bigger_text_size"/> + + + + + + diff --git a/app/src/main/res/layout/activity_view_contact.xml b/app/src/main/res/layout/activity_view_contact.xml index f7e2fb2f..1939f806 100644 --- a/app/src/main/res/layout/activity_view_contact.xml +++ b/app/src/main/res/layout/activity_view_contact.xml @@ -243,7 +243,7 @@ android:id="@+id/contact_organization_image" android:layout_width="@dimen/contact_icons_size" android:layout_height="@dimen/contact_icons_size" - android:layout_alignTop="@+id/contact_organization" + android:layout_alignTop="@+id/contact_organization_company" android:paddingBottom="@dimen/small_margin" android:paddingEnd="@dimen/small_margin" android:paddingRight="@dimen/small_margin" @@ -251,7 +251,7 @@ android:src="@drawable/ic_business"/> + + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0ab17154..8f0b1bfa 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -6,6 +6,8 @@ Aktualisiere… Gerätespeicher Gerätespeicher (nicht sichtbar für andere Apps) + Company + Job position Neuer Kontakt Kontakt bearbeiten diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 898a8612..d2d57248 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -6,6 +6,8 @@ Ενημέρωση... Μνήμη τηλεφώνου Μνήμη τηλεφώνου (δεν είναι ορατή από άλλες εφαρμογές) + Company + Job position Νέα επαφή Επεξεργασία επαφής diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 462aee6e..731e5e87 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -6,6 +6,8 @@ Mise à jour… Stockage du téléphone Stockage du téléphone (non visible par d\'autres applis) + Company + Job position Nouveau contact Modifier contact diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 9fd869be..5fe4526d 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -6,6 +6,8 @@ Ažuriranje... Pohrana na telefonu Pohrana na telefonu (nije vidljiva drugim aplikacijama)) + Company + Job position Novi kontakt Uredi kontakt diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 5984f2e1..26639518 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -6,6 +6,8 @@ 수정중… Phone storage Phone storage (not visible by other apps) + Company + Job position 새로운 연락처 연락처 수정 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 8bb6b2ed..c5b5dfe7 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -6,6 +6,8 @@ Atnaujinama… Telefono atmintis Telefono atmintis (nematoma kitų programėlių) + Company + Job position Naujas kontaktas Redaguoti kontaktą diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 2c7019e4..07be66f6 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -6,6 +6,8 @@ A atualizar… Armazenamento do telefone Armazenamento do telefone (não visível por outras alicações) + Company + Job position Novo contacto Editar contacto diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 96125d08..05666af3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -6,6 +6,8 @@ Обновление… Память устройства Память устройства (не видна другим приложениям) + Company + Job position Новый контакт Редактировать контакт diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 2a77d392..27af669f 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -6,6 +6,8 @@ Upravuje sa… Úložisko mobilu Úložisko mobilu (neviditeľné pre ostatné apky) + Firma + Pracovná pozícia Nový kontakt Upraviť kontakt diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 8dc1c334..c80da7b9 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -6,6 +6,8 @@ Uppdaterar… Telefonens lagringsutrymme Telefonens lagringsutrymme (inte synligt för andra appar) + Company + Job position Ny kontakt Redigera kontakt diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 9cfe9d2f..b67195db 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -6,6 +6,8 @@ 更新中… 手機空間 手機空間 (其他程式不可見) + Company + Job position 新聯絡人 編輯聯絡人 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 67f884c5..16699bf1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,6 +6,8 @@ Updating… Phone storage Phone storage (not visible by other apps) + Company + Job position New contact Edit contact