From cf8487d4cd5f2e66ab82a8e2ea2b4944b511d8c3 Mon Sep 17 00:00:00 2001 From: Pavel Poley Date: Fri, 13 May 2022 17:20:08 +0300 Subject: [PATCH 01/11] sorting --- app/build.gradle | 2 +- .../dialer/activities/MainActivity.kt | 11 ++++ .../dialer/dialogs/ChangeSortingDialog.kt | 64 ++++++++++++++++++ .../main/res/layout/dialog_change_sorting.xml | 66 +++++++++++++++++++ app/src/main/res/menu/menu.xml | 5 ++ app/src/main/res/values/integers.xml | 1 + 6 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeSortingDialog.kt create mode 100644 app/src/main/res/layout/dialog_change_sorting.xml diff --git a/app/build.gradle b/app/build.gradle index c087cde9..64f195ef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,6 +61,6 @@ android { } dependencies { - implementation 'com.github.SimpleMobileTools:Simple-Commons:e3376e4f56' + implementation 'com.github.pavelpoley:Simple-Commons:0580b1a8f4' implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61' } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 653bf33f..6de0cfd0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -25,9 +25,11 @@ import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.models.FAQItem +import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.dialer.BuildConfig import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.adapters.ViewPagerAdapter +import com.simplemobiletools.dialer.dialogs.ChangeSortingDialog import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.fragments.MyViewPagerFragment import com.simplemobiletools.dialer.helpers.OPEN_DIAL_PAD_AT_LAUNCH @@ -69,6 +71,8 @@ class MainActivity : SimpleActivity() { } hideTabs() + + SimpleContact.sorting = config.sorting } override fun onSaveInstanceState(outState: Bundle) { @@ -135,6 +139,7 @@ class MainActivity : SimpleActivity() { R.id.clear_call_history -> clearCallHistory() R.id.settings -> launchSettings() R.id.about -> launchAbout() + R.id.sort -> showSortingDialog() else -> return super.onOptionsItemSelected(item) } return true @@ -467,4 +472,10 @@ class MainActivity : SimpleActivity() { startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true) } + + private fun showSortingDialog() { + ChangeSortingDialog(this) { + refreshFragments() + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeSortingDialog.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeSortingDialog.kt new file mode 100644 index 00000000..de6b3b12 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeSortingDialog.kt @@ -0,0 +1,64 @@ +package com.simplemobiletools.dialer.dialogs + +import androidx.appcompat.app.AlertDialog +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.extensions.setupDialogStuff +import com.simplemobiletools.commons.helpers.* +import com.simplemobiletools.commons.models.SimpleContact +import com.simplemobiletools.dialer.R +import com.simplemobiletools.dialer.extensions.config +import kotlinx.android.synthetic.main.dialog_change_sorting.view.* + +class ChangeSortingDialog(val activity: BaseSimpleActivity, private val callback: () -> Unit) { + private var currSorting = 0 + private var config = activity.config + private var view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null) + + init { + AlertDialog.Builder(activity) + .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } + .setNegativeButton(R.string.cancel, null) + .create().apply { + activity.setupDialogStuff(view, this, R.string.sort_by) + } + + currSorting = config.sorting + setupSortRadio() + setupOrderRadio() + } + + private fun setupSortRadio() { + val sortingRadio = view.sorting_dialog_radio_sorting + val sortBtn = when { + currSorting and SORT_BY_FULL_NAME != 0 -> sortingRadio.sorting_dialog_radio_full_name + else -> sortingRadio.sorting_dialog_radio_date_created + } + sortBtn.isChecked = true + } + + private fun setupOrderRadio() { + val orderRadio = view.sorting_dialog_radio_order + var orderBtn = orderRadio.sorting_dialog_radio_ascending + + if (currSorting and SORT_DESCENDING != 0) { + orderBtn = orderRadio.sorting_dialog_radio_descending + } + orderBtn.isChecked = true + } + + private fun dialogConfirmed() { + val sortingRadio = view.sorting_dialog_radio_sorting + var sorting = when (sortingRadio.checkedRadioButtonId) { + R.id.sorting_dialog_radio_full_name -> SORT_BY_FULL_NAME + else -> SORT_BY_DATE_CREATED + } + + if (view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending) { + sorting = sorting or SORT_DESCENDING + } + + config.sorting = sorting + SimpleContact.sorting = sorting + callback() + } +} diff --git a/app/src/main/res/layout/dialog_change_sorting.xml b/app/src/main/res/layout/dialog_change_sorting.xml new file mode 100644 index 00000000..fc2f957a --- /dev/null +++ b/app/src/main/res/layout/dialog_change_sorting.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 0045494b..37104db2 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -1,6 +1,11 @@ + 2 + 65536 From b2960c624e25c6ede7358de926a85768edddf6af Mon Sep 17 00:00:00 2001 From: Pavel Poley Date: Sat, 14 May 2022 19:32:20 +0300 Subject: [PATCH 02/11] switch from local to original repository --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 64f195ef..5dd35338 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,6 +61,6 @@ android { } dependencies { - implementation 'com.github.pavelpoley:Simple-Commons:0580b1a8f4' + implementation 'com.github.SimpleMobileTools:Simple-Commons:6c96be277f' implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61' } From b628a8f626e7dde128876b45e7d38458d12070e8 Mon Sep 17 00:00:00 2001 From: Pavel Poley Date: Sun, 15 May 2022 12:24:49 +0300 Subject: [PATCH 03/11] handle select sorting when search is active --- .../dialer/activities/MainActivity.kt | 13 ++++++++++++- .../dialer/fragments/ContactsFragment.kt | 3 ++- .../dialer/fragments/FavoritesFragment.kt | 3 ++- .../dialer/fragments/RecentsFragment.kt | 2 +- .../dialer/interfaces/RefreshItemsListener.kt | 2 +- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 6de0cfd0..2b7b227f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -45,6 +45,7 @@ class MainActivity : SimpleActivity() { private var launchedDialer = false private var searchMenuItem: MenuItem? = null private var storedShowTabs = 0 + private var searchQuery = "" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -176,6 +177,7 @@ class MainActivity : SimpleActivity() { override fun onQueryTextChange(newText: String): Boolean { if (isSearchOpen) { + searchQuery = newText getCurrentFragment()?.onSearchQueryChanged(newText) } return true @@ -475,7 +477,16 @@ class MainActivity : SimpleActivity() { private fun showSortingDialog() { ChangeSortingDialog(this) { - refreshFragments() + favorites_fragment?.refreshItems { + if (isSearchOpen){ + getCurrentFragment()?.onSearchQueryChanged(searchQuery) + } + } + contacts_fragment?.refreshItems { + if (isSearchOpen){ + getCurrentFragment()?.onSearchQueryChanged(searchQuery) + } + } } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt index bb29e758..49bf82dc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt @@ -72,7 +72,7 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag ) } - override fun refreshItems() { + override fun refreshItems(callback: (() -> Unit)?) { val privateCursor = context?.getMyContactsCursor(false, true) SimpleContactsHelper(context).getAvailableContacts(false) { contacts -> allContacts = contacts @@ -85,6 +85,7 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag activity?.runOnUiThread { gotContacts(contacts) + callback?.invoke() } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt index 3c7b5018..d354f2e8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt @@ -46,7 +46,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa letter_fastscroller_thumb.thumbColor = properPrimaryColor.getColorStateList() } - override fun refreshItems() { + override fun refreshItems(callback: (() -> Unit)?) { val privateCursor = context?.getMyContactsCursor(true, true) SimpleContactsHelper(context).getAvailableContacts(true) { contacts -> allContacts = contacts @@ -59,6 +59,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa activity?.runOnUiThread { gotContacts(contacts) + callback?.invoke() } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt index 73f521f6..6336ef69 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt @@ -45,7 +45,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage } } - override fun refreshItems() { + override fun refreshItems(callback: (() -> Unit)?) { val privateCursor = context?.getMyContactsCursor(false, true) val groupSubsequentCalls = context?.config?.groupSubsequentCalls ?: false RecentsHelper(context).getRecentCalls(groupSubsequentCalls) { recents -> diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/interfaces/RefreshItemsListener.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/interfaces/RefreshItemsListener.kt index 1346cfb0..a56225f2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/interfaces/RefreshItemsListener.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/interfaces/RefreshItemsListener.kt @@ -1,5 +1,5 @@ package com.simplemobiletools.dialer.interfaces interface RefreshItemsListener { - fun refreshItems() + fun refreshItems(callback: (() -> Unit)? = null) } From 3ecec6492d2629deb172d88c831254cb94f3043f Mon Sep 17 00:00:00 2001 From: Pavel Poley Date: Sun, 15 May 2022 12:29:21 +0300 Subject: [PATCH 04/11] hide sorting icon for recents tab --- .../com/simplemobiletools/dialer/activities/MainActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 2b7b227f..b2459c50 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -128,6 +128,7 @@ class MainActivity : SimpleActivity() { menuInflater.inflate(R.menu.menu, menu) menu.apply { findItem(R.id.clear_call_history).isVisible = getCurrentFragment() == recents_fragment + findItem(R.id.sort).isVisible = getCurrentFragment() != recents_fragment setupSearch(this) updateMenuItemColors(this) From c87bec54ce74539fec1a2d70d52606ecb2b77c1d Mon Sep 17 00:00:00 2001 From: "hjklkjlkjlk@abv.bg" Date: Wed, 11 May 2022 21:05:37 +0200 Subject: [PATCH 05/11] Added translation using Weblate (Bulgarian) --- app/src/main/res/values-bg/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-bg/strings.xml diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml new file mode 100644 index 00000000..a6b3daec --- /dev/null +++ b/app/src/main/res/values-bg/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 98ce3891c86ecc257970bf9aeda559beb3127993 Mon Sep 17 00:00:00 2001 From: lx3k Date: Wed, 11 May 2022 04:04:50 +0000 Subject: [PATCH 06/11] Translated using Weblate (Japanese) Currently translated at 100.0% (50 of 50 strings) Translation: Simple Mobile Tools/Simple Dialer Translate-URL: https://hosted.weblate.org/projects/simple-mobile-tools/simple-dialer/ja/ --- app/src/main/res/values-ja/strings.xml | 92 ++++++++++---------------- 1 file changed, 36 insertions(+), 56 deletions(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 64bc5dd0..bf63a1b0 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -1,84 +1,64 @@ - Simpleダイヤラー - ダイヤラー - Please make this app the default Phone app - Please allow displaying over other apps for reliable behaviour + Simple 電話 + 電話 + このアプリをデフォルトの電話アプリにしてください + 安定した動作のために、他のアプリの上に重ねて表示することを許可して下さい - コンタクトにアクセスできませんでした + 連絡先にアクセスできませんでした 通話履歴が見つかりませんでした 通話履歴にアクセスできませんでした アクセスを要求する - 本当に履歴から選択したアイテムを消去しますか? - Are you sure you want to remove everything from the Call History? - SMSを送信 - Show grouped calls - Clear call history - Show call details + 選択したアイテムを通話履歴から削除してもよろしいですか? + すべての通話履歴を削除してもよろしいですか? + SMS を送信 + グループ化された通話履歴を表示する + 通話履歴をクリア + 通話の詳細を表示する ダイヤルパッド - Asterisk - Hashtag - Call number + アスタリスク + ハッシュタグ + 電話番号 - ダイヤラー + 電話 許可 - Accept call + 電話を受ける 拒否 - Decline call - 不明 + 通話を断る + 不明な発信者 から着信中… 発信中… 通話終了 通話終了 通話中 - SIMを選択 - この番号ではこのSIMを常に使用 - Unset default SIM - Calls - Turn microphone on - Turn microphone off - Turn speaker on - Turn speaker off - Show dialpad - Hide dialpad - End call + この通話に使う SIM を選択してください + この番号ではこの SIM を常に使用 + デフォルトの SIM の設定を解除 + 通話 + マイクをオンにする + マイクをオフにする + スピーカーをオンにする + スピーカーをオフにする + ダイヤルパッドを表示 + ダイヤルパッドを隠す + 通話を終了する スピードダイヤル スピードダイヤルの管理 - 番号をクリックすると連絡先を割り当てることが出来ます。ダイヤラーで指定された番号を長押しすると、指定された連絡先に素早く電話をかけることが出来ます。 + 番号をクリックすると連絡先を割り当てることが出来ます。電話で指定された番号を長押しすると、指定された連絡先に素早く電話をかけることが出来ます。 後続の通話をコールログの同じ番号でグループ化する - Open the dialpad by default when the app opens - Disable proximity sensor during calls - Replace swiping at responding to incoming calls with clicking + アプリが開いたら、デフォルトでダイヤルパッドを開きます + 通話中に近接センサーを無効にする + 着信に応答する際のスワイプをクリックに置き換えます - シンプルなダイヤラー-通話を簡単に管理 + シンプルなダイヤラー - 通話を簡単に管理 - アドレス管理、電話番号ブロック、マルチSIMサポートを備えた便利なアドレス帳 - - 容量の軽いこのアプリは、どこにいても電話をかけることが出来ます。便利な着信履歴は電話をかけやすくします。 - - ダイヤルパッドもサービスに含まれており、スマートな連絡を提案致します。メールも対応内です。 - - 不必要な電話を避けるため、電話番号は簡単にブロックすることが出来ます。 - - スピードダイヤリングはお気に入りの連絡先に気軽に電話をかけることを可能にします。 - 携帯アプリから素早く電話がかけられるよう、お気に入りの連絡先やその他の連絡先のショートカットを作成し、ホーム画面に追加することが出来ます。 - - 広告や不要な権限はありません。 完全にオープンソースで、カラーもカスタマイズ可能。 - - シンプルツールの完全なリストはこちらからご確認ください: - https://www.simplemobiletools.com - - Facebook: - https://www.facebook.com/simplemobiletools - - Reddit: - https://www.reddit.com/r/SimpleMobileTools - + アドレス管理、電話番号ブロック、マルチ SIM サポートを備えた便利なアドレス帳 + どこでも電話できる軽量な電話アプリ。便利な着信履歴機能で、素早く電話をかけられます。 アルファベットもサポートしたクイックダイヤルパッド。賢く連絡先を提案します。電話番号で、迷惑電話をブロック。余計な電話におさらばです。素早く電話をかけられる、スピードダイヤリング。お気に入りの連絡先にサクッと電話をかけられます。 ホーム画面に、お気に入りやその他の連絡先のショートカットを作成し、パッと電話をかけられます。マテリアルデザインとダークテーマにデフォルトで対応。 使いやすい優れたユーザーエクスペリエンスを提供します。インターネットアクセスがないため、他のアプリよりもプライバシー、セキュリティ、安定性があります。広告や不要な権限は含まれていません。完全にオープンソースで、カラーもカスタマイズ可能。 シンプルツールの一覧はこちらをご覧ください: https://www.simplemobiletools.com Facebook: https://www.facebook.com/simplemobiletools Reddit: https://www.reddit.com/r/SimpleMobileTools Менеджер викликів: книга контактів, блокування номерів, підтримка кількох SIM - A lightweight app for handling your calls, no matter where are you. Comes with a handy call log for easy call initiation. There is a quick dialpad at your service too, with smart contact suggestions. It supports letters too. You can easily block phone numbers to avoid unwanted incoming calls. Supported Speed dialing makes calling your favorite contacts with this true phone a breeze. To help you manage your calls quickly the Phone app also supports favorite contacts and creating shortcuts of any contact on the home screen. It comes with material design and dark theme by default, provides great user experience for easy usage. The lack of internet access gives you more privacy, security and stability than other apps. Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. Check out the full suite of Simple Tools here: https://www.simplemobiletools.com Facebook: https://www.facebook.com/simplemobiletools Reddit: https://www.reddit.com/r/SimpleMobileTools + A lightweight app for handling your calls, no matter where are you. Comes with a handy call log for easy call initiation. There is a quick dialpad at your service too, with smart contact suggestions. It supports letters too. You can easily block phone numbers to avoid unwanted incoming calls. Supported Speed dialing makes calling your favorite contacts with this true phone a breeze. To help you manage your calls quickly the Phone app also supports favorite contacts and creating shortcuts of any contact on the home screen. За промовчанням додаток поставляється з матеріальним дизайном і темною темою, забезпечує чудовий користувацький досвід для простого використання. Відсутність доступу до Інтернету надає більше приватності, безпеки та стабільності, порівняно з іншими додатками. Не буде показувати рекламу; потрібні лише найнеобхідніші дозволи. Програмний код повністю відкритий, забезпечує настроювальні кольори оформлення. Ознайомтеся з повним набором додатків Simple Tools тут: https://www.simplemobiletools.com Facebook: https://www.facebook.com/simplemobiletools Reddit: https://www.reddit.com/r/SimpleMobileTools + Невъзможно бе да се получи достъп до контактите ви + Няма предишни обаждания Невъзможно е да се получи достъп до историята на обажданията Поискайте достъп + Сигурни ли сте, че искате да премахнете избраните елементи от историята на обажданията\? + Сигурни ли сте, че искате да премахнете всичко от историята на обажданията\? Изпратете SMS Покажете обажданията групирани Изчистете историята на обажданията Покажете подробности за обаждането + Бутони за набиране + Звездичка Хаштаг Номер + + Телефон + Приемете + Приемете обаждането + Откажете + Откажете обаждането + Неизвестен номер + Звъни… + Набиране на номера… + Край на обаждането + Завършване на обаждането + Изходящо обаждане + Изберете SIM карта за това обаждане + Винаги използвайте тази SIM карта за този номер + Нулиране на избора на SIM карта по подразбиране + Обаждания + Включете микрофона Изключете микрофона + Включете високоговорителя + Изключете високоговорителя + Показване на бутоните за набиране + Скриване на бутоните за набиране + Край на обаждането + Hold call + Resume call + On Hold + + Бързо набиране + Управление на бързото набиране Кликнете върху номер, за да приложите контакт към него. След това можете бързо да се обадите на този контакт чрез дълго натискане на номера на бутона от бутоните за набиране. + Групиране на последващи обаждания от същия номер в историята на обажданията Отваряне на бутоните за набиране при стартиране на приложението Изключване на сензора за близост по време на обаждания Смяна на плъзгането с кликване за отговор на входящи обаждания - Звездичка - Откажете обаждането - Сигурни ли сте, че искате да премахнете всичко от историята на обажданията\? - Управление на бързото набиране + + Simple Dialer - Лесно управление на обаждания + Телефон с адреси, блокиране на номера, поддръжка на няколко SIM карти - Лека програма за управление на обажданията, без значение къде сте. Има история на обажданията за лесно стартиране на разговор. На ваше разположение има и бутони за бързо набиране, с умни предложения на контакти. Също поддържа и букви. Можете лесно да блокирате телефонни номера, за да избегнете нежелани входящи повиквания. Поддържаното бързо набиране прави много лесно обаждането на любими контакти. За да ви помогне да управлявате лесно обажданията си, приложението също поддържа любими контакти и създаване на преки пътища за всеки от контактите на началния екран на телефона. Използва material дизайн и тъмна тема по подразбиране, осигуряващи страхотно потребителско изживяване на лесна употреба. Липсата на интернет достъпване ви осигурява повече поверителност, сигурност и стабилност от други приложения. Не съдържа реклами и ненужни резрешения. Напълно с отворен код е и има сменяеми цветове. \u0020Вижте пълната колекция на Simple Tools тук: https://www.simplemobiletools.com Фейсбук: https://www.facebook.com/simplemobiletools Redit: https://www.reddit.com/r/SimpleMobileTools - Невъзможно бе да се получи достъп до контактите ви - Сигурни ли сте, че искате да премахнете избраните елементи от историята на обажданията\? - Изберете SIM карта за това обаждане - Винаги използвайте тази SIM карта за този номер - Обаждания - Включете високоговорителя - Телефон - Приемете - Откажете - Неизвестен номер - Набиране на номера… - Звъни… - Нулиране на избора на SIM карта по подразбиране - Край на обаждането - Завършване на обаждането - Скриване на бутоните за набиране - Бързо набиране - \ No newline at end of file + + Лека програма за управление на обажданията, без значение къде сте. Има история на обажданията за лесно стартиране на разговор. На ваше разположение има и бутони за бързо набиране, с умни предложения на контакти. Също поддържа и букви. Можете лесно да блокирате телефонни номера, за да избегнете нежелани входящи повиквания. Поддържаното бързо набиране прави много лесно обаждането на любими контакти. За да ви помогне да управлявате лесно обажданията си, приложението също поддържа любими контакти и създаване на преки пътища за всеки от контактите на началния екран на телефона. Използва material дизайн и тъмна тема по подразбиране, осигуряващи страхотно потребителско изживяване на лесна употреба. Липсата на интернет достъпване ви осигурява повече поверителност, сигурност и стабилност от други приложения. Не съдържа реклами и ненужни резрешения. Напълно с отворен код е и има сменяеми цветове. \u0020Вижте пълната колекция на Simple Tools тук: https://www.simplemobiletools.com Фейсбук: https://www.facebook.com/simplemobiletools Redit: https://www.reddit.com/r/SimpleMobileTools + + +