Merge branch 'SimpleMobileTools:master' into master

This commit is contained in:
AmirMohammad Yazdanmanesh
2023-04-22 18:36:29 +03:30
committed by GitHub
137 changed files with 1528 additions and 1012 deletions

View File

@@ -1,6 +1,63 @@
Changelog
==========
Version 5.17.8 *(2023-04-19)*
----------------------------
* Avoid showing contacts without a phone number
* Fixed multiple contact handling related glitches
* Added some stability, translation and UX improvements
Version 5.17.7 *(2023-04-12)*
----------------------------
* Added some stability, translation and UX improvements
Version 5.17.6 *(2023-04-07)*
----------------------------
* Fixed number presses during call
* Added some stability, translation and UX improvements
Version 5.17.5 *(2023-03-29)*
----------------------------
* Allow filtering contacts
* Fix displaying contacts, if name starts with surname
* Fixed some right-to-left layout glitches
* Added some stability, translation and UX improvements
Version 5.17.4 *(2023-03-21)*
----------------------------
* Allow filtering contacts
* Fix displaying contacts, if name starts with surname
* Fixed some right-to-left layout glitches
* Added some stability, translation and UX improvements
Version 5.17.3 *(2023-01-12)*
----------------------------
* Fixed a search glitch on some devices
Version 5.17.2 *(2023-01-10)*
----------------------------
* Fixed a glitch with dialpad button not being visible on some devices
Version 5.17.1 *(2023-01-04)*
----------------------------
* Added the new search bar at the top menu
Version 5.17.0 *(2022-12-30)*
----------------------------
* Do not allow calling blocked numbers
* Allow hiding numbers on the dialpad
* Use Material You theme by default on Android 12+
* Added some UI, translation and stability improvements
Version 5.16.0 *(2022-11-12)*
----------------------------

