Skip to content

Commit a035b21

Browse files
committed
fix #137, allow sending SMS and emails to whole groups
1 parent 387030e commit a035b21

File tree

4 files changed

+90
-52
lines changed

4 files changed

+90
-52
lines changed

app/src/main/kotlin/com/simplemobiletools/contacts/activities/GroupContactsActivity.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.simplemobiletools.contacts.activities
22

33
import android.os.Bundle
4+
import android.view.Menu
5+
import android.view.MenuItem
46
import com.simplemobiletools.commons.extensions.*
57
import com.simplemobiletools.contacts.R
68
import com.simplemobiletools.contacts.adapters.ContactsAdapter
@@ -46,6 +48,20 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh
4648
refreshContacts()
4749
}
4850

51+
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
52+
menuInflater.inflate(R.menu.menu_group, menu)
53+
return true
54+
}
55+
56+
override fun onOptionsItemSelected(item: MenuItem): Boolean {
57+
when (item.itemId) {
58+
R.id.send_sms_to_group -> sendSMSToGroup()
59+
R.id.send_email_to_group -> sendEmailToGroup()
60+
else -> return super.onOptionsItemSelected(item)
61+
}
62+
return true
63+
}
64+
4965
private fun fabClicked() {
5066
SelectContactsDialog(this, allContacts, groupContacts) { addedContacts, removedContacts ->
5167
Thread {
@@ -74,6 +90,14 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh
7490
}
7591
}
7692

93+
private fun sendSMSToGroup() {
94+
sendSMSToContacts(groupContacts)
95+
}
96+
97+
private fun sendEmailToGroup() {
98+
sendEmailToContacts(groupContacts)
99+
}
100+
77101
private fun updateContacts(contacts: ArrayList<Contact>) {
78102
val currAdapter = group_contacts_list.adapter
79103
if (currAdapter == null) {

app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt

Lines changed: 11 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.simplemobiletools.contacts.adapters
22

3-
import android.content.Intent
43
import android.graphics.drawable.Drawable
5-
import android.net.Uri
64
import android.view.Menu
75
import android.view.View
86
import android.view.ViewGroup
@@ -17,17 +15,13 @@ import com.simplemobiletools.commons.dialogs.RadioGroupDialog
1715
import com.simplemobiletools.commons.extensions.beVisibleIf
1816
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
1917
import com.simplemobiletools.commons.extensions.isActivityDestroyed
20-
import com.simplemobiletools.commons.extensions.toast
2118
import com.simplemobiletools.commons.models.RadioItem
2219
import com.simplemobiletools.commons.views.FastScroller
2320
import com.simplemobiletools.commons.views.MyRecyclerView
2421
import com.simplemobiletools.contacts.R
2522
import com.simplemobiletools.contacts.activities.SimpleActivity
2623
import com.simplemobiletools.contacts.dialogs.CreateNewGroupDialog
27-
import com.simplemobiletools.contacts.extensions.addContactsToGroup
28-
import com.simplemobiletools.contacts.extensions.config
29-
import com.simplemobiletools.contacts.extensions.editContact
30-
import com.simplemobiletools.contacts.extensions.shareContacts
24+
import com.simplemobiletools.contacts.extensions.*
3125
import com.simplemobiletools.contacts.helpers.*
3226
import com.simplemobiletools.contacts.interfaces.RefreshContactsListener
3327
import com.simplemobiletools.contacts.interfaces.RemoveFromGroupListener
@@ -181,21 +175,13 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
181175
}
182176

183177
private fun addToFavorites() {
184-
val newFavorites = ArrayList<Contact>()
185-
selectedPositions.forEach {
186-
newFavorites.add(contactItems[it])
187-
}
188-
ContactsHelper(activity).addFavorites(newFavorites)
178+
ContactsHelper(activity).addFavorites(getSelectedContacts())
189179
refreshListener?.refreshContacts(FAVORITES_TAB_MASK)
190180
finishActMode()
191181
}
192182

193183
private fun addToGroup() {
194-
val selectedContacts = ArrayList<Contact>()
195-
selectedPositions.forEach {
196-
selectedContacts.add(contactItems[it])
197-
}
198-
184+
val selectedContacts = getSelectedContacts()
199185
val NEW_GROUP_ID = -1
200186
val items = ArrayList<RadioItem>()
201187
ContactsHelper(activity).getStoredGroups().forEach {
@@ -233,46 +219,19 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
233219
}
234220

235221
private fun sendSMSToContacts() {
236-
val numbers = StringBuilder()
237-
selectedPositions.forEach {
238-
val contact = contactItems[it]
239-
contact.phoneNumbers.forEach {
240-
if (it.value.isNotEmpty()) {
241-
numbers.append("${it.value};")
242-
}
243-
}
244-
}
245-
246-
val uriString = "smsto:${numbers.toString().trimEnd(';')}"
247-
Intent(Intent.ACTION_SENDTO, Uri.parse(uriString)).apply {
248-
if (resolveActivity(activity.packageManager) != null) {
249-
activity.startActivity(this)
250-
} else {
251-
activity.toast(R.string.no_app_found)
252-
}
253-
}
222+
activity.sendSMSToContacts(getSelectedContacts())
254223
}
255224

256225
private fun sendEmailToContacts() {
257-
val emails = ArrayList<String>()
258-
selectedPositions.forEach {
259-
val contact = contactItems[it]
260-
contact.emails.forEach {
261-
if (it.value.isNotEmpty()) {
262-
emails.add(it.value)
263-
}
264-
}
265-
}
226+
activity.sendEmailToContacts(getSelectedContacts())
227+
}
266228

267-
Intent(Intent.ACTION_SEND_MULTIPLE).apply {
268-
type = "message/rfc822"
269-
putExtra(Intent.EXTRA_EMAIL, emails.toTypedArray())
270-
if (resolveActivity(activity.packageManager) != null) {
271-
activity.startActivity(this)
272-
} else {
273-
activity.toast(R.string.no_app_found)
274-
}
229+
private fun getSelectedContacts(): ArrayList<Contact> {
230+
val contacts = ArrayList<Contact>()
231+
selectedPositions.forEach {
232+
contacts.add(contactItems[it])
275233
}
234+
return contacts
276235
}
277236

278237
override fun onViewRecycled(holder: ViewHolder) {

app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,47 @@ fun BaseSimpleActivity.shareContacts(contacts: ArrayList<Contact>) {
9999
}
100100
}
101101

102+
fun BaseSimpleActivity.sendSMSToContacts(contacts: ArrayList<Contact>) {
103+
val numbers = StringBuilder()
104+
contacts.forEach {
105+
it.phoneNumbers.forEach {
106+
if (it.value.isNotEmpty()) {
107+
numbers.append("${it.value};")
108+
}
109+
}
110+
111+
val uriString = "smsto:${numbers.toString().trimEnd(';')}"
112+
Intent(Intent.ACTION_SENDTO, Uri.parse(uriString)).apply {
113+
if (resolveActivity(packageManager) != null) {
114+
startActivity(this)
115+
} else {
116+
toast(R.string.no_app_found)
117+
}
118+
}
119+
}
120+
}
121+
122+
fun BaseSimpleActivity.sendEmailToContacts(contacts: ArrayList<Contact>) {
123+
val emails = ArrayList<String>()
124+
contacts.forEach {
125+
it.emails.forEach {
126+
if (it.value.isNotEmpty()) {
127+
emails.add(it.value)
128+
}
129+
}
130+
}
131+
132+
Intent(Intent.ACTION_SEND_MULTIPLE).apply {
133+
type = "message/rfc822"
134+
putExtra(Intent.EXTRA_EMAIL, emails.toTypedArray())
135+
if (resolveActivity(packageManager) != null) {
136+
startActivity(this)
137+
} else {
138+
toast(R.string.no_app_found)
139+
}
140+
}
141+
}
142+
102143
fun BaseSimpleActivity.getTempFile(): File? {
103144
val folder = File(cacheDir, "contacts")
104145
if (!folder.exists()) {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
<item
5+
android:id="@+id/send_sms_to_group"
6+
android:icon="@drawable/ic_sms"
7+
android:title="@string/send_sms_to_group"
8+
app:showAsAction="ifRoom"/>
9+
<item
10+
android:id="@+id/send_email_to_group"
11+
android:icon="@drawable/ic_email"
12+
android:title="@string/send_email_to_group"
13+
app:showAsAction="ifRoom"/>
14+
</menu>

0 commit comments

Comments
 (0)