mirror of
https://github.com/element-hq/element-android
synced 2024-11-28 13:38:49 +03:00
Powerlevel: use edit text for custom
This commit is contained in:
parent
e5da5a34cb
commit
07c7ed0a4e
2 changed files with 16 additions and 45 deletions
|
@ -19,7 +19,6 @@ package im.vector.riotx.features.roommemberprofile.powerlevel
|
|||
import android.app.Activity
|
||||
import android.content.DialogInterface
|
||||
import android.view.KeyEvent
|
||||
import android.widget.SeekBar
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.view.isVisible
|
||||
import im.vector.matrix.android.api.session.room.powerlevels.Role
|
||||
|
@ -29,30 +28,13 @@ import kotlinx.android.synthetic.main.dialog_edit_power_level.view.*
|
|||
|
||||
object EditPowerLevelDialogs {
|
||||
|
||||
private const val SLIDER_STEP = 1
|
||||
private const val SLIDER_MAX_VALUE = 100
|
||||
private const val SLIDER_MIN_VALUE = -100
|
||||
|
||||
fun showChoice(activity: Activity, currentRole: Role, listener: (Int) -> Unit) {
|
||||
val dialogLayout = activity.layoutInflater.inflate(R.layout.dialog_edit_power_level, null)
|
||||
dialogLayout.powerLevelRadioGroup.setOnCheckedChangeListener { _, checkedId ->
|
||||
dialogLayout.powerLevelCustomLayout.isVisible = checkedId == R.id.powerLevelCustomRadio
|
||||
dialogLayout.powerLevelCustomEditLayout.isVisible = checkedId == R.id.powerLevelCustomRadio
|
||||
}
|
||||
dialogLayout.powerLevelCustomSlider.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
dialogLayout.powerLevelCustomTitle.text = activity.getString(R.string.power_level_custom, seekBar.normalizedProgress())
|
||||
}
|
||||
dialogLayout.powerLevelCustomEdit.setText(currentRole.value.toString())
|
||||
|
||||
override fun onStartTrackingTouch(seekBar: SeekBar?) {
|
||||
//NOOP
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar?) {
|
||||
//NOOP
|
||||
}
|
||||
})
|
||||
dialogLayout.powerLevelCustomSlider.max = (SLIDER_MAX_VALUE - SLIDER_MIN_VALUE) / SLIDER_STEP
|
||||
dialogLayout.powerLevelCustomSlider.progress = SLIDER_MAX_VALUE + (currentRole.value * SLIDER_STEP)
|
||||
when (currentRole) {
|
||||
Role.Admin -> dialogLayout.powerLevelAdminRadio.isChecked = true
|
||||
Role.Moderator -> dialogLayout.powerLevelModeratorRadio.isChecked = true
|
||||
|
@ -69,7 +51,9 @@ object EditPowerLevelDialogs {
|
|||
R.id.powerLevelAdminRadio -> Role.Admin.value
|
||||
R.id.powerLevelModeratorRadio -> Role.Moderator.value
|
||||
R.id.powerLevelDefaultRadio -> Role.Default.value
|
||||
else -> dialogLayout.powerLevelCustomSlider.normalizedProgress()
|
||||
else -> {
|
||||
dialogLayout.powerLevelCustomEdit.text?.toString()?.toInt() ?: currentRole.value
|
||||
}
|
||||
}
|
||||
listener(newValue)
|
||||
}
|
||||
|
@ -89,8 +73,6 @@ object EditPowerLevelDialogs {
|
|||
.show()
|
||||
}
|
||||
|
||||
private fun SeekBar.normalizedProgress() = SLIDER_MIN_VALUE + (progress * SLIDER_STEP)
|
||||
|
||||
fun showValidation(activity: Activity, onValidate: () -> Unit) {
|
||||
// ask to the user to confirmation thu upgrade.
|
||||
AlertDialog.Builder(activity)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:orientation="vertical"
|
||||
android:paddingStart="?dialogPreferredPadding"
|
||||
android:paddingLeft="?dialogPreferredPadding"
|
||||
|
@ -47,30 +47,19 @@
|
|||
|
||||
</RadioGroup>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/powerLevelCustomLayout"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/powerLevelCustomEditLayout"
|
||||
style="@style/VectorTextInputLayout"
|
||||
android:hint="@string/power_level_custom_no_value"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/powerLevelCustomTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
tools:text="Custom (20)"
|
||||
android:layout_marginStart="16dp"
|
||||
android:textColor="?riotx_text_primary"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<SeekBar
|
||||
android:id="@+id/powerLevelCustomSlider"
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/powerLevelCustomEdit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_below="@id/powerLevelCustomTitle"
|
||||
android:max="100"
|
||||
android:progress="1" />
|
||||
</RelativeLayout>
|
||||
android:inputType="number|numberSigned" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
Loading…
Reference in a new issue