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 f1e4d13a..fbee0f29 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt @@ -20,6 +20,7 @@ import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.contacts.R +import com.simplemobiletools.contacts.dialogs.SelectGroupsDialog import com.simplemobiletools.contacts.extensions.* import com.simplemobiletools.contacts.helpers.* import com.simplemobiletools.contacts.models.* @@ -28,6 +29,7 @@ import kotlinx.android.synthetic.main.item_edit_address.view.* import kotlinx.android.synthetic.main.item_edit_email.view.* import kotlinx.android.synthetic.main.item_edit_phone_number.view.* import kotlinx.android.synthetic.main.item_event.view.* +import kotlinx.android.synthetic.main.item_group.view.* import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat import java.util.* @@ -189,7 +191,7 @@ class EditContactActivity : ContactActivity() { contact_email_add_new.setOnClickListener { addNewEmailField() } contact_address_add_new.setOnClickListener { addNewAddressField() } contact_event_add_new.setOnClickListener { addNewEventField() } - contact_groups_add_new.setOnClickListener { addNewGroupField() } + contact_groups_add_new.setOnClickListener { showSelectGroupsDialog() } contact_toggle_favorite.apply { setImageDrawable(getStarDrawable(contact!!.starred == 1)) @@ -363,6 +365,13 @@ class EditContactActivity : ContactActivity() { setupEventTypePicker(this) } } + + if (contact!!.groups.isEmpty()) { + val groupsHolder = contact_groups_holder.getChildAt(0) + (groupsHolder as? ViewGroup)?.contact_group?.apply { + setupGroupsPicker(this) + } + } } private fun setupPhoneNumberTypePicker(numberTypeField: TextView, type: Int = DEFAULT_PHONE_NUMBER_TYPE) { @@ -426,6 +435,16 @@ class EditContactActivity : ContactActivity() { } } + private fun setupGroupsPicker(groupTitleField: TextView, group: Group? = null) { + groupTitleField.apply { + text = group?.title ?: getString(R.string.no_groups) + alpha = if (group == null) 0.5f else 1f + setOnClickListener { + showSelectGroupsDialog() + } + } + } + private fun resetContactEvent(contactEvent: TextView, removeContactEventButton: ImageView) { contactEvent.apply { text = getString(R.string.unknown) @@ -493,6 +512,12 @@ class EditContactActivity : ContactActivity() { } } + private fun showSelectGroupsDialog() { + SelectGroupsDialog(this@EditContactActivity, contact!!.groups) { + + } + } + private fun saveContact() { if (isSaving || contact == null) { return @@ -657,10 +682,6 @@ class EditContactActivity : ContactActivity() { contact_events_holder.addView(eventHolder) } - private fun addNewGroupField() { - - } - private fun toggleFavorite() { val isStarred = isContactStarred() contact_toggle_favorite.apply { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/SelectGroupsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/SelectGroupsDialog.kt new file mode 100644 index 00000000..b0c6b6d8 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/SelectGroupsDialog.kt @@ -0,0 +1,69 @@ +package com.simplemobiletools.contacts.dialogs + +import android.support.v7.app.AlertDialog +import android.view.ViewGroup +import com.simplemobiletools.commons.extensions.setupDialogStuff +import com.simplemobiletools.commons.views.MyAppCompatCheckbox +import com.simplemobiletools.contacts.R +import com.simplemobiletools.contacts.activities.SimpleActivity +import com.simplemobiletools.contacts.helpers.ContactsHelper +import com.simplemobiletools.contacts.models.Group +import kotlinx.android.synthetic.main.dialog_select_groups.view.* +import kotlinx.android.synthetic.main.item_checkbox.view.* +import kotlinx.android.synthetic.main.item_textview.view.* +import java.util.* + +class SelectGroupsDialog(val activity: SimpleActivity, val selectedGroups: ArrayList, val callback: (newGroups: ArrayList) -> Unit) { + private val NEW_GROUP_ID = -1 + + private val dialog: AlertDialog? + private val checkboxes = ArrayList() + private val groups = ContactsHelper(activity).getStoredGroups() + + init { + val view = activity.layoutInflater.inflate(R.layout.dialog_select_groups, null) as ViewGroup + groups.forEach { + activity.layoutInflater.inflate(R.layout.item_checkbox, null, false).apply { + checkboxes.add(item_checkbox) + item_checkbox_holder.setOnClickListener { + item_checkbox.toggle() + } + item_checkbox.apply { + isChecked = selectedGroups.contains(it) + text = it.title + tag = it.id + } + view.dialog_groups_holder.addView(this) + } + } + + val newGroup = Group(NEW_GROUP_ID, activity.getString(R.string.create_new_group)) + activity.layoutInflater.inflate(R.layout.item_textview, null, false).item_textview.apply { + text = newGroup.title + tag = newGroup.id + view.dialog_groups_holder.addView(this) + setOnClickListener { + + } + } + + dialog = AlertDialog.Builder(activity) + .setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() }) + .setNegativeButton(R.string.cancel, null) + .create().apply { + activity.setupDialogStuff(view, this) + } + } + + private fun dialogConfirmed() { + val selectedGroups = ArrayList() + checkboxes.filter { it.isChecked }.forEach { + val groupId = it.tag as Int + groups.firstOrNull { it.id == groupId }?.apply { + selectedGroups.add(this) + } + } + + callback(selectedGroups) + } +} diff --git a/app/src/main/res/layout/dialog_select_groups.xml b/app/src/main/res/layout/dialog_select_groups.xml new file mode 100644 index 00000000..21a468d9 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_groups.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/layout/item_checkbox.xml b/app/src/main/res/layout/item_checkbox.xml new file mode 100644 index 00000000..8aa72cae --- /dev/null +++ b/app/src/main/res/layout/item_checkbox.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/layout/item_textview.xml b/app/src/main/res/layout/item_textview.xml new file mode 100644 index 00000000..486dfee7 --- /dev/null +++ b/app/src/main/res/layout/item_textview.xml @@ -0,0 +1,11 @@ + + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d081b4cf..bda8c04a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -7,6 +7,7 @@ Gerätespeicher Gerätespeicher (nicht sichtbar für andere Apps) No groups + Create a new group Neuer Kontakt Kontakt bearbeiten diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 550d4cfb..b6e38037 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -7,6 +7,7 @@ Stockage du téléphone Stockage du téléphone (non visible par d\'autres applis) No groups + Create a new group Nouveau contact Modifier contact diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 308186f8..612be50b 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -7,6 +7,7 @@ Phone storage Phone storage (not visible by other apps) No groups + Create a new group 새로운 연락처 연락처 수정 diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index da72fda2..2d19395b 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -7,6 +7,7 @@ Armazenamento do telefone Armazenamento do telefone (não visível por outras alicações) No groups + Create a new group 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 6cc1fd68..c6aecba9 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -7,6 +7,7 @@ Память устройства Память устройства (не видна другим приложениям) No groups + Create a new group Новый контакт Редактировать контакт diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 9c6f3d29..648c6524 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -7,6 +7,7 @@ Úložisko mobilu Úložisko mobilu (neviditeľné pre ostatné apky) Žiadne skupiny + Vytvoriť novú skupinu 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 46506fdf..3fddf676 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -7,6 +7,7 @@ Telefonens lagringsutrymme Telefonens lagringsutrymme (inte synligt för andra appar) No groups + Create a new group 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 9c67fc1d..eb9aa37c 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -7,6 +7,7 @@ 手機空間 手機空間 (其他程式不可見) No groups + Create a new group 新聯絡人 編輯聯絡人 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ae316966..a941a193 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,6 +7,7 @@ Phone storage Phone storage (not visible by other apps) No groups + Create a new group New contact Edit contact