8
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,8 @@
### Reporting
Before you report something, read the reporting rules [here](https://github.com/SimpleMobileTools/General-Discussion#how-do-i-suggest-an-improvement-ask-a-question-or-report-an-issue) please.
### Contributing as a developer
Some instructions about code style and everything that has to be done to increase the change of your code getting accepted can be found at the [General Discussion](https://github.com/SimpleMobileTools/General-Discussion#contribution-rules-for-developers) section.
### Contributing as a non developer
In case you just want to for example improve a translation, you can find the way of doing it [here](https://github.com/SimpleMobileTools/General-Discussion#how-can-i-suggest-an-edit-to-a-file).

View File

@@ -15,8 +15,8 @@ android {
applicationId "com.simplemobiletools.dialer"
minSdkVersion 23
targetSdkVersion 33
versionCode 46
versionName "5.16.0"
versionCode 55
versionName "5.17.8"
setProperty("archivesBaseName", "dialer")
}
@@ -62,7 +62,7 @@ android {
}
dependencies {
implementation 'com.github.SimpleMobileTools:Simple-Commons:5b5a6b083f'
implementation 'com.github.SimpleMobileTools:Simple-Commons:ee2e127758'
implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61'
implementation 'me.grantland:autofittextview:0.2.1'
}

View File

@@ -8,6 +8,7 @@
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
@@ -20,6 +21,7 @@
<uses-permission android:name="android.telecom.action.CONFIGURE_PHONE_ACCOUNT" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
@@ -62,36 +64,42 @@
<activity
android:name="com.simplemobiletools.commons.activities.AboutActivity"
android:configChanges="orientation"
android:exported="false"
android:label="@string/about"
android:parentActivityName=".activities.MainActivity" />
<activity
android:name="com.simplemobiletools.commons.activities.CustomizationActivity"
android:configChanges="orientation"
android:exported="false"
android:label="@string/customize_colors"
android:parentActivityName=".activities.SettingsActivity" />
<activity
android:name="com.simplemobiletools.commons.activities.ManageBlockedNumbersActivity"
android:configChanges="orientation"
android:exported="false"
android:label="@string/blocked_numbers"
android:parentActivityName=".activities.SettingsActivity" />
<activity
android:name=".activities.ManageSpeedDialActivity"
android:configChanges="orientation"
android:exported="false"
android:label="@string/speed_dial"
android:parentActivityName=".activities.SettingsActivity" />
<activity
android:name=".activities.ConferenceActivity"
android:configChanges="orientation"
android:exported="false"
android:label="@string/conference"
android:parentActivityName=".activities.CallActivity" />
<activity
android:name=".activities.SettingsActivity"
android:configChanges="orientation"
android:exported="true"
android:label="@string/settings"
android:parentActivityName=".activities.MainActivity">
@@ -116,6 +124,7 @@
android:exported="true"
android:label="@string/dialpad"
android:parentActivityName=".activities.MainActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden">
<intent-filter>
@@ -144,6 +153,7 @@
<activity
android:name=".activities.DialerActivity"
android:configChanges="orientation"
android:exported="true"
android:label="@string/dialer"
android:theme="@style/Theme.Transparent">

View File

@@ -20,12 +20,10 @@ import android.view.WindowManager
import android.view.animation.AccelerateDecelerateInterpolator
import android.view.animation.OvershootInterpolator
import android.widget.ImageView
import androidx.core.content.res.ResourcesCompat
import androidx.core.view.children
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.LOWER_ALPHA
import com.simplemobiletools.commons.helpers.MINUTE_SECONDS
import com.simplemobiletools.commons.helpers.isOreoMr1Plus
import com.simplemobiletools.commons.helpers.isOreoPlus
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.SimpleListItem
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.dialogs.DynamicBottomSheetChooserDialog
@@ -88,7 +86,7 @@ class CallActivity : SimpleActivity() {
override fun onResume() {
super.onResume()
updateState()
updateNavigationBarColor(getBottomNavigationBackgroundColor())
updateNavigationBarColor(getProperBackgroundColor())
}
override fun onDestroy() {
@@ -187,6 +185,25 @@ class CallActivity : SimpleActivity() {
dialpad_8_holder.setOnClickListener { dialpadPressed('8') }
dialpad_9_holder.setOnClickListener { dialpadPressed('9') }
arrayOf(
dialpad_0_holder,
dialpad_1_holder,
dialpad_2_holder,
dialpad_3_holder,
dialpad_4_holder,
dialpad_5_holder,
dialpad_6_holder,
dialpad_7_holder,
dialpad_8_holder,
dialpad_9_holder,
dialpad_plus_holder,
dialpad_asterisk_holder,
dialpad_hashtag_holder
).forEach {
it.background = ResourcesCompat.getDrawable(resources, R.drawable.pill_background, theme)
it.background?.alpha = LOWER_ALPHA_INT
}
dialpad_0_holder.setOnLongClickListener { dialpadPressed('+'); true }
dialpad_asterisk_holder.setOnClickListener { dialpadPressed('*') }
dialpad_hashtag_holder.setOnClickListener { dialpadPressed('#') }
@@ -383,7 +400,7 @@ class CallActivity : SimpleActivity() {
}
private fun dialpadPressed(char: Char) {
CallManager.keypad(this, char)
CallManager.keypad(char)
dialpad_input.addCharacter(char)
}

View File

@@ -10,10 +10,12 @@ import kotlinx.android.synthetic.main.activity_conference.*
class ConferenceActivity : SimpleActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_conference)
conference_calls_list.adapter = ConferenceCallsAdapter(this, conference_calls_list, ArrayList(CallManager.getConferenceCalls())) {}
updateMaterialActivityViews(conference_coordinator, conference_list, useTransparentNavigation = true, useTopSearchMenu = false)
setupMaterialScrollListener(conference_list, conference_toolbar)
conference_list.adapter = ConferenceCallsAdapter(this, conference_list, ArrayList(CallManager.getConferenceCalls())) {}
}
override fun onResume() {

View File

@@ -36,6 +36,12 @@ class DialerActivity : SimpleActivity() {
@SuppressLint("MissingPermission")
private fun initOutgoingCall() {
try {
if (isNumberBlocked(callNumber.toString().replace("tel:", ""), getBlockedNumbers())) {
toast(R.string.calling_blocked_number)
finish()
return
}
getHandleToUse(intent, callNumber.toString()) { handle ->
if (handle != null) {
Bundle().apply {

View File

@@ -17,10 +17,13 @@ import android.view.KeyEvent
import android.view.MotionEvent
import android.view.View
import android.view.ViewConfiguration
import androidx.core.content.res.ResourcesCompat
import androidx.core.view.isVisible
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
import com.simplemobiletools.commons.dialogs.CallConfirmationDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.adapters.ContactsAdapter
import com.simplemobiletools.dialer.extensions.*
@@ -34,7 +37,7 @@ import java.util.*
import kotlin.math.roundToInt
class DialpadActivity : SimpleActivity() {
private var allContacts = ArrayList<SimpleContact>()
private var allContacts = ArrayList<Contact>()
private var speedDialValues = ArrayList<SpeedDial>()
private val russianCharsMap = HashMap<Char, Int>()
private var hasRussianLocale = false
@@ -49,10 +52,47 @@ class DialpadActivity : SimpleActivity() {
setContentView(R.layout.activity_dialpad)
hasRussianLocale = Locale.getDefault().language == "ru"
updateMaterialActivityViews(dialpad_coordinator, dialpad_holder, useTransparentNavigation = true, useTopSearchMenu = false)
setupMaterialScrollListener(dialpad_list, dialpad_toolbar)
updateNavigationBarColor(getProperBackgroundColor())
if (checkAppSideloading()) {
return
}
if (config.hideDialpadNumbers) {
dialpad_1_holder.isVisible = false
dialpad_2_holder.isVisible = false
dialpad_3_holder.isVisible = false
dialpad_4_holder.isVisible = false
dialpad_5_holder.isVisible = false
dialpad_6_holder.isVisible = false
dialpad_7_holder.isVisible = false
dialpad_8_holder.isVisible = false
dialpad_9_holder.isVisible = false
dialpad_plus_holder.isVisible = true
dialpad_0_holder.visibility = View.INVISIBLE
}
arrayOf(
dialpad_0_holder,
dialpad_1_holder,
dialpad_2_holder,
dialpad_3_holder,
dialpad_4_holder,
dialpad_5_holder,
dialpad_6_holder,
dialpad_7_holder,
dialpad_8_holder,
dialpad_9_holder,
dialpad_plus_holder,
dialpad_asterisk_holder,
dialpad_hashtag_holder
).forEach {
it.background = ResourcesCompat.getDrawable(resources, R.drawable.pill_background, theme)
it.background?.alpha = LOWER_ALPHA_INT
}
setupOptionsMenu()
speedDialValues = config.getSpeedDialValues()
privateCursor = getMyContactsCursor(favoritesOnly = false, withPhoneNumbersOnly = true)
@@ -89,6 +129,7 @@ class DialpadActivity : SimpleActivity() {
setupCharClick(dialpad_8_holder, '8')
setupCharClick(dialpad_9_holder, '9')
setupCharClick(dialpad_0_holder, '0')
setupCharClick(dialpad_plus_holder, '+', longClickable = false)
setupCharClick(dialpad_asterisk_holder, '*', longClickable = false)
setupCharClick(dialpad_hashtag_holder, '#', longClickable = false)
@@ -97,10 +138,13 @@ class DialpadActivity : SimpleActivity() {
dialpad_call_button.setOnClickListener { initCall(dialpad_input.value, 0) }
dialpad_input.onTextChangeListener { dialpadValueChanged(it) }
dialpad_input.requestFocus()
SimpleContactsHelper(this).getAvailableContacts(false) { gotContacts(it) }
dialpad_input.disableKeyboard()
ContactsHelper(this).getContacts(showOnlyContactsWithNumbers = true) { allContacts ->
gotContacts(allContacts)
}
val properPrimaryColor = getProperPrimaryColor()
val callIconId = if (areMultipleSIMsAvailable()) {
val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_two_vector, properPrimaryColor.getContrastColor())
@@ -131,7 +175,7 @@ class DialpadActivity : SimpleActivity() {
super.onResume()
updateTextColors(dialpad_holder)
dialpad_clear_char.applyColorFilter(getProperTextColor())
updateNavigationBarColor(getBottomNavigationBackgroundColor())
updateNavigationBarColor(getProperBackgroundColor())
setupToolbar(dialpad_toolbar, NavigationIcon.Arrow)
}
@@ -179,10 +223,10 @@ class DialpadActivity : SimpleActivity() {
dialpad_input.setText("")
}
private fun gotContacts(newContacts: ArrayList<SimpleContact>) {
private fun gotContacts(newContacts: ArrayList<Contact>) {
allContacts = newContacts
val privateContacts = MyContactsContentProvider.getSimpleContacts(this, privateCursor)
val privateContacts = MyContactsContentProvider.getContacts(this, privateCursor)
if (privateContacts.isNotEmpty()) {
allContacts.addAll(privateContacts)
allContacts.sort()
@@ -230,11 +274,11 @@ class DialpadActivity : SimpleActivity() {
it.doesContainPhoneNumber(text) || (convertedName.contains(text, true))
}.sortedWith(compareBy {
!it.doesContainPhoneNumber(text)
}).toMutableList() as ArrayList<SimpleContact>
}).toMutableList() as ArrayList<Contact>
letter_fastscroller.setupWithRecyclerView(dialpad_list, { position ->
try {
val name = filtered[position].name
val name = filtered[position].getNameToDisplay()
val character = if (name.isNotEmpty()) name.substring(0, 1) else ""
FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault()))
} catch (e: Exception) {
@@ -243,7 +287,14 @@ class DialpadActivity : SimpleActivity() {
})
ContactsAdapter(this, filtered, dialpad_list, null, text) {
startCallIntent((it as SimpleContact).phoneNumbers.first().normalizedNumber)
val contact = it as Contact
if (config.showCallConfirmation) {
CallConfirmationDialog(this@DialpadActivity, contact.getNameToDisplay()) {
startCallIntent(contact.getPrimaryNumber() ?: return@CallConfirmationDialog)
}
} else {
startCallIntent(contact.getPrimaryNumber() ?: return@ContactsAdapter)
}
}.apply {
dialpad_list.adapter = this
}
@@ -262,9 +313,21 @@ class DialpadActivity : SimpleActivity() {
private fun initCall(number: String = dialpad_input.value, handleIndex: Int) {
if (number.isNotEmpty()) {
if (handleIndex != -1 && areMultipleSIMsAvailable()) {
callContactWithSim(number, handleIndex == 0)
if (config.showCallConfirmation) {
CallConfirmationDialog(this, number) {
callContactWithSim(number, handleIndex == 0)
}
}else{
callContactWithSim(number, handleIndex == 0)
}
} else {
startCallIntent(number)
if (config.showCallConfirmation) {
CallConfirmationDialog(this, number) {
startCallIntent(number)
}
}else{
startCallIntent(number)
}
}
}
}

View File

@@ -2,8 +2,6 @@ package com.simplemobiletools.dialer.activities
import android.annotation.SuppressLint
import android.app.Activity
import android.app.SearchManager
import android.content.Context
import android.content.Intent
import android.content.pm.ShortcutInfo
import android.content.res.Configuration
@@ -13,24 +11,21 @@ import android.graphics.drawable.LayerDrawable
import android.os.Bundle
import android.os.Handler
import android.provider.Settings
import android.view.Menu
import android.view.MenuItem
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.widget.SearchView
import androidx.core.view.MenuItemCompat
import androidx.viewpager.widget.ViewPager
import com.google.android.material.snackbar.Snackbar
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.commons.models.contacts.Contact
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.dialogs.FilterContactSourcesDialog
import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.extensions.launchCreateNewContactIntent
import com.simplemobiletools.dialer.fragments.FavoritesFragment
@@ -45,19 +40,19 @@ import kotlinx.android.synthetic.main.fragment_recents.*
import me.grantland.widget.AutofitHelper
class MainActivity : SimpleActivity() {
private var isSearchOpen = false
private var launchedDialer = false
private var mSearchMenuItem: MenuItem? = null
private var storedShowTabs = 0
private var searchQuery = ""
var cachedContacts = ArrayList<SimpleContact>()
private var storedStartNameWithSurname = false
var cachedContacts = ArrayList<Contact>()
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
appLaunched(BuildConfig.APPLICATION_ID)
setupOptionsMenu()
refreshMenuItems()
updateMaterialActivityViews(main_coordinator, main_holder, useTransparentNavigation = false, useTopSearchMenu = true)
launchedDialer = savedInstanceState?.getBoolean(OPEN_DIAL_PAD_AT_LAUNCH) ?: false
@@ -90,28 +85,37 @@ class MainActivity : SimpleActivity() {
}
setupTabs()
SimpleContact.sorting = config.sorting
Contact.sorting = config.sorting
}
override fun onResume() {
super.onResume()
if (storedShowTabs != config.showTabs) {
config.lastUsedViewPagerPage = 0
System.exit(0)
return
}
updateMenuColors()
val properPrimaryColor = getProperPrimaryColor()
val dialpadIcon = resources.getColoredDrawableWithColor(R.drawable.ic_dialpad_vector, properPrimaryColor.getContrastColor())
main_dialpad_button.setImageDrawable(dialpadIcon)
setupTabColors()
setupToolbar(main_toolbar, searchMenuItem = mSearchMenuItem)
updateTextColors(main_holder)
setupTabColors()
getAllFragments().forEach {
it?.setupColors(getProperTextColor(), getProperPrimaryColor(), getProperPrimaryColor())
}
if (!isSearchOpen) {
if (storedShowTabs != config.showTabs) {
System.exit(0)
return
}
val configStartNameWithSurname = config.startNameWithSurname
if (storedStartNameWithSurname != configStartNameWithSurname) {
contacts_fragment?.startNameWithSurnameChanged(configStartNameWithSurname)
favorites_fragment?.startNameWithSurnameChanged(configStartNameWithSurname)
storedStartNameWithSurname = config.startNameWithSurname
}
if (!main_menu.isSearchOpen) {
refreshItems(true)
}
@@ -124,6 +128,7 @@ class MainActivity : SimpleActivity() {
override fun onPause() {
super.onPause()
storedShowTabs = config.showTabs
storedStartNameWithSurname = config.startNameWithSurname
config.lastUsedViewPagerPage = view_pager.currentItem
}
@@ -149,8 +154,8 @@ class MainActivity : SimpleActivity() {
}
override fun onBackPressed() {
if (isSearchOpen && mSearchMenuItem != null) {
mSearchMenuItem!!.collapseActionView()
if (main_menu.isSearchOpen) {
main_menu.closeSearch()
} else {
super.onBackPressed()
}
@@ -158,7 +163,7 @@ class MainActivity : SimpleActivity() {
private fun refreshMenuItems() {
val currentFragment = getCurrentFragment()
main_toolbar.menu.apply {
main_menu.getToolbar().menu.apply {
findItem(R.id.clear_call_history).isVisible = currentFragment == recents_fragment
findItem(R.id.sort).isVisible = currentFragment != recents_fragment
findItem(R.id.create_new_contact).isVisible = currentFragment == contacts_fragment
@@ -167,12 +172,26 @@ class MainActivity : SimpleActivity() {
}
private fun setupOptionsMenu() {
setupSearch(main_toolbar.menu)
main_toolbar.setOnMenuItemClickListener { menuItem ->
main_menu.getToolbar().inflateMenu(R.menu.menu)
main_menu.toggleHideOnScroll(false)
main_menu.setupMenu()
main_menu.onSearchClosedListener = {
getAllFragments().forEach {
it?.onSearchQueryChanged("")
}
}
main_menu.onSearchTextChangedListener = { text ->
getCurrentFragment()?.onSearchQueryChanged(text)
}
main_menu.getToolbar().setOnMenuItemClickListener { menuItem ->
when (menuItem.itemId) {
R.id.clear_call_history -> clearCallHistory()
R.id.create_new_contact -> launchCreateNewContactIntent()
R.id.sort -> showSortingDialog(showCustomSorting = getCurrentFragment() is FavoritesFragment)
R.id.filter -> showFilterDialog()
R.id.more_apps_from_us -> launchMoreAppsFromUsIntent()
R.id.settings -> launchSettings()
R.id.about -> launchAbout()
@@ -182,53 +201,20 @@ class MainActivity : SimpleActivity() {
}
}
private fun updateMenuColors() {
updateStatusbarColor(getProperBackgroundColor())
main_menu.updateColors()
}
private fun checkContactPermissions() {
handlePermission(PERMISSION_READ_CONTACTS) {
initFragments()
}
}
private fun setupSearch(menu: Menu) {
val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
mSearchMenuItem = menu.findItem(R.id.search)
(mSearchMenuItem!!.actionView as SearchView).apply {
setSearchableInfo(searchManager.getSearchableInfo(componentName))
isSubmitButtonEnabled = false
queryHint = getString(R.string.search)
setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String) = false
override fun onQueryTextChange(newText: String): Boolean {
if (isSearchOpen) {
searchQuery = newText
getCurrentFragment()?.onSearchQueryChanged(newText)
}
return true
}
})
}
MenuItemCompat.setOnActionExpandListener(mSearchMenuItem, object : MenuItemCompat.OnActionExpandListener {
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
isSearchOpen = true
main_dialpad_button.beGone()
return true
}
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
if (isSearchOpen) {
getCurrentFragment()?.onSearchClosed()
}
isSearchOpen = false
main_dialpad_button.beVisible()
return true
}
})
}
private fun clearCallHistory() {
ConfirmationDialog(this, "", R.string.clear_history_confirmation) {
val confirmationText = "${getString(R.string.remove_confirmation)}\n\n${getString(R.string.cannot_be_undone)}"
ConfirmationDialog(this, confirmationText) {
RecentsHelper(this).removeAllRecentCalls(this) {
runOnUiThread {
recents_fragment?.refreshItems()
@@ -270,11 +256,11 @@ class MainActivity : SimpleActivity() {
private fun setupTabColors() {
val activeView = main_tabs_holder.getTabAt(view_pager.currentItem)?.customView
updateBottomTabItemColors(activeView, true)
updateBottomTabItemColors(activeView, true, getSelectedTabDrawableIds()[view_pager.currentItem])
getInactiveTabIndexes(view_pager.currentItem).forEach { index ->
val inactiveView = main_tabs_holder.getTabAt(index)?.customView
updateBottomTabItemColors(inactiveView, false)
updateBottomTabItemColors(inactiveView, false, getDeselectedTabDrawableIds()[index])
}
val bottomBarColor = getBottomNavigationBackgroundColor()
@@ -282,7 +268,45 @@ class MainActivity : SimpleActivity() {
updateNavigationBarColor(bottomBarColor)
}
private fun getInactiveTabIndexes(activeIndex: Int) = (0 until tabsList.size).filter { it != activeIndex }
private fun getInactiveTabIndexes(activeIndex: Int) = (0 until main_tabs_holder.tabCount).filter { it != activeIndex }
private fun getSelectedTabDrawableIds(): ArrayList<Int> {
val showTabs = config.showTabs
val icons = ArrayList<Int>()
if (showTabs and TAB_CONTACTS != 0) {
icons.add(R.drawable.ic_person_vector)
}
if (showTabs and TAB_FAVORITES != 0) {
icons.add(R.drawable.ic_star_vector)
}
if (showTabs and TAB_CALL_HISTORY != 0) {
icons.add(R.drawable.ic_clock_filled_vector)
}
return icons
}
private fun getDeselectedTabDrawableIds(): ArrayList<Int> {
val showTabs = config.showTabs
val icons = ArrayList<Int>()
if (showTabs and TAB_CONTACTS != 0) {
icons.add(R.drawable.ic_person_outline_vector)
}
if (showTabs and TAB_FAVORITES != 0) {
icons.add(R.drawable.ic_star_outline_vector)
}
if (showTabs and TAB_CALL_HISTORY != 0) {
icons.add(R.drawable.ic_clock_vector)
}
return icons
}
private fun initFragments() {
view_pager.offscreenPageLimit = 2
@@ -349,17 +373,18 @@ class MainActivity : SimpleActivity() {
main_tabs_holder.onTabSelectionChanged(
tabUnselectedAction = {
updateBottomTabItemColors(it.customView, false)
updateBottomTabItemColors(it.customView, false, getDeselectedTabDrawableIds()[it.position])
},
tabSelectedAction = {
closeSearch()
main_menu.closeSearch()
view_pager.currentItem = it.position
updateBottomTabItemColors(it.customView, true)
updateBottomTabItemColors(it.customView, true, getSelectedTabDrawableIds()[it.position])
}
)
main_tabs_holder.beGoneIf(main_tabs_holder.tabCount == 1)
storedShowTabs = config.showTabs
storedStartNameWithSurname = config.startNameWithSurname
}
private fun getTabIcon(position: Int): Drawable {
@@ -404,7 +429,7 @@ class MainActivity : SimpleActivity() {
}
}
private fun refreshFragments() {
fun refreshFragments() {
contacts_fragment?.refreshItems()
favorites_fragment?.refreshItems()
recents_fragment?.refreshItems()
@@ -471,13 +496,11 @@ class MainActivity : SimpleActivity() {
}
private fun launchSettings() {
closeSearch()
hideKeyboard()
startActivity(Intent(applicationContext, SettingsActivity::class.java))
}
private fun launchAbout() {
closeSearch()
val licenses = LICENSE_GLIDE or LICENSE_INDICATOR_FAST_SCROLL or LICENSE_AUTOFITTEXTVIEW
val faqItems = arrayListOf(
@@ -496,29 +519,40 @@ class MainActivity : SimpleActivity() {
private fun showSortingDialog(showCustomSorting: Boolean) {
ChangeSortingDialog(this, showCustomSorting) {
favorites_fragment?.refreshItems {
if (isSearchOpen) {
getCurrentFragment()?.onSearchQueryChanged(searchQuery)
if (main_menu.isSearchOpen) {
getCurrentFragment()?.onSearchQueryChanged(main_menu.getCurrentQuery())
}
}
contacts_fragment?.refreshItems {
if (isSearchOpen) {
getCurrentFragment()?.onSearchQueryChanged(searchQuery)
if (main_menu.isSearchOpen) {
getCurrentFragment()?.onSearchQueryChanged(main_menu.getCurrentQuery())
}
}
}
}
private fun closeSearch() {
if (isSearchOpen) {
getAllFragments().forEach {
it?.onSearchQueryChanged("")
private fun showFilterDialog() {
FilterContactSourcesDialog(this) {
favorites_fragment?.refreshItems {
if (main_menu.isSearchOpen) {
getCurrentFragment()?.onSearchQueryChanged(main_menu.getCurrentQuery())
}
}
contacts_fragment?.refreshItems {
if (main_menu.isSearchOpen) {
getCurrentFragment()?.onSearchQueryChanged(main_menu.getCurrentQuery())
}
}
recents_fragment?.refreshItems{
if (main_menu.isSearchOpen) {
getCurrentFragment()?.onSearchQueryChanged(main_menu.getCurrentQuery())
}
}
mSearchMenuItem?.collapseActionView()
}
}
fun cacheContacts(contacts: List<SimpleContact>) {
fun cacheContacts(contacts: List<Contact>) {
try {
cachedContacts.clear()
cachedContacts.addAll(contacts)

View File

@@ -3,9 +3,9 @@ package com.simplemobiletools.dialer.activities
import android.os.Bundle
import com.google.gson.Gson
import com.simplemobiletools.commons.extensions.updateTextColors
import com.simplemobiletools.commons.helpers.ContactsHelper
import com.simplemobiletools.commons.helpers.NavigationIcon
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.adapters.SpeedDialAdapter
import com.simplemobiletools.dialer.dialogs.SelectContactDialog
@@ -15,16 +15,20 @@ import com.simplemobiletools.dialer.models.SpeedDial
import kotlinx.android.synthetic.main.activity_manage_speed_dial.*
class ManageSpeedDialActivity : SimpleActivity(), RemoveSpeedDialListener {
private var allContacts = ArrayList<SimpleContact>()
private var allContacts = ArrayList<Contact>()
private var speedDialValues = ArrayList<SpeedDial>()
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_manage_speed_dial)
updateMaterialActivityViews(manage_speed_dial_coordinator, manage_speed_dial_holder, useTransparentNavigation = true, useTopSearchMenu = false)
setupMaterialScrollListener(manage_speed_dial_scrollview, manage_speed_dial_toolbar)
speedDialValues = config.getSpeedDialValues()
updateAdapter()
SimpleContactsHelper(this).getAvailableContacts(false) { contacts ->
ContactsHelper(this).getContacts(showOnlyContactsWithNumbers = true) { contacts ->
allContacts = contacts
}
@@ -50,7 +54,7 @@ class ManageSpeedDialActivity : SimpleActivity(), RemoveSpeedDialListener {
SelectContactDialog(this, allContacts) { selectedContact ->
speedDialValues.first { it.id == clickedContact.id }.apply {
displayName = selectedContact.name
displayName = selectedContact.getNameToDisplay()
number = selectedContact.phoneNumbers.first().normalizedNumber
}
updateAdapter()

View File

@@ -20,9 +20,14 @@ import java.util.*
import kotlin.system.exitProcess
class SettingsActivity : SimpleActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
updateMaterialActivityViews(settings_coordinator, settings_holder, useTransparentNavigation = true, useTopSearchMenu = false)
setupMaterialScrollListener(settings_nested_scrollview, settings_toolbar)
}
override fun onResume() {
@@ -43,6 +48,7 @@ class SettingsActivity : SimpleActivity() {
setupGroupSubsequentCalls()
setupStartNameWithSurname()
setupDialpadVibrations()
setupDialpadNumbers()
setupDialpadBeeps()
setupShowCallConfirmation()
setupDisableProximitySensor()
@@ -51,22 +57,13 @@ class SettingsActivity : SimpleActivity() {
updateTextColors(settings_holder)
arrayOf(
settings_color_customization_label,
settings_color_customization_section_label,
settings_general_settings_label,
settings_startup_label,
settings_calls_label
).forEach {
it.setTextColor(getProperPrimaryColor())
}
arrayOf(
settings_color_customization_holder,
settings_general_settings_holder,
settings_startup_holder,
settings_calls_holder
).forEach {
it.background.applyColorFilter(getProperBackgroundColor().getContrastColor())
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
@@ -76,21 +73,14 @@ class SettingsActivity : SimpleActivity() {
private fun setupPurchaseThankYou() {
settings_purchase_thank_you_holder.beGoneIf(isOrWasThankYouInstalled())
// make sure the corners at ripple fit the stroke rounded corners
if (settings_purchase_thank_you_holder.isGone()) {
settings_use_english_holder.background = resources.getDrawable(R.drawable.ripple_top_corners, theme)
settings_manage_blocked_numbers_holder.background = resources.getDrawable(R.drawable.ripple_top_corners, theme)
}
settings_purchase_thank_you_holder.setOnClickListener {
launchPurchaseThankYouIntent()
}
}
private fun setupCustomizeColors() {
settings_customize_colors_label.text = getCustomizeColorsString()
settings_customize_colors_holder.setOnClickListener {
settings_color_customization_label.text = getCustomizeColorsString()
settings_color_customization_holder.setOnClickListener {
handleCustomizeColorsClick()
}
}
@@ -108,11 +98,6 @@ class SettingsActivity : SimpleActivity() {
private fun setupLanguage() {
settings_language.text = Locale.getDefault().displayLanguage
settings_language_holder.beVisibleIf(isTiramisuPlus())
if (settings_use_english_holder.isGone() && settings_language_holder.isGone() && settings_purchase_thank_you_holder.isGone()) {
settings_manage_blocked_numbers_holder.background = resources.getDrawable(R.drawable.ripple_top_corners, theme)
}
settings_language_holder.setOnClickListener {
launchChangeAppLanguageIntent()
}
@@ -123,11 +108,6 @@ class SettingsActivity : SimpleActivity() {
private fun setupManageBlockedNumbers() {
settings_manage_blocked_numbers_label.text = addLockedLabelIfNeeded(R.string.manage_blocked_numbers)
settings_manage_blocked_numbers_holder.beVisibleIf(isNougatPlus())
if (settings_use_english_holder.isGone() && settings_purchase_thank_you_holder.isGone() && settings_manage_blocked_numbers_holder.isGone()) {
settings_change_date_time_format_holder.background = resources.getDrawable(R.drawable.ripple_top_corners, theme)
}
settings_manage_blocked_numbers_holder.setOnClickListener {
if (isOrWasThankYouInstalled()) {
Intent(this, ManageBlockedNumbersActivity::class.java).apply {
@@ -234,6 +214,14 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupDialpadNumbers() {
settings_hide_dialpad_numbers.isChecked = config.hideDialpadNumbers
settings_hide_dialpad_numbers_holder.setOnClickListener {
settings_hide_dialpad_numbers.toggle()
config.hideDialpadNumbers = settings_hide_dialpad_numbers.isChecked
}
}
private fun setupDialpadBeeps() {
settings_dialpad_beeps.isChecked = config.dialpadBeeps
settings_dialpad_beeps_holder.setOnClickListener {

View File

@@ -28,7 +28,7 @@ import com.simplemobiletools.commons.helpers.isOreoPlus
import com.simplemobiletools.commons.interfaces.ItemMoveCallback
import com.simplemobiletools.commons.interfaces.ItemTouchHelperContract
import com.simplemobiletools.commons.interfaces.StartReorderDragListener
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.commons.views.MyRecyclerView
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
@@ -41,7 +41,7 @@ import java.util.*
class ContactsAdapter(
activity: SimpleActivity,
var contacts: ArrayList<SimpleContact>,
var contacts: ArrayList<Contact>,
recyclerView: MyRecyclerView,
val refreshItemsListener: RefreshItemsListener? = null,
highlightText: String = "",
@@ -135,9 +135,9 @@ class ContactsAdapter(
override fun getItemCount() = contacts.size
fun updateItems(newItems: ArrayList<SimpleContact>, highlightText: String = "") {
fun updateItems(newItems: ArrayList<Contact>, highlightText: String = "") {
if (newItems.hashCode() != contacts.hashCode()) {
contacts = newItems.clone() as ArrayList<SimpleContact>
contacts = newItems.clone() as ArrayList<Contact>
textToHighlight = highlightText
notifyDataSetChanged()
finishActMode()
@@ -184,7 +184,7 @@ class ContactsAdapter(
val itemsCnt = selectedKeys.size
val firstItem = getSelectedItems().firstOrNull() ?: return
val items = if (itemsCnt == 1) {
"\"${firstItem.name}\""
"\"${firstItem.getNameToDisplay()}\""
} else {
resources.getQuantityString(R.plurals.delete_contacts, itemsCnt, itemsCnt)
}
@@ -221,12 +221,10 @@ class ContactsAdapter(
}
}
private fun getSelectedItems() = contacts.filter { selectedKeys.contains(it.rawId) } as ArrayList<SimpleContact>
private fun getSelectedItems() = contacts.filter { selectedKeys.contains(it.rawId) } as ArrayList<Contact>
private fun getSelectedPhoneNumber(): String? {
val numbers = getSelectedItems().firstOrNull()?.phoneNumbers
val primaryNumber = numbers?.firstOrNull { it.isPrimary }
return primaryNumber?.normalizedNumber ?: numbers?.firstOrNull()?.normalizedNumber
return getSelectedItems().firstOrNull()?.getPrimaryNumber()
}
private fun tryCreateShortcut() {
@@ -242,16 +240,16 @@ class ContactsAdapter(
val contact = contacts.firstOrNull { selectedKeys.contains(it.rawId) } ?: return
val manager = activity.shortcutManager
if (manager.isRequestPinShortcutSupported) {
SimpleContactsHelper(activity).getShortcutImage(contact.photoUri, contact.name) { image ->
SimpleContactsHelper(activity).getShortcutImage(contact.photoUri, contact.getNameToDisplay()) { image ->
activity.runOnUiThread {
activity.handlePermission(PERMISSION_CALL_PHONE) { hasPermission ->
val action = if (hasPermission) Intent.ACTION_CALL else Intent.ACTION_DIAL
val intent = Intent(action).apply {
data = Uri.fromParts("tel", contact.phoneNumbers.first().normalizedNumber, null)
data = Uri.fromParts("tel", getSelectedPhoneNumber(), null)
}
val shortcut = ShortcutInfo.Builder(activity, contact.hashCode().toString())
.setShortLabel(contact.name)
.setShortLabel(contact.getNameToDisplay())
.setIcon(Icon.createWithBitmap(image))
.setIntent(intent)
.build()
@@ -270,18 +268,19 @@ class ContactsAdapter(
}
}
private fun setupView(view: View, contact: SimpleContact, holder: ViewHolder) {
private fun setupView(view: View, contact: Contact, holder: ViewHolder) {
view.apply {
findViewById<FrameLayout>(R.id.item_contact_frame).isSelected = selectedKeys.contains(contact.rawId)
findViewById<TextView>(R.id.item_contact_name).apply {
setTextColor(textColor)
setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
text = if (textToHighlight.isEmpty()) contact.name else {
if (contact.name.contains(textToHighlight, true)) {
contact.name.highlightTextPart(textToHighlight, properPrimaryColor)
val name = contact.getNameToDisplay()
text = if (textToHighlight.isEmpty()) name else {
if (name.contains(textToHighlight, true)) {
name.highlightTextPart(textToHighlight, properPrimaryColor)
} else {
contact.name.highlightTextFromNumbers(textToHighlight, properPrimaryColor)
name.highlightTextFromNumbers(textToHighlight, properPrimaryColor)
}
}
}
@@ -306,7 +305,7 @@ class ContactsAdapter(
}
if (!activity.isDestroyed) {
SimpleContactsHelper(context).loadContactImage(contact.photoUri, findViewById(R.id.item_contact_image), contact.name)
SimpleContactsHelper(context).loadContactImage(contact.photoUri, findViewById(R.id.item_contact_image), contact.getNameToDisplay())
}
}
}

View File

@@ -0,0 +1,78 @@
package com.simplemobiletools.dialer.adapters
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.simplemobiletools.commons.extensions.getProperBackgroundColor
import com.simplemobiletools.commons.extensions.getProperPrimaryColor
import com.simplemobiletools.commons.extensions.getProperTextColor
import com.simplemobiletools.commons.helpers.SMT_PRIVATE
import com.simplemobiletools.commons.models.contacts.ContactSource
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
import kotlinx.android.synthetic.main.item_filter_contact_source.view.*
class FilterContactSourcesAdapter(
val activity: SimpleActivity,
private val contactSources: List<ContactSource>,
private val displayContactSources: ArrayList<String>
) : RecyclerView.Adapter<FilterContactSourcesAdapter.ViewHolder>() {
private val selectedKeys = HashSet<Int>()
init {
contactSources.forEachIndexed { index, contactSource ->
if (displayContactSources.contains(contactSource.name)) {
selectedKeys.add(contactSource.hashCode())
}
if (contactSource.type == SMT_PRIVATE && displayContactSources.contains(SMT_PRIVATE)) {
selectedKeys.add(contactSource.hashCode())
}
}
}
private fun toggleItemSelection(select: Boolean, contactSource: ContactSource, position: Int) {
if (select) {
selectedKeys.add(contactSource.hashCode())
} else {
selectedKeys.remove(contactSource.hashCode())
}
notifyItemChanged(position)
}
fun getSelectedContactSources() = contactSources.filter { selectedKeys.contains(it.hashCode()) }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = activity.layoutInflater.inflate(R.layout.item_filter_contact_source, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val contactSource = contactSources[position]
holder.bindView(contactSource)
}
override fun getItemCount() = contactSources.size
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun bindView(contactSource: ContactSource): View {
val isSelected = selectedKeys.contains(contactSource.hashCode())
itemView.apply {
filter_contact_source_checkbox.isChecked = isSelected
filter_contact_source_checkbox.setColors(activity.getProperTextColor(), activity.getProperPrimaryColor(), activity.getProperBackgroundColor())
val countText = if (contactSource.count >= 0) " (${contactSource.count})" else ""
val displayName = "${contactSource.publicName}$countText"
filter_contact_source_checkbox.text = displayName
filter_contact_source_holder.setOnClickListener { viewClicked(!isSelected, contactSource) }
}
return itemView
}
private fun viewClicked(select: Boolean, contactSource: ContactSource) {
toggleItemSelection(select, contactSource, adapterPosition)
}
}
}

View File

@@ -14,7 +14,7 @@ import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.FeatureLockedDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.commons.views.MyRecyclerView
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.MainActivity
@@ -246,11 +246,11 @@ class RecentCallsAdapter(
}
}
private fun findContactByCall(recentCall: RecentCall): SimpleContact? {
private fun findContactByCall(recentCall: RecentCall): Contact? {
return (activity as MainActivity).cachedContacts.find { it.name == recentCall.name && it.doesHavePhoneNumber(recentCall.phoneNumber) }
}
private fun launchContactDetailsIntent(contact: SimpleContact?) {
private fun launchContactDetailsIntent(contact: Contact?) {
if (contact != null) {
activity.startContactDetailsIntent(contact)
}
@@ -275,13 +275,14 @@ class RecentCallsAdapter(
private fun setupView(view: View, call: RecentCall) {
view.apply {
item_recents_holder.isSelected = selectedKeys.contains(call.id)
var nameToShow = SpannableString(call.name)
val name = findContactByCall(call)?.getNameToDisplay() ?: call.name
var nameToShow = SpannableString(name)
if (call.specificType.isNotEmpty()) {
nameToShow = SpannableString("${call.name} - ${call.specificType}")
nameToShow = SpannableString("${name} - ${call.specificType}")
// show specific number at "Show call details" dialog too
if (refreshItemsListener == null) {
nameToShow = SpannableString("${call.name} - ${call.specificType}, ${call.specificNumber}")
nameToShow = SpannableString("${name} - ${call.specificType}, ${call.specificNumber}")
}
}

View File

@@ -1,24 +1,15 @@
package com.simplemobiletools.dialer.dialogs
import androidx.appcompat.app.AlertDialog
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.beGoneIf
import com.simplemobiletools.commons.extensions.getAlertDialogBuilder
import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM
import com.simplemobiletools.commons.helpers.SORT_BY_DATE_CREATED
import com.simplemobiletools.commons.helpers.SORT_BY_FULL_NAME
import com.simplemobiletools.commons.helpers.SORT_DESCENDING
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.helpers.*
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 showCustomSorting: Boolean = false,
private val callback: () -> Unit
) {
class ChangeSortingDialog(val activity: BaseSimpleActivity, private val showCustomSorting: Boolean = false, 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)
@@ -51,17 +42,18 @@ class ChangeSortingDialog(
}
val sortBtn = when {
currSorting and SORT_BY_FIRST_NAME != 0 -> sortingRadio.sorting_dialog_radio_first_name
currSorting and SORT_BY_MIDDLE_NAME != 0 -> sortingRadio.sorting_dialog_radio_middle_name
currSorting and SORT_BY_SURNAME != 0 -> sortingRadio.sorting_dialog_radio_surname
currSorting and SORT_BY_FULL_NAME != 0 -> sortingRadio.sorting_dialog_radio_full_name
currSorting and SORT_BY_CUSTOM != 0 -> sortingRadio.sorting_dialog_radio_custom
else -> sortingRadio.sorting_dialog_radio_date_created
}
sortBtn.isChecked = true
if (showCustomSorting) {
sortingRadio.sorting_dialog_radio_custom.isChecked = config.isCustomOrderSelected
}
view.sorting_dialog_radio_custom.beGoneIf(!showCustomSorting)
}
@@ -78,6 +70,9 @@ class ChangeSortingDialog(
private fun dialogConfirmed() {
val sortingRadio = view.sorting_dialog_radio_sorting
var sorting = when (sortingRadio.checkedRadioButtonId) {
R.id.sorting_dialog_radio_first_name -> SORT_BY_FIRST_NAME
R.id.sorting_dialog_radio_middle_name -> SORT_BY_MIDDLE_NAME
R.id.sorting_dialog_radio_surname -> SORT_BY_SURNAME
R.id.sorting_dialog_radio_full_name -> SORT_BY_FULL_NAME
R.id.sorting_dialog_radio_custom -> SORT_BY_CUSTOM
else -> SORT_BY_DATE_CREATED
@@ -98,7 +93,6 @@ class ChangeSortingDialog(
config.sorting = sorting
}
SimpleContact.sorting = sorting
callback()
}
}

View File

@@ -0,0 +1,91 @@
package com.simplemobiletools.dialer.dialogs
import androidx.appcompat.app.AlertDialog
import com.simplemobiletools.commons.extensions.getAlertDialogBuilder
import com.simplemobiletools.commons.extensions.getMyContactsCursor
import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.commons.helpers.SMT_PRIVATE
import com.simplemobiletools.commons.extensions.getVisibleContactSources
import com.simplemobiletools.commons.helpers.ContactsHelper
import com.simplemobiletools.commons.helpers.MyContactsContentProvider
import com.simplemobiletools.commons.models.contacts.*
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.adapters.FilterContactSourcesAdapter
import com.simplemobiletools.dialer.extensions.config
import kotlinx.android.synthetic.main.dialog_filter_contact_sources.view.*
class FilterContactSourcesDialog(val activity: SimpleActivity, private val callback: () -> Unit) {
private var dialog: AlertDialog? = null
private val view = activity.layoutInflater.inflate(R.layout.dialog_filter_contact_sources, null)
private var contactSources = ArrayList<ContactSource>()
private var contacts = ArrayList<Contact>()
private var isContactSourcesReady = false
private var isContactsReady = false
init {
val contactHelper = ContactsHelper(activity)
contactHelper.getContactSources { contactSources ->
contactSources.mapTo(this@FilterContactSourcesDialog.contactSources) { it.copy() }
isContactSourcesReady = true
processDataIfReady()
}
contactHelper.getContacts(getAll = true, showOnlyContactsWithNumbers = true) {
it.mapTo(contacts) { contact -> contact.copy() }
val privateCursor = activity.getMyContactsCursor(false, true)
val privateContacts = MyContactsContentProvider.getContacts(activity, privateCursor)
this.contacts.addAll(privateContacts)
isContactsReady = true
processDataIfReady()
}
}
private fun processDataIfReady() {
if (!isContactSourcesReady) {
return
}
val contactSourcesWithCount = ArrayList<ContactSource>()
for (contactSource in contactSources) {
val count = if (isContactsReady) {
contacts.filter { it.source == contactSource.name }.count()
} else {
-1
}
contactSourcesWithCount.add(contactSource.copy(count = count))
}
contactSources.clear()
contactSources.addAll(contactSourcesWithCount)
activity.runOnUiThread {
val selectedSources = activity.getVisibleContactSources()
view.filter_contact_sources_list.adapter = FilterContactSourcesAdapter(activity, contactSourcesWithCount, selectedSources)
if (dialog == null) {
activity.getAlertDialogBuilder()
.setPositiveButton(R.string.ok) { dialogInterface, i -> confirmContactSources() }
.setNegativeButton(R.string.cancel, null)
.apply {
activity.setupDialogStuff(view, this) { alertDialog ->
dialog = alertDialog
}
}
}
}
}
private fun confirmContactSources() {
val selectedContactSources = (view.filter_contact_sources_list.adapter as FilterContactSourcesAdapter).getSelectedContactSources()
val ignoredContactSources = contactSources.filter { !selectedContactSources.contains(it) }.map {
if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.getFullIdentifier()
}.toHashSet()
if (activity.getVisibleContactSources() != ignoredContactSources) {
activity.config.ignoredContactSources = ignoredContactSources
callback()
}
dialog?.dismiss()
}
}

View File

@@ -3,14 +3,14 @@ package com.simplemobiletools.dialer.dialogs
import androidx.appcompat.app.AlertDialog
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.adapters.ContactsAdapter
import kotlinx.android.synthetic.main.dialog_select_contact.view.*
import java.util.*
class SelectContactDialog(val activity: SimpleActivity, contacts: ArrayList<SimpleContact>, val callback: (selectedContact: SimpleContact) -> Unit) {
class SelectContactDialog(val activity: SimpleActivity, contacts: ArrayList<Contact>, val callback: (selectedContact: Contact) -> Unit) {
private var dialog: AlertDialog? = null
private var view = activity.layoutInflater.inflate(R.layout.dialog_select_contact, null)
@@ -23,7 +23,7 @@ class SelectContactDialog(val activity: SimpleActivity, contacts: ArrayList<Simp
letter_fastscroller.setupWithRecyclerView(select_contact_list, { position ->
try {
val name = contacts[position].name
val name = contacts[position].getNameToDisplay()
val character = if (name.isNotEmpty()) name.substring(0, 1) else ""
FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault()))
} catch (e: Exception) {
@@ -32,7 +32,7 @@ class SelectContactDialog(val activity: SimpleActivity, contacts: ArrayList<Simp
})
select_contact_list.adapter = ContactsAdapter(activity, contacts, select_contact_list) {
callback(it as SimpleContact)
callback(it as Contact)
dialog?.dismiss()
}
}

View File

@@ -15,7 +15,12 @@ import com.simplemobiletools.dialer.extensions.getAvailableSIMCardLabels
import kotlinx.android.synthetic.main.dialog_select_sim.view.*
@SuppressLint("MissingPermission")
class SelectSIMDialog(val activity: BaseSimpleActivity, val phoneNumber: String, val callback: (handle: PhoneAccountHandle?) -> Unit) {
class SelectSIMDialog(
val activity: BaseSimpleActivity,
val phoneNumber: String,
onDismiss: () -> Unit = {},
val callback: (handle: PhoneAccountHandle?) -> Unit
) {
private var dialog: AlertDialog? = null
private val view = activity.layoutInflater.inflate(R.layout.dialog_select_sim, null)
@@ -42,6 +47,10 @@ class SelectSIMDialog(val activity: BaseSimpleActivity, val phoneNumber: String,
dialog = alertDialog
}
}
dialog?.setOnDismissListener {
onDismiss()
}
}
private fun selectedSIM(handle: PhoneAccountHandle) {

View File

@@ -11,7 +11,8 @@ import android.telecom.TelecomManager
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.dialer.activities.DialerActivity
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.dialogs.SelectSIMDialog
@@ -42,7 +43,7 @@ fun BaseSimpleActivity.callContactWithSim(recipient: String, useMainSIM: Boolean
}
// handle private contacts differently, only Simple Contacts Pro can open them
fun Activity.startContactDetailsIntent(contact: SimpleContact) {
fun Activity.startContactDetailsIntent(contact: Contact) {
val simpleContacts = "com.simplemobiletools.contacts.pro"
val simpleContactsDebug = "com.simplemobiletools.contacts.pro.debug"
if (contact.rawId > 1000000 && contact.contactId > 1000000 && contact.rawId == contact.contactId &&
@@ -81,7 +82,11 @@ fun SimpleActivity.getHandleToUse(intent: Intent?, phoneNumber: String, callback
defaultHandle != null -> callback(defaultHandle)
else -> {
SelectSIMDialog(this, phoneNumber) { handle ->
SelectSIMDialog(this, phoneNumber, onDismiss = {
if (this is DialerActivity) {
finish()
}
}) { handle ->
callback(handle)
}
}

View File

@@ -5,10 +5,8 @@ import android.util.AttributeSet
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.MyContactsContentProvider
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.MainActivity
import com.simplemobiletools.dialer.activities.SimpleActivity
@@ -20,7 +18,7 @@ import kotlinx.android.synthetic.main.fragment_letters_layout.view.*
import java.util.*
class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), RefreshItemsListener {
private var allContacts = ArrayList<SimpleContact>()
private var allContacts = ArrayList<Contact>()
override fun setupFragment() {
val placeholderResId = if (context.hasPermission(PERMISSION_READ_CONTACTS)) {
@@ -64,15 +62,16 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
override fun refreshItems(callback: (() -> Unit)?) {
val privateCursor = context?.getMyContactsCursor(false, true)
SimpleContactsHelper(context).getAvailableContacts(false) { contacts ->
ContactsHelper(context).getContacts(showOnlyContactsWithNumbers = true) { contacts ->
allContacts = contacts
val privateContacts = MyContactsContentProvider.getSimpleContacts(context, privateCursor)
if (privateContacts.isNotEmpty()) {
allContacts.addAll(privateContacts)
allContacts.sort()
if (SMT_PRIVATE !in context.baseConfig.ignoredContactSources) {
val privateContacts = MyContactsContentProvider.getContacts(context, privateCursor)
if (privateContacts.isNotEmpty()) {
allContacts.addAll(privateContacts)
allContacts.sort()
}
}
(activity as MainActivity).cacheContacts(allContacts)
activity?.runOnUiThread {
@@ -82,7 +81,7 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
}
}
private fun gotContacts(contacts: ArrayList<SimpleContact>) {
private fun gotContacts(contacts: ArrayList<Contact>) {
setupLetterFastscroller(contacts)
if (contacts.isEmpty()) {
fragment_placeholder.beVisible()
@@ -96,7 +95,7 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
val currAdapter = fragment_list.adapter
if (currAdapter == null) {
ContactsAdapter(activity as SimpleActivity, contacts, fragment_list, this) {
val contact = it as SimpleContact
val contact = it as Contact
activity?.startContactDetailsIntent(contact)
}.apply {
fragment_list.adapter = this
@@ -111,10 +110,10 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
}
}
private fun setupLetterFastscroller(contacts: ArrayList<SimpleContact>) {
private fun setupLetterFastscroller(contacts: ArrayList<Contact>) {
letter_fastscroller.setupWithRecyclerView(fragment_list, { position ->
try {
val name = contacts[position].name
val name = contacts[position].getNameToDisplay()
val character = if (name.isNotEmpty()) name.substring(0, 1) else ""
FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault()).normalizeString())
} catch (e: Exception) {
@@ -130,26 +129,37 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
}
override fun onSearchQueryChanged(text: String) {
val contacts = allContacts.filter {
it.doesContainPhoneNumber(text) ||
it.name.contains(text, true) ||
it.name.normalizeString().contains(text, true) ||
it.name.contains(text.normalizeString(), true)
}.sortedByDescending {
it.name.startsWith(text, true)
}.toMutableList() as ArrayList<SimpleContact>
val shouldNormalize = text.normalizeString() == text
val filtered = allContacts.filter {
getProperText(it.getNameToDisplay(), shouldNormalize).contains(text, true) ||
getProperText(it.nickname, shouldNormalize).contains(text, true) ||
it.phoneNumbers.any {
text.normalizePhoneNumber().isNotEmpty() && it.normalizedNumber.contains(text.normalizePhoneNumber(), true)
} ||
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) } ||
getProperText(it.notes, shouldNormalize).contains(text, true) ||
getProperText(it.organization.company, shouldNormalize).contains(text, true) ||
getProperText(it.organization.jobPosition, shouldNormalize).contains(text, true) ||
it.websites.any { it.contains(text, true) }
} as ArrayList
fragment_placeholder.beVisibleIf(contacts.isEmpty())
(fragment_list.adapter as? ContactsAdapter)?.updateItems(contacts, text)
setupLetterFastscroller(contacts)
}
filtered.sortBy {
val nameToDisplay = it.getNameToDisplay()
!getProperText(nameToDisplay, shouldNormalize).startsWith(text, true) && !nameToDisplay.contains(text, true)
}
fragment_placeholder.beVisibleIf(filtered.isEmpty())
(fragment_list.adapter as? ContactsAdapter)?.updateItems(filtered, text)
setupLetterFastscroller(filtered)
}
private fun requestReadContactsPermission() {
activity?.handlePermission(PERMISSION_READ_CONTACTS) {
if (it) {
fragment_placeholder.text = context.getString(R.string.no_contacts_found)
fragment_placeholder_2.text = context.getString(R.string.create_new_contact)
SimpleContactsHelper(context).getAvailableContacts(false) { contacts ->
ContactsHelper(context).getContacts(showOnlyContactsWithNumbers = true) { contacts ->
activity?.runOnUiThread {
gotContacts(contacts)
}

View File

@@ -8,11 +8,12 @@ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.CallConfirmationDialog
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.ContactsHelper
import com.simplemobiletools.commons.helpers.MyContactsContentProvider
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.helpers.SMT_PRIVATE
import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.adapters.ContactsAdapter
@@ -23,7 +24,7 @@ import kotlinx.android.synthetic.main.fragment_letters_layout.view.*
import java.util.*
class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), RefreshItemsListener {
private var allContacts = ArrayList<SimpleContact>()
private var allContacts = ArrayList<Contact>()
override fun setupFragment() {
val placeholderResId = if (context.hasPermission(PERMISSION_READ_CONTACTS)) {
@@ -48,18 +49,25 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
}
override fun refreshItems(callback: (() -> Unit)?) {
val privateCursor = context?.getMyContactsCursor(true, true)
SimpleContactsHelper(context).getAvailableContacts(true) { contacts ->
ContactsHelper(context).getContacts(showOnlyContactsWithNumbers = true) { contacts ->
allContacts = contacts
val privateContacts = MyContactsContentProvider.getSimpleContacts(context, privateCursor)
if (privateContacts.isNotEmpty()) {
allContacts.addAll(privateContacts)
allContacts.sort()
if (SMT_PRIVATE !in context.baseConfig.ignoredContactSources) {
val privateCursor = context?.getMyContactsCursor(true, true)
val privateContacts = MyContactsContentProvider.getContacts(context, privateCursor).map {
it.copy(starred = 1)
}
if (privateContacts.isNotEmpty()) {
allContacts.addAll(privateContacts)
allContacts.sort()
}
}
val favorites = contacts.filter { it.starred == 1 } as ArrayList<Contact>
if (activity!!.config.isCustomOrderSelected) {
allContacts = sortByCustomOrder(allContacts)
allContacts = if (activity!!.config.isCustomOrderSelected) {
sortByCustomOrder(favorites)
} else {
favorites
}
activity?.runOnUiThread {
@@ -69,7 +77,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
}
}
private fun gotContacts(contacts: ArrayList<SimpleContact>) {
private fun gotContacts(contacts: ArrayList<Contact>) {
setupLetterFastscroller(contacts)
if (contacts.isEmpty()) {
fragment_placeholder.beVisible()
@@ -89,11 +97,11 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
enableDrag = true,
) {
if (context.config.showCallConfirmation) {
CallConfirmationDialog(activity as SimpleActivity, (it as SimpleContact).name) {
CallConfirmationDialog(activity as SimpleActivity, (it as Contact).getNameToDisplay()) {
callContact(it)
}
} else {
callContact(it as SimpleContact)
callContact(it as Contact)
}
}.apply {
fragment_list.adapter = this
@@ -117,7 +125,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
}
}
private fun sortByCustomOrder(favorites: List<SimpleContact>): ArrayList<SimpleContact> {
private fun sortByCustomOrder(favorites: List<Contact>): ArrayList<Contact> {
val favoritesOrder = activity!!.config.favoritesContactsOrder
if (favoritesOrder.isEmpty()) {
@@ -131,7 +139,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
return ArrayList(sorted)
}
private fun saveCustomOrderToPrefs(items: ArrayList<SimpleContact>) {
private fun saveCustomOrderToPrefs(items: ArrayList<Contact>) {
activity?.apply {
val orderIds = items.map { it.contactId }
val orderGsonString = Gson().toJson(orderIds)
@@ -139,9 +147,11 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
}
}
private fun callContact(simpleContact: SimpleContact) {
private fun callContact(simpleContact: Contact) {
val phoneNumbers = simpleContact.phoneNumbers
if (phoneNumbers.size <= 1) {
if (phoneNumbers.isEmpty()) {
return
} else if (phoneNumbers.size <= 1) {
activity?.launchCallIntent(phoneNumbers.first().normalizedNumber)
} else {
val primaryNumber = simpleContact.phoneNumbers.find { it.isPrimary }
@@ -161,10 +171,10 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
}
}
private fun setupLetterFastscroller(contacts: ArrayList<SimpleContact>) {
private fun setupLetterFastscroller(contacts: ArrayList<Contact>) {
letter_fastscroller.setupWithRecyclerView(fragment_list, { position ->
try {
val name = contacts[position].name
val name = contacts[position].getNameToDisplay()
val character = if (name.isNotEmpty()) name.substring(0, 1) else ""
FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault()).normalizeString())
} catch (e: Exception) {
@@ -184,7 +194,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
it.name.contains(text, true) || it.doesContainPhoneNumber(text)
}.sortedByDescending {
it.name.startsWith(text, true)
}.toMutableList() as ArrayList<SimpleContact>
}.toMutableList() as ArrayList<Contact>
fragment_placeholder.beVisibleIf(contacts.isEmpty())
(fragment_list.adapter as? ContactsAdapter)?.updateItems(contacts, text)

View File

@@ -6,7 +6,11 @@ import android.widget.RelativeLayout
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.extensions.getProperPrimaryColor
import com.simplemobiletools.commons.extensions.getProperTextColor
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
import com.simplemobiletools.commons.helpers.SORT_BY_SURNAME
import com.simplemobiletools.dialer.activities.MainActivity
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.adapters.ContactsAdapter
import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.helpers.Config
import kotlinx.android.synthetic.main.fragment_letters_layout.view.*
@@ -27,6 +31,15 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
}
}
fun startNameWithSurnameChanged(startNameWithSurname: Boolean) {
if (this !is RecentsFragment) {
(fragment_list.adapter as? ContactsAdapter)?.apply {
config.sorting = if (startNameWithSurname) SORT_BY_SURNAME else SORT_BY_FIRST_NAME
(this@MyViewPagerFragment.activity!! as MainActivity).refreshFragments()
}
}
}
fun finishActMode() {
(fragment_list?.adapter as? MyRecyclerViewAdapter)?.finishActMode()
(recents_list?.adapter as? MyRecyclerViewAdapter)?.finishActMode()

View File

@@ -4,9 +4,10 @@ import android.content.Context
import android.util.AttributeSet
import com.simplemobiletools.commons.dialogs.CallConfirmationDialog
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.ContactsHelper
import com.simplemobiletools.commons.helpers.MyContactsContentProvider
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.helpers.SMT_PRIVATE
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.adapters.RecentCallsAdapter
@@ -49,30 +50,38 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
val privateCursor = context?.getMyContactsCursor(false, true)
val groupSubsequentCalls = context?.config?.groupSubsequentCalls ?: false
RecentsHelper(context).getRecentCalls(groupSubsequentCalls) { recents ->
SimpleContactsHelper(context).getAvailableContacts(false) { contacts ->
val privateContacts = MyContactsContentProvider.getSimpleContacts(context, privateCursor)
ContactsHelper(context).getContacts(showOnlyContactsWithNumbers = true) { contacts ->
val privateContacts = MyContactsContentProvider.getContacts(context, privateCursor)
recents.filter { it.phoneNumber == it.name }.forEach { recent ->
var wasNameFilled = false
if (privateContacts.isNotEmpty()) {
val privateContact = privateContacts.firstOrNull { it.doesContainPhoneNumber(recent.phoneNumber) }
if (privateContact != null) {
recent.name = privateContact.name
recent.name = privateContact.getNameToDisplay()
wasNameFilled = true
}
}
if (!wasNameFilled) {
val contact = contacts.firstOrNull { it.phoneNumbers.first().normalizedNumber == recent.phoneNumber }
val contact = contacts.filter { it.phoneNumbers.isNotEmpty() }.firstOrNull { it.phoneNumbers.first().normalizedNumber == recent.phoneNumber }
if (contact != null) {
recent.name = contact.name
recent.name = contact.getNameToDisplay()
}
}
}
allRecentCalls = recents
// hide private contacts from recent calls
if (SMT_PRIVATE in context.baseConfig.ignoredContactSources) {
allRecentCalls = recents.filterNot { recent ->
val privateNumbers = privateContacts.flatMap { it.phoneNumbers }.map { it.value }
recent.phoneNumber in privateNumbers
} as ArrayList
}
activity?.runOnUiThread {
gotRecents(recents)
gotRecents(allRecentCalls)
}
}
}

View File

@@ -5,8 +5,8 @@ import android.net.Uri
import android.telecom.Call
import com.simplemobiletools.commons.extensions.getMyContactsCursor
import com.simplemobiletools.commons.extensions.getPhoneNumberTypeText
import com.simplemobiletools.commons.helpers.ContactsHelper
import com.simplemobiletools.commons.helpers.MyContactsContentProvider
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.extensions.isConference
@@ -35,8 +35,8 @@ fun getCallContact(context: Context, call: Call?, callback: (CallContact) -> Uni
val uri = Uri.decode(handle)
if (uri.startsWith("tel:")) {
val number = uri.substringAfter("tel:")
SimpleContactsHelper(context).getAvailableContacts(false) { contacts ->
val privateContacts = MyContactsContentProvider.getSimpleContacts(context, privateCursor)
ContactsHelper(context).getContacts(showOnlyContactsWithNumbers = true) { contacts ->
val privateContacts = MyContactsContentProvider.getContacts(context, privateCursor)
if (privateContacts.isNotEmpty()) {
contacts.addAll(privateContacts)
}
@@ -53,7 +53,7 @@ fun getCallContact(context: Context, call: Call?, callback: (CallContact) -> Uni
callContact.number = number
val contact = contacts.firstOrNull { it.doesHavePhoneNumber(number) }
if (contact != null) {
callContact.name = contact.name
callContact.name = contact.getNameToDisplay()
callContact.photoUri = contact.photoUri
if (contact.phoneNumbers.size > 1) {

View File

@@ -1,13 +1,11 @@
package com.simplemobiletools.dialer.helpers
import android.annotation.SuppressLint
import android.content.Context
import android.os.Handler
import android.telecom.Call
import android.telecom.CallAudioState
import android.telecom.InCallService
import android.telecom.VideoProfile
import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.extensions.getStateCompat
import com.simplemobiletools.dialer.extensions.hasCapability
import com.simplemobiletools.dialer.extensions.isConference
@@ -156,9 +154,10 @@ class CallManager {
fun reject() {
if (call != null) {
if (getState() == Call.STATE_RINGING) {
val state = getState()
if (state == Call.STATE_RINGING) {
call!!.reject(false, null)
} else {
} else if (state != Call.STATE_DISCONNECTED && state != Call.STATE_DISCONNECTING) {
call!!.disconnect()
}
}
@@ -201,15 +200,11 @@ class CallManager {
fun getState() = getPrimaryCall()?.getStateCompat()
fun keypad(context: Context, char: Char) {
call?.playDtmfTone(char)
if (context.config.dialpadBeeps) {
fun keypad(char: Char) {
call?.playDtmfTone(char)
Handler().postDelayed({
call?.stopDtmfTone()
}, DIALPAD_TONE_LENGTH_MS)
} else {
call?.stopDtmfTone()
}
}
}
}

View File

@@ -13,11 +13,6 @@ class Config(context: Context) : BaseConfig(context) {
companion object {
fun newInstance(context: Context) = Config(context)
}
var speedDial: String
get() = prefs.getString(SPEED_DIAL, "")!!
set(speedDial) = prefs.edit().putString(SPEED_DIAL, speedDial).apply()
fun getSpeedDialValues(): ArrayList<SpeedDial> {
val speedDialType = object : TypeToken<List<SpeedDial>>() {}.type
val speedDialValues = Gson().fromJson<ArrayList<SpeedDial>>(speedDial, speedDialType) ?: ArrayList(1)
@@ -54,6 +49,9 @@ class Config(context: Context) : BaseConfig(context) {
fun removeCustomSIM(number: String) {
prefs.edit().remove(REMEMBER_SIM_PREFIX + number).apply()
}
var showTabs: Int
get() = prefs.getInt(SHOW_TABS, ALL_TABS_MASK)
set(showTabs) = prefs.edit().putInt(SHOW_TABS, showTabs).apply()
var groupSubsequentCalls: Boolean
get() = prefs.getBoolean(GROUP_SUBSEQUENT_CALLS, true)
@@ -71,18 +69,6 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getBoolean(DISABLE_SWIPE_TO_ANSWER, false)
set(disableSwipeToAnswer) = prefs.edit().putBoolean(DISABLE_SWIPE_TO_ANSWER, disableSwipeToAnswer).apply()
var showTabs: Int
get() = prefs.getInt(SHOW_TABS, ALL_TABS_MASK)
set(showTabs) = prefs.edit().putInt(SHOW_TABS, showTabs).apply()
var favoritesContactsOrder: String
get() = prefs.getString(FAVORITES_CONTACTS_ORDER, "")!!
set(order) = prefs.edit().putString(FAVORITES_CONTACTS_ORDER, order).apply()
var isCustomOrderSelected: Boolean
get() = prefs.getBoolean(FAVORITES_CUSTOM_ORDER_SELECTED, false)
set(selected) = prefs.edit().putBoolean(FAVORITES_CUSTOM_ORDER_SELECTED, selected).apply()
var wasOverlaySnackbarConfirmed: Boolean
get() = prefs.getBoolean(WAS_OVERLAY_SNACKBAR_CONFIRMED, false)
set(wasOverlaySnackbarConfirmed) = prefs.edit().putBoolean(WAS_OVERLAY_SNACKBAR_CONFIRMED, wasOverlaySnackbarConfirmed).apply()
@@ -91,6 +77,10 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getBoolean(DIALPAD_VIBRATION, true)
set(dialpadVibration) = prefs.edit().putBoolean(DIALPAD_VIBRATION, dialpadVibration).apply()
var hideDialpadNumbers: Boolean
get() = prefs.getBoolean(HIDE_DIALPAD_NUMBERS, false)
set(hideDialpadNumbers) = prefs.edit().putBoolean(HIDE_DIALPAD_NUMBERS, hideDialpadNumbers).apply()
var dialpadBeeps: Boolean
get() = prefs.getBoolean(DIALPAD_BEEPS, true)
set(dialpadBeeps) = prefs.edit().putBoolean(DIALPAD_BEEPS, dialpadBeeps).apply()

View File

@@ -17,6 +17,7 @@ const val FAVORITES_CUSTOM_ORDER_SELECTED = "favorites_custom_order_selected"
const val WAS_OVERLAY_SNACKBAR_CONFIRMED = "was_overlay_snackbar_confirmed"
const val DIALPAD_VIBRATION = "dialpad_vibration"
const val DIALPAD_BEEPS = "dialpad_beeps"
const val HIDE_DIALPAD_NUMBERS = "hide_dialpad_numbers"
const val ALWAYS_SHOW_FULLSCREEN = "always_show_fullscreen"
const val ALL_TABS_MASK = TAB_CONTACTS or TAB_FAVORITES or TAB_CALL_HISTORY

View File

@@ -5,7 +5,7 @@ import android.content.Context
import android.provider.CallLog.Calls
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.models.contacts.Contact
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.extensions.getAvailableSIMCardLabels
@@ -24,8 +24,8 @@ class RecentsHelper(private val context: Context) {
return@ensureBackgroundThread
}
SimpleContactsHelper(context).getAvailableContacts(false) { contacts ->
val privateContacts = MyContactsContentProvider.getSimpleContacts(context, privateCursor)
ContactsHelper(context).getContacts(showOnlyContactsWithNumbers = true) { contacts ->
val privateContacts = MyContactsContentProvider.getContacts(context, privateCursor)
if (privateContacts.isNotEmpty()) {
contacts.addAll(privateContacts)
}
@@ -36,7 +36,8 @@ class RecentsHelper(private val context: Context) {
}
@SuppressLint("NewApi")
private fun getRecents(contacts: ArrayList<SimpleContact>, groupSubsequentCalls: Boolean, callback: (ArrayList<RecentCall>) -> Unit) {
private fun getRecents(contacts: ArrayList<Contact>, groupSubsequentCalls: Boolean, callback: (ArrayList<RecentCall>) -> Unit) {
var recentCalls = ArrayList<RecentCall>()
var previousRecentCallFrom = ""
var previousStartTS = 0
@@ -96,11 +97,11 @@ class RecentsHelper(private val context: Context) {
} else {
val normalizedNumber = number.normalizePhoneNumber()
if (normalizedNumber!!.length >= COMPARABLE_PHONE_NUMBER_LENGTH) {
name = contacts.firstOrNull { contact ->
name = contacts.filter { it.phoneNumbers.isNotEmpty() }.firstOrNull { contact ->
val curNumber = contact.phoneNumbers.first().normalizedNumber
if (curNumber.length >= COMPARABLE_PHONE_NUMBER_LENGTH) {
if (curNumber.substring(curNumber.length - COMPARABLE_PHONE_NUMBER_LENGTH) == normalizedNumber.substring(normalizedNumber.length - COMPARABLE_PHONE_NUMBER_LENGTH)) {
contactsNumbersMap[number] = contact.name
contactsNumbersMap[number] = contact.getNameToDisplay()
return@firstOrNull true
}
}

View File

@@ -6,29 +6,22 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/conference_app_bar_layout"
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/conference_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/conference_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:title="@string/conference"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
</com.google.android.material.appbar.AppBarLayout>
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:title="@string/conference"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
<FrameLayout
android:id="@+id/conference_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
android:layout_marginTop="?attr/actionBarSize">
<com.simplemobiletools.commons.views.MyRecyclerView
android:id="@+id/conference_calls_list"
android:id="@+id/conference_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"

View File

@@ -5,29 +5,22 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/dialpad_app_bar_layout"
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/dialpad_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/dialpad_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:menu="@menu/menu_dialpad"
app:title="@string/dialpad"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
</com.google.android.material.appbar.AppBarLayout>
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:menu="@menu/menu_dialpad"
app:title="@string/dialpad"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/dialpad_holder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:focusableInTouchMode="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
android:layout_marginTop="?attr/actionBarSize"
android:focusableInTouchMode="true">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/dialpad_placeholder"
@@ -86,7 +79,7 @@
android:id="@+id/dialpad_input"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_margin"
android:layout_marginStart="64dp"
android:gravity="center"
android:inputType="phone"
android:layoutDirection="ltr"
@@ -98,13 +91,13 @@
<ImageView
android:id="@+id/dialpad_clear_char"
android:layout_width="wrap_content"
android:layout_width="@dimen/normal_icon_size"
android:layout_height="0dp"
android:layout_marginEnd="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:layoutDirection="ltr"
android:paddingStart="@dimen/activity_margin"
android:paddingEnd="@dimen/activity_margin"
android:paddingStart="@dimen/normal_margin"
android:paddingEnd="@dimen/normal_margin"
android:src="@drawable/ic_clear_vector"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_input"
app:layout_constraintEnd_toEndOf="parent"
@@ -122,7 +115,7 @@
android:layout_width="@dimen/dialpad_button_size"
android:layout_height="@dimen/dialpad_button_size"
android:layout_marginBottom="@dimen/activity_margin"
android:background="@drawable/circle_background"
android:background="@drawable/circle_button_background_ripple"
android:contentDescription="@string/call_number"
android:elevation="@dimen/medium_margin"
android:padding="@dimen/normal_margin"
@@ -136,7 +129,7 @@
android:layout_width="@dimen/dialpad_button_size_small"
android:layout_height="@dimen/dialpad_button_size_small"
android:layout_marginBottom="@dimen/activity_margin"
android:background="@drawable/circle_background"
android:background="@drawable/circle_button_background_ripple"
android:contentDescription="@string/call_number"
android:elevation="@dimen/medium_margin"
android:padding="@dimen/normal_margin"

View File

@@ -5,27 +5,18 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/main_app_bar_layout"
<com.simplemobiletools.commons.views.MySearchMenu
android:id="@+id/main_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/main_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:menu="@menu/menu"
app:title="@string/app_launcher_name"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
</com.google.android.material.appbar.AppBarLayout>
android:layout_height="wrap_content" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/main_holder"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
android:layout_marginTop="?attr/actionBarSize"
android:fillViewport="true"
android:scrollbars="none">
<com.simplemobiletools.commons.views.MyViewPager
android:id="@+id/view_pager"

View File

@@ -6,29 +6,24 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/manage_speed_dial_app_bar_layout"
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/manage_speed_dial_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:title="@string/manage_speed_dial"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/manage_speed_dial_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:title="@string/manage_speed_dial"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
</com.google.android.material.appbar.AppBarLayout>
<ScrollView
<androidx.core.widget.NestedScrollView
android:id="@+id/manage_speed_dial_scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
android:layout_marginTop="?attr/actionBarSize"
android:fillViewport="true"
android:scrollbars="none">
<LinearLayout
android:id="@+id/manage_speed_dial_wrapper"
android:id="@+id/manage_speed_dial_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@@ -51,5 +46,5 @@
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
</LinearLayout>
</ScrollView>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -6,29 +6,21 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/settings_app_bar_layout"
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/settings_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/settings_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:layout_scrollFlags="scroll|enterAlways"
app:title="@string/settings"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
</com.google.android.material.appbar.AppBarLayout>
android:layout_height="?attr/actionBarSize"
android:background="@color/color_primary"
app:title="@string/settings"
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
<androidx.core.widget.NestedScrollView
android:id="@+id/settings_scrollview"
android:id="@+id/settings_nested_scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="?attr/actionBarSize"
android:fillViewport="true"
android:scrollbars="none"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
android:scrollbars="none">
<LinearLayout
android:id="@+id/settings_holder"
@@ -37,36 +29,32 @@
android:orientation="vertical">
<TextView
android:id="@+id/settings_color_customization_label"
android:id="@+id/settings_color_customization_section_label"
style="@style/SettingsSectionLabelStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/color_customization" />
<LinearLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/settings_color_customization_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/medium_margin"
android:background="@drawable/section_holder_stroke"
android:orientation="vertical">
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_customize_colors_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
android:layout_width="match_parent"
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_color_customization_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ripple_all_corners">
android:text="@string/customize_colors"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_customize_colors_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/customize_colors" />
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
</LinearLayout>
<include
android:id="@+id/settings_color_customization_divider"
layout="@layout/divider" />
<TextView
android:id="@+id/settings_general_settings_label"
@@ -75,190 +63,190 @@
android:layout_height="wrap_content"
android:text="@string/general_settings" />
<LinearLayout
android:id="@+id/settings_general_settings_holder"
<RelativeLayout
android:id="@+id/settings_purchase_thank_you_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/medium_margin"
android:background="@drawable/section_holder_stroke"
android:orientation="vertical">
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_purchase_thank_you_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_purchase_thank_you_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/purchase_simple_thank_you" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_use_english_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_use_english"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_top_corners">
android:text="@string/use_english_language" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_purchase_thank_you_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/purchase_simple_thank_you" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_language_holder"
style="@style/SettingsHolderTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_use_english_holder"
style="@style/SettingsHolderCheckboxStyle"
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_language_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/language" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_language"
style="@style/SettingsTextValueStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/settings_language_label"
tools:text="English" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_manage_blocked_numbers_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_manage_blocked_numbers_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/manage_blocked_numbers" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_change_date_time_format_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_change_date_time_format_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/change_date_and_time_format" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_manage_speed_dial_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_manage_speed_dial_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/manage_speed_dial" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_font_size_holder"
style="@style/SettingsHolderTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_font_size_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/font_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_font_size"
style="@style/SettingsTextValueStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
android:layout_below="@+id/settings_font_size_label"
tools:text="@string/medium" />
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_use_english"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/use_english_language" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_start_name_with_surname_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_language_holder"
style="@style/SettingsHolderTextViewStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_start_name_with_surname"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
android:text="@string/start_name_with_surname" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_language_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/language" />
</RelativeLayout>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_language"
style="@style/SettingsTextValueStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/settings_language_label"
tools:text="English" />
<RelativeLayout
android:id="@+id/settings_hide_dialpad_numbers_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_manage_blocked_numbers_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_hide_dialpad_numbers"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
android:text="@string/hide_dialpad_numbers" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_manage_blocked_numbers_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/manage_blocked_numbers" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_dialpad_vibration_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_change_date_time_format_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_dialpad_vibration"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
android:text="@string/dialpad_vibrations" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_change_date_time_format_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/change_date_and_time_format" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_dialpad_beeps_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_manage_speed_dial_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_dialpad_beeps"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
android:text="@string/dialpad_beeps" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_manage_speed_dial_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/manage_speed_dial" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_font_size_holder"
style="@style/SettingsHolderTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_font_size_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/font_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_font_size"
style="@style/SettingsTextValueStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/settings_font_size_label"
tools:text="@string/medium" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_start_name_with_surname_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_start_name_with_surname"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/start_name_with_surname" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_dialpad_vibration_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_dialpad_vibration"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/dialpad_vibrations" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_dialpad_beeps_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_bottom_corners">
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_dialpad_beeps"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/dialpad_beeps" />
</RelativeLayout>
</LinearLayout>
<include
android:id="@+id/settings_general_settings_divider"
layout="@layout/divider" />
<TextView
android:id="@+id/settings_startup_label"
@@ -267,70 +255,62 @@
android:layout_height="wrap_content"
android:text="@string/startup" />
<LinearLayout
android:id="@+id/settings_startup_holder"
<RelativeLayout
android:id="@+id/settings_manage_tabs_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/medium_margin"
android:background="@drawable/section_holder_stroke"
android:orientation="vertical">
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_manage_tabs_holder"
style="@style/SettingsHolderTextViewOneLinerStyle"
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_manage_tabs"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/manage_shown_tabs" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_default_tab_holder"
style="@style/SettingsHolderTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_default_tab_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/default_tab_to_open" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_default_tab"
style="@style/SettingsTextValueStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_top_corners">
android:layout_below="@+id/settings_default_tab_label"
tools:text="@string/last_used_tab" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_manage_tabs"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/manage_shown_tabs" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_open_dialpad_at_launch_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_default_tab_holder"
style="@style/SettingsHolderTextViewStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_open_dialpad_at_launch"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
android:text="@string/open_dialpad_by_default" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_default_tab_label"
style="@style/SettingsTextLabelStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/default_tab_to_open" />
</RelativeLayout>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_default_tab"
style="@style/SettingsTextValueStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/settings_default_tab_label"
tools:text="@string/last_used_tab" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_open_dialpad_at_launch_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_bottom_corners">
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_open_dialpad_at_launch"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/open_dialpad_by_default" />
</RelativeLayout>
</LinearLayout>
<include
android:id="@+id/settings_startup_divider"
layout="@layout/divider" />
<TextView
android:id="@+id/settings_calls_label"
@@ -339,94 +319,80 @@
android:layout_height="wrap_content"
android:text="@string/calls" />
<LinearLayout
android:id="@+id/settings_calls_holder"
<RelativeLayout
android:id="@+id/settings_group_subsequent_calls_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/medium_margin"
android:background="@drawable/section_holder_stroke"
android:orientation="vertical">
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_group_subsequent_calls_holder"
style="@style/SettingsHolderCheckboxStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_group_subsequent_calls"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_top_corners">
android:text="@string/group_subsequent_calls" />
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_group_subsequent_calls"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/group_subsequent_calls" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_show_call_confirmation_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_show_call_confirmation_holder"
style="@style/SettingsHolderCheckboxStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_show_call_confirmation"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
android:text="@string/show_call_confirmation_dialog" />
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_show_call_confirmation"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/show_call_confirmation_dialog" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_disable_proximity_sensor_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_disable_proximity_sensor_holder"
style="@style/SettingsHolderCheckboxStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_disable_proximity_sensor"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
android:text="@string/disable_proximity_sensor" />
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_disable_proximity_sensor"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/disable_proximity_sensor" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_disable_swipe_to_answer_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_disable_swipe_to_answer_holder"
style="@style/SettingsHolderCheckboxStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_disable_swipe_to_answer"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
android:text="@string/disable_swipe_to_answer" />
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_disable_swipe_to_answer"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/disable_swipe_to_answer" />
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_always_show_fullscreen_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/settings_always_show_fullscreen_holder"
style="@style/SettingsHolderCheckboxStyle"
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_always_show_fullscreen"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_bottom_corners">
android:text="@string/show_incoming_calls_full_screen" />
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_always_show_fullscreen"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/show_incoming_calls_full_screen" />
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -19,23 +19,54 @@
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/medium_margin">
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/sorting_dialog_radio_first_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/medium_margin"
android:paddingBottom="@dimen/medium_margin"
android:text="@string/first_name" />
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/sorting_dialog_radio_middle_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/medium_margin"
android:paddingBottom="@dimen/medium_margin"
android:text="@string/middle_name" />
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/sorting_dialog_radio_surname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/medium_margin"
android:paddingBottom="@dimen/medium_margin"
android:text="@string/surname" />
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/sorting_dialog_radio_full_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/medium_margin"
android:paddingBottom="@dimen/medium_margin"
android:text="@string/full_name" />
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/sorting_dialog_radio_date_created"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/medium_margin"
android:paddingBottom="@dimen/medium_margin"
android:text="@string/date_created" />
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/sorting_dialog_radio_custom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/medium_margin"
android:paddingBottom="@dimen/medium_margin"
android:text="@string/custom" />
</RadioGroup>
<include
@@ -53,12 +84,16 @@
android:id="@+id/sorting_dialog_radio_ascending"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/medium_margin"
android:paddingBottom="@dimen/medium_margin"
android:text="@string/ascending" />
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/sorting_dialog_radio_descending"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/medium_margin"
android:paddingBottom="@dimen/medium_margin"
android:text="@string/descending" />
</RadioGroup>
</LinearLayout>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<com.simplemobiletools.commons.views.MyRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/filter_contact_sources_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:overScrollMode="never"
android:paddingTop="@dimen/medium_margin"
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />

View File

@@ -8,15 +8,16 @@
android:layout_alignParentBottom="true"
android:focusableInTouchMode="true"
android:layoutDirection="ltr"
android:paddingStart="@dimen/medium_margin"
android:paddingTop="@dimen/medium_margin"
android:paddingEnd="@dimen/medium_margin"
tools:ignore="HardcodedText">
<RelativeLayout
android:id="@+id/dialpad_1_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/one"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_2_holder"
app:layout_constraintEnd_toStartOf="@+id/dialpad_2_holder"
@@ -29,16 +30,16 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="1" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_2_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/medium_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/two"
app:layout_constraintBottom_toTopOf="@+id/dialpad_5_holder"
app:layout_constraintEnd_toStartOf="@+id/dialpad_3_holder"
@@ -49,7 +50,6 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="2" />
<com.simplemobiletools.commons.views.MyTextView
@@ -58,18 +58,15 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/dialpad_2"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/medium_margin"
android:gravity="center_horizontal"
android:layout_marginBottom="@dimen/small_margin"
android:text="ABC" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_3_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/three"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_2_holder"
app:layout_constraintEnd_toEndOf="parent"
@@ -81,7 +78,6 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="3" />
<com.simplemobiletools.commons.views.MyTextView
@@ -90,18 +86,14 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/dialpad_3"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/medium_margin"
android:gravity="center_horizontal"
android:text="DEF" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_4_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/four"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_5_holder"
app:layout_constraintEnd_toStartOf="@+id/dialpad_5_holder"
@@ -113,7 +105,6 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="4" />
<com.simplemobiletools.commons.views.MyTextView
@@ -122,18 +113,15 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/dialpad_4"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/medium_margin"
android:gravity="center_horizontal"
android:text="GHI" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_5_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/medium_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/five"
app:layout_constraintBottom_toTopOf="@+id/dialpad_8_holder"
app:layout_constraintEnd_toStartOf="@+id/dialpad_6_holder"
@@ -144,7 +132,6 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="5" />
<com.simplemobiletools.commons.views.MyTextView
@@ -153,18 +140,15 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/dialpad_5"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/medium_margin"
android:gravity="center_horizontal"
android:layout_marginBottom="@dimen/small_margin"
android:text="JKL" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_6_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/six"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_5_holder"
app:layout_constraintEnd_toEndOf="parent"
@@ -176,7 +160,6 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="6" />
<com.simplemobiletools.commons.views.MyTextView
@@ -185,18 +168,14 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/dialpad_6"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/medium_margin"
android:gravity="center_horizontal"
android:text="MNO" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_7_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/seven"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_8_holder"
app:layout_constraintEnd_toStartOf="@+id/dialpad_8_holder"
@@ -208,7 +187,6 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="7" />
<com.simplemobiletools.commons.views.MyTextView
@@ -217,18 +195,15 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/dialpad_7"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/medium_margin"
android:gravity="center_horizontal"
android:text="PQRS" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_8_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/medium_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/eight"
app:layout_constraintBottom_toTopOf="@+id/dialpad_0_holder"
app:layout_constraintEnd_toStartOf="@+id/dialpad_9_holder"
@@ -239,7 +214,6 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="8" />
<com.simplemobiletools.commons.views.MyTextView
@@ -248,18 +222,15 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/dialpad_8"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/medium_margin"
android:gravity="center_horizontal"
android:layout_marginBottom="@dimen/small_margin"
android:text="TUV" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_9_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/nine"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_8_holder"
app:layout_constraintEnd_toEndOf="parent"
@@ -271,7 +242,6 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="9" />
<com.simplemobiletools.commons.views.MyTextView
@@ -280,18 +250,14 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/dialpad_9"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/medium_margin"
android:gravity="center_horizontal"
android:text="WXYZ" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_asterisk_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/asterisk"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_0_holder"
app:layout_constraintEnd_toStartOf="@+id/dialpad_0_holder"
@@ -303,17 +269,16 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:text="*" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_0_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:layout_marginBottom="@dimen/medium_margin"
android:contentDescription="@string/zero"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/dialpad_hashtag_holder"
@@ -324,31 +289,46 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="0" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/dialpad_plus"
android:id="@+id/dialpad_plus_letters"
style="@style/DialpadLetterStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/dialpad_0"
android:layout_alignBottom="@+id/dialpad_0"
android:layout_centerHorizontal="true"
android:layout_toEndOf="@+id/dialpad_0"
android:gravity="center"
android:paddingStart="@dimen/small_margin"
android:paddingTop="@dimen/small_margin"
android:text="+"
android:textSize="@dimen/actionbar_text_size" />
android:layout_below="@+id/dialpad_0"
android:layout_marginBottom="@dimen/small_margin"
android:text="+" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_plus_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:contentDescription="@string/zero"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_0_holder"
app:layout_constraintEnd_toStartOf="@+id/dialpad_hashtag_holder"
app:layout_constraintStart_toEndOf="@+id/dialpad_asterisk_holder"
app:layout_constraintTop_toTopOf="@+id/dialpad_0_holder">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/dialpad_plus_alt"
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="+" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/dialpad_hashtag_holder"
style="@style/DialpadButtonStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="@dimen/activity_margin"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/hashtag"
app:layout_constraintBottom_toBottomOf="@+id/dialpad_0_holder"
app:layout_constraintEnd_toEndOf="parent"
@@ -360,8 +340,8 @@
style="@style/DialpadNumberStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginEnd="@dimen/activity_margin"
android:layout_centerInParent="true"
android:text="#" />
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/filter_contact_source_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:paddingStart="@dimen/normal_margin"
android:paddingTop="@dimen/small_margin"
android:paddingEnd="@dimen/normal_margin"
android:paddingBottom="@dimen/small_margin">
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
android:id="@+id/filter_contact_source_checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/medium_margin"
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/small_margin" />
</RelativeLayout>

View File

@@ -17,7 +17,7 @@
android:layout_width="@dimen/normal_icon_size"
android:layout_height="@dimen/normal_icon_size"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/small_margin"
android:layout_marginStart="@dimen/normal_margin"
android:layout_marginEnd="@dimen/small_margin"
android:padding="@dimen/small_margin"
android:src="@drawable/ic_person_vector"
@@ -34,6 +34,8 @@
android:ellipsize="end"
android:maxLines="1"
android:textSize="@dimen/bigger_text_size"
android:textDirection="locale"
android:textAlignment="viewStart"
app:layout_constraintBottom_toTopOf="@id/item_recents_date_time"
app:layout_constraintEnd_toStartOf="@+id/overflow_menu_icon"
app:layout_constraintStart_toEndOf="@+id/item_recents_image"
@@ -81,7 +83,6 @@
android:src="@drawable/ic_incoming_call_vector"
app:layout_constraintBottom_toBottomOf="@+id/item_recents_date_time"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toStartOf="@id/item_recents_date_time"
app:layout_constraintStart_toEndOf="@+id/item_recents_sim_image"
app:layout_constraintTop_toTopOf="@+id/item_recents_date_time" />

View File

@@ -2,7 +2,7 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="AppCompatResource">
tools:ignore="AppCompatResource,AlwaysShowAction">
<item
android:id="@+id/cab_call_sim_1"
android:icon="@drawable/ic_phone_one_vector"
@@ -16,16 +16,19 @@
<item
android:id="@+id/cab_delete"
android:icon="@drawable/ic_delete_vector"
android:showAsAction="always"
android:title="@string/delete"
app:showAsAction="always" />
<item
android:id="@+id/cab_view_details"
android:icon="@drawable/ic_view_contact_details_vector"
android:showAsAction="always"
android:title="@string/view_contact_details"
app:showAsAction="always" />
<item
android:id="@+id/cab_send_sms"
android:icon="@drawable/ic_sms_vector"
android:showAsAction="always"
android:title="@string/send_sms"
app:showAsAction="always" />
<item

View File

@@ -2,7 +2,7 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="AppCompatResource">
tools:ignore="AppCompatResource,AlwaysShowAction">
<item
android:id="@+id/cab_call_sim_1"
android:icon="@drawable/ic_phone_one_vector"
@@ -16,21 +16,25 @@
<item
android:id="@+id/cab_remove"
android:icon="@drawable/ic_delete_vector"
android:showAsAction="always"
android:title="@string/delete"
app:showAsAction="always" />
<item
android:id="@+id/cab_view_details"
android:icon="@drawable/ic_view_contact_details_vector"
android:showAsAction="always"
android:title="@string/view_contact_details"
app:showAsAction="always" />
<item
android:id="@+id/cab_add_number"
android:icon="@drawable/ic_add_person_vector"
android:showAsAction="always"
android:title="@string/add_number_to_contact"
app:showAsAction="always" />
<item
android:id="@+id/cab_send_sms"
android:icon="@drawable/ic_sms_vector"
android:showAsAction="always"
android:title="@string/send_sms"
app:showAsAction="always" />
<item

View File

@@ -1,17 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/search"
android:icon="@drawable/ic_search_vector"
android:title="@string/search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="collapseActionView|always" />
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="AlwaysShowAction,AppCompatResource">
<item
android:id="@+id/sort"
android:icon="@drawable/ic_sort_vector"
android:showAsAction="always"
android:title="@string/sort_by"
app:showAsAction="always" />
<item
android:id="@+id/filter"
android:icon="@drawable/ic_filter_vector"
android:title="@string/filter"
app:showAsAction="always" />
<item
android:id="@+id/create_new_contact"
android:icon="@drawable/ic_plus_vector"
@@ -21,12 +23,7 @@
android:id="@+id/clear_call_history"
android:icon="@drawable/ic_delete_vector"
android:title="@string/clear_call_history"
app:showAsAction="ifRoom" />
<item
android:id="@+id/more_apps_from_us"
android:showAsAction="never"
android:title="@string/more_apps_from_us"
app:showAsAction="never" />
app:showAsAction="always" />
<item
android:id="@+id/settings"
android:icon="@drawable/ic_settings_cog_vector"
@@ -37,4 +34,9 @@
android:icon="@drawable/ic_info_vector"
android:title="@string/about"
app:showAsAction="ifRoom" />
<item
android:id="@+id/more_apps_from_us"
android:icon="@drawable/ic_google_play_vector"
android:title="@string/more_apps_from_us"
app:showAsAction="ifRoom" />
</menu>

View File

@@ -1,80 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Simple Dialer</string>
<string name="app_launcher_name">Dialer</string>
<string name="default_phone_app_prompt">Please make this app the default Phone app</string>
<string name="allow_displaying_over_other_apps">Please allow displaying over other apps for reliable behaviour</string>
<string name="app_name">الهاتف المبسط</string>
<string name="app_launcher_name">الهاتف</string>
<string name="default_phone_app_prompt">الرجاء جعل هذا التطبيق هو تطبيق الهاتف الافتراضي</string>
<string name="allow_displaying_over_other_apps">الرجاء السماح بالعرض فوق التطبيقات الأخرى للحصول على سلوك موثوق</string>
<!-- Contacts -->
<string name="could_not_access_contacts">Could not access your contacts</string>
<string name="could_not_access_contacts">تعذر الوصول إلى جهات الاتصال</string>
<!-- Recents -->
<string name="no_previous_calls">No previous calls have been found</string>
<string name="could_not_access_the_call_history">Could not access the call history</string>
<string name="request_access">Request access</string>
<string name="remove_confirmation">Are you sure you want to remove the selected items from the Call History\?</string>
<string name="clear_history_confirmation">Are you sure you want to remove everything from the Call History\?</string>
<string name="show_grouped_calls">Show grouped calls</string>
<string name="clear_call_history">Clear call history</string>
<string name="show_call_details">Show call details</string>
<string name="no_previous_calls">لاتوجد مكالمات سابقة</string>
<string name="could_not_access_the_call_history">تعذر الوصول إلى سجل المكالمات</string>
<string name="request_access">طلب الوصول</string>
<string name="remove_confirmation">هل أنت متأكد من إزالة العناصر المحددة من سجل المكالمات؟</string>
<string name="clear_history_confirmation">هل أنت متأكد من إزالة كامل سجل المكالمات؟</string>
<string name="show_grouped_calls">إظهار المكالمات المجمعة</string>
<string name="clear_call_history">محو سجل المكالمات</string>
<string name="show_call_details">إظهار تفاصيل المكالمة</string>
<!-- Dialpad -->
<string name="dialpad">Dialpad</string>
<string name="asterisk">Asterisk</string>
<string name="hashtag">Hashtag</string>
<string name="call_number">Call number</string>
<string name="dialpad_beeps">Enable beeps on dialpad button clicks</string>
<string name="dialpad_vibrations">Enable vibrations on dialpad button clicks</string>
<string name="dialpad">لوحة الاتصال</string>
<string name="asterisk">نجمة</string>
<string name="hashtag">وسم</string>
<string name="call_number">رقم الاتصال</string>
<string name="dialpad_beeps">تمكين الصفير عند نقر أزرار لوحة الاتصال</string>
<string name="dialpad_vibrations">تمكين الاهتزازات عند نقر أزرار لوحة الاتصال</string>
<!-- Dialer -->
<string name="dialer">Dialer</string>
<string name="accept">Accept</string>
<string name="accept_call">Accept call</string>
<string name="decline">Decline</string>
<string name="decline_call">Decline call</string>
<string name="unknown_caller">Unknown Caller</string>
<string name="is_calling">Is Calling</string>
<string name="dialing">Dialing</string>
<string name="call_ended">Call Ended</string>
<string name="call_ending">Call Ending</string>
<string name="ongoing_call">Ongoing Call</string>
<string name="select_sim">Select a SIM for this call</string>
<string name="always_use_this_sim">Always use this SIM for this number</string>
<string name="unset_default_sim">Unset default SIM</string>
<string name="calls">Calls</string>
<string name="turn_microphone_on">Turn microphone on</string>
<string name="turn_microphone_off">Turn microphone off</string>
<string name="turn_speaker_on">Turn speaker on</string>
<string name="turn_speaker_off">Turn speaker off</string>
<string name="show_dialpad">Show dialpad</string>
<string name="hide_dialpad">Hide dialpad</string>
<string name="end_call">End call</string>
<string name="hold_call">Hold call</string>
<string name="resume_call">Resume call</string>
<string name="call_on_hold">On Hold</string>
<string name="call_swap">Swap calls</string>
<string name="call_merge">Merge calls</string>
<string name="call_split">Split call</string>
<string name="call_add">Add call</string>
<string name="conference_manage">Manage conference call</string>
<string name="conference">Conference</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="dialer">الهاتف</string>
<string name="accept">قبول</string>
<string name="accept_call">قبول المكالمة</string>
<string name="decline">رفض</string>
<string name="decline_call">رفض المكالمة</string>
<string name="unknown_caller">متصل غير معروف</string>
<string name="is_calling">يتصل</string>
<string name="dialing">اتصال</string>
<string name="call_ended">انتهت المكالمة</string>
<string name="call_ending">إنهاء المكالمة</string>
<string name="ongoing_call">مكالمة مستمرة</string>
<string name="select_sim">اختر شريحة لهذه المكالمة</string>
<string name="always_use_this_sim">استخدم هذه الشريحة دائما لهذا الرقم</string>
<string name="unset_default_sim">إلغاء تعيين بطاقة SIM الافتراضية</string>
<string name="calls">المكالمات</string>
<string name="turn_microphone_on">تشغيل الميكروفون</string>
<string name="turn_microphone_off">إيقاف تشغيل الميكروفون</string>
<string name="turn_speaker_on">تشغيل مكبر الصوت</string>
<string name="turn_speaker_off">إيقاف تشغيل مكبر الصوت</string>
<string name="show_dialpad">إظهار لوحة الاتصال</string>
<string name="hide_dialpad">إخفاء لوحة الاتصال</string>
<string name="end_call">إنهاء المكالمة</string>
<string name="hold_call">تعليق المكالمة</string>
<string name="resume_call">استئناف المكالمة</string>
<string name="call_on_hold">قيد الانتظار</string>
<string name="call_swap">مبادلة المكالمات</string>
<string name="call_merge">دمج المكالمات</string>
<string name="call_split">تقسيم المكالمة</string>
<string name="call_add">إضافة مكالمة</string>
<string name="conference_manage">إدارة المكالمة الجماعية</string>
<string name="conference">جماعة</string>
<string name="audio_route_speaker">مكبر الصوت</string>
<string name="audio_route_earpiece">سماعة الأذن</string>
<string name="audio_route_bluetooth">بلوتوث</string>
<string name="audio_route_wired_headset">سماعة الرأس السلكية</string>
<string name="audio_route_wired_or_earpiece">سلكي أو سماعة أذن</string>
<string name="choose_audio_route">اختر مسار الصوت</string>
<string name="calling_blocked_number">الرقم الذي تتصل به محظور</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
<string name="speed_dial_label">Click on a number to assign a contact to it. You can then quickly call the given contact by long pressing the given number at the dialer.</string>
<string name="speed_dial">اتصال سريع</string>
<string name="manage_speed_dial">إدارة الاتصال السريع</string>
<string name="speed_dial_label">انقر فوق رقم لتعيين جهة اتصال له. يمكنك بعد ذلك الاتصال بجهة الاتصال المحددة بسرعة عن طريق الضغط لفترة طويلة على الرقم المحدد في الهاتف.</string>
<!-- Settings -->
<string name="group_subsequent_calls">Group subsequent calls with the same number at the call log</string>
<string name="open_dialpad_by_default">Open the dialpad by default when the app opens</string>
<string name="disable_proximity_sensor">Disable proximity sensor during calls</string>
<string name="disable_swipe_to_answer">Replace swiping at responding to incoming calls with clicking</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="group_subsequent_calls">تجميع المكالمات اللاحقة مع نفس الرقم في سجل المكالمات</string>
<string name="open_dialpad_by_default">افتح لوحة الاتصال افتراضيًا عند فتح التطبيق</string>
<string name="disable_proximity_sensor">تعطيل مستشعر القرب أثناء المكالمات</string>
<string name="disable_swipe_to_answer">استبدل التمرير عند الرد على المكالمات الواردة بالنقر</string>
<string name="show_incoming_calls_full_screen">عرض المكالمات الواردة دائما في وضع ملء الشاشة</string>
<string name="hide_dialpad_numbers">اخفي ارقام لوحت المفاتيح</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>
<string name="faq_1_title">أسمع مكالمات واردة، ولكن الشاشة لا تعمل. ماذا أفعل؟</string>
<string name="faq_1_text">يمكن أن يكون لمثل هذه المشكلات العديد من الأسباب الخاصة بالجهاز والنظام ، والتي يصعب تحديدها بشكل عام. يجب أن تنظر حولك في إعدادات جهازك وتأكد من السماح للتطبيق بالظهور عندما يكون في الخلفية والسماح بالعرض فوق التطبيقات الأخرى.</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Disable proximity sensor during calls</string>
<string name="disable_swipe_to_answer">Replace swiping at responding to incoming calls with clicking</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Хуткі набор</string>
<string name="manage_speed_dial">Кіраванне хуткім наборам</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Адключаць датчык набліжэння падчас выклікаў</string>
<string name="disable_swipe_to_answer">Выкарыстоўваць націсканне замест перацягвання пры адказе на ўваходныя выклікі</string>
<string name="show_incoming_calls_full_screen">Заўсёды паказваць уваходныя выклікі ў поўнаэкранным рэжыме</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Бързо набиране</string>
<string name="manage_speed_dial">Управление на бързото набиране</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Изключване на сензора за близост по време на обаждания</string>
<string name="disable_swipe_to_answer">Смяна на плъзгането с докосване при отговаряне на обаждания</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Auriculars amb cable</string>
<string name="audio_route_wired_or_earpiece">Amb cable o auricular</string>
<string name="choose_audio_route">Trieu la sortida d\'àudio</string>
<string name="calling_blocked_number">El número al qual esteu trucant està bloquejat</string>
<!-- Speed dial -->
<string name="speed_dial">Marcatge ràpid</string>
<string name="manage_speed_dial">Gestiona el marcatge ràpid</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Desactiva el sensor de proximitat durant les trucades</string>
<string name="disable_swipe_to_answer">Substitueix el lliscament en respondre a les trucades entrants per fer clic</string>
<string name="show_incoming_calls_full_screen">Mostra sempre les trucades entrants a pantalla completa</string>
<string name="hide_dialpad_numbers">Oculta els números del teclat numèric</string>
<!-- FAQ -->
<string name="faq_1_title">Sento trucades entrants, però la pantalla no s\'encén. Què puc fer\?</string>
<string name="faq_1_text">Aquests problemes poden tenir moltes raons específiques del dispositiu i del sistema, difícils de dir en general. Hauríeu de mirar per la configuració del dispositiu i assegurar-vos que l\'aplicació pugui aparèixer en segon pla i permetre que es mostri sobre altres aplicacions.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Náhlavní souprava s kabelem</string>
<string name="audio_route_wired_or_earpiece">Kabel nebo sluchátka</string>
<string name="choose_audio_route">Vybrat směrování zvuku</string>
<string name="calling_blocked_number">Číslo, které voláte, je blokované</string>
<!-- Speed dial -->
<string name="speed_dial">Rychlé vytáčení</string>
<string name="manage_speed_dial">Spravovat rychlá vytáčení</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Vypnout senzor přiblížení během hovoru</string>
<string name="disable_swipe_to_answer">Nahradit přejetí prstem při odpovídání na příchozí hovory za klepnutí</string>
<string name="show_incoming_calls_full_screen">Vždy zobrazovat příchozí hovory na celou obrazovku</string>
<string name="hide_dialpad_numbers">Skrýt čísla číselníku</string>
<!-- FAQ -->
<string name="faq_1_title">Slyším příchozí hovor, ale obrazovka se nezapne. Co mohu dělat\?</string>
<string name="faq_1_text">Takové problémy mohou mít mnoho důvodů specifických pro zařízení a systém, takže je těžké říci něco obecně. Měli byste zkontrolovat nastavení zařízení a ujistit se, že se aplikace může otevřít, když běží na pozadí, a umožnit zobrazení přes jiné aplikace.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Hurtigopkald</string>
<string name="manage_speed_dial">Administrér hurtigopkald</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Deaktivér nærhedssensor under opkald</string>
<string name="disable_swipe_to_answer">Erstat swipe ved besvarelse af indgående opkald med at klikke på</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -10,9 +10,9 @@
<string name="no_previous_calls">Anrufliste ist leer</string>
<string name="could_not_access_the_call_history">Kein Zugriff auf Anrufliste</string>
<string name="request_access">Zugriff anfordern</string>
<string name="remove_confirmation">Ausgewählte Anrufe definitiv aus der Anrufliste löschen\?</string>
<string name="clear_history_confirmation">Sicher, dass die gesamte Anrufliste gelöscht werden soll\?</string>
<string name="show_grouped_calls">Gruppierte Anrufe zeigen</string>
<string name="remove_confirmation">Sollen wirklich die ausgewählten Einträge aus der Anrufliste gelöscht werden\?</string>
<string name="clear_history_confirmation">Soll wirklich die gesamte Anrufliste gelöscht werden\?</string>
<string name="show_grouped_calls">Gruppierte Anrufe anzeigen</string>
<string name="clear_call_history">Anrufliste löschen</string>
<string name="show_call_details">Anrufdetails anzeigen</string>
<!-- Dialpad -->
@@ -35,7 +35,7 @@
<string name="call_ending">Anruf beenden</string>
<string name="ongoing_call">Aktueller Anruf</string>
<string name="select_sim">Wähle die SIM-Karte für diesen Anruf aus</string>
<string name="always_use_this_sim">Für diese Nummer immer diese SIM-Karte benutzen</string>
<string name="always_use_this_sim">Für diese Nummer immer diese SIM-Karte verwenden</string>
<string name="unset_default_sim">Als Standard-SIM abwählen</string>
<string name="calls">Anrufe</string>
<string name="turn_microphone_on">Mikrofon einschalten</string>
@@ -59,7 +59,8 @@
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Kabelgebundenes Headset</string>
<string name="audio_route_wired_or_earpiece">Kabelgebunden oder über Kopfhörer</string>
<string name="choose_audio_route">Audio-Ausgang wählen</string>
<string name="choose_audio_route">Audioausgang wählen</string>
<string name="calling_blocked_number">Die angerufene Nummer ist gesperrt</string>
<!-- Speed dial -->
<string name="speed_dial">Kurzwahl</string>
<string name="manage_speed_dial">Kurzwahlnummern verwalten</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Näherungssensor bei Anrufen deaktivieren</string>
<string name="disable_swipe_to_answer">Anrufe durch Klicken statt durch Streichen annehmen</string>
<string name="show_incoming_calls_full_screen">Eingehende Anrufe immer im Vollbildmodus anzeigen</string>
<string name="hide_dialpad_numbers">Wähltastenfeld-Nummern ausblenden</string>
<!-- FAQ -->
<string name="faq_1_title">Ich höre eingehende Anrufe, aber der Bildschirm schaltet sich nicht ein. Was kann ich tun\?</string>
<string name="faq_1_text">Eine allgemeine Antwort auf die Frage ist schwer, denn solche Probleme können viele geräte- und systemspezifische Gründe haben. Du solltest dich in den Einstellungen des Geräts umsehen und sicherstellen, dass die App im Hintergrund angezeigt werden darf und die Einblendung über anderen Apps erlaubt ist.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Ενσύρματα κεφαλής</string>
<string name="audio_route_wired_or_earpiece">Ενσύρματα ή ακουστικά</string>
<string name="choose_audio_route">Επιλογή διαδρομής ήχου</string>
<string name="calling_blocked_number">Ο αριθμός που καλείτε είναι αποκλεισμένος</string>
<!-- Speed dial -->
<string name="speed_dial">Ταχεία κλήση</string>
<string name="manage_speed_dial">Διαχείριση ταχείας κλήσης</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Απενεργοποίηση του αισθητήρα εγγύτητας κατά τη διάρκεια κλήσεων</string>
<string name="disable_swipe_to_answer">Αντικατάσταση Σάρωσης με Κλικ στην απάντηση εισερχόμενων κλήσεων</string>
<string name="show_incoming_calls_full_screen">Να εμφανίζονται πάντα οι εισερχόμενες κλήσεις σε πλήρη οθόνη</string>
<string name="hide_dialpad_numbers">Απόκρυψη αριθμών πληκτρολογίου</string>
<!-- FAQ -->
<string name="faq_1_title">Ακούω εισερχόμενες κλήσεις, αλλά η οθόνη δεν ανάβει. Τι μπορώ να κάνω;</string>
<string name="faq_1_text">Τέτοια θέματα μπορεί να έχουν πολλούς λόγους που σχετίζονται με τη συσκευή και το σύστημα, και είναι δύσκολο να ειπωθούν γενικά. Θα πρέπει να ψάξετε στις ρυθμίσεις της συσκευής σας και να βεβαιωθείτε ότι η εφαρμογή επιτρέπεται να εμφανίζεται όταν βρίσκεται στο παρασκήνιο και να επιτρέπει την εμφάνισή της πάνω από άλλες εφαρμογές.</string>
@@ -77,4 +79,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Disable proximity sensor during calls</string>
<string name="disable_swipe_to_answer">Replace swiping at responding to incoming calls with clicking</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Auricular con cable</string>
<string name="audio_route_wired_or_earpiece">Auricular inalámbrico</string>
<string name="choose_audio_route">Elija la salida del audio</string>
<string name="calling_blocked_number">El número al que llamas está bloqueado</string>
<!-- Speed dial -->
<string name="speed_dial">Marcado rápido</string>
<string name="manage_speed_dial">Administrar marcado rápido</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Deshabilitar el sensor de proximidad durante las llamadas</string>
<string name="disable_swipe_to_answer">Reemplazar deslizar para responder llamadas entrantes a pulsar</string>
<string name="show_incoming_calls_full_screen">Siempre mostrar llamadas entrantes en pantalla completa</string>
<string name="hide_dialpad_numbers">Ocultar los números del teclado</string>
<!-- FAQ -->
<string name="faq_1_title">Escucho las llamadas entrantes, pero la pantalla no se enciende. ¿Qué puedo hacer\?</string>
<string name="faq_1_text">Estos problemas pueden deberse a muchas razones específicas del dispositivo y del sistema, es difícil decirlo en general. Deberías mirar en la configuración de tu dispositivo y asegurarte de que la aplicación tiene permiso para aparecer cuando está en segundo plano y permitir la aplicación se muestre sobre otras aplicaciones.</string>

View File

@@ -20,8 +20,8 @@
<string name="asterisk">Tärn</string>
<string name="hashtag">Teemaviide</string>
<string name="call_number">Helista numbrile</string>
<string name="dialpad_beeps">Helisignaalide lubamine valimisnupu klõpsamisel</string>
<string name="dialpad_vibrations">Võimaldab vibratsiooni valimisnuppude klõpsamisel</string>
<string name="dialpad_beeps">Numbriklahvistiku nupu klõpsamisel esita helisignaali</string>
<string name="dialpad_vibrations">Numbriklahvistiku nupu klõpsamisel värista telefoni</string>
<!-- Dialer -->
<string name="dialer">Telefon</string>
<string name="accept">Nõustu</string>
@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Juhtmega kõrvaklapid</string>
<string name="audio_route_wired_or_earpiece">Juhtmega või kõrvasisesed kõrvaklapid</string>
<string name="choose_audio_route">Vali heliruuting</string>
<string name="calling_blocked_number">Sa üritad helistada blokeeritud numbrile</string>
<!-- Speed dial -->
<string name="speed_dial">Kiirvalimine</string>
<string name="speed_dial_label">Klõpsa numbrit ja seosta ta konkreetse telefoniraamatu kirjega. Hiljem saad samale numbrile pikalt vajutades alustada kõnet määratud telefoninumbrile.</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Kõnede ajaks lülita lähedusandur välja</string>
<string name="disable_swipe_to_answer">Kõnele vastamisel kasuta viipamise asemel klõpsimist</string>
<string name="show_incoming_calls_full_screen">Kuvage sissetulevad kõned alati täisekraanil</string>
<string name="hide_dialpad_numbers">Peida numbriklahvistik</string>
<!-- FAQ -->
<string name="faq_1_title">Ma kuulen sissetulevaid kõnesid, kuid ekraan ei lülitu sisse. Mida ma saan teha\?</string>
<string name="faq_1_text">Sellistel probleemidel võib olla palju seadme- ja süsteemispetsiifilisi põhjusi, raske öelda üldiselt. Peaksite oma seadme seadetes ringi vaatama ja veenduma, et rakendusel on lubatud taustal hüpata ja lubada kuvamist üle teiste rakenduste.</string>

View File

@@ -1,29 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Yksinkertainen Numerovalitsin</string>
<string name="app_launcher_name">Numerovalitsin</string>
<string name="default_phone_app_prompt">Aseta tämä sovellus oletukseksi puheluille</string>
<string name="allow_displaying_over_other_apps">Hyväksy näkyminen muiden sovellusten päällä, jotta sovellus toimii luotettavasti</string>
<string name="app_name">Yksinkertainen puhelin</string>
<string name="app_launcher_name">Puhelin</string>
<string name="default_phone_app_prompt">Tää tästä oletussovellus puheluille</string>
<string name="allow_displaying_over_other_apps">Salli näkyminen muiden sovellusten päällä, jotta sovellus toimii luotettavasti</string>
<!-- Contacts -->
<string name="could_not_access_contacts">Ei käyttöoikeutta yhteystietoihin</string>
<string name="could_not_access_contacts">Yhteystietojen käyttöoikeutta ei ole</string>
<!-- Recents -->
<string name="no_previous_calls">Ei puheluita</string>
<string name="could_not_access_the_call_history">Ei käyttöoikeutta puheluhistoriaan</string>
<string name="no_previous_calls">Aiempia puheluita ei löytynyt</string>
<string name="could_not_access_the_call_history">Puheluhistorian käyttöoikeutta ei ole</string>
<string name="request_access">Pyydä käyttöoikeutta</string>
<string name="remove_confirmation">Haluatko varmasti poistaa valitut kohteet puheluhistoriasta\?</string>
<string name="clear_history_confirmation">Haluatko varmasti tyhjentää koko puheluhistorian\?</string>
<string name="clear_history_confirmation">Haluatko varmasti tyhjentää puheluhistorian täysin\?</string>
<string name="show_grouped_calls">Näytä ryhmitetyt puhelut</string>
<string name="clear_call_history">Tyhjennä puheluhistoria</string>
<string name="show_call_details">Näytä puhelun tiedot</string>
<!-- Dialpad -->
<string name="dialpad">Valintanäppäimistö</string>
<string name="asterisk">Asteriski</string>
<string name="hashtag">Risuaita</string>
<string name="dialpad">Numeronäppäimistö</string>
<string name="asterisk">Tähti</string>
<string name="hashtag">Ruutu</string>
<string name="call_number">Soita numeroon</string>
<string name="dialpad_beeps">Äänimerkkien ottaminen käyttöön valintanäppäimen napsautuksen yhteydessä</string>
<string name="dialpad_vibrations">Ota värinät käyttöön valintanäppäimen napsautuksista</string>
<string name="dialpad_beeps">Piippaa numeronäppäimistön painalluksista</string>
<string name="dialpad_vibrations">Värähdä numeronäppäimistön painalluksista</string>
<!-- Dialer -->
<string name="dialer">Numerovalitsin</string>
<string name="dialer">Puhelin</string>
<string name="accept">Hyväksy</string>
<string name="accept_call">Vastaa puheluun</string>
<string name="decline">Hylkää</string>
@@ -33,48 +33,50 @@
<string name="dialing">Soitetaan…</string>
<string name="call_ended">Puhelu päättyi</string>
<string name="call_ending">Puhelu päättyy</string>
<string name="ongoing_call">Lähtevä puhelu</string>
<string name="select_sim">Valitse SIM-kortti puhelulle</string>
<string name="always_use_this_sim">Käytä tälle numerolle aina tätä SIM-korttia</string>
<string name="unset_default_sim">Poista oletus-SIM</string>
<string name="ongoing_call">Puhelu on käynnissä</string>
<string name="select_sim">Valitse puheluun käytettävä liittymä</string>
<string name="always_use_this_sim">Soita tähän numeroon aina tällä liittymällä</string>
<string name="unset_default_sim">Poista oletusliittymän määritys</string>
<string name="calls">Puhelut</string>
<string name="turn_microphone_on">Laita mikrofoni päälle</string>
<string name="turn_microphone_off">Laita mikrofoni pois pääl</string>
<string name="turn_speaker_on">Laita kaiutin päälle</string>
<string name="turn_speaker_off">Laita kaiutin pois pääl</string>
<string name="show_dialpad">Näytä valintanäppäimistö</string>
<string name="hide_dialpad">Piilota valintanäppäimistö</string>
<string name="turn_microphone_on">Ota mikrofoni käyttöön</string>
<string name="turn_microphone_off">Poista mikrofoni käytös</string>
<string name="turn_speaker_on">Ota kaiutin käyttöön</string>
<string name="turn_speaker_off">Poista kaiutin käytös</string>
<string name="show_dialpad">Näytä numeronäppäimet</string>
<string name="hide_dialpad">Piilota numeronäppäimet</string>
<string name="end_call">Lopeta puhelu</string>
<string name="hold_call">Puhelu pitoon</string>
<string name="resume_call">Palaa puheluun</string>
<string name="call_on_hold">Pidossa</string>
<string name="call_swap">Vaihda puheluita</string>
<string name="call_swap">Vaihda puhelua</string>
<string name="call_merge">Yhdistä puhelut</string>
<string name="call_split">Jaa puhelu</string>
<string name="call_add">Lisää puhelu</string>
<string name="conference_manage">Hallinnoi puhelinneuvottelua</string>
<string name="conference">Neuvottelu</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="conference_manage">Hallitse ryhmäpuhelua</string>
<string name="conference">Ryhmäpuhelu</string>
<string name="audio_route_speaker">Kaiutin</string>
<string name="audio_route_earpiece">Kuuloke</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="audio_route_wired_headset">Langallinen kuulokemikrofoni</string>
<string name="audio_route_wired_or_earpiece">Langallinen tai kuuloke</string>
<string name="choose_audio_route">Vslitse äänen reitti</string>
<string name="calling_blocked_number">Soitettava numero on estetty</string>
<!-- Speed dial -->
<string name="speed_dial">Pikavalinta</string>
<string name="manage_speed_dial">Pikavalinnan asetukset</string>
<string name="speed_dial_label">Paina numeroa asettaaksesi sille yhteystiedon. Yhteystiedolle soitetaan, kun painat numeroa pitkään numerovalitsimessa.</string>
<string name="manage_speed_dial">Hallitse pikavalintoja</string>
<string name="speed_dial_label">Paina numeroa määrittääksesi siihen yhteystiedon. Voit soittaa yhteystiedolle painamalla puhelimen numeronäppäimistöä pitkään.</string>
<!-- Settings -->
<string name="group_subsequent_calls">Ryhmitä saman numeron peräkkäiset puhelut puheluhistoriassa</string>
<string name="open_dialpad_by_default">Avaa numeronäppäimistö, kun sovellus avataan</string>
<string name="disable_proximity_sensor">Poista läheisyysanturi käytöstä puheluiden aikana</string>
<string name="group_subsequent_calls">Ryhmittele samojen numeroiden puhelut puheluhistoriassa</string>
<string name="open_dialpad_by_default">Avaa sovellus numeronäppäimiin</string>
<string name="disable_proximity_sensor">Poista läheisyysanturi käytöstä puheluiden ajaksi</string>
<string name="disable_swipe_to_answer">Vastaa puheluihin painalluksella pyyhkäisyn sijaan</string>
<string name="show_incoming_calls_full_screen">Näytä saapuvat puhelut aina koko näytöllä</string>
<string name="hide_dialpad_numbers">Piilota numeronäppäimet</string>
<!-- FAQ -->
<string name="faq_1_title">Kuulen saapuvat puhelut, mutta näyttö ei käynnisty. Mitä voin tehdä\?</string>
<string name="faq_1_text">Tällaisiin ongelmiin voi olla monia laite- ja järjestelmäkohtaisia syitä, joita on vaikea sanoa yleisesti. Kannattaa tutkia laitteen asetuksia ja varmistaa, että sovelluksen on sallittu ponnahtaa esiin, kun se on taustalla, ja sallia sen näyttäminen muiden sovellusten yläpuolella.</string>
<string name="faq_1_title">Kuulen saapuvat puhelut, mutta näyttö on pimeänä. Mitä voin tehdä\?</string>
<string name="faq_1_text">Tällaisiin ongelmiin voi olla monia laite- ja järjestelmäkohtaisia syitä, joiden yleistäminen on hankalaa. Kannattaa tutkia laitteen asetuksia ja varmistaa, että sovelluksella on oikeus ponnahtaa esiin taustalta ja näkyä muiden sovellusten päällä.</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -54,12 +54,13 @@
<string name="call_add">Ajouter un appel</string>
<string name="conference_manage">Gérer une conférence téléphonique</string>
<string name="conference">Conférence</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_speaker">Haut-parleur</string>
<string name="audio_route_earpiece">Écouteur</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="audio_route_wired_headset">Casque filaire</string>
<string name="audio_route_wired_or_earpiece">Filaire ou écouteur</string>
<string name="choose_audio_route">Choisir la sortie audio</string>
<string name="calling_blocked_number">Le numéro que vous appelez est bloqué</string>
<!-- Speed dial -->
<string name="speed_dial">Numérotation rapide</string>
<string name="manage_speed_dial">Gérer la numérotation rapide</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Désactiver le capteur de proximité pendant les appels</string>
<string name="disable_swipe_to_answer">Remplacer le balayage pour répondre aux appels entrants par un clic</string>
<string name="show_incoming_calls_full_screen">Toujours afficher les appels entrants en plein écran</string>
<string name="hide_dialpad_numbers">Masquer les numéros du clavier</string>
<!-- FAQ -->
<string name="faq_1_title">J\'entends les appels entrants, mais l\'écran ne s\'allume pas. Que puis-je faire \?</string>
<string name="faq_1_text">Ces problèmes peuvent avoir de nombreuses raisons spécifiques à l\'appareil et au système, il est difficile d\'en parler en général. Vous devriez consulter les paramètres de votre appareil et vous assurer que l\'application est autorisée à apparaître en arrière-plan et à s\'afficher au-dessus des autres applications.</string>
@@ -77,4 +79,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Auriculares con cable</string>
<string name="audio_route_wired_or_earpiece">Auriculares sen fíos</string>
<string name="choose_audio_route">Escollela saida do audio</string>
<string name="calling_blocked_number">O número ao que estás chamando está bloqueado</string>
<!-- Speed dial -->
<string name="speed_dial">Marcación rápida</string>
<string name="manage_speed_dial">Xestionar marcacións rápidas</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Desactivar sensor de proximidade durante as chamadas</string>
<string name="disable_swipe_to_answer">Substituír o xesto de desprazar por un click para responder</string>
<string name="show_incoming_calls_full_screen">Mostrar sempre as chamadas entrantes a pantalla enteira</string>
<string name="hide_dialpad_numbers">Ocultalos números do teclado</string>
<!-- FAQ -->
<string name="faq_1_title">Escoito chamadas entrantes, pero a pantalla non se acende. Que podo facer\?</string>
<string name="faq_1_text">Estes problemas poden ter moitas razóns específicas do dispositivo e do sistema, difíciles de dicir en xeral. Debes mirar ao teu redor na configuración do teu dispositivo e asegurarte de que a aplicación pode aparecer cando está en segundo plano e permitir que se vexa sobre outras aplicacións.</string>

View File

@@ -54,12 +54,13 @@
<string name="call_add">Dodaj poziv</string>
<string name="conference_manage">Upravljaj konferencijskim pozivima</string>
<string name="conference">Konferencija</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_speaker">Zvučnik</string>
<string name="audio_route_earpiece">Slušalica</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="audio_route_wired_headset">Analogna slušalica s mikrofonom</string>
<string name="audio_route_wired_or_earpiece">Analogno ili slušalica</string>
<string name="choose_audio_route">Odaberi audio izlaz</string>
<string name="calling_blocked_number">Broj koji zoveš je blokiran</string>
<!-- Speed dial -->
<string name="speed_dial">Brzo biranje</string>
<string name="manage_speed_dial">Upravljaj brzim biranjem</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Isključi senzor blizine tijekom poziva</string>
<string name="disable_swipe_to_answer">Zamijeni povlačenje prstom za odgovaranje na dolazne pozive pritiskom</string>
<string name="show_incoming_calls_full_screen">Uvijek prikaži dolazne pozive u cjeloekranskom prikazu</string>
<string name="hide_dialpad_numbers">Sakrij brojeve tipkovnice telefona</string>
<!-- FAQ -->
<string name="faq_1_title">Čujem dolazne pozive, ali ekran se ne uključuje. Što mogu učiniti\?</string>
<string name="faq_1_text">Takvi problemi mogu imati mnogo razloga specifičnih za uređaj i sustav, koje je teško reći općenito. Trebali biste pogledati uokolo u postavkama svog uređaja i provjeriti je li aplikaciji dopušteno iskakanje u pozadini i dopuštenje prikazivanja preko drugih aplikacija.</string>

View File

@@ -54,12 +54,13 @@
<string name="call_add">Hívás hozzáadása</string>
<string name="conference_manage">Konferenciahívás kezelése</string>
<string name="conference">Konferencia</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_speaker">Hangszóró</string>
<string name="audio_route_earpiece">Fülhallgató</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="audio_route_wired_headset">Vezetékes fejhallgató</string>
<string name="audio_route_wired_or_earpiece">Vezetékes vagy vezeték nélküli fülhallgató</string>
<string name="choose_audio_route">Válasszon hangkimenetet</string>
<string name="calling_blocked_number">A hívott szám blokkolva van</string>
<!-- Speed dial -->
<string name="speed_dial">Gyors tárcsázó</string>
<string name="manage_speed_dial">Gyors tárcsázó kezelése</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Közelségérzékelő kikapcsolása a hívások során</string>
<string name="disable_swipe_to_answer">Csúsztatás kattintásra cserélése a bejövő hívásoknál</string>
<string name="show_incoming_calls_full_screen">Bejövő hívások megjelenítése mindig teljes képernyőn</string>
<string name="hide_dialpad_numbers">Tárcsázószámok elrejtése</string>
<!-- FAQ -->
<string name="faq_1_title">Bejövő hívást hallok, de a képernyő nem kapcsol be. Mit tehetek\?</string>
<string name="faq_1_text">Az ilyen problémáknak számos eszköz- és rendszerfüggő oka lehet, általánosságban nehéz megmondani. Nézzen körül az eszközbeállításokban, és győződjön meg róla, hogy az alkalmazás előbújhat-e a háttérből, és megjelenhet-e más alkalmazások felett.</string>
@@ -77,4 +79,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -20,8 +20,8 @@
<string name="asterisk">Bintang</string>
<string name="hashtag">Pagar</string>
<string name="call_number">Nomor telepon</string>
<string name="dialpad_beeps">Enable beeps on dialpad button clicks</string>
<string name="dialpad_vibrations">Enable vibrations on dialpad button clicks</string>
<string name="dialpad_beeps">Aktifkan suara ketika tombol papan ditekan</string>
<string name="dialpad_vibrations">Aktifkan getaran ketika tombol papan ditekan</string>
<!-- Dialer -->
<string name="dialer">Dialer</string>
<string name="accept">Menerima</string>
@@ -45,21 +45,22 @@
<string name="show_dialpad">Tampilkan dialpad</string>
<string name="hide_dialpad">Sembunyikan dialpad</string>
<string name="end_call">Akhiri panggilan</string>
<string name="hold_call">Hold call</string>
<string name="resume_call">Resume call</string>
<string name="call_on_hold">On Hold</string>
<string name="call_swap">Swap calls</string>
<string name="call_merge">Merge calls</string>
<string name="call_split">Split call</string>
<string name="call_add">Add call</string>
<string name="conference_manage">Manage conference call</string>
<string name="conference">Conference</string>
<string name="hold_call">Jeda panggilan</string>
<string name="resume_call">Lanjutkan panggilan</string>
<string name="call_on_hold">Dijeda</string>
<string name="call_swap">Ubah panggilan</string>
<string name="call_merge">Gabungkan panggilan</string>
<string name="call_split">Pisahkan panggilan</string>
<string name="call_add">Tambahkan panggilan</string>
<string name="conference_manage">Kelola panggilan konferensi</string>
<string name="conference">Konferensi</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_earpiece">Earphone</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="audio_route_wired_headset">Headset Kabel</string>
<string name="audio_route_wired_or_earpiece">Kabel atau Earphone</string>
<string name="choose_audio_route">Pilih rute audio</string>
<string name="calling_blocked_number">Nomor yang Anda panggil diblokir</string>
<!-- Speed dial -->
<string name="speed_dial">Panggilan cepat</string>
<string name="manage_speed_dial">Kelola panggilan cepat</string>
@@ -69,12 +70,13 @@
<string name="open_dialpad_by_default">Buka dialpad secara default ketika aplikasi dibuka</string>
<string name="disable_proximity_sensor">Nonaktifkan sensor kedekatan saat ada di panggilan</string>
<string name="disable_swipe_to_answer">Ganti menggesek saat menanggapi panggilan masuk dengan mengklik</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="show_incoming_calls_full_screen">Selalu tampilkan panggilan masuk dengan layar penuh</string>
<string name="hide_dialpad_numbers">Sembunyikan nomor tombol papan</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>
<string name="faq_1_title">Saya mendengar panggilan masuk, tetapi layarnya tidak menyala\? Apa yang bisa saya lakukan\?</string>
<string name="faq_1_text">Beberapa masalah dapat memiliki alasan perangkat dan sistem spesifik, tidak mudah untuk diberi tahu secara umum. Anda seharusnya melihat dalam pengaturan perangkat Anda dan memastikan bahwa aplikasi diperbolehkan untuk muncul ketika dalam latar belakang dan memperbolehkan menampilkan di atas aplikasi lain.</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -54,12 +54,13 @@
<string name="call_add">Aggiungi una chiamata</string>
<string name="conference_manage">Gestisci la teleconferenza</string>
<string name="conference">Conferenza</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_speaker">Altoparlante</string>
<string name="audio_route_earpiece">Auricolare</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="audio_route_wired_headset">Cuffia cablata</string>
<string name="audio_route_wired_or_earpiece">Cablato o auricolare</string>
<string name="choose_audio_route">Scegli l\'uscita audio</string>
<string name="calling_blocked_number">Il numero che stai chiamando è bloccato</string>
<!-- Speed dial -->
<string name="speed_dial">Contatti veloci</string>
<string name="manage_speed_dial">Gestisci i contatti veloci</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Disattiva il sensore di prossimità durante le chiamate</string>
<string name="disable_swipe_to_answer">Sostituisci lo scorrimento nel rispondere alle chiamate in arrivo con un clic</string>
<string name="show_incoming_calls_full_screen">Visualizza sempre le chiamate in arrivo a schermo intero</string>
<string name="hide_dialpad_numbers">Nascondi i numeri del tastierino</string>
<!-- FAQ -->
<string name="faq_1_title">Sento le chiamate in arrivo, ma lo schermo non si accende. Cosa posso fare\?</string>
<string name="faq_1_text">Tali problemi possono avere molte ragioni specifiche per il dispositivo e il sistema, è difficile identificarle in generale. Dovresti dare un\'occhiata alle impostazioni del dispositivo e assicurarti che l\'app sia autorizzata a comparire quando è in background e che permetta la visualizzazione sopra le altre app.</string>
@@ -77,4 +79,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">חיוג מהיר</string>
<string name="manage_speed_dial">נהל חיוג מהיר</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">השבת את חיישן הקרבה במהלך שיחות</string>
<string name="disable_swipe_to_answer">החלף החלקה בתגובה לשיחות נכנסות בלחיצה</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -60,19 +60,21 @@
<string name="audio_route_wired_headset">有線ヘッドセット</string>
<string name="audio_route_wired_or_earpiece">有線またはイヤーピース</string>
<string name="choose_audio_route">音声の出力先を選択</string>
<string name="calling_blocked_number">その番号はブロックした番号です</string>
<!-- Speed dial -->
<string name="speed_dial">スピードダイヤル</string>
<string name="manage_speed_dial">スピードダイヤルの管理</string>
<string name="speed_dial_label">番号をクリックすると連絡先を割り当てることが出来ます。電話で指定された番号を長押しすると、指定された連絡先に素早く電話をかけることが出来ます。</string>
<string name="speed_dial_label">番号をタップすると連絡先を割り当てることが出来ます。ダイヤルパッドで割り当てた番号を長押しすると、割り当てた連絡先に素早く電話をかけることが出来ます。</string>
<!-- Settings -->
<string name="group_subsequent_calls">後続の通話をコールログの同じ番号でグループ化する</string>
<string name="group_subsequent_calls">発着信履歴で同じ番号による連続した通話をグループ化する</string>
<string name="open_dialpad_by_default">アプリを開いたときにデフォルトでダイヤルパッドを開く</string>
<string name="disable_proximity_sensor">通話中に近接センサーを無効にする</string>
<string name="disable_swipe_to_answer">着信に応答する際のスワイプ操作をクリック操作に置き換える</string>
<string name="show_incoming_calls_full_screen">常に着信通知を全画面表示する</string>
<string name="disable_swipe_to_answer">着信に応答する際のスワイプ操作をタップ操作に置き換える</string>
<string name="show_incoming_calls_full_screen">着信通知を常に全画面表示する</string>
<string name="hide_dialpad_numbers">ダイヤルパッドの番号を表示しない</string>
<!-- FAQ -->
<string name="faq_1_title">着信音は聞こえるのですが、画面がつきません。どうしたらよいですか?</string>
<string name="faq_1_text">このような問題は、デバイスやシステム固有の理由が多く、一概には言えません。端末の設定を見て、アプリがバックグラウンドでポップアップすることを許可しているか、他のアプリの上に表示することを許可しているかを確認する必要があります。</string>
<string name="faq_1_text">このような問題は、端末やシステム固有の理由が多く、一概には言えません。端末の設定を見て、アプリがバックグラウンドでポップアップすることを許可しているか、他のアプリの上に表示することを許可しているかを確認する必要があります。</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Spartusis rinkimas</string>
<string name="manage_speed_dial">Tvarkyti spartųjį rinkimą</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Skambučių metu išjungti artumo jutiklį</string>
<string name="disable_swipe_to_answer">Atsiliepiant į įeinančius skambučius perbraukimą pakeiskite paspaudimu</string>
<string name="show_incoming_calls_full_screen">Visada rodykite įeinančius skambučius per visą ekraną</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">വയർഡ് ഹെഡ്സെറ്റ്</string>
<string name="audio_route_wired_or_earpiece">വയർഡ് അല്ലെങ്കിൽ ഇയർപീസ്</string>
<string name="choose_audio_route">ഓഡിയോ യാതാമാര്ഗം തിരഞ്ഞെടുക്കുക</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">സ്പീഡ് ഡയൽ</string>
<string name="manage_speed_dial">സ്പീഡ് ഡയൽ നിയന്ത്രിക്കുക</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">കോളുകൾക്കിടയിൽ പ്രോക്സിമിറ്റി സെൻസർ പ്രവർത്തനരഹിതമാക്കുക</string>
<string name="disable_swipe_to_answer">ഇൻകമിംഗ് കോളുകളോട് പ്രതികരിക്കുമ്പോൾ സ്വൈപ്പിംഗ് മാറ്റി പകരം ഇൻകമിംഗ് കോളിൽ ക്ലിക്ക് ചെയ്യുക</string>
<string name="show_incoming_calls_full_screen">എല്ലായ്‌പ്പോഴും ഇൻകമിംഗ് കോളുകൾ പൂർണ്ണ സ്‌ക്രീനിൽ പ്രദർശിപ്പിക്കുക</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">ഞാൻ ഇൻകമിംഗ് കോളുകൾ കേൾക്കുന്നു, പക്ഷേ സ്ക്രീൻ ഓണാക്കുന്നില്ല. എനിക്ക് എന്ത് ചെയ്യാൻ കഴിയും\?</string>
<string name="faq_1_text">അത്തരം പ്രശ്നങ്ങൾക്ക് ഉപകരണത്തിനും സിസ്റ്റത്തിനും പ്രത്യേക കാരണങ്ങളുണ്ടാകാം, പൊതുവായി പറയാൻ പ്രയാസമാണ്. നിങ്ങളുടെ ഉപകരണ ക്രമീകരണങ്ങളിൽ നിങ്ങൾ ചുറ്റും നോക്കുകയും പശ്ചാത്തലത്തിലായിരിക്കുമ്പോൾ ആപ്പ് പോപ്പ് അപ്പ് ചെയ്യാൻ അനുവദിക്കുകയും മറ്റ് ആപ്പുകളിൽ പ്രദർശിപ്പിക്കാൻ അനുവദിക്കുകയും വേണം.</string>
@@ -77,4 +79,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Hurtigvalg</string>
<string name="manage_speed_dial">Administrer hurtigvalg</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Deaktiver nærhetssensor under samtaler</string>
<string name="disable_swipe_to_answer">Erstatt sveiping ved å svare på innkommende anrop med å klikke</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Bedrade koptelefoon</string>
<string name="audio_route_wired_or_earpiece">Bedraad of via oordopje(s)</string>
<string name="choose_audio_route">Geluidsroute kiezen</string>
<string name="calling_blocked_number">Het gebelde nummer is geblokkeerd</string>
<!-- Speed dial -->
<string name="speed_dial">Snelkiesnummer</string>
<string name="manage_speed_dial">Snelkiezen beheren</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Nabijheidssensor uitschakelen tijdens bellen</string>
<string name="disable_swipe_to_answer">Vervang vegen door klikken bij het aannemen van gesprekken</string>
<string name="show_incoming_calls_full_screen">Inkomende gesprekken altijd op volledig scherm tonen</string>
<string name="hide_dialpad_numbers">Toetsenblokcijfers verbergen</string>
<!-- FAQ -->
<string name="faq_1_title">Ik hoor dat er een gesprek binnenkomt, maar het scherm gaat niet aan. Wat kan ik doen\?</string>
<string name="faq_1_text">Dit soort problemen kan vele oorzaken hebben, specifiek voor bepaalde apparaten en software. Controleer in ieder geval of voor deze app in de systeeminstellingen \"Weergeven vóór andere apps\" is toegestaan en of bij meldingen voor inkomende gesprekken \"Weergeven op scherm\" is ingeschakeld.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Disable proximity sensor during calls</string>
<string name="disable_swipe_to_answer">Replace swiping at responding to incoming calls with clicking</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do\?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Słuchawki przewodowe</string>
<string name="audio_route_wired_or_earpiece">Słuchawka urządzenia lub przewodowa</string>
<string name="choose_audio_route">Wybierz urządzenie audio</string>
<string name="calling_blocked_number">Numer, na który dzwonisz, jest zablokowany</string>
<!-- Speed dial -->
<string name="speed_dial">Szybkie wybieranie</string>
<string name="manage_speed_dial">Zarządzaj szybkim wybieraniem</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Wyłączaj czujnik zbliżeniowy podczas połączeń</string>
<string name="disable_swipe_to_answer">Zastąp naciśnięciem gest przesunięcia do odpowiadania na połączenia przychodzące</string>
<string name="show_incoming_calls_full_screen">Zawsze wyświetlaj połączenia przychodzące na pełnym ekranie</string>
<string name="hide_dialpad_numbers">Ukryj cyfry panelu wybierania</string>
<!-- FAQ -->
<string name="faq_1_title">Słyszę połączenia przychodzące, ale ekran się nie włącza. Co mogę zrobić\?</string>
<string name="faq_1_text">Takie problemy mogą mieć wiele przyczyn specyficznych dla urządzenia i systemu; ogólnie trudno powiedzieć. Powinieneś/powinnaś rozejrzeć się w ustawieniach swojego urządzenia i upewnić się, że aplikacja może pojawiać się, gdy jest w tle, i wyświetlać się nad innymi aplikacjami.</string>

View File

@@ -20,8 +20,8 @@
<string name="asterisk">Asterisco</string>
<string name="hashtag">Hashtag</string>
<string name="call_number">Numero de telefone</string>
<string name="dialpad_beeps">Enable beeps on dialpad button clicks</string>
<string name="dialpad_vibrations">Enable vibrations on dialpad button clicks</string>
<string name="dialpad_beeps">Ativar sons do teclado</string>
<string name="dialpad_vibrations">Ativar vibrações do teclado</string>
<!-- Dialer -->
<string name="dialer">Discador</string>
<string name="accept">Aceitar</string>
@@ -54,12 +54,13 @@
<string name="call_add">Adicionar chamada</string>
<string name="conference_manage">Gerenciar chamada em conferência</string>
<string name="conference">Conferência</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_speaker">Alto falante</string>
<string name="audio_route_earpiece">Fone de ouvido</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_headset">Headset com fio</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="choose_audio_route">Escolha a rota de áudio</string>
<string name="calling_blocked_number">O número que você está ligando está bloqueado</string>
<!-- Speed dial -->
<string name="speed_dial">Ligação rápida</string>
<string name="manage_speed_dial">Gerenciar ligações rápidas</string>
@@ -69,10 +70,11 @@
<string name="open_dialpad_by_default">Mostrar o discador ao abrir o aplicativo</string>
<string name="disable_proximity_sensor">Desativar sensor de proximidade durante as chamadas</string>
<string name="disable_swipe_to_answer">Clicar em vez de deslizar para responder chamadas</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="show_incoming_calls_full_screen">Sempre exibir as chamadas recebidas em tela cheia</string>
<string name="hide_dialpad_numbers">Ocultar números do teclado</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>
<string name="faq_1_title">Ouço chamadas recebidas, mas a tela não liga. O que eu posso fazer?</string>
<string name="faq_1_text">Esses problemas podem ter muitos motivos específicos do dispositivo e do sistema, difíceis de dizer em geral. Você deve olhar em volta nas configurações do seu dispositivo e certificar-se de que o aplicativo pode aparecer quando estiver em segundo plano e permitir a exibição sobre outros aplicativos.</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res

View File

@@ -1,80 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Simple Dialer</string>
<string name="app_launcher_name">Marcador</string>
<string name="default_phone_app_prompt">Por favor, faça deste aplicativo o aplicativo de telefone padrão</string>
<string name="allow_displaying_over_other_apps">Por favor, permita exibir sobre outros aplicativos para um comportamento confiável</string>
<string name="app_launcher_name">Telefone</string>
<string name="default_phone_app_prompt">Tornar esta a aplicação padrão</string>
<string name="allow_displaying_over_other_apps">Deve permitir que esta aplicação seja mostrada por cima das outras para evitar comportamentos erráticos</string>
<!-- Contacts -->
<string name="could_not_access_contacts">Não pude acessar seus contatos</string>
<string name="could_not_access_contacts">Não foi possível aceder aos contactos</string>
<!-- Recents -->
<string name="no_previous_calls">Não existem chamadas anteriores</string>
<string name="could_not_access_the_call_history">Não pude acessar o histórico de chamadas</string>
<string name="could_not_access_the_call_history">Não foi possível aceder ao histórico de chamadas</string>
<string name="request_access">Pedir acesso</string>
<string name="remove_confirmation">Tem certeza de que deseja remover os itens selecionados do Histórico de Chamadas\?</string>
<string name="clear_history_confirmation">Tem certeza que quer remover tudo do Histórico de Chamadas\?</string>
<string name="remove_confirmation">Tem certeza de que deseja remover os itens selecionados do histórico de chamadas\?</string>
<string name="clear_history_confirmation">Tem a certeza de que pretende remover tudo do histórico de chamadas\?</string>
<string name="show_grouped_calls">Mostrar chamadas em grupo</string>
<string name="clear_call_history">Limpar registo de chamadas</string>
<string name="show_call_details">Mostrar detalhes da chamada</string>
<!-- Dialpad -->
<string name="dialpad">Teclado de discagem</string>
<string name="dialpad">Marcador</string>
<string name="asterisk">Asterisco</string>
<string name="hashtag">hashtag</string>
<string name="call_number">Ligar para o número</string>
<string name="dialpad_beeps">Enable beeps on dialpad button clicks</string>
<string name="dialpad_vibrations">Enable vibrations on dialpad button clicks</string>
<string name="hashtag">\'Hashtag\'</string>
<string name="call_number">Ligar</string>
<string name="dialpad_beeps">Ativar sons do teclado</string>
<string name="dialpad_vibrations">Ativar vibração do teclado</string>
<!-- Dialer -->
<string name="dialer">Discador</string>
<string name="dialer">Marcador</string>
<string name="accept">Aceitar</string>
<string name="accept_call">Aceitar chamada</string>
<string name="decline">Recusar</string>
<string name="decline_call">Rejeitar chamada</string>
<string name="decline_call">Recusar chamada</string>
<string name="unknown_caller">Desconhecido</string>
<string name="is_calling">A chamar…</string>
<string name="dialing">A ligar…</string>
<string name="call_ended">Chamada terminada</string>
<string name="call_ending">A terminar chamada</string>
<string name="ongoing_call">Chamada em curso</string>
<string name="select_sim">Selecione um SIM para esta chamada</string>
<string name="always_use_this_sim">Utilizar sempre este SIM para ligar para este número</string>
<string name="select_sim">Selecione o SIM para esta chamada</string>
<string name="always_use_this_sim">Utilizar sempre este SIM para ligar a este número</string>
<string name="unset_default_sim">Deixar de utilizar como SIM padrão</string>
<string name="calls">Chamadas</string>
<string name="turn_microphone_on">Ligar o microfone</string>
<string name="turn_microphone_off">Desligar o microfone</string>
<string name="turn_speaker_on">Ligar alta-voz</string>
<string name="turn_speaker_off">Desligar alta-voz</string>
<string name="turn_microphone_on">Ligar microfone</string>
<string name="turn_microphone_off">Desligar microfone</string>
<string name="turn_speaker_on">Ligar alta voz</string>
<string name="turn_speaker_off">Desligar alta voz</string>
<string name="show_dialpad">Mostrar marcador</string>
<string name="hide_dialpad">Ocultar marcador</string>
<string name="end_call">Terminar a chamada</string>
<string name="end_call">Terminar chamada</string>
<string name="hold_call">Reter chamada</string>
<string name="resume_call">Retomar chamada</string>
<string name="call_on_hold">Em espera</string>
<string name="call_swap">Troca de chamadas</string>
<string name="call_merge">Mesclar chamadas</string>
<string name="call_split">Divisão de chamada</string>
<string name="call_merge">Unir chamadas</string>
<string name="call_split">Separar chamadas</string>
<string name="call_add">Adicionar chamada</string>
<string name="conference_manage">Gerenciar chamada de conferência</string>
<string name="conference_manage">Gerir chamada de conferência</string>
<string name="conference">Conferência</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_speaker">Altifalante</string>
<string name="audio_route_earpiece">Auricular</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="audio_route_wired_headset">Auscultador de cabo</string>
<string name="audio_route_wired_or_earpiece">Cabo ou auricular</string>
<string name="choose_audio_route">Escolha a rota de áudio</string>
<string name="calling_blocked_number">O número para o qual está a tentar ligar está bloqueado</string>
<!-- Speed dial -->
<string name="speed_dial">Marcação rápida</string>
<string name="manage_speed_dial">Gerir marcações rápidas</string>
<string name="speed_dial_label">Clique num número para atribuir um contacto à marcação rápida. Poderá assim, ligar diretamente ao contacto ao premir longamente a tecla de marcação rápida.</string>
<string name="speed_dial">Ligação rápida</string>
<string name="manage_speed_dial">Gerir ligações rápidas</string>
<string name="speed_dial_label">Clique num número para o atribuir a um contacto. Poderá assim, ligar diretamente ao contacto ao premir longamente a tecla de ligação rápida.</string>
<!-- Settings -->
<string name="group_subsequent_calls">Agrupar, no registo, as chamadas para o mesmo contacto</string>
<string name="open_dialpad_by_default">Mostrar Marcador por padrâo ao abrir a aplicação</string>
<string name="open_dialpad_by_default">Mostrar marcador ao abrir a aplicação</string>
<string name="disable_proximity_sensor">Desativar sensor de proximidade durante as chamadas</string>
<string name="disable_swipe_to_answer">Clicar em vez de deslizar para atender</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="show_incoming_calls_full_screen">Mostrar em ecrã completo as chamadas recebidas</string>
<string name="hide_dialpad_numbers">Ocultar números no marcador</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>
<string name="faq_1_title">Estou a ouvir som mas o ecrã não liga. O que posso fazer\?</string>
<string name="faq_1_text">Esses problemas podem ter muitos motivos específicos do dispositivo e do sistema, difíceis de dizer em geral. Aceda às definições do sistema e certifique-se de que concedeu as permissões necessárias tais como permitir exibição por cima das outras aplicações.</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Apelare rapidă</string>
<string name="manage_speed_dial">Gestionați apelarea rapidă</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Dezactivați senzorul de proximitate în timpul apelurilor</string>
<string name="disable_swipe_to_answer">Înlocuiți glisarea pentru a răspunde la apelurile primite cu o singură apăsare</string>
<string name="show_incoming_calls_full_screen">Afișați întotdeauna apelurile primite pe întreg ecranul</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">Aud apelurile primite, dar ecranul nu se aprinde. Ce pot face\?</string>
<string name="faq_1_text">Aceste probleme pot avea multe motive specifice dispozitivului și sistemului, fiind greu de spus în general. Ar trebui să vă uitați în setările dispozitivului și să vă asigurați că aplicația este permisă să apară atunci când este în fundal și că permite afișarea peste alte aplicații.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Проводная гарнитура</string>
<string name="audio_route_wired_or_earpiece">Проводные или внутриканальные наушники</string>
<string name="choose_audio_route">Выберите аудиовыход</string>
<string name="calling_blocked_number">Набранный вами номер заблокирован</string>
<!-- Speed dial -->
<string name="speed_dial">Быстрый вызов</string>
<string name="manage_speed_dial">Управление быстрым вызовом</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Отключать датчик приближения во время вызовов</string>
<string name="disable_swipe_to_answer">Использовать нажатие вместо перетаскивания при ответе на входящие вызовы</string>
<string name="show_incoming_calls_full_screen">Всегда отображать входящие вызовы на полный экран</string>
<string name="hide_dialpad_numbers">Скрыть цифры на номеронабирателе</string>
<!-- FAQ -->
<string name="faq_1_title">Я слышу сигналы входящих вызовов, но экран не включается. Что можно сделать\?</string>
<string name="faq_1_text">Такие проблемы могут иметь множество специфических для устройства и системы причин, о которых трудно говорить в общем. Следует проверить настройки устройства и убедиться, что приложению разрешено отображение всплывающих уведомлений в фоновом режиме и отображение поверх других приложений.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Káblové slúchadlo</string>
<string name="audio_route_wired_or_earpiece">Káblové alebo slúchadlo</string>
<string name="choose_audio_route">Zvoľte audio výstup Choose audio route</string>
<string name="calling_blocked_number">Volané číslo máte zablokované</string>
<!-- Speed dial -->
<string name="speed_dial">Rýchle vytáčanie</string>
<string name="manage_speed_dial">Spravovať rýchle vytáčanie</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Vypnúť počas hovorov senzor priblíženia</string>
<string name="disable_swipe_to_answer">Nahradiť potiahnutie prstom pri odpovedaní na prichádzajúce hovory kliknutím</string>
<string name="show_incoming_calls_full_screen">Stále zobraziť prichádzajúce hovory na celú obrazovku</string>
<string name="hide_dialpad_numbers">Skryť čísla na číselníku</string>
<!-- FAQ -->
<string name="faq_1_title">Počujem prichádzajúce hovory, obrazovka sa ale nezapne. Čo s tým?</string>
<string name="faq_1_text">Takéto problémy majú často dôvody špecifické pre dané zariadenie alebo systém, ťažko teda dať všeobecné riešenie. Mali by ste sa poobzerať v nasteniach zariadenia a uistiť sa, že apka má povolenie na zobrazovanie sa z pozadia a na zobrazovanie sa nad ostatnými apkami.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Ožičene slušalke</string>
<string name="audio_route_wired_or_earpiece">Ožičeno ali brezžično</string>
<string name="choose_audio_route">Izberi smer zvoka</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Hitro klicanje</string>
<string name="manage_speed_dial">Upravljanje hitrega klica</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Onemogoči senzor bližine med klici</string>
<string name="disable_swipe_to_answer">Pri odzivanju na dohodne klice zamenjajte poteg s prstom na odziv s klikanjem</string>
<string name="show_incoming_calls_full_screen">Dohodne klice vedno prikaži na celotnem zaslonu</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">Slišim dohodne klice, vendar se zaslon ne vklopi. Kaj lahko storim\?</string>
<string name="faq_1_text">Takšne težave imajo lahko veliko razlogov, ki so specifični za napravo in sistem, zato jih je na splošno težko opredeliti. Oglejte si nastavitve naprave in se prepričajte, da je aplikaciji dovoljeno, da se prikaže, ko je v ozadju, in da omogoča prikaz nad drugimi aplikacijami.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Жичане слушалице</string>
<string name="audio_route_wired_or_earpiece">Жичани или слушалица</string>
<string name="choose_audio_route">Изаберите аудио руту</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Брзо бирање</string>
<string name="manage_speed_dial">Управљајте брзим бирањем</string>
@@ -70,7 +71,9 @@
<string name="disable_proximity_sensor">Онемогућите сензор близине током позива</string>
<string name="disable_swipe_to_answer">Замените превлачење при одговарању на долазне позиве кликом</string>
<string name="show_incoming_calls_full_screen">Увек прикажи долазне позиве преко целог екрана</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">Чујем долазне позиве, али екран се не укључује. Шта могу да урадим\?</string>
<string name="faq_1_text">Такви проблеми могу имати много специфичних разлога за уређај и систем, што је уопштено тешко рећи. Требало би да погледате около у подешавањима уређаја и уверите се да је апликацији дозвољено да искаче када је у позадини и да дозволи приказивање преко других апликација.</string>
</resources>
</resources>

View File

@@ -2,7 +2,7 @@
<resources>
<string name="app_name">Simpel telefon</string>
<string name="app_launcher_name">Telefon</string>
<string name="default_phone_app_prompt">Vänligen gör den här appen till standardtelefonapp</string>
<string name="default_phone_app_prompt">Gör den här appen till standardtelefonapp</string>
<string name="allow_displaying_over_other_apps">Tillåt visning över andra appar för att få ett tillförlitligt beteende</string>
<!-- Contacts -->
<string name="could_not_access_contacts">Det gick inte att komma åt dina kontakter</string>
@@ -38,9 +38,9 @@
<string name="always_use_this_sim">Använd alltid det här SIM-kortet för detta nummer</string>
<string name="unset_default_sim">Ta bort standard-SIM-kort</string>
<string name="calls">Samtal</string>
<string name="turn_microphone_on">Sätt på mikrofonen</string>
<string name="turn_microphone_on">S på mikrofonen</string>
<string name="turn_microphone_off">Stäng av mikrofonen</string>
<string name="turn_speaker_on">Sätt på högtalaren</string>
<string name="turn_speaker_on">S på högtalaren</string>
<string name="turn_speaker_off">Stäng av högtalaren</string>
<string name="show_dialpad">Visa knappsats</string>
<string name="hide_dialpad">Dölj knappsats</string>
@@ -54,12 +54,13 @@
<string name="call_add">Lägg till samtal</string>
<string name="conference_manage">Hantera konferenssamtal</string>
<string name="conference">Konferens</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_speaker">Högtalare</string>
<string name="audio_route_earpiece">Lur</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="audio_route_wired_headset">Kabelanslutet headset</string>
<string name="audio_route_wired_or_earpiece">Kabel eller lur</string>
<string name="choose_audio_route">Välj ljudväg</string>
<string name="calling_blocked_number">Numret du ringer är blockerat</string>
<!-- Speed dial -->
<string name="speed_dial">Snabbuppringning</string>
<string name="manage_speed_dial">Hantera snabbuppringning</string>
@@ -70,11 +71,12 @@
<string name="disable_proximity_sensor">Inaktivera närhetssensor under samtal</string>
<string name="disable_swipe_to_answer">Ersätt svepning vid besvarande av inkommande samtal med tryckning</string>
<string name="show_incoming_calls_full_screen">Visa alltid inkommande samtal i helskärm</string>
<string name="hide_dialpad_numbers">Dölj knappsatsens siffror</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>
<string name="faq_1_title">Jag hör inkommande samtal men skärmen vaknar inte. Vad gör jag\?</string>
<string name="faq_1_text">Sådana problem kan bero specifikt på apparat eller ditt sytem, det är svårt att svara på generellt. Du bör kolla i dina inställningar och säkerställa att appen har behörighet att synas i förgrunden och tillåts att synas över andra appar.</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Disable proximity sensor during calls</string>
<string name="disable_swipe_to_answer">Replace swiping at responding to incoming calls with clicking</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Kablolu Kulaklık</string>
<string name="audio_route_wired_or_earpiece">Kablolu veya Kulaklık</string>
<string name="choose_audio_route">Ses çıkışını seçin</string>
<string name="calling_blocked_number">Aradığınız numara engellendi</string>
<!-- Speed dial -->
<string name="speed_dial">Hızlı arama</string>
<string name="manage_speed_dial">Hızlı aramayı yönet</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">Aramalar sırasında yakınlık sensörünü devre dışı bırak</string>
<string name="disable_swipe_to_answer">Gelen aramalara yanıt vermek için kaydırmayı tıklamayla değiştir</string>
<string name="show_incoming_calls_full_screen">Gelen aramaları her zaman tam ekranda görüntüle</string>
<string name="hide_dialpad_numbers">Tuş takımı numaralarını gizle</string>
<!-- FAQ -->
<string name="faq_1_title">Gelen aramaları duyuyorum ama ekran açılmıyor. Ne yapabilirim\?</string>
<string name="faq_1_text">Bu tür sorunların aygıta ve sisteme özgü birçok nedeni olabilir, genel olarak söylemek zor. Aygıt ayarlarınıza bakmalı ve uygulamanın arka plandayken açılmasına ve diğer uygulamaların üzerinde görüntülenmesine izin verildiğinden emin olmalısınız.</string>

View File

@@ -3,7 +3,7 @@
<string name="app_name">Простий Телефон</string>
<string name="app_launcher_name">Телефон</string>
<string name="default_phone_app_prompt">Будь ласка, зробіть цю програму типовою для телефонних викликів</string>
<string name="allow_displaying_over_other_apps">Дозвольте відображення над іншими додатками для надійної роботи</string>
<string name="allow_displaying_over_other_apps">Дозвольте відображення над іншими застосунками для надійної роботи</string>
<!-- Contacts -->
<string name="could_not_access_contacts">Не вдалося отримати доступ до контактів</string>
<!-- Recents -->
@@ -20,8 +20,8 @@
<string name="asterisk">Asterisk</string>
<string name="hashtag">Хештег</string>
<string name="call_number">Номер виклику</string>
<string name="dialpad_beeps">Enable beeps on dialpad button clicks</string>
<string name="dialpad_vibrations">Enable vibrations on dialpad button clicks</string>
<string name="dialpad_beeps">Увімкнути звукові сигнали при наборі номеру</string>
<string name="dialpad_vibrations">Увімкнути вібрації при наборі номеру</string>
<!-- Dialer -->
<string name="dialer">Телефон</string>
<string name="accept">Прийняти</string>
@@ -54,27 +54,29 @@
<string name="call_add">Додати дзвінок</string>
<string name="conference_manage">Керувати конференц-викликом</string>
<string name="conference">Конференц-виклик</string>
<string name="audio_route_speaker">Speaker</string>
<string name="audio_route_earpiece">Earpiece</string>
<string name="audio_route_speaker">Динамік</string>
<string name="audio_route_earpiece">Навушники</string>
<string name="audio_route_bluetooth">Bluetooth</string>
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="audio_route_wired_headset">Провідна гарнітура</string>
<string name="audio_route_wired_or_earpiece">Провідний або навушник</string>
<string name="choose_audio_route">Оберіть аудіовихід</string>
<string name="calling_blocked_number">Номер, на який ви телефонуєте, заблоковано</string>
<!-- Speed dial -->
<string name="speed_dial">Швидкий виклик</string>
<string name="manage_speed_dial">Управління швидким викликом</string>
<string name="speed_dial_label">Натисніть на номер, щоб призначити йому контакт. Потім ви зможете швидко зателефонувати вказаному контакту, довго натискаючи вказаний номер на цифровій панелі.</string>
<!-- Settings -->
<string name="group_subsequent_calls">Групувати наступні дзвінки з тим самим номером у журналі викликів</string>
<string name="open_dialpad_by_default">За замовчуванням відкривати цифрову панель при запуску додатку</string>
<string name="open_dialpad_by_default">За замовчуванням відкривати цифрову панель при запуску застосунку</string>
<string name="disable_proximity_sensor">Вимикати датник наближення під час викликів</string>
<string name="disable_swipe_to_answer">Замінити перетягування на натискання під час відповіді на вхідні виклики</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="show_incoming_calls_full_screen">Завжди відображати вхідні дзвінки на весь екран</string>
<string name="hide_dialpad_numbers">Приховати номери цифрової клавіатури</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>
<string name="faq_1_title">Я чую вхідні дзвінки, але екран не вмикається. Що я можу зробити\?</string>
<string name="faq_1_text">Такі проблеми можуть мати багато специфічних для пристрою та системи причин, важко сказати в цілому. Вам слід подивитися в налаштуваннях свого пристрою та переконатися, що застосунку дозволено відображати у фоновому режимі та дозволяти відображення над іншими застосунками.</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">有线耳机</string>
<string name="audio_route_wired_or_earpiece">有线或听筒</string>
<string name="choose_audio_route">选择音频线路</string>
<string name="calling_blocked_number">你呼叫的号码被屏蔽了</string>
<!-- Speed dial -->
<string name="speed_dial">快速拨号</string>
<string name="manage_speed_dial">管理快速拨号</string>
@@ -70,6 +71,7 @@
<string name="disable_proximity_sensor">在通话期间禁用接近传感器</string>
<string name="disable_swipe_to_answer">用点击代替滑动来接听来电</string>
<string name="show_incoming_calls_full_screen">始终全屏显示来电</string>
<string name="hide_dialpad_numbers">隐藏拨号盘号码</string>
<!-- FAQ -->
<string name="faq_1_title">我听到来电声音,但屏幕不亮。我该怎么办\?</string>
<string name="faq_1_text">这样的问题可能有很多设备和系统的具体原因,很难笼统地说。你应该查看你的设备设置,确保应用在后台时被允许弹出,并允许其显示在其他应用上方。</string>

View File

@@ -60,6 +60,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
@@ -70,6 +71,8 @@
<string name="disable_proximity_sensor">Disable proximity sensor during calls</string>
<string name="disable_swipe_to_answer">Replace swiping at responding to incoming calls with clicking</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>
<string name="faq_1_text">Such issues can have many device and system specific reasons, hard to say in general. You should look around in your device settings and make sure that the app is allowed to pop up when in background and allow displaying over other apps.</string>

View File

@@ -7,7 +7,10 @@
<dimen name="call_notification_button_size">40dp</dimen>
<dimen name="incoming_call_avatar_size">120dp</dimen>
<dimen name="dialpad_text_size">30sp</dimen>
<dimen name="caller_name_text_size">34sp</dimen>
<dimen name="call_status_text_size">20sp</dimen>
<!-- keep these 2 values in dp to avoid scaling -->
<dimen name="dialpad_text_size">28dp</dimen>
<dimen name="dialpad_letters_text_size">12dp</dimen>
</resources>

View File

@@ -64,6 +64,7 @@
<string name="audio_route_wired_headset">Wired Headset</string>
<string name="audio_route_wired_or_earpiece">Wired or Earpiece</string>
<string name="choose_audio_route">Choose audio route</string>
<string name="calling_blocked_number">The number you are calling is blocked</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
@@ -76,6 +77,7 @@
<string name="disable_proximity_sensor">Disable proximity sensor during calls</string>
<string name="disable_swipe_to_answer">Replace swiping at responding to incoming calls with clicking</string>
<string name="show_incoming_calls_full_screen">Always display incoming calls on full screen</string>
<string name="hide_dialpad_numbers">Hide dialpad numbers</string>
<!-- FAQ -->
<string name="faq_1_title">I hear incoming calls, but the screen doesn\'t turn on. What can I do?</string>

View File

@@ -2,14 +2,23 @@
<style name="AppTheme" parent="AppTheme.Base" />
<style name="DialpadButtonStyle">
<item name="android:background">@drawable/pill_background</item>
<item name="android:layout_marginStart">@dimen/small_margin</item>
<item name="android:layout_marginEnd">@dimen/small_margin</item>
<item name="android:paddingTop">@dimen/one_dp</item>
</style>
<style name="DialpadNumberStyle">
<item name="android:includeFontPadding">false</item>
<item name="android:textSize">@dimen/dialpad_text_size</item>
<item name="android:layout_centerHorizontal">true</item>
</style>
<style name="DialpadLetterStyle">
<item name="android:textSize">@dimen/smaller_text_size</item>
<item name="android:textSize">@dimen/dialpad_letters_text_size</item>
<item name="android:alpha">0.8</item>
<item name="android:layout_centerHorizontal">true</item>
</style>
</resources>

View File

@@ -24,4 +24,4 @@ https://www.facebook.com/simplemobiletools
https://www.reddit.com/r/SimpleMobileTools
برقية:
https://t.me/SimpleMobileTools
https://t.me/SimpleMobileTools

View File

@@ -1 +1 @@
مدير مكالمات هاتفية مفيد مع دليل الهاتف وحظر الأرقام ودعم شرائح SIM المتعددة
مدير مكالمات هاتفية مفيد مع دليل الهاتف وحظر الأرقام ودعم شرائح SIM المتعددة

View File

@@ -1 +1 @@
Simple Dialer
Simple Dialer

View File

@@ -1 +0,0 @@

View File

@@ -1 +0,0 @@

View File

@@ -1 +0,0 @@

View File

@@ -0,0 +1,4 @@
* Do not allow calling blocked numbers
* Allow hiding numbers on the dialpad
* Use Material You theme by default on Android 12+
* Added some UI, translation and stability improvements

View File

@@ -0,0 +1 @@
* Added the new search bar at the top menu

View File

@@ -0,0 +1 @@
* Fixed a glitch with dialpad button not being visible on some devices

View File

@@ -0,0 +1 @@
* Fixed a search glitch on some devices

View File

@@ -0,0 +1,4 @@
* Allow filtering contacts
* Fix displaying contacts, if name starts with surname
* Fixed some right-to-left layout glitches
* Added some stability, translation and UX improvements

View File

@@ -0,0 +1,4 @@
* Allow filtering contacts
* Fix displaying contacts, if name starts with surname
* Fixed some right-to-left layout glitches
* Added some stability, translation and UX improvements

Some files were not shown because too many files have changed in this diff Show More