mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-02-16 03:20:53 +01:00
implement a Group picker dialog
This commit is contained in:
parent
27855ca574
commit
b31e7b0086
@ -20,6 +20,7 @@ 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.models.RadioItem
|
import com.simplemobiletools.commons.models.RadioItem
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
|
import com.simplemobiletools.contacts.dialogs.SelectGroupsDialog
|
||||||
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.*
|
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_email.view.*
|
||||||
import kotlinx.android.synthetic.main.item_edit_phone_number.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_event.view.*
|
||||||
|
import kotlinx.android.synthetic.main.item_group.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.util.*
|
import java.util.*
|
||||||
@ -189,7 +191,7 @@ class EditContactActivity : ContactActivity() {
|
|||||||
contact_email_add_new.setOnClickListener { addNewEmailField() }
|
contact_email_add_new.setOnClickListener { addNewEmailField() }
|
||||||
contact_address_add_new.setOnClickListener { addNewAddressField() }
|
contact_address_add_new.setOnClickListener { addNewAddressField() }
|
||||||
contact_event_add_new.setOnClickListener { addNewEventField() }
|
contact_event_add_new.setOnClickListener { addNewEventField() }
|
||||||
contact_groups_add_new.setOnClickListener { addNewGroupField() }
|
contact_groups_add_new.setOnClickListener { showSelectGroupsDialog() }
|
||||||
|
|
||||||
contact_toggle_favorite.apply {
|
contact_toggle_favorite.apply {
|
||||||
setImageDrawable(getStarDrawable(contact!!.starred == 1))
|
setImageDrawable(getStarDrawable(contact!!.starred == 1))
|
||||||
@ -363,6 +365,13 @@ class EditContactActivity : ContactActivity() {
|
|||||||
setupEventTypePicker(this)
|
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) {
|
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) {
|
private fun resetContactEvent(contactEvent: TextView, removeContactEventButton: ImageView) {
|
||||||
contactEvent.apply {
|
contactEvent.apply {
|
||||||
text = getString(R.string.unknown)
|
text = getString(R.string.unknown)
|
||||||
@ -493,6 +512,12 @@ class EditContactActivity : ContactActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showSelectGroupsDialog() {
|
||||||
|
SelectGroupsDialog(this@EditContactActivity, contact!!.groups) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun saveContact() {
|
private fun saveContact() {
|
||||||
if (isSaving || contact == null) {
|
if (isSaving || contact == null) {
|
||||||
return
|
return
|
||||||
@ -657,10 +682,6 @@ class EditContactActivity : ContactActivity() {
|
|||||||
contact_events_holder.addView(eventHolder)
|
contact_events_holder.addView(eventHolder)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addNewGroupField() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun toggleFavorite() {
|
private fun toggleFavorite() {
|
||||||
val isStarred = isContactStarred()
|
val isStarred = isContactStarred()
|
||||||
contact_toggle_favorite.apply {
|
contact_toggle_favorite.apply {
|
||||||
|
@ -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<Group>, val callback: (newGroups: ArrayList<Group>) -> Unit) {
|
||||||
|
private val NEW_GROUP_ID = -1
|
||||||
|
|
||||||
|
private val dialog: AlertDialog?
|
||||||
|
private val checkboxes = ArrayList<MyAppCompatCheckbox>()
|
||||||
|
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<Group>()
|
||||||
|
checkboxes.filter { it.isChecked }.forEach {
|
||||||
|
val groupId = it.tag as Int
|
||||||
|
groups.firstOrNull { it.id == groupId }?.apply {
|
||||||
|
selectedGroups.add(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(selectedGroups)
|
||||||
|
}
|
||||||
|
}
|
17
app/src/main/res/layout/dialog_select_groups.xml
Normal file
17
app/src/main/res/layout/dialog_select_groups.xml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ScrollView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/dialog_radio_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/dialog_groups_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingTop="@dimen/normal_margin"/>
|
||||||
|
|
||||||
|
</ScrollView>
|
18
app/src/main/res/layout/item_checkbox.xml
Normal file
18
app/src/main/res/layout/item_checkbox.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/item_checkbox_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/normal_margin">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||||
|
android:id="@+id/item_checkbox"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@null"
|
||||||
|
android:clickable="false"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
11
app/src/main/res/layout/item_textview.xml
Normal file
11
app/src/main/res/layout/item_textview.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/item_textview"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="@dimen/activity_margin"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingBottom="@dimen/activity_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"/>
|
@ -7,6 +7,7 @@
|
|||||||
<string name="phone_storage">Gerätespeicher</string>
|
<string name="phone_storage">Gerätespeicher</string>
|
||||||
<string name="phone_storage_hidden">Gerätespeicher (nicht sichtbar für andere Apps)</string>
|
<string name="phone_storage_hidden">Gerätespeicher (nicht sichtbar für andere Apps)</string>
|
||||||
<string name="no_groups">No groups</string>
|
<string name="no_groups">No groups</string>
|
||||||
|
<string name="create_new_group">Create a new group</string>
|
||||||
|
|
||||||
<string name="new_contact">Neuer Kontakt</string>
|
<string name="new_contact">Neuer Kontakt</string>
|
||||||
<string name="edit_contact">Kontakt bearbeiten</string>
|
<string name="edit_contact">Kontakt bearbeiten</string>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<string name="phone_storage">Stockage du téléphone</string>
|
<string name="phone_storage">Stockage du téléphone</string>
|
||||||
<string name="phone_storage_hidden">Stockage du téléphone (non visible par d\'autres applis)</string>
|
<string name="phone_storage_hidden">Stockage du téléphone (non visible par d\'autres applis)</string>
|
||||||
<string name="no_groups">No groups</string>
|
<string name="no_groups">No groups</string>
|
||||||
|
<string name="create_new_group">Create a new group</string>
|
||||||
|
|
||||||
<string name="new_contact">Nouveau contact</string>
|
<string name="new_contact">Nouveau contact</string>
|
||||||
<string name="edit_contact">Modifier contact</string>
|
<string name="edit_contact">Modifier contact</string>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<string name="phone_storage">Phone storage</string>
|
<string name="phone_storage">Phone storage</string>
|
||||||
<string name="phone_storage_hidden">Phone storage (not visible by other apps)</string>
|
<string name="phone_storage_hidden">Phone storage (not visible by other apps)</string>
|
||||||
<string name="no_groups">No groups</string>
|
<string name="no_groups">No groups</string>
|
||||||
|
<string name="create_new_group">Create a new group</string>
|
||||||
|
|
||||||
<string name="new_contact">새로운 연락처</string>
|
<string name="new_contact">새로운 연락처</string>
|
||||||
<string name="edit_contact">연락처 수정</string>
|
<string name="edit_contact">연락처 수정</string>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<string name="phone_storage">Armazenamento do telefone</string>
|
<string name="phone_storage">Armazenamento do telefone</string>
|
||||||
<string name="phone_storage_hidden">Armazenamento do telefone (não visível por outras alicações)</string>
|
<string name="phone_storage_hidden">Armazenamento do telefone (não visível por outras alicações)</string>
|
||||||
<string name="no_groups">No groups</string>
|
<string name="no_groups">No groups</string>
|
||||||
|
<string name="create_new_group">Create a new group</string>
|
||||||
|
|
||||||
<string name="new_contact">Novo contacto</string>
|
<string name="new_contact">Novo contacto</string>
|
||||||
<string name="edit_contact">Editar contacto</string>
|
<string name="edit_contact">Editar contacto</string>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<string name="phone_storage">Память устройства</string>
|
<string name="phone_storage">Память устройства</string>
|
||||||
<string name="phone_storage_hidden">Память устройства (не видна другим приложениям)</string>
|
<string name="phone_storage_hidden">Память устройства (не видна другим приложениям)</string>
|
||||||
<string name="no_groups">No groups</string>
|
<string name="no_groups">No groups</string>
|
||||||
|
<string name="create_new_group">Create a new group</string>
|
||||||
|
|
||||||
<string name="new_contact">Новый контакт</string>
|
<string name="new_contact">Новый контакт</string>
|
||||||
<string name="edit_contact">Редактировать контакт</string>
|
<string name="edit_contact">Редактировать контакт</string>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<string name="phone_storage">Úložisko mobilu</string>
|
<string name="phone_storage">Úložisko mobilu</string>
|
||||||
<string name="phone_storage_hidden">Úložisko mobilu (neviditeľné pre ostatné apky)</string>
|
<string name="phone_storage_hidden">Úložisko mobilu (neviditeľné pre ostatné apky)</string>
|
||||||
<string name="no_groups">Žiadne skupiny</string>
|
<string name="no_groups">Žiadne skupiny</string>
|
||||||
|
<string name="create_new_group">Vytvoriť novú skupinu</string>
|
||||||
|
|
||||||
<string name="new_contact">Nový kontakt</string>
|
<string name="new_contact">Nový kontakt</string>
|
||||||
<string name="edit_contact">Upraviť kontakt</string>
|
<string name="edit_contact">Upraviť kontakt</string>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<string name="phone_storage">Telefonens lagringsutrymme</string>
|
<string name="phone_storage">Telefonens lagringsutrymme</string>
|
||||||
<string name="phone_storage_hidden">Telefonens lagringsutrymme (inte synligt för andra appar)</string>
|
<string name="phone_storage_hidden">Telefonens lagringsutrymme (inte synligt för andra appar)</string>
|
||||||
<string name="no_groups">No groups</string>
|
<string name="no_groups">No groups</string>
|
||||||
|
<string name="create_new_group">Create a new group</string>
|
||||||
|
|
||||||
<string name="new_contact">Ny kontakt</string>
|
<string name="new_contact">Ny kontakt</string>
|
||||||
<string name="edit_contact">Redigera kontakt</string>
|
<string name="edit_contact">Redigera kontakt</string>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<string name="phone_storage">手機空間</string>
|
<string name="phone_storage">手機空間</string>
|
||||||
<string name="phone_storage_hidden">手機空間 (其他程式不可見)</string>
|
<string name="phone_storage_hidden">手機空間 (其他程式不可見)</string>
|
||||||
<string name="no_groups">No groups</string>
|
<string name="no_groups">No groups</string>
|
||||||
|
<string name="create_new_group">Create a new group</string>
|
||||||
|
|
||||||
<string name="new_contact">新聯絡人</string>
|
<string name="new_contact">新聯絡人</string>
|
||||||
<string name="edit_contact">編輯聯絡人</string>
|
<string name="edit_contact">編輯聯絡人</string>
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<string name="phone_storage">Phone storage</string>
|
<string name="phone_storage">Phone storage</string>
|
||||||
<string name="phone_storage_hidden">Phone storage (not visible by other apps)</string>
|
<string name="phone_storage_hidden">Phone storage (not visible by other apps)</string>
|
||||||
<string name="no_groups">No groups</string>
|
<string name="no_groups">No groups</string>
|
||||||
|
<string name="create_new_group">Create a new group</string>
|
||||||
|
|
||||||
<string name="new_contact">New contact</string>
|
<string name="new_contact">New contact</string>
|
||||||
<string name="edit_contact">Edit contact</string>
|
<string name="edit_contact">Edit contact</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user