mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-3375 New settings | Enhancement | Redesigned delete-space and leave-space warnings (#2163)
This commit is contained in:
parent
29c43b0cfc
commit
67d092ede8
4 changed files with 200 additions and 26 deletions
|
@ -4,13 +4,44 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.os.bundleOf
|
||||
import com.anytypeio.anytype.R
|
||||
import com.anytypeio.anytype.core_ui.common.DefaultPreviews
|
||||
import com.anytypeio.anytype.core_ui.foundation.AlertConfig
|
||||
import com.anytypeio.anytype.core_ui.foundation.AlertIcon
|
||||
import com.anytypeio.anytype.core_ui.foundation.Dragger
|
||||
import com.anytypeio.anytype.core_ui.foundation.GRADIENT_TYPE_RED
|
||||
import com.anytypeio.anytype.core_ui.foundation.Header
|
||||
import com.anytypeio.anytype.core_ui.foundation.Warning
|
||||
import com.anytypeio.anytype.core_ui.foundation.noRippleClickable
|
||||
import com.anytypeio.anytype.core_ui.views.BodyCalloutRegular
|
||||
import com.anytypeio.anytype.core_ui.views.ButtonSize
|
||||
import com.anytypeio.anytype.core_ui.views.ButtonWarning
|
||||
import com.anytypeio.anytype.core_utils.ext.arg
|
||||
import com.anytypeio.anytype.core_utils.ui.BaseBottomSheetComposeFragment
|
||||
import com.anytypeio.anytype.ui.settings.typography
|
||||
|
@ -31,17 +62,10 @@ class LeaveSpaceWarning : BaseBottomSheetComposeFragment() {
|
|||
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
||||
setContent {
|
||||
MaterialTheme(typography = typography) {
|
||||
Warning(
|
||||
actionButtonText = stringResource(R.string.multiplayer_leave_space),
|
||||
cancelButtonText = stringResource(R.string.cancel),
|
||||
title = stringResource(R.string.multiplayer_leave_space),
|
||||
subtitle = stringResource(R.string.multiplayer_leave_space_warning_subtitle),
|
||||
onNegativeClick = {
|
||||
onLeaveSpaceCancelled()
|
||||
dismiss()
|
||||
},
|
||||
onPositiveClick = { onLeaveSpaceAccepted() },
|
||||
isInProgress = false
|
||||
LeaveSpaceWarningScreen(
|
||||
onLeaveClicked = {
|
||||
onLeaveSpaceAccepted()
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -62,4 +86,51 @@ class LeaveSpaceWarning : BaseBottomSheetComposeFragment() {
|
|||
arguments = bundleOf()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun LeaveSpaceWarningScreen(
|
||||
onLeaveClicked: () -> Unit
|
||||
) {
|
||||
Column {
|
||||
Dragger(
|
||||
modifier = Modifier
|
||||
.align(Alignment.CenterHorizontally)
|
||||
.padding(vertical = 6.dp)
|
||||
)
|
||||
Header(text = stringResource(R.string.multiplayer_leave_space))
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
AlertIcon(
|
||||
icon = AlertConfig.Icon(
|
||||
gradient = GRADIENT_TYPE_RED,
|
||||
icon = R.drawable.ic_alert_question_warning
|
||||
)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(12.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.multiplayer_leave_space_warning_subtitle),
|
||||
style = BodyCalloutRegular,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 24.dp),
|
||||
color = colorResource(id = R.color.text_primary),
|
||||
textAlign = TextAlign.Center,
|
||||
)
|
||||
ButtonWarning(
|
||||
text = stringResource(R.string.multiplayer_leave_space),
|
||||
onClick = onLeaveClicked,
|
||||
size = ButtonSize.Large,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 24.dp, vertical = 24.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@DefaultPreviews
|
||||
@Composable
|
||||
fun LeaveSpaceWarningScreenPreview() {
|
||||
LeaveSpaceWarningScreen(
|
||||
onLeaveClicked = {}
|
||||
)
|
||||
}
|
|
@ -4,13 +4,44 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.os.bundleOf
|
||||
import com.anytypeio.anytype.R
|
||||
import com.anytypeio.anytype.core_ui.common.DefaultPreviews
|
||||
import com.anytypeio.anytype.core_ui.foundation.AlertConfig
|
||||
import com.anytypeio.anytype.core_ui.foundation.AlertIcon
|
||||
import com.anytypeio.anytype.core_ui.foundation.Dragger
|
||||
import com.anytypeio.anytype.core_ui.foundation.GRADIENT_TYPE_RED
|
||||
import com.anytypeio.anytype.core_ui.foundation.Header
|
||||
import com.anytypeio.anytype.core_ui.foundation.Warning
|
||||
import com.anytypeio.anytype.core_ui.foundation.noRippleClickable
|
||||
import com.anytypeio.anytype.core_ui.views.BodyCalloutRegular
|
||||
import com.anytypeio.anytype.core_ui.views.ButtonSize
|
||||
import com.anytypeio.anytype.core_ui.views.ButtonWarning
|
||||
import com.anytypeio.anytype.core_utils.ext.arg
|
||||
import com.anytypeio.anytype.core_utils.ui.BaseBottomSheetComposeFragment
|
||||
import com.anytypeio.anytype.ui.settings.typography
|
||||
|
@ -31,17 +62,10 @@ class DeleteSpaceWarning : BaseBottomSheetComposeFragment() {
|
|||
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
||||
setContent {
|
||||
MaterialTheme(typography = typography) {
|
||||
Warning(
|
||||
actionButtonText = stringResource(R.string.delete),
|
||||
cancelButtonText = stringResource(R.string.back),
|
||||
title = stringResource(R.string.delete_space_title),
|
||||
subtitle = stringResource(R.string.delete_space_subtitle),
|
||||
onNegativeClick = {
|
||||
onDeletionCancelled()
|
||||
dismiss()
|
||||
},
|
||||
onPositiveClick = { onDeletionAccepted() },
|
||||
isInProgress = false
|
||||
DeleteSpaceWarningScreen(
|
||||
onDeleteClick = {
|
||||
onDeletionAccepted()
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -62,4 +86,80 @@ class DeleteSpaceWarning : BaseBottomSheetComposeFragment() {
|
|||
arguments = bundleOf()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun DeleteSpaceWarningScreen(
|
||||
onDeleteClick: () -> Unit
|
||||
) {
|
||||
var isCheckboxChecked by remember { mutableStateOf(false) }
|
||||
Column {
|
||||
Dragger(
|
||||
modifier = Modifier
|
||||
.align(Alignment.CenterHorizontally)
|
||||
.padding(vertical = 6.dp)
|
||||
)
|
||||
Header(text = stringResource(R.string.delete_space))
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
AlertIcon(
|
||||
icon = AlertConfig.Icon(
|
||||
gradient = GRADIENT_TYPE_RED,
|
||||
icon = R.drawable.ic_alert_question_warning
|
||||
)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(12.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.delete_space_subtitle),
|
||||
style = BodyCalloutRegular,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 24.dp),
|
||||
color = colorResource(id = R.color.text_primary),
|
||||
textAlign = TextAlign.Center
|
||||
)
|
||||
Spacer(modifier = Modifier.height(12.dp))
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.padding(horizontal = 24.dp)
|
||||
.fillMaxWidth()
|
||||
.noRippleClickable {
|
||||
isCheckboxChecked = !isCheckboxChecked
|
||||
},
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.Center
|
||||
) {
|
||||
Image(
|
||||
painter = if (isCheckboxChecked)
|
||||
painterResource(R.drawable.ic_data_view_grid_checkbox_checked)
|
||||
else
|
||||
painterResource(R.drawable.ic_data_view_grid_checkbox),
|
||||
contentDescription = "Checkbox icon"
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.delete_space_checkbox_text),
|
||||
color = colorResource(R.color.text_primary),
|
||||
style = BodyCalloutRegular,
|
||||
)
|
||||
}
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
ButtonWarning(
|
||||
text = stringResource(R.string.delete_space),
|
||||
onClick = onDeleteClick,
|
||||
size = ButtonSize.Large,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(start = 24.dp, end = 24.dp, bottom = 24.dp, top = 16.dp),
|
||||
isEnabled = isCheckboxChecked
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@DefaultPreviews
|
||||
@Composable
|
||||
fun DeleteSpaceWarningScreenPreview() {
|
||||
DeleteSpaceWarningScreen(
|
||||
onDeleteClick = {}
|
||||
)
|
||||
}
|
||||
|
|
|
@ -427,7 +427,8 @@ fun ButtonWarning(
|
|||
text: String = "",
|
||||
onClick: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
size: ButtonSize
|
||||
size: ButtonSize,
|
||||
isEnabled: Boolean = true
|
||||
) {
|
||||
val interactionSource = remember { MutableInteractionSource() }
|
||||
val isPressed = interactionSource.collectIsPressedAsState()
|
||||
|
@ -453,7 +454,8 @@ fun ButtonWarning(
|
|||
defaultElevation = 0.dp,
|
||||
pressedElevation = 0.dp
|
||||
),
|
||||
contentPadding = size.contentPadding
|
||||
contentPadding = size.contentPadding,
|
||||
enabled = isEnabled
|
||||
) {
|
||||
Text(
|
||||
text = text,
|
||||
|
|
|
@ -924,7 +924,7 @@
|
|||
<string name="created_by">Created by</string>
|
||||
<string name="space_id">Space ID</string>
|
||||
<string name="network_id">Network ID</string>
|
||||
<string name="delete_space_subtitle">This space will be deleted irrevocably. You can\'t undo this action.</string>
|
||||
<string name="delete_space_subtitle">Space deletion is permanent and cannot be undone. Please note that all the data connected to this space will be permanently removed and you will lose an access to it forever.</string>
|
||||
<string name="delete_space_title_with_param">Delete \'%1$s\' space</string>
|
||||
<string name="delete_space_title">Are you sure to delete this space?</string>
|
||||
<string name="space_id_copied_toast_msg">Space ID copied</string>
|
||||
|
@ -1981,5 +1981,6 @@ Please provide specific details of your needs here.</string>
|
|||
<string name="property_select_format_title">Select property format</string>
|
||||
<string name="property_edit_menu_delete">Delete from space</string>
|
||||
<string name="property_edit_menu_unlink">Unlink from type</string>
|
||||
<string name="delete_space_checkbox_text">I have read and want to delete this space</string>
|
||||
|
||||
</resources>
|
Loading…
Add table
Add a link
Reference in a new issue