mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-3500 Primitives | Ui fixes (#2199)
This commit is contained in:
parent
8abc29f526
commit
82ac6e47ec
35 changed files with 270 additions and 78 deletions
|
@ -22,6 +22,7 @@ import com.anytypeio.anytype.domain.page.CreateObject
|
|||
import com.anytypeio.anytype.domain.primitives.FieldParser
|
||||
import com.anytypeio.anytype.domain.search.SearchObjects
|
||||
import com.anytypeio.anytype.domain.search.SubscriptionEventChannel
|
||||
import com.anytypeio.anytype.domain.types.CreateObjectType
|
||||
import com.anytypeio.anytype.domain.workspace.RemoveObjectsFromWorkspace
|
||||
import com.anytypeio.anytype.feature_allcontent.presentation.AllContentViewModel
|
||||
import com.anytypeio.anytype.feature_allcontent.presentation.AllContentViewModelFactory
|
||||
|
@ -143,6 +144,14 @@ object AllContentModule {
|
|||
dispatchers: AppCoroutineDispatchers
|
||||
): RemoveObjectsFromWorkspace = RemoveObjectsFromWorkspace(repo, dispatchers)
|
||||
|
||||
@Provides
|
||||
@PerScreen
|
||||
@JvmStatic
|
||||
fun createObjectType(
|
||||
repo: BlockRepository,
|
||||
dispatchers: AppCoroutineDispatchers
|
||||
): CreateObjectType = CreateObjectType(repo, dispatchers)
|
||||
|
||||
@Module
|
||||
interface Declarations {
|
||||
@PerScreen
|
||||
|
|
|
@ -10,18 +10,23 @@ import androidx.core.os.bundleOf
|
|||
import androidx.fragment.app.viewModels
|
||||
import androidx.fragment.compose.content
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.anytypeio.anytype.R
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.core_models.primitives.SpaceId
|
||||
import com.anytypeio.anytype.core_utils.ext.argString
|
||||
import com.anytypeio.anytype.core_utils.ext.setupBottomSheetBehavior
|
||||
import com.anytypeio.anytype.core_utils.ext.subscribe
|
||||
import com.anytypeio.anytype.core_utils.ui.BaseBottomSheetComposeFragment
|
||||
import com.anytypeio.anytype.di.common.componentManager
|
||||
import com.anytypeio.anytype.feature_object_type.fields.ui.FieldsMainScreen
|
||||
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeCommand
|
||||
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeVmParams
|
||||
import com.anytypeio.anytype.feature_object_type.viewmodel.ObjectTypeVMFactory
|
||||
import com.anytypeio.anytype.feature_object_type.viewmodel.ObjectTypeViewModel
|
||||
import javax.inject.Inject
|
||||
import kotlin.getValue
|
||||
import timber.log.Timber
|
||||
|
||||
class ObjectTypeFieldsFragment : BaseBottomSheetComposeFragment() {
|
||||
|
||||
|
@ -54,6 +59,27 @@ class ObjectTypeFieldsFragment : BaseBottomSheetComposeFragment() {
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
setupBottomSheetBehavior(DEFAULT_PADDING_TOP)
|
||||
subscribe(vm.commands) { command ->
|
||||
Timber.d("Received command: $command")
|
||||
when (command) {
|
||||
is ObjectTypeCommand.OpenEditTypePropertiesScreen -> {
|
||||
runCatching {
|
||||
findNavController().navigate(
|
||||
R.id.editTypePropertiesScreen,
|
||||
EditTypePropertiesFragment.args(
|
||||
objectId = command.typeId,
|
||||
space = command.space
|
||||
)
|
||||
)
|
||||
}.onFailure {
|
||||
Timber.e(it, "Error while opening edit object type properties screen")
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
|
|
|
@ -92,7 +92,7 @@ class ObjectTypeFragment : BaseComposeFragment() {
|
|||
}
|
||||
|
||||
ObjectTypeCommand.OpenFieldsScreen -> {
|
||||
navComposeController.navigate(OBJ_TYPE_FIELDS)
|
||||
navComposeController.navigate(OBJ_TYPE_PROPERTIES)
|
||||
}
|
||||
|
||||
is ObjectTypeCommand.OpenEditTypePropertiesScreen -> {
|
||||
|
@ -108,6 +108,10 @@ class ObjectTypeFragment : BaseComposeFragment() {
|
|||
Timber.e(it, "Error while opening edit object type properties screen")
|
||||
}
|
||||
}
|
||||
|
||||
ObjectTypeCommand.CloseFieldsScreen -> {
|
||||
navComposeController.popBackStack()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -149,7 +153,7 @@ class ObjectTypeFragment : BaseComposeFragment() {
|
|||
onTypeEvent = vm::onTypeEvent
|
||||
)
|
||||
}
|
||||
composable(route = OBJ_TYPE_FIELDS) {
|
||||
composable(route = OBJ_TYPE_PROPERTIES) {
|
||||
FieldsMainScreen(
|
||||
uiFieldsListState = vm.uiFieldsListState.collectAsStateWithLifecycle().value,
|
||||
uiTitleState = vm.uiTitleState.collectAsStateWithLifecycle().value,
|
||||
|
@ -232,7 +236,7 @@ class ObjectTypeFragment : BaseComposeFragment() {
|
|||
|
||||
companion object {
|
||||
private const val OBJ_TYPE_MAIN = "obj_type_main"
|
||||
private const val OBJ_TYPE_FIELDS = "obj_fields"
|
||||
private const val OBJ_TYPE_PROPERTIES = "obj_properties"
|
||||
const val ARG_SPACE = "arg.object.type.space"
|
||||
const val ARG_OBJECT_ID = "arg.object.type.object_id"
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.fragment.compose.AndroidFragment
|
||||
import com.anytypeio.anytype.core_utils.ext.gone
|
||||
import com.anytypeio.anytype.core_utils.insets.EDGE_TO_EDGE_MIN_SDK
|
||||
import com.anytypeio.anytype.feature_object_type.R
|
||||
import com.anytypeio.anytype.feature_object_type.ui.BottomSyncStatus
|
||||
|
@ -187,6 +188,7 @@ private fun MainContentSet(
|
|||
space = space
|
||||
)
|
||||
) { fragment ->
|
||||
fragment.view?.findViewById<View>(R.id.topToolbar)?.gone()
|
||||
fragment.view?.findViewById<View>(R.id.objectHeader)?.visibility =
|
||||
View.GONE
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:motion="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="urn:oasis:names:tc:xliff:document:1.2">
|
||||
|
||||
<Transition
|
||||
motion:constraintSetEnd="@+id/end"
|
||||
|
@ -13,6 +14,17 @@
|
|||
</Transition>
|
||||
|
||||
<ConstraintSet android:id="@+id/start">
|
||||
<Constraint
|
||||
android:id="@+id/topToolbar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
motion:layout_constraintEnd_toEndOf="parent"
|
||||
motion:layout_constraintStart_toStartOf="parent"
|
||||
motion:layout_constraintTop_toTopOf="parent"
|
||||
app:visibilityMode="ignore"
|
||||
motion:visibilityMode="ignore">
|
||||
<PropertySet android:visibility="gone" />
|
||||
</Constraint>
|
||||
<Constraint
|
||||
android:id="@+id/objectHeader"
|
||||
android:layout_width="0dp"
|
||||
|
@ -106,6 +118,17 @@
|
|||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/end">
|
||||
<Constraint
|
||||
android:id="@+id/topToolbar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
motion:layout_constraintEnd_toEndOf="parent"
|
||||
motion:layout_constraintStart_toStartOf="parent"
|
||||
motion:layout_constraintTop_toTopOf="parent"
|
||||
app:visibilityMode="ignore"
|
||||
motion:visibilityMode="ignore">
|
||||
<PropertySet android:visibility="gone" />
|
||||
</Constraint>
|
||||
<Constraint
|
||||
android:id="@+id/objectHeader"
|
||||
android:layout_width="0dp"
|
||||
|
|
|
@ -4,9 +4,12 @@ import androidx.lifecycle.ViewModel
|
|||
import androidx.lifecycle.viewModelScope
|
||||
import com.anytypeio.anytype.analytics.base.Analytics
|
||||
import com.anytypeio.anytype.analytics.base.EventsDictionary
|
||||
import com.anytypeio.anytype.analytics.base.EventsDictionary.libraryCreateType
|
||||
import com.anytypeio.anytype.analytics.base.EventsDictionary.libraryScreenRelation
|
||||
import com.anytypeio.anytype.analytics.base.EventsDictionary.libraryScreenType
|
||||
import com.anytypeio.anytype.analytics.base.EventsPropertiesKey
|
||||
import com.anytypeio.anytype.analytics.base.sendEvent
|
||||
import com.anytypeio.anytype.analytics.props.Props
|
||||
import com.anytypeio.anytype.core_models.DVSortType
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.core_models.ObjectWrapper
|
||||
|
@ -27,6 +30,7 @@ import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
|
|||
import com.anytypeio.anytype.domain.page.CreateObject
|
||||
import com.anytypeio.anytype.domain.primitives.FieldParser
|
||||
import com.anytypeio.anytype.domain.search.SearchObjects
|
||||
import com.anytypeio.anytype.domain.types.CreateObjectType
|
||||
import com.anytypeio.anytype.domain.workspace.RemoveObjectsFromWorkspace
|
||||
import com.anytypeio.anytype.feature_allcontent.models.AllContentBottomMenu
|
||||
import com.anytypeio.anytype.feature_allcontent.models.AllContentMenuMode
|
||||
|
@ -112,7 +116,8 @@ class AllContentViewModel(
|
|||
private val setObjectDetails: SetObjectDetails,
|
||||
private val removeObjectsFromWorkspace: RemoveObjectsFromWorkspace,
|
||||
private val userPermissionProvider: UserPermissionProvider,
|
||||
private val fieldParser: FieldParser
|
||||
private val fieldParser: FieldParser,
|
||||
private val createObjectType: CreateObjectType
|
||||
) : ViewModel(), AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
|
||||
|
||||
private val searchResultIds = MutableStateFlow<List<Id>>(emptyList())
|
||||
|
@ -833,7 +838,39 @@ class AllContentViewModel(
|
|||
when (item) {
|
||||
UiContentItem.NewType -> {
|
||||
viewModelScope.launch {
|
||||
commands.emit(Command.OpenTypeCreation)
|
||||
createObjectType.execute(
|
||||
CreateObjectType.Params(
|
||||
space = vmParams.spaceId.id,
|
||||
name = ""
|
||||
)
|
||||
).fold(
|
||||
onSuccess = { newType ->
|
||||
val spaceParams = provideParams(vmParams.spaceId.id)
|
||||
viewModelScope.sendEvent(
|
||||
analytics = analytics,
|
||||
eventName = libraryCreateType,
|
||||
props = Props(
|
||||
mapOf(
|
||||
EventsPropertiesKey.permissions to spaceParams.permission,
|
||||
EventsPropertiesKey.spaceType to spaceParams.spaceType
|
||||
)
|
||||
)
|
||||
)
|
||||
if (newType == null) {
|
||||
Timber.e("Error while creating type")
|
||||
return@fold
|
||||
}
|
||||
commands.emit(
|
||||
NavigateToObjectType(
|
||||
id = newType.id,
|
||||
space = vmParams.spaceId.id
|
||||
)
|
||||
)
|
||||
},
|
||||
onFailure = {
|
||||
Timber.e(it, "Error while creating type")
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
is UiContentItem.Type -> {
|
||||
|
|
|
@ -15,6 +15,7 @@ import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
|
|||
import com.anytypeio.anytype.domain.page.CreateObject
|
||||
import com.anytypeio.anytype.domain.primitives.FieldParser
|
||||
import com.anytypeio.anytype.domain.search.SearchObjects
|
||||
import com.anytypeio.anytype.domain.types.CreateObjectType
|
||||
import com.anytypeio.anytype.domain.workspace.RemoveObjectsFromWorkspace
|
||||
import com.anytypeio.anytype.feature_allcontent.presentation.AllContentViewModel.VmParams
|
||||
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
|
||||
|
@ -36,7 +37,8 @@ class AllContentViewModelFactory @Inject constructor(
|
|||
private val setObjectDetails: SetObjectDetails,
|
||||
private val removeObjectsFromWorkspace: RemoveObjectsFromWorkspace,
|
||||
private val userPermissionProvider: UserPermissionProvider,
|
||||
private val fieldParser: FieldParser
|
||||
private val fieldParser: FieldParser,
|
||||
private val createObjectType: CreateObjectType
|
||||
) : ViewModelProvider.Factory {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <T : ViewModel> create(modelClass: Class<T>): T =
|
||||
|
@ -56,6 +58,7 @@ class AllContentViewModelFactory @Inject constructor(
|
|||
setObjectDetails = setObjectDetails,
|
||||
removeObjectsFromWorkspace = removeObjectsFromWorkspace,
|
||||
userPermissionProvider = userPermissionProvider,
|
||||
fieldParser = fieldParser
|
||||
fieldParser = fieldParser,
|
||||
createObjectType = createObjectType
|
||||
) as T
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package com.anytypeio.anytype.feature_allcontent.ui
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior
|
||||
import androidx.compose.foundation.layout.Box
|
||||
|
@ -87,7 +88,11 @@ fun AllContentTopBarContainer(
|
|||
onDismissRequest = { isMenuExpanded = false },
|
||||
shape = RoundedCornerShape(size = 16.dp),
|
||||
containerColor = colorResource(id = R.color.background_primary),
|
||||
shadowElevation = 5.dp
|
||||
shadowElevation = 5.dp,
|
||||
border = BorderStroke(
|
||||
width = 0.5.dp,
|
||||
color = colorResource(id = R.color.background_secondary)
|
||||
)
|
||||
) {
|
||||
AllContentMenu(
|
||||
uiMenuState = uiMenuState,
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
package com.anytypeio.anytype.feature_object_type.fields
|
||||
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
import com.anytypeio.anytype.feature_properties.add.UiEditTypePropertiesEvent
|
||||
|
||||
sealed class FieldEvent {
|
||||
|
||||
data object OnEditPropertyScreenDismiss : FieldEvent()
|
||||
|
||||
data object OnBackClick : FieldEvent()
|
||||
|
||||
data class OnFieldItemClick(val item: UiFieldsListItem) : FieldEvent()
|
||||
|
||||
sealed class FieldItemMenu : FieldEvent() {
|
||||
|
|
|
@ -36,7 +36,9 @@ import androidx.compose.runtime.setValue
|
|||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Alignment.Companion.CenterVertically
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
|
||||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.res.painterResource
|
||||
|
@ -69,6 +71,7 @@ import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListItem
|
|||
import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListItem.Section
|
||||
import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListState
|
||||
import com.anytypeio.anytype.feature_object_type.fields.UiLocalsFieldsInfoState
|
||||
import com.anytypeio.anytype.feature_object_type.ui.TypeEvent
|
||||
import com.anytypeio.anytype.feature_object_type.ui.UiIconState
|
||||
import com.anytypeio.anytype.feature_object_type.ui.UiTitleState
|
||||
import com.anytypeio.anytype.feature_properties.add.UiEditTypePropertiesEvent
|
||||
|
@ -119,18 +122,20 @@ fun FieldsMainScreen(
|
|||
modifier = Modifier
|
||||
.nestedScroll(rememberNestedScrollInteropConnection())
|
||||
.background(
|
||||
color = colorResource(id = R.color.widget_background),
|
||||
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)
|
||||
color = colorResource(id = R.color.background_primary)
|
||||
)
|
||||
.fillMaxSize(),
|
||||
containerColor = colorResource(id = R.color.transparent_black),
|
||||
contentColor = colorResource(id = R.color.widget_background),
|
||||
contentColor = colorResource(id = R.color.background_primary),
|
||||
topBar = {
|
||||
TopBar(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
uiTitleState = uiTitleState,
|
||||
uiIconState = uiIconState,
|
||||
withDragger = withDragger
|
||||
withDragger = withDragger,
|
||||
onBackClick = {
|
||||
fieldEvent(OnBackClick)
|
||||
}
|
||||
)
|
||||
},
|
||||
content = { paddingValues ->
|
||||
|
@ -281,6 +286,7 @@ private fun TopBar(
|
|||
withDragger: Boolean = true,
|
||||
uiTitleState: UiTitleState,
|
||||
uiIconState: UiIconState,
|
||||
onBackClick: () -> Unit = {}
|
||||
) {
|
||||
val modifier = if (Build.VERSION.SDK_INT >= EDGE_TO_EDGE_MIN_SDK) {
|
||||
modifier.windowInsetsPadding(WindowInsets.statusBars)
|
||||
|
@ -290,8 +296,7 @@ private fun TopBar(
|
|||
Column(
|
||||
modifier = modifier
|
||||
.background(
|
||||
color = colorResource(id = R.color.widget_background),
|
||||
shape = RoundedCornerShape(16.dp, 16.dp, 0.dp, 0.dp)
|
||||
color = colorResource(id = R.color.background_primary),
|
||||
)
|
||||
) {
|
||||
if (withDragger) {
|
||||
|
@ -306,6 +311,25 @@ private fun TopBar(
|
|||
.fillMaxWidth()
|
||||
.height(48.dp)
|
||||
) {
|
||||
if (!withDragger) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.width(56.dp)
|
||||
.height(48.dp)
|
||||
.align(Alignment.CenterStart)
|
||||
.noRippleThrottledClickable {
|
||||
onBackClick()
|
||||
},
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Image(
|
||||
modifier = Modifier.wrapContentSize(),
|
||||
painter = painterResource(R.drawable.ic_default_top_back),
|
||||
contentDescription = stringResource(R.string.content_desc_back_button)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Text(
|
||||
modifier = Modifier
|
||||
.wrapContentSize()
|
||||
|
@ -526,6 +550,8 @@ private fun LazyItemScope.FieldItemDraggable(
|
|||
) {
|
||||
val isMenuExpanded = remember { mutableStateOf(false) }
|
||||
|
||||
val haptic = LocalHapticFeedback.current
|
||||
|
||||
ReorderableItem(
|
||||
state = reorderingState,
|
||||
key = item.id,
|
||||
|
@ -554,6 +580,7 @@ private fun LazyItemScope.FieldItemDraggable(
|
|||
fieldEvent(OnFieldItemClick(item = item))
|
||||
},
|
||||
onLongClick = {
|
||||
haptic.performHapticFeedback(HapticFeedbackType.LongPress)
|
||||
// show your menu, only if NOT dragging
|
||||
if (item.isPossibleToUnlinkFromType) {
|
||||
isMenuExpanded.value = true
|
||||
|
|
|
@ -31,6 +31,8 @@ sealed class ObjectTypeCommand {
|
|||
|
||||
data object OpenFieldsScreen : ObjectTypeCommand()
|
||||
|
||||
data object CloseFieldsScreen : ObjectTypeCommand()
|
||||
|
||||
data class OpenEditTypePropertiesScreen(val typeId: Id, val space: Id) : ObjectTypeCommand()
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
@ -27,6 +28,7 @@ import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
|||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.input.ImeAction
|
||||
import androidx.compose.ui.text.input.TextFieldValue
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.anytypeio.anytype.core_ui.R
|
||||
import com.anytypeio.anytype.core_ui.common.DefaultPreviews
|
||||
|
@ -62,7 +64,8 @@ fun IconAndTitleWidget(
|
|||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.wrapContentHeight(),
|
||||
uiTitleState = uiTitleState,
|
||||
initialName = uiTitleState.title,
|
||||
enabled = uiTitleState.isEditable,
|
||||
onTypeEvent = onTypeEvent,
|
||||
)
|
||||
}
|
||||
|
@ -71,28 +74,35 @@ fun IconAndTitleWidget(
|
|||
@Composable
|
||||
fun NameField(
|
||||
modifier: Modifier,
|
||||
uiTitleState: UiTitleState,
|
||||
initialName: String,
|
||||
enabled: Boolean,
|
||||
onTypeEvent: (TypeEvent) -> Unit
|
||||
) {
|
||||
var innerValue by remember(uiTitleState.title) { mutableStateOf(uiTitleState.title) }
|
||||
|
||||
var textFieldValue by rememberSaveable(stateSaver = TextFieldValue.Saver) {
|
||||
mutableStateOf(
|
||||
TextFieldValue(initialName)
|
||||
)
|
||||
}
|
||||
|
||||
val focusManager = LocalFocusManager.current
|
||||
|
||||
val focusRequester = remember { FocusRequester() }
|
||||
val keyboardController = LocalSoftwareKeyboardController.current
|
||||
|
||||
BasicTextField(
|
||||
value = innerValue,
|
||||
onValueChange = {
|
||||
innerValue = it
|
||||
value = textFieldValue,
|
||||
onValueChange = { newValue ->
|
||||
textFieldValue = newValue
|
||||
onTypeEvent.invoke(
|
||||
TypeEvent.OnObjectTypeTitleUpdate(
|
||||
title = innerValue
|
||||
title = textFieldValue.text
|
||||
)
|
||||
)
|
||||
},
|
||||
textStyle = HeadlineTitle.copy(color = colorResource(id = R.color.text_primary)),
|
||||
singleLine = false,
|
||||
enabled = uiTitleState.isEditable,
|
||||
enabled = enabled,
|
||||
cursorBrush = SolidColor(colorResource(id = R.color.text_primary)),
|
||||
modifier = modifier
|
||||
.padding(start = 12.dp, end = 20.dp)
|
||||
|
@ -105,7 +115,7 @@ fun NameField(
|
|||
focusManager.clearFocus()
|
||||
onTypeEvent.invoke(
|
||||
TypeEvent.OnObjectTypeTitleUpdate(
|
||||
title = innerValue
|
||||
title = textFieldValue.text
|
||||
)
|
||||
)
|
||||
},
|
||||
|
@ -116,7 +126,7 @@ fun NameField(
|
|||
.height(32.dp),
|
||||
contentAlignment = Alignment.CenterStart
|
||||
) {
|
||||
if (innerValue.isEmpty()) {
|
||||
if (textFieldValue.text.isEmpty()) {
|
||||
Text(
|
||||
modifier = Modifier.wrapContentSize(),
|
||||
text = stringResource(id = R.string.untitled),
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.anytypeio.anytype.feature_object_type.ui.header
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxHeight
|
||||
|
@ -145,6 +146,10 @@ fun TopToolbar(
|
|||
},
|
||||
shape = RoundedCornerShape(10.dp),
|
||||
containerColor = colorResource(id = R.color.background_secondary),
|
||||
border = BorderStroke(
|
||||
width = 0.5.dp,
|
||||
color = colorResource(id = R.color.background_secondary)
|
||||
)
|
||||
) {
|
||||
DropdownMenuItem(
|
||||
text = {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.anytypeio.anytype.feature_object_type.ui.icons
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.combinedClickable
|
||||
|
@ -237,6 +238,10 @@ private fun IconPreviews(
|
|||
shape = RoundedCornerShape(size = 20.dp),
|
||||
containerColor = colorResource(id = R.color.background_primary),
|
||||
shadowElevation = 5.dp,
|
||||
border = BorderStroke(
|
||||
width = 0.5.dp,
|
||||
color = colorResource(id = R.color.background_secondary)
|
||||
)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.anytypeio.anytype.feature_object_type.ui.objects
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Box
|
||||
|
@ -103,7 +104,11 @@ fun ObjectsHeader(
|
|||
onDismissRequest = { isMenuExpanded = false },
|
||||
shape = RoundedCornerShape(size = 16.dp),
|
||||
containerColor = colorResource(id = R.color.background_primary),
|
||||
shadowElevation = 5.dp
|
||||
shadowElevation = 5.dp,
|
||||
border = BorderStroke(
|
||||
width = 0.5.dp,
|
||||
color = colorResource(id = R.color.background_secondary)
|
||||
)
|
||||
) {
|
||||
when (val item = uiObjectsMenuState.objSetItem) {
|
||||
UiMenuSetItem.CreateSet -> {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.anytypeio.anytype.feature_object_type.ui.templates
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.border
|
||||
import androidx.compose.foundation.combinedClickable
|
||||
|
@ -107,6 +108,10 @@ fun TemplatesList(
|
|||
offset = DpOffset(
|
||||
x = 20.dp,
|
||||
y = (-300).dp
|
||||
),
|
||||
border = BorderStroke(
|
||||
width = 0.5.dp,
|
||||
color = colorResource(id = R.color.background_secondary)
|
||||
)
|
||||
) {
|
||||
if (!item.isDefault) {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.anytypeio.anytype.feature_object_type.ui.templates
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.border
|
||||
|
@ -203,6 +204,10 @@ private fun LazyItemScope.ItemContent(
|
|||
shape = RoundedCornerShape(size = 10.dp),
|
||||
containerColor = colorResource(id = R.color.background_primary),
|
||||
shadowElevation = 5.dp,
|
||||
border = BorderStroke(
|
||||
width = 0.5.dp,
|
||||
color = colorResource(id = R.color.background_secondary)
|
||||
)
|
||||
) {
|
||||
if (!item.isDefault) {
|
||||
DropdownMenuItem(
|
||||
|
|
|
@ -32,6 +32,7 @@ import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListItem
|
|||
import com.anytypeio.anytype.feature_object_type.fields.UiFieldsListState
|
||||
import com.anytypeio.anytype.feature_object_type.fields.UiLocalsFieldsInfoState
|
||||
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeCommand
|
||||
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeCommand.*
|
||||
import com.anytypeio.anytype.feature_object_type.ui.ObjectTypeVmParams
|
||||
import com.anytypeio.anytype.feature_object_type.ui.TypeEvent
|
||||
import com.anytypeio.anytype.feature_object_type.ui.UiDeleteAlertState
|
||||
|
@ -456,6 +457,7 @@ class ObjectTypeViewModel(
|
|||
}
|
||||
|
||||
is TypeEvent.OnObjectTypeTitleUpdate -> {
|
||||
uiTitleState.value = uiTitleState.value.copy(title = event.title)
|
||||
updateTitle(event.title)
|
||||
}
|
||||
|
||||
|
@ -698,7 +700,7 @@ class ObjectTypeViewModel(
|
|||
FieldEvent.Section.OnAddToSidebarIconClick -> {
|
||||
viewModelScope.launch {
|
||||
commands.emit(
|
||||
ObjectTypeCommand.OpenEditTypePropertiesScreen(
|
||||
OpenEditTypePropertiesScreen(
|
||||
typeId = vmParams.objectId,
|
||||
space = vmParams.spaceId.id,
|
||||
)
|
||||
|
@ -747,6 +749,11 @@ class ObjectTypeViewModel(
|
|||
}
|
||||
|
||||
is FieldEvent.EditProperty -> proceedWithEditPropertyEvent(event)
|
||||
FieldEvent.OnBackClick -> {
|
||||
viewModelScope.launch {
|
||||
commands.emit(ObjectTypeCommand.CloseFieldsScreen)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.anytypeio.anytype.feature_properties.edit.ui
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
|
@ -111,6 +112,10 @@ fun PropertyEditScreen(
|
|||
shape = RoundedCornerShape(size = 10.dp),
|
||||
containerColor = colorResource(id = R.color.background_primary),
|
||||
shadowElevation = 5.dp,
|
||||
border = BorderStroke(
|
||||
width = 0.5.dp,
|
||||
color = colorResource(id = R.color.background_secondary)
|
||||
)
|
||||
) {
|
||||
DropdownMenuItem(
|
||||
modifier = Modifier.height(44.dp),
|
||||
|
|
|
@ -64,7 +64,8 @@ fun PropertyScreen(
|
|||
modifier = modifier,
|
||||
dragHandle = { DragHandle() },
|
||||
scrimColor = colorResource(id = R.color.modal_screen_outside_background),
|
||||
containerColor = colorResource(id = R.color.background_primary),
|
||||
containerColor = colorResource(id = R.color.background_secondary),
|
||||
contentColor = colorResource(id = R.color.background_secondary),
|
||||
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp),
|
||||
sheetState = bottomSheetState,
|
||||
onDismissRequest = onDismissRequest,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.anytypeio.anytype.feature_properties.edit.ui
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
|
@ -102,6 +103,10 @@ fun PropertyViewScreen(
|
|||
shape = RoundedCornerShape(size = 10.dp),
|
||||
containerColor = colorResource(id = R.color.background_primary),
|
||||
shadowElevation = 5.dp,
|
||||
border = BorderStroke(
|
||||
width = 0.5.dp,
|
||||
color = colorResource(id = R.color.background_secondary)
|
||||
)
|
||||
) {
|
||||
DropdownMenuItem(
|
||||
modifier = Modifier.height(44.dp),
|
||||
|
|
|
@ -1718,10 +1718,10 @@
|
|||
<string name="space_settings_icon_title">Edit picture</string>
|
||||
<string name="space_settings_save_button">Save</string>
|
||||
<string name="object_type_add_property_screen_title">Дадаць уласцівасць</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1693,9 +1693,9 @@ Bitte mache hier genaue Angaben zu deinen Bedarf.</string>
|
|||
<string name="space_settings_save_button">Speichern</string>
|
||||
<string name="object_type_add_property_screen_title">Eigenschaft hinzufügen</string>
|
||||
<string name="object_type_add_property_screen_create">Eigenschaft ‚%1$s‘ erstellen</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">Neue Eigenschaft</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1692,10 +1692,10 @@ En concreto,
|
|||
<string name="space_settings_icon_title">Editar imagen</string>
|
||||
<string name="space_settings_save_button">Guardar</string>
|
||||
<string name="object_type_add_property_screen_title">Add property</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1689,10 +1689,10 @@ Merci de décrire ici vos besoins spécifiques.</string>
|
|||
<string name="space_settings_icon_title">Modifier l\'image</string>
|
||||
<string name="space_settings_save_button">Sauvegarder</string>
|
||||
<string name="object_type_add_property_screen_title">Add property</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Formats des propriétés »</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Formats des propriétés</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1679,10 +1679,10 @@ Please provide specific details of your needs here.</string>
|
|||
<string name="space_settings_icon_title">Sunting gambar</string>
|
||||
<string name="space_settings_save_button">Simpan</string>
|
||||
<string name="object_type_add_property_screen_title">Tambahkan properti</string>
|
||||
<string name="object_type_add_property_screen_create">Buat properti \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Buat properti \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">Properti baru</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1692,7 +1692,7 @@ Geef alsjeblieft specifieke details van jouw wensen hier aan. </string>
|
|||
<string name="space_settings_icon_title">Bewerk afbeelding</string>
|
||||
<string name="space_settings_save_button">Sla op</string>
|
||||
<string name="object_type_add_property_screen_title">Voeg eigenschap toe</string>
|
||||
<string name="object_type_add_property_screen_create">Maak eigenschap \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_create">Maak eigenschap \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Eigenschappen formaten</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Bestaande eigenschappen</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Zoek of maak nieuwe</string>
|
||||
|
|
|
@ -1692,10 +1692,10 @@ Please provide specific details of your needs here.</string>
|
|||
<string name="space_settings_icon_title">Edit picture</string>
|
||||
<string name="space_settings_save_button">Save</string>
|
||||
<string name="object_type_add_property_screen_title">Add property</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1689,10 +1689,10 @@ forneça detalhes específicos das suas necessidades aqui.</string>
|
|||
<string name="space_settings_icon_title">Edit picture</string>
|
||||
<string name="space_settings_save_button">Salvar</string>
|
||||
<string name="object_type_add_property_screen_title">Add property</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1721,10 +1721,10 @@
|
|||
<string name="space_settings_icon_title">Редактировать фотографию</string>
|
||||
<string name="space_settings_save_button">Сохранить</string>
|
||||
<string name="object_type_add_property_screen_title">Добавить свойство</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1692,10 +1692,10 @@ Lütfen ihtiyaçlarınızla ilgili özel ayrıntıları burada belirtin.</string
|
|||
<string name="space_settings_icon_title">Resmi düzenle</string>
|
||||
<string name="space_settings_save_button">Kaydet</string>
|
||||
<string name="object_type_add_property_screen_title">Add property</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1718,10 +1718,10 @@ Please provide specific details of your needs here.</string>
|
|||
<string name="space_settings_icon_title">Edit picture</string>
|
||||
<string name="space_settings_save_button">Save</string>
|
||||
<string name="object_type_add_property_screen_title">Add property</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1678,7 +1678,7 @@
|
|||
<string name="object_type_add_property_screen_create">创建属性“%1$s”</string>
|
||||
<string name="object_type_add_property_screen_section_types">属性格式”</string>
|
||||
<string name="object_type_add_property_screen_section_existing">现有属性”</string>
|
||||
<string name="object_type_add_property_screen_search_hint">搜索或新建\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">搜索或新建</string>
|
||||
<string name="new_property_hint">新建属性</string>
|
||||
<string name="edit_property_limit_objects">将对象限制为</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1679,10 +1679,10 @@ Please provide specific details of your needs here.</string>
|
|||
<string name="space_settings_icon_title">Edit picture</string>
|
||||
<string name="space_settings_save_button">Save</string>
|
||||
<string name="object_type_add_property_screen_title">Add property</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats\"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties\"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new\"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
<string name="edit_property_limit_objects_all">Limit objects</string>
|
||||
|
|
|
@ -1970,10 +1970,10 @@ Please provide specific details of your needs here.</string>
|
|||
<string name="space_settings_save_button">Save</string>
|
||||
|
||||
<string name="object_type_add_property_screen_title">Add property</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'"</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats"</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties"</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new"</string>
|
||||
<string name="object_type_add_property_screen_create">Create property \'%1$s\'</string>
|
||||
<string name="object_type_add_property_screen_section_types">Properties formats</string>
|
||||
<string name="object_type_add_property_screen_section_existing">Existing properties</string>
|
||||
<string name="object_type_add_property_screen_search_hint">Search or create new</string>
|
||||
|
||||
<string name="new_property_hint">New property</string>
|
||||
<string name="edit_property_limit_objects">Limit objects to</string>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue