mirror of
https://github.com/SimpleMobileTools/Simple-Dialer.git
synced 2025-06-05 21:49:23 +02:00
@ -11,6 +11,7 @@ import android.os.Handler
|
||||
import android.os.PowerManager
|
||||
import android.telecom.Call
|
||||
import android.telecom.CallAudioState
|
||||
import android.view.MotionEvent
|
||||
import android.view.WindowManager
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.MINUTE_SECONDS
|
||||
@ -45,6 +46,7 @@ class CallActivity : SimpleActivity() {
|
||||
private var callDuration = 0
|
||||
private val callContactAvatarHelper by lazy { CallContactAvatarHelper(this) }
|
||||
private val callDurationHelper by lazy { (application as App).callDurationHelper }
|
||||
private var dragDownX = 0f
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
supportActionBar?.hide()
|
||||
@ -94,12 +96,19 @@ class CallActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
private fun initButtons() {
|
||||
call_decline.setOnClickListener {
|
||||
endCall()
|
||||
}
|
||||
if (config.enableSwipeToAnswer) {
|
||||
handleSwipe()
|
||||
} else {
|
||||
call_draggable.beGone()
|
||||
call_draggable_background.beGone()
|
||||
|
||||
call_accept.setOnClickListener {
|
||||
acceptCall()
|
||||
call_decline.setOnClickListener {
|
||||
endCall()
|
||||
}
|
||||
|
||||
call_accept.setOnClickListener {
|
||||
acceptCall()
|
||||
}
|
||||
}
|
||||
|
||||
call_toggle_microphone.setOnClickListener {
|
||||
@ -145,6 +154,55 @@ class CallActivity : SimpleActivity() {
|
||||
call_sim_id.setTextColor(config.textColor.getContrastColor())
|
||||
}
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
private fun handleSwipe() {
|
||||
var minDragX = 0f
|
||||
var maxDragX = 0f
|
||||
var initialDraggableX = 0f
|
||||
|
||||
call_accept.onGlobalLayout {
|
||||
minDragX = call_decline.left.toFloat()
|
||||
maxDragX = call_accept.left.toFloat()
|
||||
initialDraggableX = call_draggable.left.toFloat()
|
||||
}
|
||||
|
||||
call_draggable.setOnTouchListener { v, event ->
|
||||
when (event.action) {
|
||||
MotionEvent.ACTION_DOWN -> {
|
||||
dragDownX = event.x
|
||||
call_draggable_background.animate().alpha(0f)
|
||||
}
|
||||
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
|
||||
dragDownX = 0f
|
||||
call_draggable.animate().x(initialDraggableX).withEndAction {
|
||||
call_draggable_background.animate().alpha(0.2f)
|
||||
}
|
||||
call_draggable.setImageDrawable(getDrawable(R.drawable.ic_phone_down_vector))
|
||||
}
|
||||
MotionEvent.ACTION_MOVE -> {
|
||||
call_draggable.x = Math.min(maxDragX, Math.max(minDragX, event.rawX - dragDownX))
|
||||
when {
|
||||
call_draggable.x >= maxDragX - 50f -> {
|
||||
call_draggable.performHapticFeedback()
|
||||
acceptCall()
|
||||
}
|
||||
call_draggable.x <= minDragX + 50f -> {
|
||||
call_draggable.performHapticFeedback()
|
||||
endCall()
|
||||
}
|
||||
call_draggable.x > initialDraggableX -> {
|
||||
call_draggable.setImageDrawable(getDrawable(R.drawable.ic_phone_green_vector))
|
||||
}
|
||||
call_draggable.x <= initialDraggableX -> {
|
||||
call_draggable.setImageDrawable(getDrawable(R.drawable.ic_phone_down_red_vector))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
private fun dialpadPressed(char: Char) {
|
||||
CallManager.keypad(char)
|
||||
dialpad_input.addCharacter(char)
|
||||
|
@ -40,6 +40,7 @@ class SettingsActivity : SimpleActivity() {
|
||||
setupStartNameWithSurname()
|
||||
setupShowCallConfirmation()
|
||||
setupDisableProximitySensor()
|
||||
setupEnableSwipeToAnswer()
|
||||
updateTextColors(settings_holder)
|
||||
invalidateOptionsMenu()
|
||||
|
||||
@ -220,4 +221,12 @@ class SettingsActivity : SimpleActivity() {
|
||||
config.disableProximitySensor = settings_disable_proximity_sensor.isChecked
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupEnableSwipeToAnswer() {
|
||||
settings_enable_swipe_to_answer.isChecked = config.enableSwipeToAnswer
|
||||
settings_enable_swipe_to_answer_holder.setOnClickListener {
|
||||
settings_enable_swipe_to_answer.toggle()
|
||||
config.enableSwipeToAnswer = settings_enable_swipe_to_answer.isChecked
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -52,6 +52,10 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
get() = prefs.getBoolean(DISABLE_PROXIMITY_SENSOR, false)
|
||||
set(disableProximitySensor) = prefs.edit().putBoolean(DISABLE_PROXIMITY_SENSOR, disableProximitySensor).apply()
|
||||
|
||||
var enableSwipeToAnswer: Boolean
|
||||
get() = prefs.getBoolean(ENABLE_SWIPE_TO_ANSWER, false)
|
||||
set(enableSwipeToAnswer) = prefs.edit().putBoolean(ENABLE_SWIPE_TO_ANSWER, enableSwipeToAnswer).apply()
|
||||
|
||||
var showTabs: Int
|
||||
get() = prefs.getInt(SHOW_TABS, ALL_TABS_MASK)
|
||||
set(showTabs) = prefs.edit().putInt(SHOW_TABS, showTabs).apply()
|
||||
|
@ -10,6 +10,7 @@ const val REMEMBER_SIM_PREFIX = "remember_sim_"
|
||||
const val GROUP_SUBSEQUENT_CALLS = "group_subsequent_calls"
|
||||
const val OPEN_DIAL_PAD_AT_LAUNCH = "open_dial_pad_at_launch"
|
||||
const val DISABLE_PROXIMITY_SENSOR = "disable_proximity_sensor"
|
||||
const val ENABLE_SWIPE_TO_ANSWER = "enable_swipe_to_answer"
|
||||
const val SHOW_TABS = "show_tabs"
|
||||
|
||||
const val ALL_TABS_MASK = TAB_CONTACTS or TAB_FAVORITES or TAB_CALL_HISTORY
|
||||
|
Reference in New Issue
Block a user