From f934cfc95c8707b01bc2d514f10e544304569932 Mon Sep 17 00:00:00 2001 From: unknowtech <41585567+unknowtech@users.noreply.github.com> Date: Thu, 20 Sep 2018 00:59:13 +0200 Subject: [PATCH 01/64] Updated fr (French) translation Commit made via Stringlate --- app/src/debug/res/values-fr/strings.xml | 4 ++++ app/src/main/res/values-fr/strings.xml | 26 +++++++++---------------- 2 files changed, 13 insertions(+), 17 deletions(-) create mode 100644 app/src/debug/res/values-fr/strings.xml diff --git a/app/src/debug/res/values-fr/strings.xml b/app/src/debug/res/values-fr/strings.xml new file mode 100644 index 00000000..8acf9edd --- /dev/null +++ b/app/src/debug/res/values-fr/strings.xml @@ -0,0 +1,4 @@ + + + Contacts + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 41cbcd62..e65a3955 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -14,7 +14,7 @@ Envoyer un SMS au groupe Envoyer un e-mail au groupe Call %s - Request the required permissions + Demander les autorisations requises Nouveau contact Modifier contact @@ -23,7 +23,7 @@ Prénom Deuxième prénom Nom - Nickname + Surnom Pas de groupe @@ -49,12 +49,12 @@ Appeler le contact Voir les détails du contact Configurer l\'affichage des champs des contacts - Try filtering out duplicate contacts - Manage shown tabs + Essayez de filtrer les contacts en double + Gérer les onglets affichés Contacts Favorites - Recent calls - Show a call confirmation dialog before initiating a call + Appels récents + Afficher une boîte de dialogue de confirmation d\'appel avant de lancer un appel E-mail @@ -80,7 +80,7 @@ Ajouter des favoris Ajouter aux favoris Retirer des favoris - You must be at the Edit screen to modify a contact + Vous devez être sur l\'écran Modifier pour modifier un contact Rechercher des contacts @@ -108,7 +108,7 @@ Sites web Groupe Source du contact - Instant messaging (IM) + Messagerie instantanée (MI) Je veux changer quelles champs sont visibles. Est-ce que je peux ? @@ -117,15 +117,7 @@ Une appli de contacts pour gérer vos contacts sans pubs. - - Une appli simple pour créer et gérer vos contacts depuis n\'importe quelle source. Les contacts peuvent être stockés sur votre appareil mais aussi synchronisés via Google ou d\'autres comptes. Vous pouvez afficher vos contacts favoris dans une liste séparée. - - Vous pouvez l\'utiliser pour gérer les e-mail et événements de vos contacts. Elle permet de trier/filter via de multiples paramètres, et même afficher le surnom en premier. - - Aucune publicité ni de permission inutile. Elle est entièrement open source et vous permet de personnaliser les couleurs. - - Cette application fait parti d\'un groupe d\'applications. Vous pouvez trouver le reste des applis sur https://www.simplemobiletools.com - + Une appli simple pour créer et gérer vos contacts depuis n\'importe quelle source. Les contacts peuvent être stockés sur votre appareil mais aussi synchronisés via Google ou d\'autres comptes. Vous pouvez afficher vos contacts favoris dans une liste séparée. Vous pouvez l\'utiliser pour gérer les e-mail et événements de vos contacts. Elle permet de trier/filter via de multiples paramètres, et même afficher le surnom en premier. Aucune publicité ni de permission inutile. Elle est entièrement open source et vous permet de personnaliser les couleurs. Cette application fait parti d\'un groupe d\'applications. Vous pouvez trouver le reste des applis sur https://www.simplemobiletools.com Une appli de contacts pour gérer vos contacts sans pubs. - Une appli simple pour créer et gérer vos contacts depuis n\'importe quelle source. Les contacts peuvent être stockés sur votre appareil mais aussi synchronisés via Google ou d\'autres comptes. Vous pouvez afficher vos contacts favoris dans une liste séparée. Vous pouvez l\'utiliser pour gérer les e-mail et événements de vos contacts. Elle permet de trier/filter via de multiples paramètres, et même afficher le surnom en premier. Aucune publicité ni de permission inutile. Elle est entièrement open source et vous permet de personnaliser les couleurs. Cette application fait parti d\'un groupe d\'applications. Vous pouvez trouver le reste des applis sur https://www.simplemobiletools.com + + Une appli simple pour créer et gérer vos contacts depuis n\'importe quelle source. Les contacts peuvent être stockés sur votre appareil mais aussi synchronisés via Google ou d\'autres comptes. Vous pouvez afficher vos contacts favoris dans une liste séparée. + + Vous pouvez l\'utiliser pour gérer les e-mail et événements de vos contacts. Elle permet de trier/filter via de multiples paramètres, et même afficher le surnom en premier. + + Aucune publicité ni de permission inutile. Elle est entièrement open source et vous permet de personnaliser les couleurs. + + Cette application fait parti d\'un groupe d\'applications. Vous pouvez trouver le reste des applis sur https://www.simplemobiletools.com + + Dialpad + Göstərmək üçün sahəni seç Ön şəkilçi diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 849c7b58..31d124e0 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -95,6 +95,9 @@ Kontaktquellen einschließen Dateiname (ohne .vcf) + + Dialpad + Sichtbare Felder auswählen Titel diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 6b962c3a..4a55f0c1 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -95,6 +95,9 @@ Συμπερίληψη πηγών επαφών Όνομα αρχείου (χωρίς .vcf) + + Dialpad + Επιλογή εμφάνισης πεδίων Πρόθεμα diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 352508a0..acbdf9ac 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -95,6 +95,9 @@ Inclure les sources du contact Nom du fichier (sans .vcf) + + Dialpad + Sélectionner les champs à afficher Préfixe diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index d788a73d..963f9a5d 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -95,6 +95,9 @@ Uključi izvore kontakta Naziv datoteke (bez .vcf) + + Dialpad + Odaberi polja za prikaz Prefiks diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 2eec9101..e044a4d8 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -95,6 +95,9 @@ Include contact sources ファイル名 (.vcfを含めない) + + Dialpad + 表示する項目を選択 敬称(名前の前) diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index f6fdee3a..41017aea 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -95,6 +95,9 @@ 가져오기 대상 파일이름 (.vcf 확장자 생략) + + Dialpad + Select fields to show Prefix diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 7d211427..baa7e996 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -95,6 +95,9 @@ Įtraukti kontaktų šaltinius Bylos vardas (be .vcf) + + Dialpad + Pasirinkti rodomus laukelius Priešdėlis diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index b1a2e6c0..471022e4 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -95,6 +95,9 @@ Incluir fontes dos contactos Nome do ficheiro (sem .vcf) + + Dialpad + Selecione os campos a mostrar Prefixo diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index e26bfa89..98f52187 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -95,6 +95,9 @@ Включить источники контактов Имя файла (без .vcf) + + Dialpad + Выберите отображаемые поля Префикс diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index d4a23b33..0c8c7e6d 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -95,6 +95,9 @@ Zahrnúť zdroje kontaktov Názov súboru (bez .vcf) + + Číselník + Zvoľte polia na zobrazenie Titul pred menom diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 480be2fc..fe7d0145 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -95,6 +95,9 @@ Inkludera kontaktkällor Filnamn (utan .vcf) + + Dialpad + Välj vilka fält som ska visas Prefix diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index ba9cfd93..a6d28640 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -95,6 +95,9 @@ Kişi kaynaklarını dahil et Dosya adı (.vcf olmadan) + + Dialpad + Görüntülenecek alanları seç Önek diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 362ba455..448f3713 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -95,6 +95,9 @@ 包含聯絡人來源 檔案名稱 (不含.vcf) + + Dialpad + 選擇要顯示的欄位 前缀 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index ae6e5ebe..3283fd64 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -4,5 +4,5 @@ 45dp 40dp 52dp - 60dp + 60dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eb065320..f63785f1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -95,6 +95,9 @@ Include contact sources Filename (without .vcf) + + Dialpad + Select fields to show Prefix From 872a7f19d4c14c0bc80fcf476aaa0b4488500883 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 22 Sep 2018 23:26:33 +0200 Subject: [PATCH 07/64] adding some elevation to the dialpad activity button --- app/src/main/res/layout/activity_main.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d3ba2743..948c5fa9 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -30,6 +30,7 @@ android:layout_centerHorizontal="true" android:layout_marginBottom="@dimen/activity_margin" android:background="@drawable/circle_background" + android:elevation="@dimen/medium_margin" android:padding="@dimen/normal_margin" android:src="@drawable/ic_phone_big"/> From 9ab4f3ea7f59198d267ae843f6d91b7cc4edf5fb Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 22 Sep 2018 23:35:34 +0200 Subject: [PATCH 08/64] adding some dialpad numbers and symbols --- .../contacts/activities/DialpadActivity.kt | 19 +++ app/src/main/res/layout/activity_dialpad.xml | 147 +++++++++++++++++- app/src/main/res/values-v21/styles.xml | 7 + app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/styles.xml | 11 ++ 5 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/values-v21/styles.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index d0952a48..8b950be5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -1,11 +1,30 @@ package com.simplemobiletools.contacts.activities import android.os.Bundle +import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.contacts.R +import kotlinx.android.synthetic.main.activity_dialpad.* class DialpadActivity : SimpleActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_dialpad) + dialpad_0.setOnClickListener { } + dialpad_1.setOnClickListener { } + dialpad_2.setOnClickListener { } + dialpad_3.setOnClickListener { } + dialpad_4.setOnClickListener { } + dialpad_5.setOnClickListener { } + dialpad_6.setOnClickListener { } + dialpad_7.setOnClickListener { } + dialpad_8.setOnClickListener { } + dialpad_9.setOnClickListener { } + dialpad_asterisk.setOnClickListener { } + dialpad_hashtag.setOnClickListener { } + } + + override fun onResume() { + super.onResume() + updateTextColors(dialpad_wrapper) } } diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index 561aa9ea..0b653a7e 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -1,8 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml new file mode 100644 index 00000000..afdc4448 --- /dev/null +++ b/app/src/main/res/values-v21/styles.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 3283fd64..cfa2f5db 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -5,4 +5,5 @@ 40dp 52dp 60dp + 44sp diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0be50415..dd117a86 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -2,4 +2,15 @@ + + + From 96c6e8cd5a3edfc026ca2a12e142770e584db140 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Sep 2018 10:23:23 +0200 Subject: [PATCH 09/64] add a dialpad input for showing dialed chars --- .../contacts/activities/DialpadActivity.kt | 29 ++++++++++-------- .../main/res/drawable-hdpi/ic_clear_char.png | Bin 0 -> 437 bytes .../main/res/drawable-xhdpi/ic_clear_char.png | Bin 0 -> 524 bytes .../res/drawable-xxhdpi/ic_clear_char.png | Bin 0 -> 732 bytes .../res/drawable-xxxhdpi/ic_clear_char.png | Bin 0 -> 919 bytes app/src/main/res/layout/activity_dialpad.xml | 10 ++++++ app/src/main/res/values/dimens.xml | 1 + 7 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_clear_char.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_clear_char.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_clear_char.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_clear_char.png diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 8b950be5..0c5ad59a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -9,22 +9,27 @@ class DialpadActivity : SimpleActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_dialpad) - dialpad_0.setOnClickListener { } - dialpad_1.setOnClickListener { } - dialpad_2.setOnClickListener { } - dialpad_3.setOnClickListener { } - dialpad_4.setOnClickListener { } - dialpad_5.setOnClickListener { } - dialpad_6.setOnClickListener { } - dialpad_7.setOnClickListener { } - dialpad_8.setOnClickListener { } - dialpad_9.setOnClickListener { } - dialpad_asterisk.setOnClickListener { } - dialpad_hashtag.setOnClickListener { } + + dialpad_0.setOnClickListener { dialpadPressed("0") } + dialpad_1.setOnClickListener { dialpadPressed("1") } + dialpad_2.setOnClickListener { dialpadPressed("2") } + dialpad_3.setOnClickListener { dialpadPressed("3") } + dialpad_4.setOnClickListener { dialpadPressed("4") } + dialpad_5.setOnClickListener { dialpadPressed("5") } + dialpad_6.setOnClickListener { dialpadPressed("6") } + dialpad_7.setOnClickListener { dialpadPressed("7") } + dialpad_8.setOnClickListener { dialpadPressed("8") } + dialpad_9.setOnClickListener { dialpadPressed("9") } + dialpad_asterisk.setOnClickListener { dialpadPressed("*") } + dialpad_hashtag.setOnClickListener { dialpadPressed("#") } } override fun onResume() { super.onResume() updateTextColors(dialpad_wrapper) } + + private fun dialpadPressed(char: String) { + dialpad_input.append(char) + } } diff --git a/app/src/main/res/drawable-hdpi/ic_clear_char.png b/app/src/main/res/drawable-hdpi/ic_clear_char.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd9c535b048107eabc5b93effa7d158e7362e4a GIT binary patch literal 437 zcmV;m0ZRUfP)!686nZdW;+rZ8{$uZ&eB*A8!7FOps}Q&g`NasNa#)W zSg@`;J9qXmY{{8wZ|;7%uek#plqZ!o(8CSRN-@?Lsc*x|XO`ERjWp(#ZklPSv5p0f zok|pX+UJua21s&v%{>&S##1a&b8r8DNRI+$0EM<;ZNtNZg~z54?K?pb3^Z#HSwD5> zC@pTq#5>VX9RqWhcHMzqtu@q9CO8S=WoA46Vz`enf#e3BaFf$npNJy2Vn}e5J0c;k z;->gECl6tPAvsDm*w*-hsl~?2= f7hZ%X`yfNVS0RAJl1zV}00000NkvXXu0mjfr;x23 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_clear_char.png b/app/src/main/res/drawable-xhdpi/ic_clear_char.png new file mode 100644 index 0000000000000000000000000000000000000000..b51790d1f9b592c43bb996243da264b9b707eda9 GIT binary patch literal 524 zcmV+n0`vWeP)o*1?rG25bLLhgM~)SN9j7f7jAUr&+&(kf+~-^ z$hyDX43s<9KFccvoXMWwek?4=^DGs=1i^wl72l3Z5OA6z&sZALHmbs{EBAd~iCW&lOVU6po zVK+ICjRXg&aUD9uwMC}%11BOx*tHxuu}t3viV;UCu8n9ivh2YMraA!B$*${nGW!3~ zvG6XJ9zUQTXg;bXkKPEL^!d8w=?A3GrYXW}wD`$Xe84@m{AVe0&Ph|K~!ko z?b$y|96=Zc@Mll%Jdj*rAwm2Geu+bJa4`l#igZFsAs@rWRxJb@|AY_`Ayv$2V(bjq zi$w?|q&iRwK{&K{Qrwwy+1=Uqo!y(gka;aV-QUeKv-8d_;LDdUU%s@(fUmgE3l6e= z@C`?0oGQQ2O`UU60$QWH`o>@+g)@UyhqGe}zl|V{;TVscPT0pK39WA2gbOL z+^^|G5NkMhK0W}FBU>(llQ=?riv414!$Cq^-!V}PC_b{)qByZ5R9sxKBg7gug@5}Q zbGQ?I@(y!2u-)6=3iq8umI*d^oBGLHHV9VOlKk69Tq+I(q%H>pD?CzyIL@|`lSb-u zK(Lxl3WMGW$LINji)Ve7T;3UcI)b3;hLC{C5~`q? zvLpjAFaQG*C<_vZDk*d!4}+n!`SRWQ9KSaAbj?-I&-dDX@3}MJ*)7 z>f&%g`NzxR>;nZ{+o5>83TjvaGlcx zeKxd5Hs}+a=DO~{VfHT>*`FZ@1BB2%2+rst3@IOe*S5d0X zM2JvV8d=|F9|Ws92!rfjG$^0B9upu~Qb4G)G+^Xh3;?6@A!{reAPlx&WGxOrV7NZj zN3dYO4FU|gvgQwP-n;CU-qO>}9P-SANWtnjO) zxM}pwY1RH#fPnTi9AU+-{Y?O#vmE*jMwsAEyY~M8SS+6?g#JH2j{Uy?0h5plf=TP$ z3&699rN{k^nq~W>$1*;koY;!5iR#dGmXB3T#a~k1PtZOvg;n^;*#`>vB{ou1%Y`yu zLf$tlq+%cFplX<4^sND&B=QVuL_C9RJw^eR6M2#OV|$SSJTskcV)a_MEp!4tDrUsqL%b9T@LcEk z{X6UyX1|L=$|=3q!VPiP|AF^OFU7t~Nz(lU1)#_4F^_}TQkPG|kAU<)!`g>=oW>;f tr&Km;c!dCuHH*i|$;rvd$;l~~`VB=SE5R1O-*Er{002ovPDHLkV1iG1oTUH& literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index 0b653a7e..80e2955e 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -16,6 +16,16 @@ android:layout_marginLeft="@dimen/activity_margin" android:layout_marginRight="@dimen/activity_margin"> + + 52dp 60dp 44sp + 40sp From 9b86c694ff82d88036deba374a208861788f7874 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Sep 2018 10:58:51 +0200 Subject: [PATCH 10/64] implement char clearing at the dialpad --- .../contacts/activities/DialpadActivity.kt | 19 +++++++++++++++++++ app/src/main/res/layout/activity_dialpad.xml | 18 ++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 0c5ad59a..5f8190dd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -1,8 +1,11 @@ package com.simplemobiletools.contacts.activities import android.os.Bundle +import android.text.SpannableStringBuilder +import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.contacts.R +import com.simplemobiletools.contacts.extensions.config import kotlinx.android.synthetic.main.activity_dialpad.* class DialpadActivity : SimpleActivity() { @@ -22,14 +25,30 @@ class DialpadActivity : SimpleActivity() { dialpad_9.setOnClickListener { dialpadPressed("9") } dialpad_asterisk.setOnClickListener { dialpadPressed("*") } dialpad_hashtag.setOnClickListener { dialpadPressed("#") } + dialpad_clear_char.setOnClickListener { clearChar() } + dialpad_clear_char.setOnLongClickListener { clearInput(); true } } override fun onResume() { super.onResume() updateTextColors(dialpad_wrapper) + dialpad_clear_char.applyColorFilter(config.textColor) } private fun dialpadPressed(char: String) { dialpad_input.append(char) } + + private fun clearChar() { + val curPostion = dialpad_input.selectionEnd + val reducedPos = Math.max(curPostion - 1, 0) + val selectedString = SpannableStringBuilder(dialpad_input.text) + selectedString.replace(reducedPos, curPostion, "") + dialpad_input.text = selectedString + dialpad_input.setSelection(reducedPos) + } + + private fun clearInput() { + dialpad_input.setText("") + } } diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index 80e2955e..5a9f8f5d 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -18,13 +18,27 @@ + app:layout_constraintBottom_toTopOf="@+id/dialpad_2" + app:layout_constraintEnd_toStartOf="@+id/dialpad_clear_char" + app:layout_constraintStart_toStartOf="parent"/> + + Date: Sun, 23 Sep 2018 20:13:12 +0200 Subject: [PATCH 11/64] dispatch fake key events to dialpad input --- .../contacts/activities/DialpadActivity.kt | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 5f8190dd..3e4bc566 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -1,7 +1,7 @@ package com.simplemobiletools.contacts.activities import android.os.Bundle -import android.text.SpannableStringBuilder +import android.view.KeyEvent import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.contacts.R @@ -36,19 +36,31 @@ class DialpadActivity : SimpleActivity() { } private fun dialpadPressed(char: String) { - dialpad_input.append(char) + dialpad_input.dispatchKeyEvent(getKeyEvent(getCharKeyCode(char))) } private fun clearChar() { - val curPostion = dialpad_input.selectionEnd - val reducedPos = Math.max(curPostion - 1, 0) - val selectedString = SpannableStringBuilder(dialpad_input.text) - selectedString.replace(reducedPos, curPostion, "") - dialpad_input.text = selectedString - dialpad_input.setSelection(reducedPos) + dialpad_input.dispatchKeyEvent(getKeyEvent(KeyEvent.KEYCODE_DEL)) } private fun clearInput() { dialpad_input.setText("") } + + private fun getKeyEvent(keyCode: Int) = KeyEvent(0, 0, KeyEvent.ACTION_DOWN, keyCode, 0) + + private fun getCharKeyCode(char: String) = when (char) { + "0" -> KeyEvent.KEYCODE_0 + "1" -> KeyEvent.KEYCODE_1 + "2" -> KeyEvent.KEYCODE_2 + "3" -> KeyEvent.KEYCODE_3 + "4" -> KeyEvent.KEYCODE_4 + "5" -> KeyEvent.KEYCODE_5 + "6" -> KeyEvent.KEYCODE_6 + "7" -> KeyEvent.KEYCODE_7 + "8" -> KeyEvent.KEYCODE_8 + "9" -> KeyEvent.KEYCODE_9 + "*" -> KeyEvent.KEYCODE_STAR + else -> KeyEvent.KEYCODE_POUND + } } From 5e66eee9533e3283c1e0adc6d09bd032554d02db Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 23 Sep 2018 20:33:07 +0200 Subject: [PATCH 12/64] hide the dialpad input cursor by default --- app/src/main/res/layout/activity_dialpad.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index 5a9f8f5d..04bb29b0 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -14,7 +14,8 @@ android:layout_alignParentBottom="true" android:layout_marginBottom="@dimen/activity_margin" android:layout_marginLeft="@dimen/activity_margin" - android:layout_marginRight="@dimen/activity_margin"> + android:layout_marginRight="@dimen/activity_margin" + android:focusableInTouchMode="true"> Date: Sun, 23 Sep 2018 20:41:04 +0200 Subject: [PATCH 13/64] avoid showing the soft keyboard at clicking on the dialpad input --- .../contacts/activities/DialpadActivity.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 3e4bc566..bd3ef3b7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -1,9 +1,13 @@ package com.simplemobiletools.contacts.activities +import android.annotation.TargetApi +import android.os.Build import android.os.Bundle +import android.text.InputType import android.view.KeyEvent import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.updateTextColors +import com.simplemobiletools.commons.helpers.isLollipopPlus import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.extensions.config import kotlinx.android.synthetic.main.activity_dialpad.* @@ -27,6 +31,7 @@ class DialpadActivity : SimpleActivity() { dialpad_hashtag.setOnClickListener { dialpadPressed("#") } dialpad_clear_char.setOnClickListener { clearChar() } dialpad_clear_char.setOnLongClickListener { clearInput(); true } + disableKeyboardPopping() } override fun onResume() { @@ -63,4 +68,13 @@ class DialpadActivity : SimpleActivity() { "*" -> KeyEvent.KEYCODE_STAR else -> KeyEvent.KEYCODE_POUND } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + private fun disableKeyboardPopping() { + if (isLollipopPlus()) { + dialpad_input.showSoftInputOnFocus = false + } else { + dialpad_input.inputType = InputType.TYPE_NULL + } + } } From 6159e551838059fdbfca674a94264099e0a0c815 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 24 Sep 2018 12:05:50 +0200 Subject: [PATCH 14/64] add a text change listener to the dialpad input value --- .../contacts/activities/DialpadActivity.kt | 6 ++++++ .../contacts/extensions/EditText.kt | 13 +++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 app/src/main/kotlin/com/simplemobiletools/contacts/extensions/EditText.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index bd3ef3b7..f9fa6856 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -9,6 +9,7 @@ import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.commons.helpers.isLollipopPlus import com.simplemobiletools.contacts.R +import com.simplemobiletools.contacts.extensions.afterTextChanged import com.simplemobiletools.contacts.extensions.config import kotlinx.android.synthetic.main.activity_dialpad.* @@ -31,6 +32,7 @@ class DialpadActivity : SimpleActivity() { dialpad_hashtag.setOnClickListener { dialpadPressed("#") } dialpad_clear_char.setOnClickListener { clearChar() } dialpad_clear_char.setOnLongClickListener { clearInput(); true } + dialpad_input.afterTextChanged { dialpadValueChanged(it) } disableKeyboardPopping() } @@ -77,4 +79,8 @@ class DialpadActivity : SimpleActivity() { dialpad_input.inputType = InputType.TYPE_NULL } } + + private fun dialpadValueChanged(text: String) { + + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/EditText.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/EditText.kt new file mode 100644 index 00000000..65f826c2 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/EditText.kt @@ -0,0 +1,13 @@ +package com.simplemobiletools.contacts.extensions + +import android.text.Editable +import android.text.TextWatcher +import android.widget.EditText + +fun EditText.afterTextChanged(callback: (String) -> Unit) = addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + + override fun afterTextChanged(text: Editable) = callback(text.toString()) +}) From 2beb5eb3a692e686e2707ec3841a9c9f05bc0a81 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 24 Sep 2018 14:13:27 +0200 Subject: [PATCH 15/64] filter contacts based on the dialpad input --- .../contacts/activities/DialpadActivity.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index f9fa6856..8c6840f3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -11,9 +11,13 @@ import com.simplemobiletools.commons.helpers.isLollipopPlus import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.extensions.afterTextChanged import com.simplemobiletools.contacts.extensions.config +import com.simplemobiletools.contacts.helpers.ContactsHelper +import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN +import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.activity_dialpad.* class DialpadActivity : SimpleActivity() { + var contacts = ArrayList() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_dialpad) @@ -33,6 +37,7 @@ class DialpadActivity : SimpleActivity() { dialpad_clear_char.setOnClickListener { clearChar() } dialpad_clear_char.setOnLongClickListener { clearInput(); true } dialpad_input.afterTextChanged { dialpadValueChanged(it) } + ContactsHelper(this).getContacts { gotContacts(it) } disableKeyboardPopping() } @@ -80,7 +85,15 @@ class DialpadActivity : SimpleActivity() { } } - private fun dialpadValueChanged(text: String) { + private fun gotContacts(newContacts: ArrayList) { + contacts = newContacts + Contact.sorting = config.sorting + Contact.startWithSurname = config.startNameWithSurname + contacts.sort() + } + private fun dialpadValueChanged(text: String) { + val numericOnly = text.replace(PHONE_NUMBER_PATTERN.toRegex(), "") + val filtered = contacts.filter { it.cleanPhoneNumbers.any { it.value.contains(text) || it.value.contains(numericOnly) } } } } From 2aadd93fa6156094cf9a67bd16d3606f63583d01 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 24 Sep 2018 14:15:08 +0200 Subject: [PATCH 16/64] check contact real phone numbers too, not just the cleared ones --- .../simplemobiletools/contacts/activities/DialpadActivity.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 8c6840f3..fcb044b4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -94,6 +94,9 @@ class DialpadActivity : SimpleActivity() { private fun dialpadValueChanged(text: String) { val numericOnly = text.replace(PHONE_NUMBER_PATTERN.toRegex(), "") - val filtered = contacts.filter { it.cleanPhoneNumbers.any { it.value.contains(text) || it.value.contains(numericOnly) } } + val filtered = contacts.filter { + it.phoneNumbers.any { it.value.contains(text) || it.value.contains(numericOnly) } || + it.cleanPhoneNumbers.any { it.value.contains(text) || it.value.contains(numericOnly) } + } } } From 6718fb9a20594ab2c01175b82e2af2260ef15a90 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 24 Sep 2018 15:12:31 +0200 Subject: [PATCH 17/64] show the filtered contacts on a list above dialpad --- .../contacts/activities/DialpadActivity.kt | 20 +++++++++- .../contacts/helpers/Constants.kt | 1 + app/src/main/res/layout/activity_dialpad.xml | 38 ++++++++++++++++++- 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index fcb044b4..d20d8aa5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -9,9 +9,12 @@ import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.commons.helpers.isLollipopPlus import com.simplemobiletools.contacts.R +import com.simplemobiletools.contacts.adapters.ContactsAdapter import com.simplemobiletools.contacts.extensions.afterTextChanged import com.simplemobiletools.contacts.extensions.config +import com.simplemobiletools.contacts.extensions.contactClicked import com.simplemobiletools.contacts.helpers.ContactsHelper +import com.simplemobiletools.contacts.helpers.LOCATION_DIALPAD import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.activity_dialpad.* @@ -95,8 +98,21 @@ class DialpadActivity : SimpleActivity() { private fun dialpadValueChanged(text: String) { val numericOnly = text.replace(PHONE_NUMBER_PATTERN.toRegex(), "") val filtered = contacts.filter { - it.phoneNumbers.any { it.value.contains(text) || it.value.contains(numericOnly) } || - it.cleanPhoneNumbers.any { it.value.contains(text) || it.value.contains(numericOnly) } + it.phoneNumbers.any { (text.isNotEmpty() && it.value.contains(text)) || (numericOnly.isNotEmpty() && it.value.contains(numericOnly)) } || + it.cleanPhoneNumbers.any { (text.isNotEmpty() && it.value.contains(text)) || (numericOnly.isNotEmpty() && it.value.contains(numericOnly)) } + } as ArrayList + + ContactsAdapter(this, filtered, null, LOCATION_DIALPAD, null, dialpad_list, dialpad_fastscroller) { + contactClicked(it as Contact) + }.apply { + addVerticalDividers(true) + dialpad_list.adapter = this + } + + dialpad_fastscroller.setScrollToY(0) + dialpad_fastscroller.setViews(dialpad_list) { + val item = (dialpad_list.adapter as ContactsAdapter).contactItems.getOrNull(it) + dialpad_fastscroller.updateBubbleText(item?.getBubbleText() ?: "") } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt index 34cf1ca8..d3b7fb06 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt @@ -33,6 +33,7 @@ const val LOCATION_FAVORITES_TAB = 1 const val LOCATION_RECENTS_TAB = 2 const val LOCATION_GROUPS_TAB = 3 const val LOCATION_GROUP_CONTACTS = 4 +const val LOCATION_DIALPAD = 5 const val CONTACTS_TAB_MASK = 1 const val FAVORITES_TAB_MASK = 2 diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index 04bb29b0..5a8704f6 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -13,14 +13,39 @@ android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_marginBottom="@dimen/activity_margin" - android:layout_marginLeft="@dimen/activity_margin" - android:layout_marginRight="@dimen/activity_margin" android:focusableInTouchMode="true"> + + + + + + + + Date: Mon, 24 Sep 2018 15:17:15 +0200 Subject: [PATCH 18/64] try calling contact directly from the dialpad screen, do not trigger edit/view --- .../contacts/activities/DialpadActivity.kt | 4 ++-- .../contacts/extensions/Activity.kt | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index d20d8aa5..4d19b26a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -11,8 +11,8 @@ import com.simplemobiletools.commons.helpers.isLollipopPlus import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.adapters.ContactsAdapter import com.simplemobiletools.contacts.extensions.afterTextChanged +import com.simplemobiletools.contacts.extensions.callContact import com.simplemobiletools.contacts.extensions.config -import com.simplemobiletools.contacts.extensions.contactClicked import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.helpers.LOCATION_DIALPAD import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN @@ -103,7 +103,7 @@ class DialpadActivity : SimpleActivity() { } as ArrayList ContactsAdapter(this, filtered, null, LOCATION_DIALPAD, null, dialpad_list, dialpad_fastscroller) { - contactClicked(it as Contact) + callContact(it as Contact) }.apply { addVerticalDividers(true) dialpad_list.adapter = this diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt index 41397cfc..b2adcb75 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt @@ -203,14 +203,16 @@ fun Activity.getVisibleContactSources(): ArrayList { fun SimpleActivity.contactClicked(contact: Contact) { when (config.onContactClick) { - ON_CLICK_CALL_CONTACT -> { - if (contact.phoneNumbers.isNotEmpty()) { - tryStartCall(contact) - } else { - toast(R.string.no_phone_number_found) - } - } + ON_CLICK_CALL_CONTACT -> callContact(contact) ON_CLICK_VIEW_CONTACT -> viewContact(contact) ON_CLICK_EDIT_CONTACT -> editContact(contact) } } + +fun SimpleActivity.callContact(contact: Contact) { + if (contact.phoneNumbers.isNotEmpty()) { + tryStartCall(contact) + } else { + toast(R.string.no_phone_number_found) + } +} From b0c1f4e30d9cf6902f65290330ffc9a02007ae58 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 25 Sep 2018 13:25:07 +0200 Subject: [PATCH 19/64] updating some things related to Android Studio 3.2 --- app/build.gradle | 2 +- build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 98d5b869..5f97607f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 28 - buildToolsVersion "28.0.2" + buildToolsVersion "28.0.3" defaultConfig { applicationId "com.simplemobiletools.contacts" diff --git a/build.gradle b/build.gradle index 2d064442..76ac6173 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.70' + ext.kotlin_version = '1.2.71' repositories { google() @@ -9,7 +9,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:3.2.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7d73f3c2..503fd67b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Dec 10 10:08:39 CET 2017 +#Tue Sep 25 13:09:34 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip From dac59dabcf2095e34930651a19c00acefd4c4ac0 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 25 Sep 2018 13:34:31 +0200 Subject: [PATCH 20/64] removing a redundant wrapper of the dialpad --- .../contacts/activities/DialpadActivity.kt | 2 +- app/src/main/res/layout/activity_dialpad.xml | 368 +++++++++--------- 2 files changed, 182 insertions(+), 188 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 4d19b26a..00c3c828 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -46,7 +46,7 @@ class DialpadActivity : SimpleActivity() { override fun onResume() { super.onResume() - updateTextColors(dialpad_wrapper) + updateTextColors(dialpad_holder) dialpad_clear_char.applyColorFilter(config.textColor) } diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index 5a8704f6..a9b6535a 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -1,212 +1,206 @@ - + android:layout_height="match_parent" + android:layout_alignParentBottom="true" + android:layout_marginBottom="@dimen/activity_margin" + android:focusableInTouchMode="true"> - + android:layout_height="0dp" + android:clipToPadding="false" + android:scrollbars="none" + app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" + app:layout_constraintBottom_toTopOf="@+id/dialpad_input" + app:layout_constraintTop_toTopOf="parent"/> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + From 8ae60448f4b6d27b8a784ac2727bc11d57e8af5c Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 25 Sep 2018 14:11:29 +0200 Subject: [PATCH 21/64] finish the action mode at changing the input at dialpad --- .../com/simplemobiletools/contacts/activities/DialpadActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 00c3c828..790d95a6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -96,6 +96,7 @@ class DialpadActivity : SimpleActivity() { } private fun dialpadValueChanged(text: String) { + (dialpad_list.adapter as? ContactsAdapter)?.finishActMode() val numericOnly = text.replace(PHONE_NUMBER_PATTERN.toRegex(), "") val filtered = contacts.filter { it.phoneNumbers.any { (text.isNotEmpty() && it.value.contains(text)) || (numericOnly.isNotEmpty() && it.value.contains(numericOnly)) } || From 980368adddd01dad445add20ebeaebae25703766 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 25 Sep 2018 14:11:43 +0200 Subject: [PATCH 22/64] hide the Select All and Share menu buttons at dialpad --- .../com/simplemobiletools/contacts/adapters/ContactsAdapter.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt index 39bd3220..691e0eaf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt @@ -63,6 +63,8 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList Date: Tue, 25 Sep 2018 14:17:55 +0200 Subject: [PATCH 23/64] highlight contact number from the search query --- .../simplemobiletools/contacts/activities/DialpadActivity.kt | 2 +- .../simplemobiletools/contacts/adapters/ContactsAdapter.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 790d95a6..73e7dd6e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -103,7 +103,7 @@ class DialpadActivity : SimpleActivity() { it.cleanPhoneNumbers.any { (text.isNotEmpty() && it.value.contains(text)) || (numericOnly.isNotEmpty() && it.value.contains(numericOnly)) } } as ArrayList - ContactsAdapter(this, filtered, null, LOCATION_DIALPAD, null, dialpad_list, dialpad_fastscroller) { + ContactsAdapter(this, filtered, null, LOCATION_DIALPAD, null, dialpad_list, dialpad_fastscroller, text) { callContact(it as Contact) }.apply { addVerticalDividers(true) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt index 691e0eaf..802d074c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt @@ -29,12 +29,12 @@ import java.util.* class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList, private val refreshListener: RefreshContactsListener?, private val location: Int, private val removeListener: RemoveFromGroupListener?, recyclerView: MyRecyclerView, - fastScroller: FastScroller, itemClick: (Any) -> Unit) : + fastScroller: FastScroller, highlightText: String = "", itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) { private lateinit var contactDrawable: Drawable private var config = activity.config - private var textToHighlight = "" + private var textToHighlight = highlightText var adjustedPrimaryColor = activity.getAdjustedPrimaryColor() var startNameWithSurname: Boolean From 04a7cfc9a50ef768c0f5c034554a3d0ed5adce95 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 25 Sep 2018 14:24:29 +0200 Subject: [PATCH 24/64] try showing the searched phone number under contacts --- .../simplemobiletools/contacts/adapters/ContactsAdapter.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt index 802d074c..bb310fb4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt @@ -262,7 +262,12 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList Date: Tue, 25 Sep 2018 14:42:08 +0200 Subject: [PATCH 25/64] improve the contact number fetching at the dialpad --- .../simplemobiletools/contacts/adapters/ContactsAdapter.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt index bb310fb4..867a8771 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt @@ -262,12 +262,13 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList Date: Tue, 25 Sep 2018 20:04:42 +0200 Subject: [PATCH 26/64] add a helper function for a more advanced check if a contact contains some numbers --- .../contacts/activities/DialpadActivity.kt | 7 +------ .../contacts/fragments/MyViewPagerFragment.kt | 2 +- .../contacts/models/Contact.kt | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 73e7dd6e..abd029f5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -15,7 +15,6 @@ import com.simplemobiletools.contacts.extensions.callContact import com.simplemobiletools.contacts.extensions.config import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.helpers.LOCATION_DIALPAD -import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.activity_dialpad.* @@ -97,11 +96,7 @@ class DialpadActivity : SimpleActivity() { private fun dialpadValueChanged(text: String) { (dialpad_list.adapter as? ContactsAdapter)?.finishActMode() - val numericOnly = text.replace(PHONE_NUMBER_PATTERN.toRegex(), "") - val filtered = contacts.filter { - it.phoneNumbers.any { (text.isNotEmpty() && it.value.contains(text)) || (numericOnly.isNotEmpty() && it.value.contains(numericOnly)) } || - it.cleanPhoneNumbers.any { (text.isNotEmpty() && it.value.contains(text)) || (numericOnly.isNotEmpty() && it.value.contains(numericOnly)) } - } as ArrayList + val filtered = contacts.filter { it.doesContainPhoneNumber(text) } as ArrayList ContactsAdapter(this, filtered, null, LOCATION_DIALPAD, null, dialpad_list, dialpad_fastscroller, text) { callContact(it as Contact) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt index 0419aa25..208c7715 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt @@ -241,7 +241,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) val filtered = contactsIgnoringSearch.filter { getProperText(it.getFullName(), shouldNormalize).contains(text, true) || getProperText(it.nickname, shouldNormalize).contains(text, true) || - it.phoneNumbers.any { it.value.contains(text, true) } || + it.doesContainPhoneNumber(text) || it.emails.any { it.value.contains(text, true) } || it.addresses.any { getProperText(it.value, shouldNormalize).contains(text, true) } || it.IMs.any { it.value.contains(text, true) } || diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt index de579144..e44dbd8a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt @@ -5,6 +5,7 @@ import com.simplemobiletools.commons.extensions.normalizeString import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME import com.simplemobiletools.commons.helpers.SORT_BY_MIDDLE_NAME import com.simplemobiletools.commons.helpers.SORT_DESCENDING +import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN data class Contact(val id: Int, var prefix: String, var firstName: String, var middleName: String, var surname: String, var suffix: String, var nickname: String, var photoUri: String, var phoneNumbers: ArrayList, var emails: ArrayList, var addresses: ArrayList
, @@ -104,4 +105,22 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m } fun getHashToCompare() = getStringToCompare().hashCode() + + // do a more advanced phone number check here, compare numbers and and search query with dashes, spaces and everything but numbers removed + fun doesContainPhoneNumber(text: String): Boolean { + if (text.isNotEmpty()) { + if (phoneNumbers.any { it.value.contains(text) } || cleanPhoneNumbers.any { it.value.contains(text) }) { + return true + } + } + + val numericOnly = text.replace(PHONE_NUMBER_PATTERN.toRegex(), "") + if (numericOnly.isNotEmpty()) { + if (phoneNumbers.any { it.value.contains(numericOnly) } || cleanPhoneNumbers.any { it.value.contains(numericOnly) }) { + return true + } + } + + return false + } } From 282594c1253ab1c3d7161ccdd2a507bf40d1db54 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 25 Sep 2018 23:34:43 +0200 Subject: [PATCH 27/64] adding a button at the dialpad for creating new contact from number --- .../contacts/activities/DialpadActivity.kt | 32 +++++++++++++++++++ app/src/main/res/menu/menu_dialpad.xml | 9 ++++++ app/src/main/res/values-az/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-el/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-hr/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-ko-rKR/strings.xml | 1 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-sv/strings.xml | 1 + app/src/main/res/values-tr/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 17 files changed, 56 insertions(+) create mode 100644 app/src/main/res/menu/menu_dialpad.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index abd029f5..f182912e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -1,12 +1,17 @@ package com.simplemobiletools.contacts.activities import android.annotation.TargetApi +import android.content.Intent import android.os.Build import android.os.Bundle import android.text.InputType import android.view.KeyEvent +import android.view.Menu +import android.view.MenuItem import com.simplemobiletools.commons.extensions.applyColorFilter +import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.extensions.updateTextColors +import com.simplemobiletools.commons.extensions.value import com.simplemobiletools.commons.helpers.isLollipopPlus import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.adapters.ContactsAdapter @@ -14,6 +19,7 @@ import com.simplemobiletools.contacts.extensions.afterTextChanged import com.simplemobiletools.contacts.extensions.callContact import com.simplemobiletools.contacts.extensions.config import com.simplemobiletools.contacts.helpers.ContactsHelper +import com.simplemobiletools.contacts.helpers.KEY_PHONE import com.simplemobiletools.contacts.helpers.LOCATION_DIALPAD import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.activity_dialpad.* @@ -49,6 +55,32 @@ class DialpadActivity : SimpleActivity() { dialpad_clear_char.applyColorFilter(config.textColor) } + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_dialpad, menu) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.create_new_contact -> createNewContact() + else -> return super.onOptionsItemSelected(item) + } + return true + } + + private fun createNewContact() { + Intent().apply { + action = Intent.ACTION_INSERT_OR_EDIT + type = "vnd.android.cursor.item/contact" + putExtra(KEY_PHONE, dialpad_input.value) + if (resolveActivity(packageManager) != null) { + startActivity(this) + } else { + toast(R.string.no_app_found) + } + } + } + private fun dialpadPressed(char: String) { dialpad_input.dispatchKeyEvent(getKeyEvent(getCharKeyCode(char))) } diff --git a/app/src/main/res/menu/menu_dialpad.xml b/app/src/main/res/menu/menu_dialpad.xml new file mode 100644 index 00000000..8a1ab41d --- /dev/null +++ b/app/src/main/res/menu/menu_dialpad.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index b73e2384..e624edca 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Göstərmək üçün sahəni seç diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 31d124e0..0fecfa66 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Sichtbare Felder auswählen diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 4a55f0c1..1328162b 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Επιλογή εμφάνισης πεδίων diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index acbdf9ac..dca32b94 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Sélectionner les champs à afficher diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 963f9a5d..00c7183e 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Odaberi polja za prikaz diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index e044a4d8..7b3a24b1 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number 表示する項目を選択 diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 41017aea..60867b85 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Select fields to show diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index baa7e996..cd643243 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Pasirinkti rodomus laukelius diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 471022e4..c6696378 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Selecione os campos a mostrar diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 98f52187..a9987c6c 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Выберите отображаемые поля diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 0c8c7e6d..c8cce6c5 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -97,6 +97,7 @@ Číselník + Vytvoriť nový kontakt z čísla Zvoľte polia na zobrazenie diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index fe7d0145..45469d81 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Välj vilka fält som ska visas diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index a6d28640..c2fc8d90 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Görüntülenecek alanları seç diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 448f3713..d2deece6 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number 選擇要顯示的欄位 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f63785f1..ebb5d39a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -97,6 +97,7 @@ Dialpad + Create new contact from number Select fields to show From 6102028435295efbea3d1c908c9b1373ff62d55d Mon Sep 17 00:00:00 2001 From: ScratchBuild Date: Wed, 26 Sep 2018 12:15:52 +0900 Subject: [PATCH 28/64] Update Japanese translation --- app/src/main/res/values-ja/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 7b3a24b1..504bfc7b 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -96,8 +96,8 @@ ファイル名 (.vcfを含めない) - Dialpad - Create new contact from number + ダイヤルパッド + 番号から新しい連絡先を作成 表示する項目を選択 From eb914ddfdf6ec4ddb2ce90de4ca192c53d54a22a Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Sep 2018 10:11:13 +0200 Subject: [PATCH 29/64] create a new activity for handling ACTION_INSERT_OR_EDIT intent --- app/src/main/AndroidManifest.xml | 24 ++++++++++++------- .../activities/EditContactActivity.kt | 4 ++-- .../activities/InsertOrEditContactActivity.kt | 17 +++++++++++++ .../layout/activity_insert_edit_contact.xml | 8 +++++++ 4 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt create mode 100644 app/src/main/res/layout/activity_insert_edit_contact.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e2f5328a..25d5f869 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -118,15 +118,6 @@ android:name=".activities.EditContactActivity" android:parentActivityName=".activities.MainActivity"> - - - - - - - - - @@ -163,6 +154,21 @@ + + + + + + + + + + + + + + + From e429b140e45d0241719901d150688aed3fc9217e Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Sep 2018 11:45:25 +0200 Subject: [PATCH 30/64] update the "Insert Or Edit" activity title --- app/src/main/AndroidManifest.xml | 1 - .../contacts/activities/InsertOrEditContactActivity.kt | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25d5f869..998d518a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -156,7 +156,6 @@ diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt index 407089ff..3a2c5063 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt @@ -8,6 +8,7 @@ class InsertOrEditContactActivity : ContactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_insert_edit_contact) + title = getString(R.string.select_contact) handlePermission(PERMISSION_READ_CONTACTS) { // we do not really care about the permission request result. Even if it was denied, load private contacts From 5d8d0dd7b02f6eaa3b47fce2de8c9506e0fd5018 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Sep 2018 12:13:05 +0200 Subject: [PATCH 31/64] implement the "Create new contact" button on the insert_or_Edit screen --- .../activities/InsertOrEditContactActivity.kt | 27 ++++++++++++++++- .../main/res/drawable-hdpi/ic_new_contact.png | Bin 0 -> 269 bytes .../res/drawable-xhdpi/ic_new_contact.png | Bin 0 -> 322 bytes .../res/drawable-xxhdpi/ic_new_contact.png | Bin 0 -> 421 bytes .../res/drawable-xxxhdpi/ic_new_contact.png | Bin 0 -> 578 bytes .../layout/activity_insert_edit_contact.xml | 28 ++++++++++++++++++ app/src/main/res/values-az/strings.xml | 2 ++ app/src/main/res/values-de/strings.xml | 2 ++ app/src/main/res/values-el/strings.xml | 2 ++ app/src/main/res/values-fr/strings.xml | 2 ++ app/src/main/res/values-hr/strings.xml | 2 ++ app/src/main/res/values-ja/strings.xml | 2 ++ app/src/main/res/values-ko-rKR/strings.xml | 2 ++ app/src/main/res/values-lt/strings.xml | 2 ++ app/src/main/res/values-pt/strings.xml | 2 ++ app/src/main/res/values-ru/strings.xml | 2 ++ app/src/main/res/values-sk/strings.xml | 2 ++ app/src/main/res/values-sv/strings.xml | 2 ++ app/src/main/res/values-tr/strings.xml | 2 ++ app/src/main/res/values-zh-rTW/strings.xml | 2 ++ app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/strings.xml | 2 ++ 22 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_new_contact.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_new_contact.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_new_contact.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_new_contact.png diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt index 3a2c5063..7feea511 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt @@ -1,18 +1,43 @@ package com.simplemobiletools.contacts.activities +import android.content.Intent import android.os.Bundle +import android.provider.ContactsContract +import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor +import com.simplemobiletools.commons.extensions.toast +import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS import com.simplemobiletools.contacts.R +import com.simplemobiletools.contacts.extensions.config +import com.simplemobiletools.contacts.helpers.KEY_PHONE +import kotlinx.android.synthetic.main.activity_insert_edit_contact.* -class InsertOrEditContactActivity : ContactActivity() { +class InsertOrEditContactActivity : SimpleActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_insert_edit_contact) title = getString(R.string.select_contact) + updateTextColors(insert_edit_contact_holder) handlePermission(PERMISSION_READ_CONTACTS) { // we do not really care about the permission request result. Even if it was denied, load private contacts + setupViews() + } + } + private fun setupViews() { + new_contact_tmb.setImageDrawable(resources.getColoredDrawableWithColor(R.drawable.ic_new_contact, config.textColor)) + new_contact_holder.setOnClickListener { + Intent().apply { + action = Intent.ACTION_INSERT + data = ContactsContract.Contacts.CONTENT_URI + putExtra(KEY_PHONE, intent.getStringExtra(KEY_PHONE)) + if (resolveActivity(packageManager) != null) { + startActivity(this) + } else { + toast(R.string.no_app_found) + } + } } } } diff --git a/app/src/main/res/drawable-hdpi/ic_new_contact.png b/app/src/main/res/drawable-hdpi/ic_new_contact.png new file mode 100644 index 0000000000000000000000000000000000000000..ded0ae9204330f787b238e650155b0929d65f1cc GIT binary patch literal 269 zcmV+o0rLKdP)H&J1pq`*e50DfD0w{nI>Jb_R2!cY$l!E#Tqp01xb_Q|3 z0mk{c+dY;MjbV_X&Vu9fSx_ev?{J4Pci!C@e$jbvQ zR9fMN_`bedqTts+PdJP| zmfgr-cH)4KEH!^!&#Ar6Ui^{ebgenCq z3X04KYew<6;Yo)4YDhBd_!0-AI8e6qNU7@tOnT-VUU>EvzJ_nT_GbV`@WYeMq}A3RVwBiit|R`|J9X}R@4okQ z!~5HZ|MtF*LI@#*P>pUDIpLZjZ(MWC5?%T)43Ou8-^%3aQ})PFqLvalWs6nnSyOhH zroL}xlnr`#Cy94@l?C=mYES+c#9~n1*uY{#jiG}6L;;I}f6yHkcm6@2SQPz(imeuO zkHx)z&>0qI{z02qZ2AWcVKM9(WIrAIN(LiUq1SX={evWCNMc&bC`e+Rde)^3gCu4t zQ%jkgEHH9^@-a#{gKjuVZ3a<6t$+xMpa^1=IkwoQzyn_ZeDT03dA68mG_xQ^SmBUo z>UrjX6-FF`m>|y+R!?j*sdUl70v9ynf(1I14yL#z4Yy3GS#+{Pns(__;~3+Sv^_Ge z#?a3z9$pxb9c^6U<&t(;v5co>S#gf1b6HWsQ%P1hi=YUKpq3Ou2qF9cn1^3$=;qUg P00000NkvXXu0mjf0jarG literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_new_contact.png b/app/src/main/res/drawable-xxxhdpi/ic_new_contact.png new file mode 100644 index 0000000000000000000000000000000000000000..07435b94a46a5a0ebea6ded6f76b1e5394d799e4 GIT binary patch literal 578 zcmV-I0=@l-P)41mTFnG&hjq9cYom=e&NlW$yRkJf>o%zEHnwZqwh`2$;H}*qojY^RB>xjT z@Ads;j4{R-V~jD?Kog_v;T(_1km51t*~L5>R10Wl9Vz}N#X8y*GNzK`1NnR)$y9}j zW{y&fqckf#%-}x7y3Y)Sg*Kj0iYIg`95iy4Qe7gZP_U44EKnHeB~3Zf^eF_aqg?Cd zA9bWCSBg6M#t1G(6czrWBC#45Yy1Zsz{LUo0k?2*%YVQ}Tzv2!@E#ZM{RiB}#clrq zhj4L7uIw>d^DnYGKKlQZa0rlCOS#rbAp~@m{W;yC(%~q=ADV?yC;^RJq*P~V3?@LL zi^r7W32jn90TMI0>prV^43KE%1jRT-vlL)}L>);|VgZPhjBJ> zo*c!7rbb#;3Gg;h6 + + + + + + + diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index e624edca..650b76f5 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -15,6 +15,8 @@ Grupa e-poçt göndər %s şəxsinə zng et Lazım olan icazələri istə + Create new contact + Add to an existing contact Yeni kontakt Redaktə et diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0fecfa66..041a1687 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -15,6 +15,8 @@ Sende E-Mail an Gruppe %s anrufen Benötigte Berechtigungen anfordern + Create new contact + Add to an existing contact Neuer Kontakt Kontakt bearbeiten diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 1328162b..0a3751f8 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -15,6 +15,8 @@ Αποστολή email σε ομάδες Κλήση %s Ζητούνται τα απαιτούμενα δικαιώματα + Create new contact + Add to an existing contact Νέα επαφή Επεξεργασία επαφής diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index dca32b94..d646b479 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -15,6 +15,8 @@ Envoyer un e-mail au groupe Call %s Demander les autorisations requises + Create new contact + Add to an existing contact Nouveau contact Modifier contact diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 00c7183e..6f564596 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -15,6 +15,8 @@ Pošalji e-poštu grupi Nazovi %s Zatraži potrebna dopuštenja + Create new contact + Add to an existing contact Novi kontakt Uredi kontakt diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 504bfc7b..ee37c62a 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -15,6 +15,8 @@ グループにメールを送信 Call %s Request the required permissions + Create new contact + Add to an existing contact 新しい連絡先 連絡先を編集 diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 60867b85..fa4c5d54 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -15,6 +15,8 @@ Send email to group Call %s Request the required permissions + Create new contact + Add to an existing contact 새로운 연락처 연락처 수정 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index cd643243..c16881d5 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -15,6 +15,8 @@ Send email to group Call %s Request the required permissions + Create new contact + Add to an existing contact Naujas kontaktas Redaguoti kontaktą diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index c6696378..0c72f160 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -15,6 +15,8 @@ Enviar e-mail para o grupo Ligar a %s Pedir a permissão necessária + Create new contact + Add to an existing contact 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 a9987c6c..dd978592 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -15,6 +15,8 @@ Отправить письмо группе Вызов %s Запрос необходимых разрешений + Create new contact + Add to an existing contact Новый контакт Редактировать контакт diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index c8cce6c5..8c738576 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -15,6 +15,8 @@ Poslať skupine email Zavolať %s Vyžiadať potrebné oprávnenia + Vytvoriť nový kontakt + Pridať k existujúcemu kontaktu 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 45469d81..0fb23153 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -15,6 +15,8 @@ Skicka e-post till grupp Ring %s Begär de behörigheter som krävs + Create new contact + Add to an existing contact Ny kontakt Redigera kontakt diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c2fc8d90..710fa376 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -15,6 +15,8 @@ Gruba e-posta gönder Call %s Request the required permissions + Create new contact + Add to an existing contact Yeni kişi Kişiyi düzenle diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index d2deece6..af88bce6 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -15,6 +15,8 @@ 發送電子郵件給群組 打電話給 %s 請求必要的權限 + Create new contact + Add to an existing contact 新聯絡人 編輯聯絡人 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 56d5d4fc..e72744fc 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -4,6 +4,7 @@ 45dp 40dp 52dp + 68dp 60dp 44sp 40sp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ebb5d39a..2ec0cd04 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -15,6 +15,8 @@ Send email to group Call %s Request the required permissions + Create new contact + Add to an existing contact New contact Edit contact From a7b79f89ed90f7c1daf23bbb37a59d4942439447 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Sep 2018 14:47:28 +0200 Subject: [PATCH 32/64] add a label at the insert_or_edit activity --- .../activities/InsertOrEditContactActivity.kt | 7 +++++-- .../main/res/layout/activity_insert_edit_contact.xml | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt index 7feea511..9e5bc8d9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt @@ -3,6 +3,7 @@ package com.simplemobiletools.contacts.activities import android.content.Intent import android.os.Bundle import android.provider.ContactsContract +import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.extensions.updateTextColors @@ -17,15 +18,15 @@ class InsertOrEditContactActivity : SimpleActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_insert_edit_contact) title = getString(R.string.select_contact) - updateTextColors(insert_edit_contact_holder) + setupViews() handlePermission(PERMISSION_READ_CONTACTS) { // we do not really care about the permission request result. Even if it was denied, load private contacts - setupViews() } } private fun setupViews() { + updateTextColors(insert_edit_contact_holder) new_contact_tmb.setImageDrawable(resources.getColoredDrawableWithColor(R.drawable.ic_new_contact, config.textColor)) new_contact_holder.setOnClickListener { Intent().apply { @@ -39,5 +40,7 @@ class InsertOrEditContactActivity : SimpleActivity() { } } } + + existing_contact_label.setTextColor(getAdjustedPrimaryColor()) } } diff --git a/app/src/main/res/layout/activity_insert_edit_contact.xml b/app/src/main/res/layout/activity_insert_edit_contact.xml index d98b8d7e..ad3769dd 100644 --- a/app/src/main/res/layout/activity_insert_edit_contact.xml +++ b/app/src/main/res/layout/activity_insert_edit_contact.xml @@ -33,4 +33,16 @@ android:textSize="@dimen/big_text_size"/> + + + From 78240eeb2b5c251b82873b1df4f7f3ced52db276 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Sep 2018 15:28:47 +0200 Subject: [PATCH 33/64] fill the list of contacts at insert_or_edit --- .../activities/InsertOrEditContactActivity.kt | 26 +++++++++++++++++++ .../contacts/adapters/ContactsAdapter.kt | 3 ++- .../contacts/helpers/Constants.kt | 1 + .../layout/activity_insert_edit_contact.xml | 24 +++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt index 9e5bc8d9..610f84b3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt @@ -9,8 +9,12 @@ import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS import com.simplemobiletools.contacts.R +import com.simplemobiletools.contacts.adapters.ContactsAdapter import com.simplemobiletools.contacts.extensions.config +import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.helpers.KEY_PHONE +import com.simplemobiletools.contacts.helpers.LOCATION_INSERT_OR_EDIT +import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.activity_insert_edit_contact.* class InsertOrEditContactActivity : SimpleActivity() { @@ -22,6 +26,9 @@ class InsertOrEditContactActivity : SimpleActivity() { handlePermission(PERMISSION_READ_CONTACTS) { // we do not really care about the permission request result. Even if it was denied, load private contacts + ContactsHelper(this).getContacts { + gotContacts(it) + } } } @@ -43,4 +50,23 @@ class InsertOrEditContactActivity : SimpleActivity() { existing_contact_label.setTextColor(getAdjustedPrimaryColor()) } + + private fun gotContacts(contacts: ArrayList) { + Contact.sorting = config.sorting + Contact.startWithSurname = config.startNameWithSurname + contacts.sort() + + ContactsAdapter(this, contacts, null, LOCATION_INSERT_OR_EDIT, null, existing_contact_list, existing_contact_fastscroller) { + + }.apply { + addVerticalDividers(true) + existing_contact_list.adapter = this + } + + existing_contact_fastscroller.setScrollToY(0) + existing_contact_fastscroller.setViews(existing_contact_list) { + val item = (existing_contact_list.adapter as ContactsAdapter).contactItems.getOrNull(it) + existing_contact_fastscroller.updateBubbleText(item?.getBubbleText() ?: "") + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt index 867a8771..4372437e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ContactsAdapter.kt @@ -107,7 +107,8 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList + val allowLongClick = location != LOCATION_INSERT_OR_EDIT + val view = holder.bindView(contact, true, allowLongClick) { itemView, layoutPosition -> setupView(itemView, contact) } bindViewHolder(holder, position, view) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt index d3b7fb06..58f5d9fa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt @@ -34,6 +34,7 @@ const val LOCATION_RECENTS_TAB = 2 const val LOCATION_GROUPS_TAB = 3 const val LOCATION_GROUP_CONTACTS = 4 const val LOCATION_DIALPAD = 5 +const val LOCATION_INSERT_OR_EDIT = 6 const val CONTACTS_TAB_MASK = 1 const val FAVORITES_TAB_MASK = 2 diff --git a/app/src/main/res/layout/activity_insert_edit_contact.xml b/app/src/main/res/layout/activity_insert_edit_contact.xml index ad3769dd..50edfe57 100644 --- a/app/src/main/res/layout/activity_insert_edit_contact.xml +++ b/app/src/main/res/layout/activity_insert_edit_contact.xml @@ -1,6 +1,7 @@ @@ -41,8 +42,31 @@ android:layout_below="@+id/new_contact_holder" android:layout_marginStart="@dimen/bigger_margin" android:layout_marginLeft="@dimen/bigger_margin" + android:layout_marginBottom="@dimen/activity_margin" android:text="@string/add_to_existing_contact" android:textAllCaps="true" android:textSize="@dimen/smaller_text_size"/> + + + + + + + From 5e5de8b90aae0f6eb6f805cef33a0e3a4413642c Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Sep 2018 23:02:23 +0200 Subject: [PATCH 34/64] fix #166, properly handle intents adding numbers to existing contacts --- .../contacts/activities/EditContactActivity.kt | 6 +++--- .../contacts/activities/InsertOrEditContactActivity.kt | 9 ++++++++- .../com/simplemobiletools/contacts/helpers/Constants.kt | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) 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 26b9e96a..b0156746 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt @@ -58,7 +58,7 @@ class EditContactActivity : ContactActivity() { supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_cross) val action = intent.action - isThirdPartyIntent = action == Intent.ACTION_EDIT || action == Intent.ACTION_INSERT + isThirdPartyIntent = action == Intent.ACTION_EDIT || action == Intent.ACTION_INSERT || action == ADD_NEW_CONTACT_NUMBER val isFromSimpleContacts = intent.getBooleanExtra(IS_FROM_SIMPLE_CONTACTS, false) if (isThirdPartyIntent && !isFromSimpleContacts) { handlePermission(PERMISSION_READ_CONTACTS) { @@ -119,7 +119,7 @@ class EditContactActivity : ContactActivity() { private fun initContact() { var contactId = intent.getIntExtra(CONTACT_ID, 0) val action = intent.action - if (contactId == 0 && action == Intent.ACTION_EDIT) { + if (contactId == 0 && (action == Intent.ACTION_EDIT || action == ADD_NEW_CONTACT_NUMBER)) { val data = intent.data if (data != null) { val rawId = if (data.path.contains("lookup")) { @@ -149,7 +149,7 @@ class EditContactActivity : ContactActivity() { setupEditContact() } - if (contact!!.id == 0 && intent.extras?.containsKey(KEY_PHONE) == true && action == Intent.ACTION_INSERT) { + if ((contact!!.id == 0 && intent.extras?.containsKey(KEY_PHONE) == true && action == Intent.ACTION_INSERT) || action == ADD_NEW_CONTACT_NUMBER) { val phoneNumber = intent.extras.get(KEY_PHONE)?.toString() ?: "" contact!!.phoneNumbers.add(PhoneNumber(phoneNumber, DEFAULT_PHONE_NUMBER_TYPE, "")) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt index 610f84b3..46b1131f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt @@ -11,6 +11,8 @@ import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.adapters.ContactsAdapter import com.simplemobiletools.contacts.extensions.config +import com.simplemobiletools.contacts.extensions.getContactPublicUri +import com.simplemobiletools.contacts.helpers.ADD_NEW_CONTACT_NUMBER import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.helpers.KEY_PHONE import com.simplemobiletools.contacts.helpers.LOCATION_INSERT_OR_EDIT @@ -57,7 +59,12 @@ class InsertOrEditContactActivity : SimpleActivity() { contacts.sort() ContactsAdapter(this, contacts, null, LOCATION_INSERT_OR_EDIT, null, existing_contact_list, existing_contact_fastscroller) { - + Intent(applicationContext, EditContactActivity::class.java).apply { + data = getContactPublicUri(it as Contact) + action = ADD_NEW_CONTACT_NUMBER + putExtra(KEY_PHONE, intent.getStringExtra(KEY_PHONE)) + startActivity(this) + } }.apply { addVerticalDividers(true) existing_contact_list.adapter = this diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt index 58f5d9fa..936744bc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt @@ -23,6 +23,7 @@ const val GROUP = "group" const val FIRST_GROUP_ID = 10000 const val PHONE_NUMBER_PATTERN = "\\D+" const val IS_FROM_SIMPLE_CONTACTS = "is_from_simple_contacts" +const val ADD_NEW_CONTACT_NUMBER = "add_new_contact_number" // extras used at third party intents const val KEY_PHONE = "phone" From 4b645b70b3495c7bcef8adb700687f846fe7b1d3 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Sep 2018 23:27:42 +0200 Subject: [PATCH 35/64] close the contact picker after successfull insert or edit --- .../contacts/activities/EditContactActivity.kt | 3 +++ .../activities/InsertOrEditContactActivity.kt | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) 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 b0156746..3a496137 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt @@ -1,5 +1,6 @@ package com.simplemobiletools.contacts.activities +import android.app.Activity import android.app.DatePickerDialog import android.content.ClipData import android.content.ContentValues @@ -938,6 +939,7 @@ class EditContactActivity : ContactActivity() { contact!!.source = originalContactSource ContactsHelper(this).deleteContact(contact!!) } + setResult(Activity.RESULT_OK) finish() } else { toast(R.string.unknown_error_occurred) @@ -947,6 +949,7 @@ class EditContactActivity : ContactActivity() { private fun updateContact(photoUpdateStatus: Int) { isSaving = true if (ContactsHelper(this@EditContactActivity).updateContact(contact!!, photoUpdateStatus)) { + setResult(Activity.RESULT_OK) finish() } else { toast(R.string.unknown_error_occurred) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt index 46b1131f..16430225 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/InsertOrEditContactActivity.kt @@ -1,5 +1,6 @@ package com.simplemobiletools.contacts.activities +import android.app.Activity import android.content.Intent import android.os.Bundle import android.provider.ContactsContract @@ -20,6 +21,9 @@ import com.simplemobiletools.contacts.models.Contact import kotlinx.android.synthetic.main.activity_insert_edit_contact.* class InsertOrEditContactActivity : SimpleActivity() { + private val START_INSERT_ACTIVITY = 1 + private val START_EDIT_ACTIVITY = 2 + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_insert_edit_contact) @@ -43,7 +47,7 @@ class InsertOrEditContactActivity : SimpleActivity() { data = ContactsContract.Contacts.CONTENT_URI putExtra(KEY_PHONE, intent.getStringExtra(KEY_PHONE)) if (resolveActivity(packageManager) != null) { - startActivity(this) + startActivityForResult(this, START_INSERT_ACTIVITY) } else { toast(R.string.no_app_found) } @@ -63,7 +67,7 @@ class InsertOrEditContactActivity : SimpleActivity() { data = getContactPublicUri(it as Contact) action = ADD_NEW_CONTACT_NUMBER putExtra(KEY_PHONE, intent.getStringExtra(KEY_PHONE)) - startActivity(this) + startActivityForResult(this, START_EDIT_ACTIVITY) } }.apply { addVerticalDividers(true) @@ -76,4 +80,11 @@ class InsertOrEditContactActivity : SimpleActivity() { existing_contact_fastscroller.updateBubbleText(item?.getBubbleText() ?: "") } } + + override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { + super.onActivityResult(requestCode, resultCode, resultData) + if (resultCode == Activity.RESULT_OK) { + finish() + } + } } From 5a9513b75d81c77e86fa3d0d7e241ed3b23dd052 Mon Sep 17 00:00:00 2001 From: tibbi Date: Wed, 26 Sep 2018 23:45:27 +0200 Subject: [PATCH 36/64] add haptic feedback to dialpad buttons --- .../contacts/activities/DialpadActivity.kt | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index f182912e..25b6fc60 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -8,10 +8,8 @@ import android.text.InputType import android.view.KeyEvent import android.view.Menu import android.view.MenuItem -import com.simplemobiletools.commons.extensions.applyColorFilter -import com.simplemobiletools.commons.extensions.toast -import com.simplemobiletools.commons.extensions.updateTextColors -import com.simplemobiletools.commons.extensions.value +import android.view.View +import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.isLollipopPlus import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.adapters.ContactsAdapter @@ -30,19 +28,19 @@ class DialpadActivity : SimpleActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_dialpad) - dialpad_0.setOnClickListener { dialpadPressed("0") } - dialpad_1.setOnClickListener { dialpadPressed("1") } - dialpad_2.setOnClickListener { dialpadPressed("2") } - dialpad_3.setOnClickListener { dialpadPressed("3") } - dialpad_4.setOnClickListener { dialpadPressed("4") } - dialpad_5.setOnClickListener { dialpadPressed("5") } - dialpad_6.setOnClickListener { dialpadPressed("6") } - dialpad_7.setOnClickListener { dialpadPressed("7") } - dialpad_8.setOnClickListener { dialpadPressed("8") } - dialpad_9.setOnClickListener { dialpadPressed("9") } - dialpad_asterisk.setOnClickListener { dialpadPressed("*") } - dialpad_hashtag.setOnClickListener { dialpadPressed("#") } - dialpad_clear_char.setOnClickListener { clearChar() } + dialpad_0.setOnClickListener { dialpadPressed("0", it) } + dialpad_1.setOnClickListener { dialpadPressed("1", it) } + dialpad_2.setOnClickListener { dialpadPressed("2", it) } + dialpad_3.setOnClickListener { dialpadPressed("3", it) } + dialpad_4.setOnClickListener { dialpadPressed("4", it) } + dialpad_5.setOnClickListener { dialpadPressed("5", it) } + dialpad_6.setOnClickListener { dialpadPressed("6", it) } + dialpad_7.setOnClickListener { dialpadPressed("7", it) } + dialpad_8.setOnClickListener { dialpadPressed("8", it) } + dialpad_9.setOnClickListener { dialpadPressed("9", it) } + dialpad_asterisk.setOnClickListener { dialpadPressed("*", it) } + dialpad_hashtag.setOnClickListener { dialpadPressed("#", it) } + dialpad_clear_char.setOnClickListener { clearChar(it) } dialpad_clear_char.setOnLongClickListener { clearInput(); true } dialpad_input.afterTextChanged { dialpadValueChanged(it) } ContactsHelper(this).getContacts { gotContacts(it) } @@ -81,12 +79,14 @@ class DialpadActivity : SimpleActivity() { } } - private fun dialpadPressed(char: String) { + private fun dialpadPressed(char: String, view: View) { dialpad_input.dispatchKeyEvent(getKeyEvent(getCharKeyCode(char))) + view.performHapticFeedback() } - private fun clearChar() { + private fun clearChar(view: View) { dialpad_input.dispatchKeyEvent(getKeyEvent(KeyEvent.KEYCODE_DEL)) + view.performHapticFeedback() } private fun clearInput() { From 11349a3112a6383f8bd6d14368aa90c2240ef2fd Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 10:32:28 +0200 Subject: [PATCH 37/64] highlight new phone number at adding it to an existing contact --- .../contacts/activities/EditContactActivity.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 3a496137..2e14cba5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt @@ -14,6 +14,7 @@ import android.view.Menu import android.view.MenuItem import android.view.ViewGroup import android.view.WindowManager +import android.widget.EditText import android.widget.ImageView import android.widget.TextView import com.simplemobiletools.commons.dialogs.RadioGroupDialog @@ -51,6 +52,8 @@ class EditContactActivity : ContactActivity() { private var lastPhotoIntentUri: Uri? = null private var isSaving = false private var isThirdPartyIntent = false + private var highlightLastPhoneNumber = false + private var numberViewToColor: EditText? = null private var originalContactSource = "" override fun onCreate(savedInstanceState: Bundle?) { @@ -153,6 +156,9 @@ class EditContactActivity : ContactActivity() { if ((contact!!.id == 0 && intent.extras?.containsKey(KEY_PHONE) == true && action == Intent.ACTION_INSERT) || action == ADD_NEW_CONTACT_NUMBER) { val phoneNumber = intent.extras.get(KEY_PHONE)?.toString() ?: "" contact!!.phoneNumbers.add(PhoneNumber(phoneNumber, DEFAULT_PHONE_NUMBER_TYPE, "")) + if (phoneNumber.isNotEmpty() && action == ADD_NEW_CONTACT_NUMBER) { + highlightLastPhoneNumber = true + } contact!!.firstName = intent.extras.get(KEY_NAME)?.toString() ?: "" @@ -231,6 +237,7 @@ class EditContactActivity : ContactActivity() { } updateTextColors(contact_scrollview) + numberViewToColor?.setTextColor(getAdjustedPrimaryColor()) wasActivityInitialized = true invalidateOptionsMenu() } @@ -374,6 +381,9 @@ class EditContactActivity : ContactActivity() { numberHolder!!.apply { contact_number.setText(number.value) setupPhoneNumberTypePicker(contact_number_type, number.type, number.label) + if (highlightLastPhoneNumber && index == contact!!.phoneNumbers.size - 1) { + numberViewToColor = contact_number + } } } } From 12c5f520925bce0f78c567d5c1a39ace8799f06f Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 12:16:39 +0200 Subject: [PATCH 38/64] fix #254, if there is no N and ORG fields at the given contact, only FN, treat it as an organization --- .../com/simplemobiletools/contacts/helpers/VcfImporter.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/VcfImporter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/VcfImporter.kt index f186505b..9cc27af8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/VcfImporter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/VcfImporter.kt @@ -138,6 +138,11 @@ class VcfImporter(val activity: SimpleActivity) { val contact = Contact(0, prefix, firstName, middleName, surname, suffix, nickname, photoUri, phoneNumbers, emails, addresses, events, targetContactSource, starred, contactId, thumbnailUri, photo, notes, groups, organization, websites, cleanPhoneNumbers, IMs) + // if there is no N and ORG fields at the given contact, only FN, treat it as an organization + if (contact.getFullName().isEmpty() && contact.organization.isEmpty() && ezContact.formattedName.value.isNotEmpty()) { + contact.organization.company = ezContact.formattedName.value + } + if (ContactsHelper(activity).insertContact(contact)) { contactsImported++ } From 02002297c0fd487eafce69874c1c39fcbb3f0b9b Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 12:19:40 +0200 Subject: [PATCH 39/64] fix #250, allow copying phone number to clipboard by long pressing it Works at the View contact screen only --- .../contacts/activities/ViewContactActivity.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt index 886d86c5..a7995535 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/ViewContactActivity.kt @@ -235,6 +235,12 @@ class ViewContactActivity : ContactActivity() { startCallIntent(phoneNumber.value) } } + + setOnLongClickListener { + copyToClipboard(phoneNumber.value) + toast(R.string.value_copied_to_clipboard) + true + } } } contact_numbers_image.beVisible() From 15f09bd52a6e4bb7dd6a3269fc1b3c90b9b89806 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 13:42:07 +0200 Subject: [PATCH 40/64] increase list item heights if phone number is shown --- app/src/main/res/layout/item_contact_with_number.xml | 9 +++++---- app/src/main/res/layout/item_recent_call.xml | 7 ++++--- app/src/main/res/values/dimens.xml | 1 + 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/layout/item_contact_with_number.xml b/app/src/main/res/layout/item_contact_with_number.xml index e08b13ee..4ecf2645 100644 --- a/app/src/main/res/layout/item_contact_with_number.xml +++ b/app/src/main/res/layout/item_contact_with_number.xml @@ -13,13 +13,14 @@ @@ -31,15 +32,15 @@ android:layout_toRightOf="@+id/contact_tmb" android:ellipsize="end" android:maxLines="1" - android:textSize="@dimen/bigger_text_size" + android:textSize="@dimen/big_text_size" tools:text="John Doe"/> 45dp 40dp 52dp + 56dp 68dp 60dp 44sp From d35c0af68afec055f7a57f57431470489ff44562 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 13:50:25 +0200 Subject: [PATCH 41/64] add a screen divider line at the dialpad --- app/src/main/res/layout/activity_dialpad.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index a9b6535a..a0b899c9 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -36,6 +36,13 @@ + + Date: Thu, 27 Sep 2018 13:51:02 +0200 Subject: [PATCH 42/64] make the dialpad buttons smaller --- app/src/main/res/values/dimens.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index eb64d7a4..29c380b7 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -7,6 +7,6 @@ 56dp 68dp 60dp - 44sp + 34sp 40sp From 26061d8827ec4c6d87e3fef5b839f97deba92225 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 13:55:00 +0200 Subject: [PATCH 43/64] change the menu button text at the dialpad --- .../simplemobiletools/contacts/activities/DialpadActivity.kt | 4 ++-- app/src/main/res/menu/menu_dialpad.xml | 4 ++-- app/src/main/res/values-az/strings.xml | 2 +- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-el/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values-hr/strings.xml | 2 +- app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-ko-rKR/strings.xml | 2 +- app/src/main/res/values-lt/strings.xml | 2 +- app/src/main/res/values-pt/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-sk/strings.xml | 2 +- app/src/main/res/values-sv/strings.xml | 2 +- app/src/main/res/values-tr/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 17 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 25b6fc60..b21abeeb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -60,13 +60,13 @@ class DialpadActivity : SimpleActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { - R.id.create_new_contact -> createNewContact() + R.id.add_number_to_contact -> addNumberToContact() else -> return super.onOptionsItemSelected(item) } return true } - private fun createNewContact() { + private fun addNumberToContact() { Intent().apply { action = Intent.ACTION_INSERT_OR_EDIT type = "vnd.android.cursor.item/contact" diff --git a/app/src/main/res/menu/menu_dialpad.xml b/app/src/main/res/menu/menu_dialpad.xml index 8a1ab41d..66fa1d06 100644 --- a/app/src/main/res/menu/menu_dialpad.xml +++ b/app/src/main/res/menu/menu_dialpad.xml @@ -2,8 +2,8 @@ diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 650b76f5..8f2f3892 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Göstərmək üçün sahəni seç diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 041a1687..ec3adbe4 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Sichtbare Felder auswählen diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 0a3751f8..b548d329 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Επιλογή εμφάνισης πεδίων diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index d646b479..b3dc4634 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Sélectionner les champs à afficher diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 6f564596..d5c8544e 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Odaberi polja za prikaz diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index ee37c62a..e87a4211 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -99,7 +99,7 @@ ダイヤルパッド - 番号から新しい連絡先を作成 + Add number to contact 表示する項目を選択 diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index fa4c5d54..4c7bbb68 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Select fields to show diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index c16881d5..e99c1beb 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Pasirinkti rodomus laukelius diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 0c72f160..de97bde8 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Selecione os campos a mostrar diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index dd978592..cd412417 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Выберите отображаемые поля diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 8c738576..ac542986 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -99,7 +99,7 @@ Číselník - Vytvoriť nový kontakt z čísla + Pridať číslo kontaktu Zvoľte polia na zobrazenie diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 0fb23153..b2198c6e 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Välj vilka fält som ska visas diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 710fa376..583219d7 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Görüntülenecek alanları seç diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index af88bce6..1fe54476 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact 選擇要顯示的欄位 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2ec0cd04..53be90a2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -99,7 +99,7 @@ Dialpad - Create new contact from number + Add number to contact Select fields to show From 2f59a847484ed09f2a3745078502ef79c79d6585 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 14:00:55 +0200 Subject: [PATCH 44/64] avoid some null extras at third party intents --- .../contacts/activities/EditContactActivity.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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 2e14cba5..385f155a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt @@ -153,14 +153,20 @@ class EditContactActivity : ContactActivity() { setupEditContact() } - if ((contact!!.id == 0 && intent.extras?.containsKey(KEY_PHONE) == true && action == Intent.ACTION_INSERT) || action == ADD_NEW_CONTACT_NUMBER) { - val phoneNumber = intent.extras.get(KEY_PHONE)?.toString() ?: "" - contact!!.phoneNumbers.add(PhoneNumber(phoneNumber, DEFAULT_PHONE_NUMBER_TYPE, "")) - if (phoneNumber.isNotEmpty() && action == ADD_NEW_CONTACT_NUMBER) { - highlightLastPhoneNumber = true + if ((contact!!.id == 0 && intent.extras != null && intent.extras.containsKey(KEY_PHONE) && action == Intent.ACTION_INSERT) || action == ADD_NEW_CONTACT_NUMBER) { + val phone = intent.extras.get(KEY_PHONE) + if (phone != null) { + val phoneNumber = phone.toString() + contact!!.phoneNumbers.add(PhoneNumber(phoneNumber, DEFAULT_PHONE_NUMBER_TYPE, "")) + if (phoneNumber.isNotEmpty() && action == ADD_NEW_CONTACT_NUMBER) { + highlightLastPhoneNumber = true + } } - contact!!.firstName = intent.extras.get(KEY_NAME)?.toString() ?: "" + val firstName = intent.extras.get(KEY_NAME) + if (firstName != null) { + contact!!.firstName = firstName.toString() + } val data = intent.extras.getParcelableArrayList("data") if (data != null) { From d0ef3368f545f43ac0c9e82157a0bb942979f9a4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 14:28:25 +0200 Subject: [PATCH 45/64] make the dialpad input text the same size as the buttons --- app/src/main/res/layout/activity_dialpad.xml | 2 +- app/src/main/res/values/dimens.xml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index a0b899c9..acae2500 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -51,7 +51,7 @@ android:gravity="center" android:inputType="phone" android:textCursorDrawable="@null" - android:textSize="@dimen/dialpad_input_text_size" + android:textSize="@dimen/dialpad_text_size" app:layout_constraintBottom_toTopOf="@+id/dialpad_2" app:layout_constraintEnd_toStartOf="@+id/dialpad_clear_char" app:layout_constraintStart_toStartOf="parent"/> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 29c380b7..b0496177 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -8,5 +8,4 @@ 68dp 60dp 34sp - 40sp From 51b953f8163c0aaa15e1584f193b1d08ceb9ee7b Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 14:39:26 +0200 Subject: [PATCH 46/64] reduce the padding of dialpad buttons --- app/src/main/res/values/styles.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index dd117a86..b7e0377a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -4,8 +4,8 @@ From cacbbcedc18277dc730931b5b1e6e1d927c2a8b7 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 14:49:31 +0200 Subject: [PATCH 47/64] replace the phone icon with a dialpad for getting to the dialpad --- .../contacts/activities/MainActivity.kt | 2 +- app/src/main/res/drawable-hdpi/ic_dialpad.png | Bin 0 -> 186 bytes app/src/main/res/drawable-xhdpi/ic_dialpad.png | Bin 0 -> 184 bytes app/src/main/res/drawable-xxhdpi/ic_dialpad.png | Bin 0 -> 250 bytes app/src/main/res/drawable-xxxhdpi/ic_dialpad.png | Bin 0 -> 336 bytes app/src/main/res/layout/activity_main.xml | 4 ++-- 6 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_dialpad.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_dialpad.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_dialpad.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_dialpad.png diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt index 17b430e7..5f7f05c3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt @@ -165,7 +165,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { } isFirstResume = false - val blackIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_big, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE) + val blackIcon = resources.getColoredDrawableWithColor(R.drawable.ic_dialpad, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE) main_dialpad_button.setImageDrawable(blackIcon) main_dialpad_button.background.applyColorFilter(getAdjustedPrimaryColor()) } diff --git a/app/src/main/res/drawable-hdpi/ic_dialpad.png b/app/src/main/res/drawable-hdpi/ic_dialpad.png new file mode 100644 index 0000000000000000000000000000000000000000..f600b5b7b6127d857438cfdd785ae9b7eef67579 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB8a-VcLn;{GUfC#k$U%U`ancVB zhf2?tT%R5oPq@kQ;hbf($kDB~-|p0Lv6a1%Xk5l8t;V3X%^|pX`Bm);R~~HI#pKKD zx7rxU>@#OjlLIPXX6Ne(xm?v_drU65-*D+yiE1$O^cmyzc6;~yve~}?M1A@6>hkH| cr(f1GI2tv)`}8;S0?;uGp00i_>zopr0DIs|u>b%7 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_dialpad.png b/app/src/main/res/drawable-xhdpi/ic_dialpad.png new file mode 100644 index 0000000000000000000000000000000000000000..793da560dce610bb80c1e7dddcf0009798352967 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DdQTU}kP61PR~XqE97J3%ZWHi& zyKh@SRFLp0(>n(Y4t#GhxyNX8;Q9S!ZaiyZV%G3{l3T1iQFhBOxr9X~ud5p-Ut0N| zvCM1tp8EPl^IWFA_+oqH#Idty5B*3p-+n^3sQZpmF%WM*k(E8gFJp>dy~ErK8gnnK isGsYR(Rc1_C4=og+vmm>d0T-_VeoYIb6Mw<&;$Sx5lmPB literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_dialpad.png b/app/src/main/res/drawable-xxhdpi/ic_dialpad.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6bf85670e14c3918c760388708570d1c2ca252 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw4tlychEy=Vy=KVO>>$DVFypc0 zqmPp=6(3V!7tlWFJfrGTSI*`SToZr3y8iZ%{dR9bS!QkqZsyp!;8ttnYUA3f;Knv_ z_xxFJmND^r&AaK#YB!~3^K7m^8aFr1=E|9pv+^wKyf-EDccnhbSkjyO>Z0*R^NY{T zzb;Q^O-NnPoy(*W*(0|2Xog`Fh|)Njv_(SKt@|Q~I+i_Q&8Z0~p=~Owja14ToQpbz vCapd-AtLlw%JN@V8l`-^t|!bhU15K{sP#eil2=cGo?-BG^>bP0l+XkK2Fqyc literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_dialpad.png b/app/src/main/res/drawable-xxxhdpi/ic_dialpad.png new file mode 100644 index 0000000000000000000000000000000000000000..7754a7c9942de820f386531f3cc2b2062b98d8fc GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%&M7z$otN;uuoF_~zP1-ew0Lw}&Mr z+nJUmy3AlSbdq3l<4`V`t*}HxbdQOql4`o^rXQ<+zY34qrXM-&Z~LTaGpA0SIW6eE zwZIIEA0-BYDtqNwC&nwaF8H3TkQ(rn@5-AcZ?4R`*U0C+{H1Kf1{dG=2ZT>MU$)+m zc+>CwXO6ECRgUiuUyUiAy5RdGw^Ir){%S<@1na-J%h3~m{+frtx4ICM_vPRHoWEur z=gS4USfK6if75WC8Gg!vweM9uA34Qza2G1-9ckSmAP(htPC~HZ5+0M5+?)7I$^F%9 z*_G?dm+S*_s(>891wc-H + android:padding="@dimen/activity_margin" + android:src="@drawable/ic_dialpad"/> From d024bc7551a582256e739eaebf840d4834e8a7c6 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 15:09:01 +0200 Subject: [PATCH 48/64] add a Call button at the dialpad activity --- .../contacts/activities/DialpadActivity.kt | 16 +++++++++++++ app/src/main/res/layout/activity_dialpad.xml | 24 +++++++++++++------ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index b21abeeb..251e1001 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -13,9 +13,11 @@ import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.isLollipopPlus import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.adapters.ContactsAdapter +import com.simplemobiletools.contacts.dialogs.CallConfirmationDialog import com.simplemobiletools.contacts.extensions.afterTextChanged import com.simplemobiletools.contacts.extensions.callContact import com.simplemobiletools.contacts.extensions.config +import com.simplemobiletools.contacts.extensions.startCallIntent import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.helpers.KEY_PHONE import com.simplemobiletools.contacts.helpers.LOCATION_DIALPAD @@ -42,6 +44,7 @@ class DialpadActivity : SimpleActivity() { dialpad_hashtag.setOnClickListener { dialpadPressed("#", it) } dialpad_clear_char.setOnClickListener { clearChar(it) } dialpad_clear_char.setOnLongClickListener { clearInput(); true } + dialpad_call_button.setOnClickListener { initCall() } dialpad_input.afterTextChanged { dialpadValueChanged(it) } ContactsHelper(this).getContacts { gotContacts(it) } disableKeyboardPopping() @@ -143,4 +146,17 @@ class DialpadActivity : SimpleActivity() { dialpad_fastscroller.updateBubbleText(item?.getBubbleText() ?: "") } } + + private fun initCall() { + val number = dialpad_input.value + if (number.isNotEmpty()) { + if (config.showCallConfirmation) { + CallConfirmationDialog(this, number) { + startCallIntent(number) + } + } else { + startCallIntent(number) + } + } + } } diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index acae2500..175b22f5 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -2,12 +2,10 @@ + app:layout_constraintStart_toStartOf="parent"/> @@ -205,9 +202,22 @@ android:layout_height="wrap_content" android:layout_marginRight="@dimen/activity_margin" android:text="#" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toTopOf="@+id/dialpad_call_button" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/dialpad_0"/> + + From 0ebe7bb286997cae3e42cc06fd525fbc7dc7f6b1 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 27 Sep 2018 15:18:23 +0200 Subject: [PATCH 49/64] treat long pressing the Zero at dialpad as Plus --- .../contacts/activities/DialpadActivity.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 251e1001..233e02c8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -40,6 +40,7 @@ class DialpadActivity : SimpleActivity() { dialpad_7.setOnClickListener { dialpadPressed("7", it) } dialpad_8.setOnClickListener { dialpadPressed("8", it) } dialpad_9.setOnClickListener { dialpadPressed("9", it) } + dialpad_0.setOnLongClickListener { dialpadPressed("+", null); true } dialpad_asterisk.setOnClickListener { dialpadPressed("*", it) } dialpad_hashtag.setOnClickListener { dialpadPressed("#", it) } dialpad_clear_char.setOnClickListener { clearChar(it) } @@ -82,9 +83,9 @@ class DialpadActivity : SimpleActivity() { } } - private fun dialpadPressed(char: String, view: View) { + private fun dialpadPressed(char: String, view: View?) { dialpad_input.dispatchKeyEvent(getKeyEvent(getCharKeyCode(char))) - view.performHapticFeedback() + view?.performHapticFeedback() } private fun clearChar(view: View) { @@ -110,6 +111,7 @@ class DialpadActivity : SimpleActivity() { "8" -> KeyEvent.KEYCODE_8 "9" -> KeyEvent.KEYCODE_9 "*" -> KeyEvent.KEYCODE_STAR + "+" -> KeyEvent.KEYCODE_PLUS else -> KeyEvent.KEYCODE_POUND } From 446db13091946db437696a44013244743d9a4227 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 28 Sep 2018 11:57:57 +0200 Subject: [PATCH 50/64] allow some other chars except digits at the regex replacing --- .../kotlin/com/simplemobiletools/contacts/helpers/Constants.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt index 936744bc..58309511 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt @@ -21,7 +21,7 @@ const val SMT_PRIVATE = "smt_private" // used at the contact source of local c const val IS_PRIVATE = "is_private" const val GROUP = "group" const val FIRST_GROUP_ID = 10000 -const val PHONE_NUMBER_PATTERN = "\\D+" +const val PHONE_NUMBER_PATTERN = "[^0-9#*+]" const val IS_FROM_SIMPLE_CONTACTS = "is_from_simple_contacts" const val ADD_NEW_CONTACT_NUMBER = "add_new_contact_number" From 27e1366339b4fb89e6074c8af7c9daba7a31f442 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 28 Sep 2018 12:02:04 +0200 Subject: [PATCH 51/64] adding a helper extension for filtering phone numbers --- .../com/simplemobiletools/contacts/extensions/String.kt | 3 +++ .../contacts/fragments/RecentsFragment.kt | 6 +++--- .../simplemobiletools/contacts/helpers/ContactsHelper.kt | 2 +- .../com/simplemobiletools/contacts/helpers/DBHelper.kt | 3 ++- .../com/simplemobiletools/contacts/models/Contact.kt | 8 ++++---- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/String.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/String.kt index 6134b1ad..f6d41a2b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/String.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/String.kt @@ -2,6 +2,7 @@ package com.simplemobiletools.contacts.extensions import android.widget.TextView import com.simplemobiletools.commons.helpers.getDateFormats +import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat import java.text.DateFormat @@ -32,3 +33,5 @@ fun String.getDateTimeFromDateString(viewToUpdate: TextView? = null): DateTime { } return date } + +fun String.applyRegexFiltering() = replace(PHONE_NUMBER_PATTERN.toRegex(), "") diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt index c1319997..d4b30ab9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt @@ -10,10 +10,10 @@ import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALL_LOG import com.simplemobiletools.contacts.activities.EditContactActivity import com.simplemobiletools.contacts.adapters.RecentCallsAdapter +import com.simplemobiletools.contacts.extensions.applyRegexFiltering import com.simplemobiletools.contacts.extensions.contactClicked import com.simplemobiletools.contacts.helpers.IS_FROM_SIMPLE_CONTACTS import com.simplemobiletools.contacts.helpers.KEY_PHONE -import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN import com.simplemobiletools.contacts.helpers.RECENTS_TAB_MASK import com.simplemobiletools.contacts.models.Contact import com.simplemobiletools.contacts.models.RecentCall @@ -44,10 +44,10 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage val currAdapter = fragment_list.adapter if (currAdapter == null) { RecentCallsAdapter(activity!!, recentCalls, activity, fragment_list, fragment_fastscroller) { - val recentCall = (it as RecentCall).number.replace(PHONE_NUMBER_PATTERN.toRegex(), "") + val recentCall = (it as RecentCall).number.applyRegexFiltering() var selectedContact: Contact? = null for (contact in allContacts) { - if (contact.phoneNumbers.any { it.value.replace(PHONE_NUMBER_PATTERN.toRegex(), "") == recentCall }) { + if (contact.phoneNumbers.any { it.value.applyRegexFiltering() == recentCall }) { selectedContact = contact break } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt index 090c2a07..88e3b7d7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt @@ -166,7 +166,7 @@ class ContactsHelper(val activity: Activity) { if (filterDuplicates) { // remove all spaces, dashes etc from numbers for easier comparing, used only at list views numbers.forEach { - numbers.mapTo(contacts[key].cleanPhoneNumbers) { PhoneNumber(it.value.replace(PHONE_NUMBER_PATTERN.toRegex(), ""), 0, "") } + numbers.mapTo(contacts[key].cleanPhoneNumbers) { PhoneNumber(it.value.applyRegexFiltering(), 0, "") } } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt index 508a4c80..b73283c6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/DBHelper.kt @@ -16,6 +16,7 @@ import com.simplemobiletools.commons.extensions.getBlobValue import com.simplemobiletools.commons.extensions.getIntValue import com.simplemobiletools.commons.extensions.getLongValue import com.simplemobiletools.commons.extensions.getStringValue +import com.simplemobiletools.contacts.extensions.applyRegexFiltering import com.simplemobiletools.contacts.extensions.config import com.simplemobiletools.contacts.extensions.getByteArray import com.simplemobiletools.contacts.extensions.getPhotoThumbnailSize @@ -349,7 +350,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont val cleanPhoneNumbers = ArrayList() if (filterDuplicates) { - phoneNumbers.mapTo(cleanPhoneNumbers) { PhoneNumber(it.value.replace(PHONE_NUMBER_PATTERN.toRegex(), ""), 0, "") } + phoneNumbers.mapTo(cleanPhoneNumbers) { PhoneNumber(it.value.applyRegexFiltering(), 0, "") } } val contact = Contact(id, prefix, firstName, middleName, surname, suffix, nickname, "", phoneNumbers, emails, addresses, diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt index e44dbd8a..c710d572 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/models/Contact.kt @@ -5,7 +5,7 @@ import com.simplemobiletools.commons.extensions.normalizeString import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME import com.simplemobiletools.commons.helpers.SORT_BY_MIDDLE_NAME import com.simplemobiletools.commons.helpers.SORT_DESCENDING -import com.simplemobiletools.contacts.helpers.PHONE_NUMBER_PATTERN +import com.simplemobiletools.contacts.extensions.applyRegexFiltering data class Contact(val id: Int, var prefix: String, var firstName: String, var middleName: String, var surname: String, var suffix: String, var nickname: String, var photoUri: String, var phoneNumbers: ArrayList, var emails: ArrayList, var addresses: ArrayList
, @@ -114,9 +114,9 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m } } - val numericOnly = text.replace(PHONE_NUMBER_PATTERN.toRegex(), "") - if (numericOnly.isNotEmpty()) { - if (phoneNumbers.any { it.value.contains(numericOnly) } || cleanPhoneNumbers.any { it.value.contains(numericOnly) }) { + val filteredNumber = text.applyRegexFiltering() + if (filteredNumber.isNotEmpty()) { + if (phoneNumbers.any { it.value.contains(filteredNumber) } || cleanPhoneNumbers.any { it.value.contains(filteredNumber) }) { return true } } From 877fe454fa006fcc2ef55463758bc3eda5406d56 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 28 Sep 2018 12:56:00 +0200 Subject: [PATCH 52/64] add a Plus sign to 0 at the dialpad --- .../contacts/activities/DialpadActivity.kt | 4 +- app/src/main/res/layout/activity_dialpad.xml | 39 +++++++++++++++---- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index 233e02c8..c90ae103 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -30,7 +30,7 @@ class DialpadActivity : SimpleActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_dialpad) - dialpad_0.setOnClickListener { dialpadPressed("0", it) } + dialpad_0_holder.setOnClickListener { dialpadPressed("0", it) } dialpad_1.setOnClickListener { dialpadPressed("1", it) } dialpad_2.setOnClickListener { dialpadPressed("2", it) } dialpad_3.setOnClickListener { dialpadPressed("3", it) } @@ -40,7 +40,7 @@ class DialpadActivity : SimpleActivity() { dialpad_7.setOnClickListener { dialpadPressed("7", it) } dialpad_8.setOnClickListener { dialpadPressed("8", it) } dialpad_9.setOnClickListener { dialpadPressed("9", it) } - dialpad_0.setOnLongClickListener { dialpadPressed("+", null); true } + dialpad_0_holder.setOnLongClickListener { dialpadPressed("+", null); true } dialpad_asterisk.setOnClickListener { dialpadPressed("*", it) } dialpad_hashtag.setOnClickListener { dialpadPressed("#", it) } dialpad_clear_char.setOnClickListener { clearChar(it) } diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index 175b22f5..6378918f 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -155,7 +155,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:text="8" - app:layout_constraintBottom_toTopOf="@+id/dialpad_0" + app:layout_constraintBottom_toTopOf="@+id/dialpad_0_holder" app:layout_constraintEnd_toStartOf="@+id/dialpad_9" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@+id/dialpad_7"/> @@ -180,20 +180,43 @@ android:layout_marginLeft="@dimen/activity_margin" android:text="*" app:layout_constraintBottom_toTopOf="@+id/dialpad_call_button" - app:layout_constraintEnd_toStartOf="@+id/dialpad_0" + app:layout_constraintEnd_toStartOf="@+id/dialpad_0_holder" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent"/> - + app:layout_constraintStart_toEndOf="@+id/dialpad_asterisk"> + + + + + + + app:layout_constraintStart_toEndOf="@+id/dialpad_0_holder"/> Date: Fri, 28 Sep 2018 12:59:36 +0200 Subject: [PATCH 53/64] make sure the dialpad Call button is properly colored --- .../simplemobiletools/contacts/activities/DialpadActivity.kt | 5 +++++ .../simplemobiletools/contacts/activities/MainActivity.kt | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt index c90ae103..11a45b07 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/DialpadActivity.kt @@ -2,6 +2,7 @@ package com.simplemobiletools.contacts.activities import android.annotation.TargetApi import android.content.Intent +import android.graphics.Color import android.os.Build import android.os.Bundle import android.text.InputType @@ -49,6 +50,10 @@ class DialpadActivity : SimpleActivity() { dialpad_input.afterTextChanged { dialpadValueChanged(it) } ContactsHelper(this).getContacts { gotContacts(it) } disableKeyboardPopping() + + val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_big, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE) + dialpad_call_button.setImageDrawable(callIcon) + dialpad_call_button.background.applyColorFilter(getAdjustedPrimaryColor()) } override fun onResume() { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt index 5f7f05c3..c98e60b1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt @@ -165,8 +165,8 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { } isFirstResume = false - val blackIcon = resources.getColoredDrawableWithColor(R.drawable.ic_dialpad, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE) - main_dialpad_button.setImageDrawable(blackIcon) + val dialpadIcon = resources.getColoredDrawableWithColor(R.drawable.ic_dialpad, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE) + main_dialpad_button.setImageDrawable(dialpadIcon) main_dialpad_button.background.applyColorFilter(getAdjustedPrimaryColor()) } From c17e7ff47e84316f36aed305d62fcb0e532020ea Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 28 Sep 2018 14:42:15 +0200 Subject: [PATCH 54/64] do not allow creating contacts under Signal or Telegram accounts --- .../com/simplemobiletools/contacts/extensions/Activity.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt index b2adcb75..a61b26f2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/extensions/Activity.kt @@ -62,8 +62,13 @@ fun SimpleActivity.startCall(contact: Contact) { fun SimpleActivity.showContactSourcePicker(currentSource: String, callback: (newSource: String) -> Unit) { ContactsHelper(this).getContactSources { + val ignoredTypes = arrayListOf( + "org.thoughtcrime.securesms", // Signal + "org.telegram.messenger" // Telegram + ) + val items = ArrayList() - val sources = it.map { it.name } + val sources = it.filter { !ignoredTypes.contains(it.type) }.map { it.name } var currentSourceIndex = -1 sources.forEachIndexed { index, account -> var publicAccount = account From c1ba8b0d1367b7f57898f9d9c1c1f4a987c533a0 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 28 Sep 2018 15:13:11 +0200 Subject: [PATCH 55/64] update commons to 4.8.0 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 5f97607f..19b7c0ac 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,7 +41,7 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:4.7.17' + implementation 'com.simplemobiletools:commons:4.8.0' implementation 'joda-time:joda-time:2.9.9' implementation 'com.facebook.stetho:stetho:1.5.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' From 98e527eba8de1f80f61fa89b383146715a95cc44 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 28 Sep 2018 20:19:53 +0200 Subject: [PATCH 56/64] adding dialpad into release notes --- .../com/simplemobiletools/contacts/activities/MainActivity.kt | 1 + app/src/main/res/values/donottranslate.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt index c98e60b1..0cb2281b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt @@ -550,6 +550,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { add(Release(27, R.string.release_27)) add(Release(29, R.string.release_29)) add(Release(31, R.string.release_31)) + add(Release(32, R.string.release_32)) checkWhatsNew(this, BuildConfig.VERSION_CODE) } } diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 59a112ff..c3d9f092 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -12,6 +12,7 @@ Jabber + Added a simple dialpad, dialer will come soon Added an optional IM field\n Added support for custom phone number/email/address types From c0e1ad84db26ec5967ad0041c0386efefd6efaa8 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 28 Sep 2018 20:21:35 +0200 Subject: [PATCH 57/64] update version to 4.5.0 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 19b7c0ac..63ebf515 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.simplemobiletools.contacts" minSdkVersion 16 targetSdkVersion 28 - versionCode 31 - versionName "4.4.0" + versionCode 32 + versionName "4.5.0" setProperty("archivesBaseName", "contacts") } From bc6f5aeee5e70ab89d709e8e7c9c757da97217a7 Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 28 Sep 2018 20:21:41 +0200 Subject: [PATCH 58/64] updating changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6beac38..ae86dd8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ Changelog ========== +Version 4.5.0 *(2018-09-28)* +---------------------------- + + * Added a simple dialpad + * Do not allow creating contacts under Signal or Telegram contact source + * Allow copying phone numbers into clipboard by long pressing them on the View screen + * Properly handle intents adding numbers to existing contacts + * Many other smaller improvements and bugfixes + Version 4.4.0 *(2018-09-04)* ---------------------------- From a8abd1bddca21ae0a64d673a9aca13d662eee6de Mon Sep 17 00:00:00 2001 From: solokot Date: Sat, 29 Sep 2018 17:07:33 +0300 Subject: [PATCH 59/64] Update strings.xml --- app/src/main/res/values-ru/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index cd412417..34f1a71a 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -15,8 +15,8 @@ Отправить письмо группе Вызов %s Запрос необходимых разрешений - Create new contact - Add to an existing contact + Создать новый контакт + Добавить к существующему контакту Новый контакт Редактировать контакт @@ -98,8 +98,8 @@ Имя файла (без .vcf) - Dialpad - Add number to contact + Набора номера + Добавить номер к контакту Выберите отображаемые поля From 6f76ddd39922ac59cf3b31ff24d09f309be495ed Mon Sep 17 00:00:00 2001 From: solokot Date: Sat, 29 Sep 2018 17:09:24 +0300 Subject: [PATCH 60/64] Update strings.xml --- app/src/main/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 34f1a71a..82a7239f 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -98,7 +98,7 @@ Имя файла (без .vcf) - Набора номера + Набор номера Добавить номер к контакту From 058561383e1c316c850b3c85d94d78df85842f44 Mon Sep 17 00:00:00 2001 From: solokot Date: Sun, 30 Sep 2018 13:01:15 +0300 Subject: [PATCH 61/64] Update strings.xml --- app/src/main/res/values-ru/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 82a7239f..98b0eebb 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -36,7 +36,7 @@ На устройстве нет групп контактов Создать группу Добавить в группу - Создать группу под учётной записью + Создать группу в учётной записи Снять фото @@ -91,8 +91,8 @@ Импортировать контакты Экспортировать контакты - Импортировать контакты из vcf-файла - Экспортировать контакты в vcf-файл + Импортировать из vcf-файла + Экспортировать в vcf-файл Назначенный к обновлению источник контактов Включить источники контактов Имя файла (без .vcf) From 96918f2d9fb31d4652424159924714e6d4ae83dd Mon Sep 17 00:00:00 2001 From: ScratchBuild Date: Mon, 1 Oct 2018 14:07:25 +0900 Subject: [PATCH 62/64] Update Japanese translation --- app/src/main/res/values-ja/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index e87a4211..6e65f80f 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -15,8 +15,8 @@ グループにメールを送信 Call %s Request the required permissions - Create new contact - Add to an existing contact + 新しい連絡先を作成 + 既存の連絡先に追加 新しい連絡先 連絡先を編集 @@ -99,7 +99,7 @@ ダイヤルパッド - Add number to contact + 連絡先に番号を追加 表示する項目を選択 From 5b91cdcfcede2cd1ae59070c38bf9d60e9f913db Mon Sep 17 00:00:00 2001 From: fricyo <30796677+fricyo@users.noreply.github.com> Date: Sun, 7 Oct 2018 16:58:06 +0800 Subject: [PATCH 63/64] Update Translation --- app/src/main/res/values-zh-rTW/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 1fe54476..afab4bfc 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -15,8 +15,8 @@ 發送電子郵件給群組 打電話給 %s 請求必要的權限 - Create new contact - Add to an existing contact + 建立新聯絡人 + 添加至已存在的聯絡人 新聯絡人 編輯聯絡人 @@ -25,7 +25,7 @@ 名字 中間名 姓氏 - Nickname + 暱稱 沒有群組 @@ -98,8 +98,8 @@ 檔案名稱 (不含.vcf) - Dialpad - Add number to contact + 撥號畫面 + 添加號碼至通訊錄 選擇要顯示的欄位 @@ -114,7 +114,7 @@ 網站 群組 聯絡人來源 - Instant messaging (IM) + 即時通訊 (IM) 我想要更改在通訊錄會看到哪些欄位。我能這麼做嗎? From 4cfa967a642b0cd0624d9e880836d7261fc86a08 Mon Sep 17 00:00:00 2001 From: Emanuele Petriglia Date: Sun, 7 Oct 2018 09:05:58 +0000 Subject: [PATCH 64/64] Add italian translation --- app/src/main/res/values-it/strings.xml | 140 +++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 app/src/main/res/values-it/strings.xml diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml new file mode 100644 index 00000000..517038be --- /dev/null +++ b/app/src/main/res/values-it/strings.xml @@ -0,0 +1,140 @@ + + Simple Contacts + Contatti + Indirizzo + Inserimento in corso… + Aggiornamento in corso… + Memoria del telefono + Memoria del telfono (non visibile alle altre applicazioni) + Compagnia + Posizione lavorativa + Sito web + Invia un SMS ai contatti + Invia un\'email ai contatti + Invia un SMS al gruppo + Invia un\'email al gruppo + Chiama %s + Richiedi le permissioni necessarie + Crea un nuovo contatto + Aggiungi ad un contatto esistente + + Nuovo contatto + Modifica contatto + Seleziona contatto + Seleziona contatti + Nome + Secondo nome + Cognome + Soprannome + + + Nessun gruppo + Crea un nuovo gruppo + Rimuovi dal gruppo + Questo gruppo è vuoto + Aggiungi contatti + Non ci sono gruppi con contatti nel dispositivo + Crea gruppo + Aggiungi al gruppo + Crea un gruppo con un account + + + Scatta un foto + Scegli una foto + Rimuovi foto + + + Prima il nome poi il cognome + Mostra i numeri di telefono nella schermata principale + Mostra le anteprime dei contatti + Al click sul contatto + Chiama contatto + Visualizza i dettagli del contatto + Gestisci i campi mostrati + Prova a filetrare i contatti duplicati + Gestisci le schede mostrate + Contatti + Preferiti + Chiamate recenti + Mostra un dialogo di conferma prima di iniziare una chiamata + + + Email + Casa + Lavoro + Altro + + + Numero + Cellulare + Principale + Fax di lavoro + Fax di casa + Cercapersone + Non è stato trovato alcun numero di telefono + + + Compleanno + Anniversario + + + Sembra che ancora non si ha nessun contatto preferito. + Aggiungi preferito + Aggiungi ai preferiti + Rimuovi dai preferiti + Devi stare nella schermata di modifica per modificare un contatto + + + Cerca contatti + Cerca preferiti + + + Importa contatti + Esporta contatti + Importa contatti da un file .vcf + Esporta contatti in un file .vcf + Individua la provenienza del contatto + Includi la provenienza del contatto + Nome del file (senza .vcf) + + + Tastiera + Aggiungi numero ai contatti + + + Seleziona i campi da mostrare + Prefisso + Suffisso + Numeri di telefono + Email + Indirizzi + Eventi (compleanni, anniversari) + Note + Organizazione + Siti web + Gruppi + Provenienza del contatto + Messaggistica istantanea (IM) + + + Voglio cambiare i campi visibili ai contatti. Come posso fare? + Puoi farlo andando in Impostazioni -> Gestisci i campi mostrati. Qui puoi selezionare i campi che saranno visibili. Alcuni sono anche disabilitati in maniera predefinita, quindi potresti trovare qualche nuovo campo. + + + + Un\'applicazioni contatti per gestire i propri contatti senza pubblicità. + + Una semplice applicazione per creare o gestire i propri contatti da qualsiasi provenienza. I contatti saranno salvati solamente nel dispositivo, ma possono essere sincronizzati con Google, o con altri servizi. Si possono visualizzare i contatti preferiti in una list separata. + + Si può utilizzare l\'applicazione anche per gestire le email e gli eventi. Può ordinare e filtrare per parametri multipli, ed opzionalmente visualizzare il cognome come nome + + Non contiene pubblicità nè chiede permessi non necessari. È completamente open source ed offre colori personalizzabili. + + Quest\'app fa parte di una serie più grande. Puoi trovare le altre su https://www.simplemobiletools.com + + + +