@@ -13,6 +13,7 @@ import android.net.Uri
1313import android.provider.ContactsContract.CommonDataKinds.*
1414import android.widget.ImageView
1515import android.widget.TextView
16+ import androidx.appcompat.content.res.AppCompatResources
1617import com.bumptech.glide.Glide
1718import com.bumptech.glide.load.DataSource
1819import com.bumptech.glide.load.engine.DiskCacheStrategy
@@ -22,15 +23,18 @@ import com.bumptech.glide.request.RequestListener
2223import com.bumptech.glide.request.RequestOptions
2324import com.bumptech.glide.request.target.Target
2425import com.goodwy.commons.dialogs.ConfirmationDialog
26+ import com.goodwy.commons.dialogs.NewAppDialog
2527import com.goodwy.commons.dialogs.RadioGroupDialog
2628import com.goodwy.commons.extensions.*
29+ import com.goodwy.commons.helpers.ContactsHelper
2730import com.goodwy.commons.helpers.SimpleContactsHelper
2831import com.goodwy.commons.helpers.letterBackgroundColors
2932import com.goodwy.commons.models.RadioItem
3033import com.goodwy.contacts.R
3134import com.goodwy.contacts.extensions.shareContacts
32- import com.goodwy.contacts.helpers.ContactsHelper
33- import com.goodwy.contacts.models.Contact
35+ import com.goodwy.commons.models.contacts.Contact
36+ import com.goodwy.commons.models.contacts.ContactRelation
37+ import com.goodwy.contacts.extensions.config
3438
3539abstract class ContactActivity : SimpleActivity () {
3640 protected val PICK_RINGTONE_INTENT_ID = 1500
@@ -124,6 +128,19 @@ abstract class ContactActivity : SimpleActivity() {
124128 shareContacts(arrayListOf (contact))
125129 }
126130
131+ fun trySendSMSRecommendation () {
132+ val simpleSmsMessenger = " com.goodwy.smsmessenger"
133+ val simpleSmsMessengerDebug = " com.goodwy.smsmessenger.debug"
134+ if ((0 .. config.appRecommendationDialogCount).random() == 2 && (! isPackageInstalled(simpleSmsMessenger) && ! isPackageInstalled(simpleSmsMessengerDebug))) {
135+ NewAppDialog (this , simpleSmsMessenger, getString(R .string.recommendation_dialog_messages_g), getString(R .string.right_sms_messenger),
136+ AppCompatResources .getDrawable(this , R .mipmap.ic_sms_messenger)) {
137+ trySendSMS()
138+ }
139+ } else {
140+ trySendSMS()
141+ }
142+ }
143+
127144 fun trySendSMS () {
128145 val numbers = contact!! .phoneNumbers
129146 if (numbers.size == 1 ) {
@@ -176,6 +193,79 @@ abstract class ContactActivity : SimpleActivity() {
176193 }
177194 }
178195
196+ fun getRelationTypeText (type : Int , label : String ): String {
197+ return if (type == BaseTypes .TYPE_CUSTOM ) {
198+ label
199+ } else {
200+ getString(
201+ when (type) {
202+ // Relation.TYPE_CUSTOM -> R.string.custom
203+ Relation .TYPE_ASSISTANT -> R .string.relation_assistant_g
204+ Relation .TYPE_BROTHER -> R .string.relation_brother_g
205+ Relation .TYPE_CHILD -> R .string.relation_child_g
206+ Relation .TYPE_DOMESTIC_PARTNER -> R .string.relation_domestic_partner_g
207+ Relation .TYPE_FATHER -> R .string.relation_father_g
208+ Relation .TYPE_FRIEND -> R .string.relation_friend_g
209+ Relation .TYPE_MANAGER -> R .string.relation_manager_g
210+ Relation .TYPE_MOTHER -> R .string.relation_mother_g
211+ Relation .TYPE_PARENT -> R .string.relation_parent_g
212+ Relation .TYPE_PARTNER -> R .string.relation_partner_g
213+ Relation .TYPE_REFERRED_BY -> R .string.relation_referred_by_g
214+ Relation .TYPE_RELATIVE -> R .string.relation_relative_g
215+ Relation .TYPE_SISTER -> R .string.relation_sister_g
216+ Relation .TYPE_SPOUSE -> R .string.relation_spouse_g
217+
218+ // Relation types defined in vCard 4.0
219+ ContactRelation .TYPE_CONTACT -> R .string.relation_contact_g
220+ ContactRelation .TYPE_ACQUAINTANCE -> R .string.relation_acquaintance_g
221+ // ContactRelation.TYPE_FRIEND -> R.string.relation_friend
222+ ContactRelation .TYPE_MET -> R .string.relation_met_g
223+ ContactRelation .TYPE_CO_WORKER -> R .string.relation_co_worker_g
224+ ContactRelation .TYPE_COLLEAGUE -> R .string.relation_colleague_g
225+ ContactRelation .TYPE_CO_RESIDENT -> R .string.relation_co_resident_g
226+ ContactRelation .TYPE_NEIGHBOR -> R .string.relation_neighbor_g
227+ // ContactRelation.TYPE_CHILD -> R.string.relation_child
228+ // ContactRelation.TYPE_PARENT -> R.string.relation_parent
229+ ContactRelation .TYPE_SIBLING -> R .string.relation_sibling_g
230+ // ContactRelation.TYPE_SPOUSE -> R.string.relation_spouse
231+ ContactRelation .TYPE_KIN -> R .string.relation_kin_g
232+ ContactRelation .TYPE_MUSE -> R .string.relation_muse_g
233+ ContactRelation .TYPE_CRUSH -> R .string.relation_crush_g
234+ ContactRelation .TYPE_DATE -> R .string.relation_date_g
235+ ContactRelation .TYPE_SWEETHEART -> R .string.relation_sweetheart_g
236+ ContactRelation .TYPE_ME -> R .string.relation_me_g
237+ ContactRelation .TYPE_AGENT -> R .string.relation_agent_g
238+ ContactRelation .TYPE_EMERGENCY -> R .string.relation_emergency_g
239+
240+ ContactRelation .TYPE_SUPERIOR -> R .string.relation_superior_g
241+ ContactRelation .TYPE_SUBORDINATE -> R .string.relation_subordinate_g
242+ ContactRelation .TYPE_HUSBAND -> R .string.relation_husband_g
243+ ContactRelation .TYPE_WIFE -> R .string.relation_wife_g
244+ ContactRelation .TYPE_SON -> R .string.relation_son_g
245+ ContactRelation .TYPE_DAUGHTER -> R .string.relation_daughter_g
246+ ContactRelation .TYPE_GRANDPARENT -> R .string.relation_grandparent_g
247+ ContactRelation .TYPE_GRANDFATHER -> R .string.relation_grandfather_g
248+ ContactRelation .TYPE_GRANDMOTHER -> R .string.relation_grandmother_g
249+ ContactRelation .TYPE_GRANDCHILD -> R .string.relation_grandchild_g
250+ ContactRelation .TYPE_GRANDSON -> R .string.relation_grandson_g
251+ ContactRelation .TYPE_GRANDDAUGHTER -> R .string.relation_granddaughter_g
252+ ContactRelation .TYPE_UNCLE -> R .string.relation_uncle_g
253+ ContactRelation .TYPE_AUNT -> R .string.relation_aunt_g
254+ ContactRelation .TYPE_NEPHEW -> R .string.relation_nephew_g
255+ ContactRelation .TYPE_NIECE -> R .string.relation_niece_g
256+ ContactRelation .TYPE_FATHER_IN_LAW -> R .string.relation_father_in_law_g
257+ ContactRelation .TYPE_MOTHER_IN_LAW -> R .string.relation_mother_in_law_g
258+ ContactRelation .TYPE_SON_IN_LAW -> R .string.relation_son_in_law_g
259+ ContactRelation .TYPE_DAUGHTER_IN_LAW -> R .string.relation_daughter_in_law_g
260+ ContactRelation .TYPE_BROTHER_IN_LAW -> R .string.relation_brother_in_law_g
261+ ContactRelation .TYPE_SISTER_IN_LAW -> R .string.relation_sister_in_law_g
262+
263+ else -> R .string.other
264+ }
265+ )
266+ }
267+ }
268+
179269 fun getAddressTypeText (type : Int , label : String ): String {
180270 return if (type == BaseTypes .TYPE_CUSTOM ) {
181271 label
0 commit comments