mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-01-31 13:48:20 +01:00
[UI/Event] Add Sync text to manual event dialog.
This commit is contained in:
parent
678a81a44b
commit
de68476442
@ -17,6 +17,7 @@ import android.util.LongSparseArray
|
|||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.widget.CompoundButton
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.annotation.*
|
import androidx.annotation.*
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
@ -441,6 +442,13 @@ inline fun <T : View> T.onClick(crossinline onClickListener: (v: T) -> Unit) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
inline fun <T : CompoundButton> T.onChange(crossinline onChangeListener: (v: T, isChecked: Boolean) -> Unit) {
|
||||||
|
setOnCheckedChangeListener { buttonView, isChecked ->
|
||||||
|
onChangeListener(buttonView as T, isChecked)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun <T> LiveData<T>.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer<T>) {
|
fun <T> LiveData<T>.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer<T>) {
|
||||||
observe(lifecycleOwner, object : Observer<T> {
|
observe(lifecycleOwner, object : Observer<T> {
|
||||||
override fun onChanged(t: T?) {
|
override fun onChanged(t: T?) {
|
||||||
|
@ -6,6 +6,7 @@ package pl.szczodrzynski.edziennik.ui.dialogs.event
|
|||||||
|
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
import android.graphics.PorterDuffColorFilter
|
import android.graphics.PorterDuffColorFilter
|
||||||
|
import android.view.View
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
@ -86,6 +87,7 @@ class EventManualV2Dialog(
|
|||||||
defaultType?.let {
|
defaultType?.let {
|
||||||
event.type = it
|
event.type = it
|
||||||
}*/
|
}*/
|
||||||
|
b.shareSwitch.isChecked = event.sharedBy != null
|
||||||
}
|
}
|
||||||
|
|
||||||
b.showMore.onClick { // TODO iconics is broken
|
b.showMore.onClick { // TODO iconics is broken
|
||||||
@ -99,9 +101,32 @@ class EventManualV2Dialog(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateShareText()
|
||||||
|
b.shareSwitch.onChange { _, isChecked ->
|
||||||
|
updateShareText(isChecked)
|
||||||
|
}
|
||||||
|
|
||||||
loadLists()
|
loadLists()
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
private fun updateShareText(checked: Boolean = b.shareSwitch.isChecked) {
|
||||||
|
val editingShared = editingEvent?.sharedBy != null
|
||||||
|
val editingOwn = editingEvent?.sharedBy == "self"
|
||||||
|
|
||||||
|
b.shareDetails.visibility = if (checked || editingShared)
|
||||||
|
View.VISIBLE
|
||||||
|
else View.GONE
|
||||||
|
|
||||||
|
val text = when {
|
||||||
|
checked && editingShared && editingOwn -> R.string.dialog_event_manual_share_will_change
|
||||||
|
checked && editingShared -> R.string.dialog_event_manual_share_will_request
|
||||||
|
!checked && editingShared -> R.string.dialog_event_manual_share_will_remove
|
||||||
|
else -> R.string.dialog_event_manual_share_first_notice
|
||||||
|
}
|
||||||
|
|
||||||
|
b.shareDetails.setText(text)
|
||||||
|
}
|
||||||
|
|
||||||
private fun loadLists() { launch {
|
private fun loadLists() { launch {
|
||||||
val deferred = async(Dispatchers.Default) {
|
val deferred = async(Dispatchers.Default) {
|
||||||
// get the team list
|
// get the team list
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kuba Szczodrzyński 2019-11-22.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.utils
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.Rect
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import android.view.KeyEvent
|
||||||
|
import android.view.KeyEvent.KEYCODE_BACK
|
||||||
|
import androidx.annotation.NonNull
|
||||||
|
import com.google.android.material.textfield.TextInputEditText
|
||||||
|
|
||||||
|
class TextInputKeyboardEdit : TextInputEditText {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Keyboard Listener
|
||||||
|
*/
|
||||||
|
internal var listener: KeyboardListener? = null
|
||||||
|
|
||||||
|
constructor(context: Context) : super(context)
|
||||||
|
|
||||||
|
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
|
||||||
|
|
||||||
|
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
|
||||||
|
|
||||||
|
override fun onFocusChanged(focused: Boolean, direction: Int, previouslyFocusedRect: Rect?) {
|
||||||
|
super.onFocusChanged(focused, direction, previouslyFocusedRect)
|
||||||
|
if (listener != null)
|
||||||
|
listener!!.onStateChanged(this, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onKeyPreIme(keyCode: Int, @NonNull event: KeyEvent): Boolean {
|
||||||
|
if (event.keyCode == KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
|
||||||
|
if (listener != null)
|
||||||
|
listener!!.onStateChanged(this, false)
|
||||||
|
|
||||||
|
// Hide cursor
|
||||||
|
isFocusable = false
|
||||||
|
|
||||||
|
// Set EditText to be focusable again
|
||||||
|
isFocusable = true
|
||||||
|
isFocusableInTouchMode = true
|
||||||
|
}
|
||||||
|
return super.onKeyPreIme(keyCode, event)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setOnKeyboardListener(listener: KeyboardListener) {
|
||||||
|
this.listener = listener
|
||||||
|
}
|
||||||
|
|
||||||
|
interface KeyboardListener {
|
||||||
|
fun onStateChanged(keyboardEditText: TextInputKeyboardEdit, showing: Boolean)
|
||||||
|
}
|
||||||
|
}
|
@ -117,7 +117,7 @@
|
|||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:hint="@string/dialog_event_manual_topic">
|
android:hint="@string/dialog_event_manual_topic">
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
<pl.szczodrzynski.edziennik.utils.TextInputKeyboardEdit
|
||||||
android:id="@+id/topic"
|
android:id="@+id/topic"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user