mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-02-12 09:30:39 +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.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 {
|
||||
|
@ -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_hidden">Gerätespeicher (nicht sichtbar für andere Apps)</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="edit_contact">Kontakt bearbeiten</string>
|
||||
|
@ -7,6 +7,7 @@
|
||||
<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="no_groups">No groups</string>
|
||||
<string name="create_new_group">Create a new group</string>
|
||||
|
||||
<string name="new_contact">Nouveau contact</string>
|
||||
<string name="edit_contact">Modifier contact</string>
|
||||
|
@ -7,6 +7,7 @@
|
||||
<string name="phone_storage">Phone storage</string>
|
||||
<string name="phone_storage_hidden">Phone storage (not visible by other apps)</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="edit_contact">연락처 수정</string>
|
||||
|
@ -7,6 +7,7 @@
|
||||
<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="no_groups">No groups</string>
|
||||
<string name="create_new_group">Create a new group</string>
|
||||
|
||||
<string name="new_contact">Novo contacto</string>
|
||||
<string name="edit_contact">Editar contacto</string>
|
||||
|
@ -7,6 +7,7 @@
|
||||
<string name="phone_storage">Память устройства</string>
|
||||
<string name="phone_storage_hidden">Память устройства (не видна другим приложениям)</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="edit_contact">Редактировать контакт</string>
|
||||
|
@ -7,6 +7,7 @@
|
||||
<string name="phone_storage">Úložisko mobilu</string>
|
||||
<string name="phone_storage_hidden">Úložisko mobilu (neviditeľné pre ostatné apky)</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="edit_contact">Upraviť kontakt</string>
|
||||
|
@ -7,6 +7,7 @@
|
||||
<string name="phone_storage">Telefonens lagringsutrymme</string>
|
||||
<string name="phone_storage_hidden">Telefonens lagringsutrymme (inte synligt för andra appar)</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="edit_contact">Redigera kontakt</string>
|
||||
|
@ -7,6 +7,7 @@
|
||||
<string name="phone_storage">手機空間</string>
|
||||
<string name="phone_storage_hidden">手機空間 (其他程式不可見)</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="edit_contact">編輯聯絡人</string>
|
||||
|
@ -7,6 +7,7 @@
|
||||
<string name="phone_storage">Phone storage</string>
|
||||
<string name="phone_storage_hidden">Phone storage (not visible by other apps)</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="edit_contact">Edit contact</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user