mirror of
https://github.com/nextcloud/android.git
synced 2024-12-18 06:51:55 +03:00
Merge pull request #14115 from nextcloud/feature/copy-share-edit-assistant
Feature - Copy, Share, Edit Assistant
This commit is contained in:
commit
d5a91239cc
89 changed files with 866 additions and 885 deletions
Binary file not shown.
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
@ -9,6 +9,7 @@ package com.nextcloud.client.assistant
|
|||
|
||||
import com.nextcloud.client.assistant.repository.AssistantRepository
|
||||
import com.owncloud.android.AbstractOnServerIT
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
|
||||
import com.owncloud.android.lib.resources.status.NextcloudVersion
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
|
@ -35,7 +36,7 @@ class AssistantRepositoryTests : AbstractOnServerIT() {
|
|||
val result = sut?.getTaskTypes()
|
||||
assertTrue(result?.isSuccess == true)
|
||||
|
||||
val taskTypes = result?.resultData?.types
|
||||
val taskTypes = result?.resultData
|
||||
assertTrue(taskTypes?.isNotEmpty() == true)
|
||||
}
|
||||
|
||||
|
@ -63,8 +64,14 @@ class AssistantRepositoryTests : AbstractOnServerIT() {
|
|||
}
|
||||
|
||||
val input = "Give me some random output for test purpose"
|
||||
val type = "OCP\\TextProcessing\\FreePromptTaskType"
|
||||
val result = sut?.createTask(input, type)
|
||||
val taskType = TaskTypeData(
|
||||
"core:text2text",
|
||||
"Free text to text prompt",
|
||||
"Runs an arbitrary prompt through a language model that returns a reply",
|
||||
null,
|
||||
null
|
||||
)
|
||||
val result = sut?.createTask(input, taskType)
|
||||
assertTrue(result?.isSuccess == true)
|
||||
}
|
||||
|
||||
|
|
|
@ -7,60 +7,53 @@
|
|||
*/
|
||||
package com.nextcloud.client.assistant
|
||||
|
||||
import android.content.Context
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.nextcloud.client.assistant.model.ScreenOverlayState
|
||||
import com.nextcloud.client.assistant.model.ScreenState
|
||||
import com.nextcloud.client.assistant.repository.AssistantRepositoryType
|
||||
import com.owncloud.android.R
|
||||
import com.owncloud.android.lib.resources.assistant.model.Task
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskType
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
class AssistantViewModel(
|
||||
private val repository: AssistantRepositoryType,
|
||||
private val context: WeakReference<Context>
|
||||
private val repository: AssistantRepositoryType
|
||||
) : ViewModel() {
|
||||
|
||||
sealed class State {
|
||||
data object Idle : State()
|
||||
data object Loading : State()
|
||||
data class Error(val messageId: Int) : State()
|
||||
data class TaskCreated(val messageId: Int) : State()
|
||||
data class TaskDeleted(val messageId: Int) : State()
|
||||
}
|
||||
private val _screenState = MutableStateFlow<ScreenState?>(null)
|
||||
val screenState: StateFlow<ScreenState?> = _screenState
|
||||
|
||||
private val _state = MutableStateFlow<State>(State.Loading)
|
||||
val state: StateFlow<State> = _state
|
||||
private val _screenOverlayState = MutableStateFlow<ScreenOverlayState?>(null)
|
||||
val screenOverlayState: StateFlow<ScreenOverlayState?> = _screenOverlayState
|
||||
|
||||
private val _selectedTaskType = MutableStateFlow<TaskType?>(null)
|
||||
val selectedTaskType: StateFlow<TaskType?> = _selectedTaskType
|
||||
private val _snackbarMessageId = MutableStateFlow<Int?>(null)
|
||||
val snackbarMessageId: StateFlow<Int?> = _snackbarMessageId
|
||||
|
||||
private val _taskTypes = MutableStateFlow<List<TaskType>?>(null)
|
||||
val taskTypes: StateFlow<List<TaskType>?> = _taskTypes
|
||||
private val _selectedTaskType = MutableStateFlow<TaskTypeData?>(null)
|
||||
val selectedTaskType: StateFlow<TaskTypeData?> = _selectedTaskType
|
||||
|
||||
private val _taskTypes = MutableStateFlow<List<TaskTypeData>?>(null)
|
||||
val taskTypes: StateFlow<List<TaskTypeData>?> = _taskTypes
|
||||
|
||||
private var taskList: List<Task>? = null
|
||||
|
||||
private val _filteredTaskList = MutableStateFlow<List<Task>?>(null)
|
||||
val filteredTaskList: StateFlow<List<Task>?> = _filteredTaskList
|
||||
|
||||
private val _isRefreshing = MutableStateFlow(false)
|
||||
val isRefreshing: StateFlow<Boolean> = _isRefreshing
|
||||
|
||||
init {
|
||||
fetchTaskTypes()
|
||||
fetchTaskList()
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
fun createTask(input: String, type: String) {
|
||||
fun createTask(input: String, taskType: TaskTypeData) {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val result = repository.createTask(input, type)
|
||||
val result = repository.createTask(input, taskType)
|
||||
|
||||
val messageId = if (result.isSuccess) {
|
||||
R.string.assistant_screen_task_create_success_message
|
||||
|
@ -68,68 +61,68 @@ class AssistantViewModel(
|
|||
R.string.assistant_screen_task_create_fail_message
|
||||
}
|
||||
|
||||
_state.update {
|
||||
State.TaskCreated(messageId)
|
||||
}
|
||||
updateSnackbarMessage(messageId)
|
||||
|
||||
delay(2000L)
|
||||
fetchTaskList()
|
||||
}
|
||||
}
|
||||
|
||||
fun selectTaskType(task: TaskType) {
|
||||
fun selectTaskType(task: TaskTypeData) {
|
||||
_selectedTaskType.update {
|
||||
filterTaskList(task.id)
|
||||
task
|
||||
}
|
||||
|
||||
fetchTaskList()
|
||||
}
|
||||
|
||||
private fun fetchTaskTypes() {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val allTaskType = context.get()?.getString(R.string.assistant_screen_all_task_type)
|
||||
val excludedIds = listOf("OCA\\ContextChat\\TextProcessing\\ContextChatTaskType")
|
||||
val result = arrayListOf(TaskType(null, allTaskType, null))
|
||||
val taskTypesResult = repository.getTaskTypes()
|
||||
|
||||
if (taskTypesResult.isSuccess) {
|
||||
val excludedTaskTypes = taskTypesResult.resultData.types.filter { item -> item.id !in excludedIds }
|
||||
result.addAll(excludedTaskTypes)
|
||||
val result = taskTypesResult.resultData
|
||||
_taskTypes.update {
|
||||
result.toList()
|
||||
result
|
||||
}
|
||||
|
||||
selectTaskType(result.first())
|
||||
} else {
|
||||
_state.update {
|
||||
State.Error(R.string.assistant_screen_task_types_error_state_message)
|
||||
}
|
||||
updateSnackbarMessage(R.string.assistant_screen_task_types_error_state_message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun fetchTaskList(appId: String = "assistant") {
|
||||
fun fetchTaskList() {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
_isRefreshing.update {
|
||||
true
|
||||
_screenState.update {
|
||||
ScreenState.Refreshing
|
||||
}
|
||||
|
||||
val result = repository.getTaskList(appId)
|
||||
val taskType = _selectedTaskType.value?.id ?: return@launch
|
||||
val result = repository.getTaskList(taskType)
|
||||
if (result.isSuccess) {
|
||||
taskList = result.resultData.tasks
|
||||
|
||||
filterTaskList(_selectedTaskType.value?.id)
|
||||
|
||||
_state.update {
|
||||
State.Idle
|
||||
taskList = result.resultData.tasks.filter { it.appId == "assistant" }
|
||||
_filteredTaskList.update {
|
||||
taskList?.sortedByDescending { task ->
|
||||
task.id
|
||||
}
|
||||
}
|
||||
updateSnackbarMessage(null)
|
||||
} else {
|
||||
_state.update {
|
||||
State.Error(R.string.assistant_screen_task_list_error_state_message)
|
||||
}
|
||||
updateSnackbarMessage(R.string.assistant_screen_task_list_error_state_message)
|
||||
}
|
||||
|
||||
_isRefreshing.update {
|
||||
false
|
||||
updateScreenState()
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateScreenState() {
|
||||
_screenState.update {
|
||||
if (_filteredTaskList.value?.isEmpty() == true) {
|
||||
ScreenState.EmptyContent
|
||||
} else {
|
||||
ScreenState.Content
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -144,9 +137,7 @@ class AssistantViewModel(
|
|||
R.string.assistant_screen_task_delete_fail_message
|
||||
}
|
||||
|
||||
_state.update {
|
||||
State.TaskDeleted(messageId)
|
||||
}
|
||||
updateSnackbarMessage(messageId)
|
||||
|
||||
if (result.isSuccess) {
|
||||
removeTaskFromList(id)
|
||||
|
@ -154,27 +145,15 @@ class AssistantViewModel(
|
|||
}
|
||||
}
|
||||
|
||||
fun resetState() {
|
||||
_state.update {
|
||||
State.Idle
|
||||
fun updateSnackbarMessage(value: Int?) {
|
||||
_snackbarMessageId.update {
|
||||
value
|
||||
}
|
||||
}
|
||||
|
||||
private fun filterTaskList(taskTypeId: String?) {
|
||||
if (taskTypeId == null) {
|
||||
_filteredTaskList.update {
|
||||
taskList
|
||||
}
|
||||
} else {
|
||||
_filteredTaskList.update {
|
||||
taskList?.filter { it.type == taskTypeId }
|
||||
}
|
||||
}
|
||||
|
||||
_filteredTaskList.update {
|
||||
it?.sortedByDescending { task ->
|
||||
task.id
|
||||
}
|
||||
fun updateScreenState(value: ScreenOverlayState?) {
|
||||
_screenOverlayState.update {
|
||||
value
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
package com.nextcloud.client.assistant
|
||||
|
||||
import android.app.Activity
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
|
@ -25,215 +24,256 @@ import androidx.compose.material3.FloatingActionButton
|
|||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LinearProgressIndicator
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshState
|
||||
import androidx.compose.material3.pulltorefresh.pullToRefresh
|
||||
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.nextcloud.client.assistant.component.AddTaskAlertDialog
|
||||
import com.nextcloud.client.assistant.component.CenterText
|
||||
import com.nextcloud.client.assistant.extensions.getInputTitle
|
||||
import com.nextcloud.client.assistant.model.ScreenOverlayState
|
||||
import com.nextcloud.client.assistant.model.ScreenState
|
||||
import com.nextcloud.client.assistant.repository.AssistantMockRepository
|
||||
import com.nextcloud.client.assistant.task.TaskView
|
||||
import com.nextcloud.client.assistant.taskTypes.TaskTypesRow
|
||||
import com.nextcloud.ui.composeActivity.ComposeActivity
|
||||
import com.nextcloud.ui.composeComponents.alertDialog.SimpleAlertDialog
|
||||
import com.nextcloud.ui.composeComponents.bottomSheet.MoreActionsBottomSheet
|
||||
import com.owncloud.android.R
|
||||
import com.owncloud.android.lib.resources.assistant.model.Task
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskType
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
|
||||
import com.owncloud.android.utils.DisplayUtils
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
@Suppress("LongMethod")
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun AssistantScreen(viewModel: AssistantViewModel, activity: Activity) {
|
||||
val state by viewModel.state.collectAsState()
|
||||
val messageId by viewModel.snackbarMessageId.collectAsState()
|
||||
val screenOverlayState by viewModel.screenOverlayState.collectAsState()
|
||||
|
||||
val selectedTaskType by viewModel.selectedTaskType.collectAsState()
|
||||
val filteredTaskList by viewModel.filteredTaskList.collectAsState()
|
||||
val isRefreshing by viewModel.isRefreshing.collectAsState()
|
||||
val screenState by viewModel.screenState.collectAsState()
|
||||
val taskTypes by viewModel.taskTypes.collectAsState()
|
||||
var showAddTaskAlertDialog by remember { mutableStateOf(false) }
|
||||
var showDeleteTaskAlertDialog by remember { mutableStateOf(false) }
|
||||
var taskIdToDeleted: Long? by remember {
|
||||
mutableStateOf(null)
|
||||
}
|
||||
val scope = rememberCoroutineScope()
|
||||
val pullRefreshState = rememberPullToRefreshState()
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
Box(
|
||||
modifier = Modifier.pullToRefresh(isRefreshing, pullRefreshState, onRefresh = {
|
||||
scope.launch {
|
||||
delay(1500)
|
||||
viewModel.fetchTaskList()
|
||||
modifier = Modifier.pullToRefresh(
|
||||
screenState == ScreenState.Refreshing,
|
||||
pullRefreshState,
|
||||
onRefresh = {
|
||||
scope.launch {
|
||||
delay(1500)
|
||||
viewModel.fetchTaskList()
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
) {
|
||||
if (state == AssistantViewModel.State.Loading || isRefreshing) {
|
||||
ShowScreenState(screenState, selectedTaskType, taskTypes, viewModel, filteredTaskList)
|
||||
|
||||
ShowLinearProgressIndicator(screenState, pullRefreshState)
|
||||
|
||||
AddFloatingActionButton(
|
||||
modifier = Modifier
|
||||
.align(Alignment.BottomEnd)
|
||||
.padding(16.dp),
|
||||
selectedTaskType,
|
||||
viewModel
|
||||
)
|
||||
}
|
||||
|
||||
showSnackBarMessage(messageId, activity, viewModel)
|
||||
ShowOverlayState(screenOverlayState, activity, viewModel)
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ShowScreenState(
|
||||
screenState: ScreenState?,
|
||||
selectedTaskType: TaskTypeData?,
|
||||
taskTypes: List<TaskTypeData>?,
|
||||
viewModel: AssistantViewModel,
|
||||
filteredTaskList: List<Task>?
|
||||
) {
|
||||
when (screenState) {
|
||||
ScreenState.Refreshing -> {
|
||||
CenterText(text = stringResource(id = R.string.assistant_screen_loading))
|
||||
} else {
|
||||
if (filteredTaskList.isNullOrEmpty()) {
|
||||
EmptyTaskList(selectedTaskType, taskTypes, viewModel)
|
||||
} else {
|
||||
AssistantContent(
|
||||
filteredTaskList!!,
|
||||
taskTypes,
|
||||
selectedTaskType,
|
||||
viewModel,
|
||||
showDeleteTaskAlertDialog = { taskId ->
|
||||
taskIdToDeleted = taskId
|
||||
showDeleteTaskAlertDialog = true
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (isRefreshing) {
|
||||
LinearProgressIndicator(modifier = Modifier.fillMaxWidth())
|
||||
} else {
|
||||
LinearProgressIndicator(
|
||||
progress = { pullRefreshState.distanceFraction },
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
ScreenState.EmptyContent -> {
|
||||
EmptyTaskList(selectedTaskType, taskTypes, viewModel)
|
||||
}
|
||||
|
||||
ScreenState.Content -> {
|
||||
AssistantContent(
|
||||
filteredTaskList ?: listOf(),
|
||||
taskTypes,
|
||||
selectedTaskType,
|
||||
viewModel
|
||||
)
|
||||
}
|
||||
|
||||
if (selectedTaskType?.name != stringResource(id = R.string.assistant_screen_all_task_type)) {
|
||||
FloatingActionButton(
|
||||
modifier = Modifier
|
||||
.align(Alignment.BottomEnd)
|
||||
.padding(16.dp),
|
||||
onClick = {
|
||||
showAddTaskAlertDialog = true
|
||||
}
|
||||
) {
|
||||
Icon(Icons.Filled.Add, "Add Task Icon")
|
||||
}
|
||||
}
|
||||
null -> Unit
|
||||
}
|
||||
}
|
||||
|
||||
ScreenState(state, activity, viewModel)
|
||||
|
||||
if (showDeleteTaskAlertDialog) {
|
||||
taskIdToDeleted?.let { id ->
|
||||
SimpleAlertDialog(
|
||||
title = stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_title),
|
||||
description = stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_description),
|
||||
dismiss = { showDeleteTaskAlertDialog = false },
|
||||
onComplete = { viewModel.deleteTask(id) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (showAddTaskAlertDialog) {
|
||||
selectedTaskType?.let { taskType ->
|
||||
AddTaskAlertDialog(
|
||||
title = taskType.name,
|
||||
description = taskType.description,
|
||||
addTask = { input ->
|
||||
taskType.id?.let {
|
||||
viewModel.createTask(input = input, type = it)
|
||||
}
|
||||
},
|
||||
dismiss = {
|
||||
showAddTaskAlertDialog = false
|
||||
}
|
||||
)
|
||||
}
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
private fun ShowLinearProgressIndicator(screenState: ScreenState?, pullToRefreshState: PullToRefreshState) {
|
||||
if (screenState == ScreenState.Refreshing) {
|
||||
LinearProgressIndicator(modifier = Modifier.fillMaxWidth())
|
||||
} else {
|
||||
LinearProgressIndicator(
|
||||
progress = { pullToRefreshState.distanceFraction },
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ScreenState(state: AssistantViewModel.State, activity: Activity, viewModel: AssistantViewModel) {
|
||||
val messageId: Int? = when (state) {
|
||||
is AssistantViewModel.State.Error -> {
|
||||
state.messageId
|
||||
}
|
||||
|
||||
is AssistantViewModel.State.TaskCreated -> {
|
||||
state.messageId
|
||||
}
|
||||
|
||||
is AssistantViewModel.State.TaskDeleted -> {
|
||||
state.messageId
|
||||
}
|
||||
|
||||
else -> {
|
||||
null
|
||||
private fun AddFloatingActionButton(
|
||||
modifier: Modifier,
|
||||
selectedTaskType: TaskTypeData?,
|
||||
viewModel: AssistantViewModel
|
||||
) {
|
||||
FloatingActionButton(
|
||||
modifier = modifier,
|
||||
onClick = {
|
||||
selectedTaskType?.let {
|
||||
val newState = ScreenOverlayState.AddTask(it, "")
|
||||
viewModel.updateScreenState(newState)
|
||||
}
|
||||
}
|
||||
) {
|
||||
Icon(Icons.Filled.Add, "Add Task Icon")
|
||||
}
|
||||
}
|
||||
|
||||
private fun showSnackBarMessage(messageId: Int?, activity: Activity, viewModel: AssistantViewModel) {
|
||||
messageId?.let {
|
||||
DisplayUtils.showSnackMessage(
|
||||
activity,
|
||||
stringResource(id = messageId)
|
||||
activity.getString(it)
|
||||
)
|
||||
|
||||
viewModel.resetState()
|
||||
viewModel.updateSnackbarMessage(null)
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("LongMethod")
|
||||
@Composable
|
||||
private fun ShowOverlayState(state: ScreenOverlayState?, activity: Activity, viewModel: AssistantViewModel) {
|
||||
when (state) {
|
||||
is ScreenOverlayState.AddTask -> {
|
||||
AddTaskAlertDialog(
|
||||
title = state.taskType.name,
|
||||
description = state.taskType.description,
|
||||
defaultInput = state.input,
|
||||
addTask = { input ->
|
||||
state.taskType.let { taskType ->
|
||||
viewModel.createTask(input = input, taskType = taskType)
|
||||
}
|
||||
},
|
||||
dismiss = {
|
||||
viewModel.updateScreenState(null)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
is ScreenOverlayState.DeleteTask -> {
|
||||
SimpleAlertDialog(
|
||||
title = stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_title),
|
||||
description = stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_description),
|
||||
dismiss = { viewModel.updateScreenState(null) },
|
||||
onComplete = { viewModel.deleteTask(state.id) }
|
||||
)
|
||||
}
|
||||
|
||||
is ScreenOverlayState.TaskActions -> {
|
||||
val actions = state.getActions(activity, onEditCompleted = { addTask ->
|
||||
viewModel.updateScreenState(addTask)
|
||||
}, onDeleteCompleted = { deleteTask ->
|
||||
viewModel.updateScreenState(deleteTask)
|
||||
})
|
||||
|
||||
MoreActionsBottomSheet(
|
||||
title = state.task.getInputTitle(),
|
||||
actions = actions,
|
||||
dismiss = { viewModel.updateScreenState(null) }
|
||||
)
|
||||
}
|
||||
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
@Composable
|
||||
private fun AssistantContent(
|
||||
taskList: List<Task>,
|
||||
taskTypes: List<TaskType>?,
|
||||
selectedTaskType: TaskType?,
|
||||
viewModel: AssistantViewModel,
|
||||
showDeleteTaskAlertDialog: (Long) -> Unit
|
||||
taskTypes: List<TaskTypeData>?,
|
||||
selectedTaskType: TaskTypeData?,
|
||||
viewModel: AssistantViewModel
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(16.dp)
|
||||
) {
|
||||
stickyHeader {
|
||||
Column(modifier = Modifier.fillMaxSize()) {
|
||||
taskTypes?.let {
|
||||
TaskTypesRow(selectedTaskType, data = taskTypes) { task ->
|
||||
viewModel.selectTaskType(task)
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
|
||||
items(taskList) { task ->
|
||||
TaskView(task, showDeleteTaskAlertDialog = { showDeleteTaskAlertDialog(task.id) })
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
LazyColumn(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(12.dp)
|
||||
) {
|
||||
items(taskList) { task ->
|
||||
TaskView(
|
||||
task,
|
||||
showTaskActions = {
|
||||
val newState = ScreenOverlayState.TaskActions(task)
|
||||
viewModel.updateScreenState(newState)
|
||||
}
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun EmptyTaskList(selectedTaskType: TaskType?, taskTypes: List<TaskType>?, viewModel: AssistantViewModel) {
|
||||
val text = if (selectedTaskType?.name == stringResource(id = R.string.assistant_screen_all_task_type)) {
|
||||
stringResource(id = R.string.assistant_screen_no_task_available_for_all_task_filter_text)
|
||||
} else {
|
||||
stringResource(
|
||||
id = R.string.assistant_screen_no_task_available_text,
|
||||
selectedTaskType?.name ?: ""
|
||||
)
|
||||
}
|
||||
private fun EmptyTaskList(
|
||||
selectedTaskType: TaskTypeData?,
|
||||
taskTypes: List<TaskTypeData>?,
|
||||
viewModel: AssistantViewModel
|
||||
) {
|
||||
val text = stringResource(
|
||||
id = R.string.assistant_screen_no_task_available_text,
|
||||
selectedTaskType?.name ?: ""
|
||||
)
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(16.dp)
|
||||
) {
|
||||
TaskTypesRow(selectedTaskType, data = taskTypes) { task ->
|
||||
viewModel.selectTaskType(task)
|
||||
}
|
||||
taskTypes?.let {
|
||||
TaskTypesRow(selectedTaskType, data = taskTypes) { task ->
|
||||
viewModel.selectTaskType(task)
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
}
|
||||
|
||||
CenterText(text = text)
|
||||
}
|
||||
|
@ -246,10 +286,7 @@ private fun AssistantScreenPreview() {
|
|||
MaterialTheme(
|
||||
content = {
|
||||
AssistantScreen(
|
||||
viewModel = AssistantViewModel(
|
||||
repository = mockRepository,
|
||||
context = WeakReference(LocalContext.current)
|
||||
),
|
||||
viewModel = AssistantViewModel(repository = mockRepository),
|
||||
activity = ComposeActivity()
|
||||
)
|
||||
}
|
||||
|
@ -263,10 +300,7 @@ private fun AssistantEmptyScreenPreview() {
|
|||
MaterialTheme(
|
||||
content = {
|
||||
AssistantScreen(
|
||||
viewModel = AssistantViewModel(
|
||||
repository = mockRepository,
|
||||
context = WeakReference(LocalContext.current)
|
||||
),
|
||||
viewModel = AssistantViewModel(repository = mockRepository),
|
||||
activity = ComposeActivity()
|
||||
)
|
||||
}
|
||||
|
|
|
@ -22,9 +22,15 @@ import com.nextcloud.ui.composeComponents.alertDialog.SimpleAlertDialog
|
|||
import com.owncloud.android.R
|
||||
|
||||
@Composable
|
||||
fun AddTaskAlertDialog(title: String?, description: String?, addTask: (String) -> Unit, dismiss: () -> Unit) {
|
||||
fun AddTaskAlertDialog(
|
||||
title: String?,
|
||||
description: String?,
|
||||
defaultInput: String = "",
|
||||
addTask: (String) -> Unit,
|
||||
dismiss: () -> Unit
|
||||
) {
|
||||
var input by remember {
|
||||
mutableStateOf("")
|
||||
mutableStateOf(defaultInput)
|
||||
}
|
||||
|
||||
SimpleAlertDialog(
|
||||
|
|
|
@ -9,13 +9,14 @@ package com.nextcloud.client.assistant.component
|
|||
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.owncloud.android.R
|
||||
|
||||
@Composable
|
||||
fun CenterText(text: String) {
|
||||
|
@ -24,7 +25,7 @@ fun CenterText(text: String) {
|
|||
text = text,
|
||||
fontSize = 18.sp,
|
||||
textAlign = TextAlign.Center,
|
||||
color = MaterialTheme.colorScheme.onPrimaryContainer
|
||||
color = colorResource(R.color.text_color)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,34 +9,97 @@
|
|||
|
||||
package com.nextcloud.client.assistant.extensions
|
||||
|
||||
import android.content.Context
|
||||
import com.nextcloud.utils.date.DateFormatPattern
|
||||
import com.nextcloud.utils.date.DateFormatter
|
||||
import com.owncloud.android.R
|
||||
import com.owncloud.android.lib.resources.assistant.model.Task
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
fun Task.getInputAndOutput(): String {
|
||||
val inputText = input?.input ?: ""
|
||||
val outputText = output?.output ?: ""
|
||||
|
||||
return "$inputText\n\n$outputText"
|
||||
}
|
||||
|
||||
fun Task.getInput(): String? = input?.input
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
fun Task.statusData(): Pair<Int, Int> {
|
||||
fun Task.getInputTitle(): String {
|
||||
val maxTitleLength = 20
|
||||
val title = getInput() ?: ""
|
||||
|
||||
return if (title.length > maxTitleLength) {
|
||||
title.take(maxTitleLength) + "..."
|
||||
} else {
|
||||
title
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
fun Task.getStatusIcon(): Int {
|
||||
return when (status) {
|
||||
0L -> {
|
||||
Pair(R.drawable.ic_unknown, R.string.assistant_screen_unknown_task_status_text)
|
||||
"STATUS_UNKNOWN" -> {
|
||||
R.drawable.ic_unknown
|
||||
}
|
||||
1L -> {
|
||||
Pair(R.drawable.ic_clock, R.string.assistant_screen_scheduled_task_status_text)
|
||||
"STATUS_SCHEDULED" -> {
|
||||
R.drawable.ic_clock
|
||||
}
|
||||
2L -> {
|
||||
Pair(R.drawable.ic_modification_desc, R.string.assistant_screen_running_task_text)
|
||||
"STATUS_RUNNING" -> {
|
||||
R.drawable.ic_modification_desc
|
||||
}
|
||||
3L -> {
|
||||
Pair(R.drawable.ic_info, R.string.assistant_screen_successful_task_text)
|
||||
"STATUS_SUCCESSFUL" -> {
|
||||
R.drawable.ic_check_circle_outline
|
||||
}
|
||||
4L -> {
|
||||
Pair(R.drawable.image_fail, R.string.assistant_screen_failed_task_text)
|
||||
"STATUS_FAILED" -> {
|
||||
R.drawable.image_fail
|
||||
}
|
||||
else -> {
|
||||
Pair(R.drawable.ic_unknown, R.string.assistant_screen_unknown_task_status_text)
|
||||
R.drawable.ic_unknown
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO add
|
||||
fun Task.completionDateRepresentation(): String {
|
||||
return completionExpectedAt ?: "TODO IMPLEMENT IT"
|
||||
@Suppress("MagicNumber")
|
||||
fun Task.getModifiedAtRepresentation(context: Context): String? {
|
||||
if (lastUpdated == null) {
|
||||
return null
|
||||
}
|
||||
|
||||
val modifiedAt = lastUpdated!!.toLong()
|
||||
val currentTime = System.currentTimeMillis() / 1000
|
||||
val timeDifference = (currentTime - modifiedAt).toInt()
|
||||
val timeDifferenceInMinutes = (timeDifference / 60)
|
||||
val timeDifferenceInHours = (timeDifference / 3600)
|
||||
|
||||
return when {
|
||||
timeDifference < 0 -> {
|
||||
context.getString(R.string.common_now)
|
||||
}
|
||||
|
||||
timeDifference < TimeUnit.MINUTES.toSeconds(1) -> {
|
||||
context.resources.getQuantityString(R.plurals.time_seconds_ago, timeDifference, timeDifference)
|
||||
}
|
||||
|
||||
timeDifference < TimeUnit.HOURS.toSeconds(1) -> {
|
||||
context.resources.getQuantityString(
|
||||
R.plurals.time_minutes_ago,
|
||||
timeDifferenceInMinutes,
|
||||
timeDifferenceInMinutes
|
||||
)
|
||||
}
|
||||
|
||||
timeDifference < TimeUnit.DAYS.toSeconds(1) -> {
|
||||
context.resources.getQuantityString(
|
||||
R.plurals.time_hours_ago,
|
||||
timeDifferenceInHours,
|
||||
timeDifferenceInHours
|
||||
)
|
||||
}
|
||||
|
||||
else -> {
|
||||
DateFormatter.timestampToDateRepresentation(modifiedAt, DateFormatPattern.MonthWithDate)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.nextcloud.client.assistant.model
|
||||
|
||||
import android.app.Activity
|
||||
import com.nextcloud.client.assistant.extensions.getInput
|
||||
import com.nextcloud.client.assistant.extensions.getInputAndOutput
|
||||
import com.nextcloud.utils.extensions.showShareIntent
|
||||
import com.owncloud.android.R
|
||||
import com.owncloud.android.lib.resources.assistant.model.Task
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
|
||||
import com.owncloud.android.utils.ClipboardUtil
|
||||
|
||||
sealed class ScreenOverlayState {
|
||||
data class DeleteTask(val id: Long) : ScreenOverlayState()
|
||||
data class AddTask(val taskType: TaskTypeData, val input: String) : ScreenOverlayState()
|
||||
data class TaskActions(val task: Task) : ScreenOverlayState() {
|
||||
private fun getInputAndOutput(): String = task.getInputAndOutput()
|
||||
private fun getInput(): String? = task.getInput()
|
||||
|
||||
private fun getCopyToClipboardAction(activity: Activity): Triple<Int, Int, () -> Unit> {
|
||||
return Triple(
|
||||
R.drawable.ic_content_copy,
|
||||
R.string.common_copy
|
||||
) {
|
||||
ClipboardUtil.copyToClipboard(activity, getInputAndOutput(), showToast = false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getShareAction(activity: Activity): Triple<Int, Int, () -> Unit> {
|
||||
return Triple(
|
||||
R.drawable.ic_share,
|
||||
R.string.common_share
|
||||
) {
|
||||
activity.showShareIntent(getInputAndOutput())
|
||||
}
|
||||
}
|
||||
|
||||
private fun getEditAction(activity: Activity, onComplete: (AddTask) -> Unit): Triple<Int, Int, () -> Unit> {
|
||||
return Triple(
|
||||
R.drawable.ic_edit,
|
||||
R.string.action_edit
|
||||
) {
|
||||
val taskType = TaskTypeData(
|
||||
task.type,
|
||||
activity.getString(R.string.assistant_screen_add_task_alert_dialog_title),
|
||||
null,
|
||||
null,
|
||||
null
|
||||
)
|
||||
val newState = AddTask(taskType, getInput() ?: "")
|
||||
onComplete(newState)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getDeleteAction(onComplete: (DeleteTask) -> Unit): Triple<Int, Int, () -> Unit> {
|
||||
return Triple(
|
||||
R.drawable.ic_delete,
|
||||
R.string.assistant_screen_task_more_actions_bottom_sheet_delete_action
|
||||
) {
|
||||
val newState = DeleteTask(task.id)
|
||||
onComplete(newState)
|
||||
}
|
||||
}
|
||||
|
||||
fun getActions(
|
||||
activity: Activity,
|
||||
onEditCompleted: (AddTask) -> Unit,
|
||||
onDeleteCompleted: (DeleteTask) -> Unit
|
||||
): List<Triple<Int, Int, () -> Unit>> {
|
||||
return listOf(
|
||||
getShareAction(activity),
|
||||
getCopyToClipboardAction(activity),
|
||||
getEditAction(activity, onComplete = {
|
||||
onEditCompleted(it)
|
||||
}),
|
||||
getDeleteAction(onComplete = {
|
||||
onDeleteCompleted(it)
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.nextcloud.client.assistant.model
|
||||
|
||||
enum class ScreenState {
|
||||
Refreshing,
|
||||
EmptyContent,
|
||||
Content
|
||||
}
|
|
@ -10,29 +10,24 @@ package com.nextcloud.client.assistant.repository
|
|||
import com.nextcloud.utils.extensions.getRandomString
|
||||
import com.owncloud.android.lib.common.operations.RemoteOperationResult
|
||||
import com.owncloud.android.lib.resources.assistant.model.Task
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskInput
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskList
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskType
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypes
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskOutput
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
class AssistantMockRepository(private val giveEmptyTasks: Boolean = false) : AssistantRepositoryType {
|
||||
override fun getTaskTypes(): RemoteOperationResult<TaskTypes> {
|
||||
return RemoteOperationResult<TaskTypes>(RemoteOperationResult.ResultCode.OK).apply {
|
||||
resultData = TaskTypes(
|
||||
listOf(
|
||||
TaskType("1", "FreePrompt", "You can create free prompt text"),
|
||||
TaskType("2", "Generate Headline", "You can create generate headline text")
|
||||
)
|
||||
)
|
||||
override fun getTaskTypes(): RemoteOperationResult<List<TaskTypeData>> {
|
||||
return RemoteOperationResult<List<TaskTypeData>>(RemoteOperationResult.ResultCode.OK).apply {
|
||||
resultData = null
|
||||
}
|
||||
}
|
||||
|
||||
override fun createTask(input: String, type: String): RemoteOperationResult<Void> {
|
||||
override fun createTask(input: String, taskType: TaskTypeData): RemoteOperationResult<Void> {
|
||||
return RemoteOperationResult<Void>(RemoteOperationResult.ResultCode.OK)
|
||||
}
|
||||
|
||||
@Suppress("LongMethod")
|
||||
override fun getTaskList(appId: String): RemoteOperationResult<TaskList> {
|
||||
override fun getTaskList(taskType: String): RemoteOperationResult<TaskList> {
|
||||
val taskList = if (giveEmptyTasks) {
|
||||
TaskList(listOf())
|
||||
} else {
|
||||
|
@ -44,75 +39,13 @@ class AssistantMockRepository(private val giveEmptyTasks: Boolean = false) : Ass
|
|||
null,
|
||||
"12",
|
||||
"",
|
||||
"Give me some long text 1",
|
||||
"Lorem ipsum".getRandomString(100),
|
||||
""
|
||||
),
|
||||
Task(
|
||||
2,
|
||||
"GenerateHeadline",
|
||||
null,
|
||||
"12",
|
||||
"",
|
||||
"Give me some text 2",
|
||||
"Lorem".getRandomString(100),
|
||||
"",
|
||||
""
|
||||
),
|
||||
Task(
|
||||
3,
|
||||
"FreePrompt",
|
||||
null,
|
||||
"12",
|
||||
"",
|
||||
"Give me some text 3",
|
||||
"Lorem".getRandomString(300),
|
||||
"",
|
||||
""
|
||||
),
|
||||
Task(
|
||||
4,
|
||||
"FreePrompt",
|
||||
null,
|
||||
"12",
|
||||
"",
|
||||
"Give me some text 4",
|
||||
"Lorem".getRandomString(300),
|
||||
"",
|
||||
""
|
||||
),
|
||||
Task(
|
||||
5,
|
||||
"FreePrompt",
|
||||
null,
|
||||
"12",
|
||||
"",
|
||||
"Give me some text 5",
|
||||
"Lorem".getRandomString(300),
|
||||
"",
|
||||
""
|
||||
),
|
||||
Task(
|
||||
6,
|
||||
"FreePrompt",
|
||||
null,
|
||||
"12",
|
||||
"",
|
||||
"Give me some text 6",
|
||||
"Lorem".getRandomString(300),
|
||||
"",
|
||||
""
|
||||
),
|
||||
Task(
|
||||
7,
|
||||
"FreePrompt",
|
||||
null,
|
||||
"12",
|
||||
"",
|
||||
"Give me some text 7",
|
||||
"Lorem".getRandomString(300),
|
||||
"",
|
||||
""
|
||||
TaskInput("Give me some long text 1"),
|
||||
TaskOutput("Lorem ipsum".getRandomString(100)),
|
||||
1707692337,
|
||||
1707692337,
|
||||
1707692337,
|
||||
1707692337,
|
||||
1707692337
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -14,20 +14,20 @@ import com.owncloud.android.lib.resources.assistant.DeleteTaskRemoteOperation
|
|||
import com.owncloud.android.lib.resources.assistant.GetTaskListRemoteOperation
|
||||
import com.owncloud.android.lib.resources.assistant.GetTaskTypesRemoteOperation
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskList
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypes
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
|
||||
|
||||
class AssistantRepository(private val client: NextcloudClient) : AssistantRepositoryType {
|
||||
|
||||
override fun getTaskTypes(): RemoteOperationResult<TaskTypes> {
|
||||
override fun getTaskTypes(): RemoteOperationResult<List<TaskTypeData>> {
|
||||
return GetTaskTypesRemoteOperation().execute(client)
|
||||
}
|
||||
|
||||
override fun createTask(input: String, type: String): RemoteOperationResult<Void> {
|
||||
return CreateTaskRemoteOperation(input, type).execute(client)
|
||||
override fun createTask(input: String, taskType: TaskTypeData): RemoteOperationResult<Void> {
|
||||
return CreateTaskRemoteOperation(input, taskType).execute(client)
|
||||
}
|
||||
|
||||
override fun getTaskList(appId: String): RemoteOperationResult<TaskList> {
|
||||
return GetTaskListRemoteOperation(appId).execute(client)
|
||||
override fun getTaskList(taskType: String): RemoteOperationResult<TaskList> {
|
||||
return GetTaskListRemoteOperation(taskType).execute(client)
|
||||
}
|
||||
|
||||
override fun deleteTask(id: Long): RemoteOperationResult<Void> {
|
||||
|
|
|
@ -9,14 +9,14 @@ package com.nextcloud.client.assistant.repository
|
|||
|
||||
import com.owncloud.android.lib.common.operations.RemoteOperationResult
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskList
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypes
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
|
||||
|
||||
interface AssistantRepositoryType {
|
||||
fun getTaskTypes(): RemoteOperationResult<TaskTypes>
|
||||
fun getTaskTypes(): RemoteOperationResult<List<TaskTypeData>>
|
||||
|
||||
fun createTask(input: String, type: String): RemoteOperationResult<Void>
|
||||
fun createTask(input: String, taskType: TaskTypeData): RemoteOperationResult<Void>
|
||||
|
||||
fun getTaskList(appId: String): RemoteOperationResult<TaskList>
|
||||
fun getTaskList(taskType: String): RemoteOperationResult<TaskList>
|
||||
|
||||
fun deleteTask(id: Long): RemoteOperationResult<Void>
|
||||
}
|
||||
|
|
|
@ -1,58 +0,0 @@
|
|||
/*
|
||||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
|
||||
package com.nextcloud.client.assistant.task
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.nextcloud.client.assistant.extensions.statusData
|
||||
import com.owncloud.android.lib.resources.assistant.model.Task
|
||||
|
||||
@Composable
|
||||
fun TaskStatus(task: Task, foregroundColor: Color) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 16.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
val (iconId, descriptionId) = task.statusData()
|
||||
|
||||
Image(
|
||||
painter = painterResource(id = iconId),
|
||||
modifier = Modifier.size(16.dp),
|
||||
colorFilter = ColorFilter.tint(foregroundColor),
|
||||
contentDescription = "status icon"
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.width(6.dp))
|
||||
|
||||
Text(text = stringResource(id = descriptionId), color = foregroundColor)
|
||||
|
||||
/*
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
|
||||
Text(text = task.completionDateRepresentation(), color = foregroundColor)
|
||||
|
||||
Spacer(modifier = Modifier.width(6.dp))
|
||||
*/
|
||||
}
|
||||
}
|
|
@ -0,0 +1,144 @@
|
|||
/*
|
||||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
|
||||
package com.nextcloud.client.assistant.task
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.nextcloud.client.assistant.extensions.getModifiedAtRepresentation
|
||||
import com.nextcloud.client.assistant.extensions.getStatusIcon
|
||||
import com.owncloud.android.lib.resources.assistant.model.Task
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskInput
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskOutput
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
@Composable
|
||||
fun TaskStatusView(task: Task, foregroundColor: Color) {
|
||||
val context = LocalContext.current
|
||||
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 16.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
val iconId = task.getStatusIcon()
|
||||
val description = task.getModifiedAtRepresentation(context)
|
||||
|
||||
Image(
|
||||
painter = painterResource(id = iconId),
|
||||
modifier = Modifier.size(16.dp),
|
||||
colorFilter = ColorFilter.tint(foregroundColor),
|
||||
contentDescription = "status icon"
|
||||
)
|
||||
|
||||
description?.let {
|
||||
Spacer(modifier = Modifier.width(6.dp))
|
||||
Text(text = description, color = foregroundColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("LongMethod", "MagicNumber")
|
||||
@Composable
|
||||
@Preview
|
||||
private fun TaskStatusViewPreview() {
|
||||
val currentTime = System.currentTimeMillis() / 1000
|
||||
|
||||
val tasks = listOf(
|
||||
Task(
|
||||
id = 1L,
|
||||
type = "type1",
|
||||
status = "STATUS_RUNNING",
|
||||
userId = "user1",
|
||||
appId = "app1",
|
||||
input = TaskInput("input1"),
|
||||
output = TaskOutput("output1"),
|
||||
scheduledAt = currentTime.toInt(),
|
||||
lastUpdated = currentTime.toInt()
|
||||
),
|
||||
|
||||
Task(
|
||||
id = 2L,
|
||||
type = "type2",
|
||||
status = "STATUS_SUCCESSFUL",
|
||||
userId = "user2",
|
||||
appId = "app2",
|
||||
input = TaskInput("input2"),
|
||||
output = TaskOutput("output2"),
|
||||
lastUpdated = (currentTime - TimeUnit.MINUTES.toSeconds(5)).toInt()
|
||||
),
|
||||
|
||||
Task(
|
||||
id = 3L,
|
||||
type = "type3",
|
||||
status = "STATUS_RUNNING",
|
||||
userId = "user3",
|
||||
appId = "app3",
|
||||
input = TaskInput("input3"),
|
||||
output = TaskOutput("output3"),
|
||||
lastUpdated = (currentTime - TimeUnit.HOURS.toSeconds(5)).toInt()
|
||||
),
|
||||
|
||||
Task(
|
||||
id = 4L,
|
||||
type = "type4",
|
||||
status = "STATUS_SUCCESSFUL",
|
||||
userId = "user4",
|
||||
appId = "app4",
|
||||
input = TaskInput("input4"),
|
||||
output = TaskOutput("output4"),
|
||||
lastUpdated = (currentTime - TimeUnit.DAYS.toSeconds(5)).toInt()
|
||||
),
|
||||
|
||||
Task(
|
||||
id = 5L,
|
||||
type = "type5",
|
||||
status = "STATUS_SUCCESSFUL",
|
||||
userId = "user5",
|
||||
appId = "app5",
|
||||
input = TaskInput("input5"),
|
||||
output = TaskOutput("output5"),
|
||||
lastUpdated = (currentTime - TimeUnit.DAYS.toSeconds(60)).toInt()
|
||||
),
|
||||
|
||||
Task(
|
||||
id = 7L,
|
||||
type = "type7",
|
||||
status = "STATUS_UNKNOWN",
|
||||
userId = "user7",
|
||||
appId = "app7",
|
||||
input = TaskInput("input7"),
|
||||
output = TaskOutput("output7"),
|
||||
scheduledAt = null,
|
||||
lastUpdated = null
|
||||
)
|
||||
)
|
||||
|
||||
LazyColumn {
|
||||
items(tasks) {
|
||||
TaskStatusView(it, foregroundColor = Color.White)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,107 +9,116 @@ package com.nextcloud.client.assistant.task
|
|||
import androidx.compose.animation.animateContentSize
|
||||
import androidx.compose.animation.core.Spring
|
||||
import androidx.compose.animation.core.spring
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.combinedClickable
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
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.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.MoreVert
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
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.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.nextcloud.client.assistant.taskDetail.TaskDetailBottomSheet
|
||||
import com.nextcloud.ui.composeComponents.bottomSheet.MoreActionsBottomSheet
|
||||
import com.nextcloud.utils.extensions.getRandomString
|
||||
import com.owncloud.android.R
|
||||
import com.owncloud.android.lib.resources.assistant.model.Task
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskInput
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskOutput
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
@Suppress("LongMethod", "MagicNumber")
|
||||
@Composable
|
||||
fun TaskView(task: Task, showDeleteTaskAlertDialog: (Long) -> Unit) {
|
||||
fun TaskView(task: Task, showTaskActions: () -> Unit) {
|
||||
var showTaskDetailBottomSheet by remember { mutableStateOf(false) }
|
||||
var showMoreActionsBottomSheet by remember { mutableStateOf(false) }
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.clip(RoundedCornerShape(16.dp))
|
||||
.background(MaterialTheme.colorScheme.primary)
|
||||
.combinedClickable(onClick = {
|
||||
showTaskDetailBottomSheet = true
|
||||
}, onLongClick = {
|
||||
showMoreActionsBottomSheet = true
|
||||
})
|
||||
.padding(start = 8.dp)
|
||||
) {
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
task.input?.let {
|
||||
Text(
|
||||
text = it,
|
||||
color = Color.White,
|
||||
fontSize = 18.sp
|
||||
)
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
|
||||
task.output?.let {
|
||||
HorizontalDivider(modifier = Modifier.padding(horizontal = 4.dp, vertical = 8.dp))
|
||||
|
||||
Text(
|
||||
text = it.take(100),
|
||||
fontSize = 12.sp,
|
||||
color = Color.White,
|
||||
modifier = Modifier
|
||||
.height(100.dp)
|
||||
.animateContentSize(
|
||||
animationSpec = spring(
|
||||
dampingRatio = Spring.DampingRatioLowBouncy,
|
||||
stiffness = Spring.StiffnessLow
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
TaskStatus(task, foregroundColor = Color.White)
|
||||
|
||||
if (showMoreActionsBottomSheet) {
|
||||
val bottomSheetAction = listOf(
|
||||
Triple(
|
||||
R.drawable.ic_delete,
|
||||
R.string.assistant_screen_task_more_actions_bottom_sheet_delete_action
|
||||
) {
|
||||
showDeleteTaskAlertDialog(task.id)
|
||||
Box {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.clip(RoundedCornerShape(8.dp))
|
||||
.background(colorResource(R.color.primary))
|
||||
.clickable {
|
||||
showTaskDetailBottomSheet = true
|
||||
}
|
||||
)
|
||||
.padding(16.dp)
|
||||
) {
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
MoreActionsBottomSheet(
|
||||
title = task.input,
|
||||
actions = bottomSheetAction,
|
||||
dismiss = { showMoreActionsBottomSheet = false }
|
||||
)
|
||||
task.input?.input?.let {
|
||||
Text(
|
||||
text = it,
|
||||
color = Color.White,
|
||||
fontSize = 18.sp,
|
||||
textAlign = TextAlign.Left,
|
||||
fontWeight = FontWeight.Bold,
|
||||
modifier = Modifier.width(300.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(12.dp))
|
||||
|
||||
task.output?.output?.let {
|
||||
val output = if (it.length >= 100) {
|
||||
it.take(100) + "..."
|
||||
} else {
|
||||
it
|
||||
}
|
||||
|
||||
Text(
|
||||
text = output,
|
||||
fontSize = 18.sp,
|
||||
color = Color.White,
|
||||
textAlign = TextAlign.Left,
|
||||
modifier = Modifier
|
||||
.animateContentSize(
|
||||
animationSpec = spring(
|
||||
dampingRatio = Spring.DampingRatioLowBouncy,
|
||||
stiffness = Spring.StiffnessLow
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
TaskStatusView(task, foregroundColor = Color.White)
|
||||
|
||||
if (showTaskDetailBottomSheet) {
|
||||
TaskDetailBottomSheet(task, showTaskActions = {
|
||||
showTaskDetailBottomSheet = false
|
||||
showTaskActions()
|
||||
}) {
|
||||
showTaskDetailBottomSheet = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (showTaskDetailBottomSheet) {
|
||||
TaskDetailBottomSheet(task) {
|
||||
showTaskDetailBottomSheet = false
|
||||
}
|
||||
IconButton(
|
||||
modifier = Modifier.align(Alignment.TopEnd),
|
||||
onClick = showTaskActions
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Filled.MoreVert,
|
||||
contentDescription = "More button",
|
||||
tint = Color.White
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -118,20 +127,25 @@ fun TaskView(task: Task, showDeleteTaskAlertDialog: (Long) -> Unit) {
|
|||
@Preview
|
||||
@Composable
|
||||
private fun TaskViewPreview() {
|
||||
val output = "Lorem".getRandomString(100)
|
||||
|
||||
TaskView(
|
||||
task = Task(
|
||||
1,
|
||||
"Free Prompt",
|
||||
0,
|
||||
"STATUS_COMPLETED",
|
||||
"1",
|
||||
"1",
|
||||
"Give me text",
|
||||
output,
|
||||
"",
|
||||
""
|
||||
)
|
||||
) {
|
||||
}
|
||||
TaskInput("What about other promising tokens like"),
|
||||
TaskOutput(
|
||||
"Several tokens show promise for future growth in the" +
|
||||
"cryptocurrency market"
|
||||
),
|
||||
1707692337,
|
||||
1707692337,
|
||||
1707692337,
|
||||
1707692337,
|
||||
1707692337
|
||||
),
|
||||
showTaskActions = {
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
|
@ -22,9 +22,13 @@ import androidx.compose.foundation.layout.padding
|
|||
import androidx.compose.foundation.layout.widthIn
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.MoreVert
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.ModalBottomSheet
|
||||
import androidx.compose.material3.Text
|
||||
|
@ -40,31 +44,53 @@ import androidx.compose.ui.res.stringResource
|
|||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.nextcloud.client.assistant.task.TaskStatus
|
||||
import com.nextcloud.client.assistant.task.TaskStatusView
|
||||
import com.nextcloud.utils.extensions.getRandomString
|
||||
import com.owncloud.android.R
|
||||
import com.owncloud.android.lib.resources.assistant.model.Task
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskInput
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskOutput
|
||||
|
||||
@Suppress("LongMethod")
|
||||
@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun TaskDetailBottomSheet(task: Task, dismiss: () -> Unit) {
|
||||
fun TaskDetailBottomSheet(task: Task, showTaskActions: () -> Unit, dismiss: () -> Unit) {
|
||||
var showInput by remember { mutableStateOf(true) }
|
||||
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
|
||||
|
||||
ModalBottomSheet(
|
||||
modifier = Modifier.padding(top = 32.dp),
|
||||
containerColor = MaterialTheme.colorScheme.surface,
|
||||
containerColor = colorResource(R.color.bg_default),
|
||||
onDismissRequest = { dismiss() },
|
||||
sheetState = sheetState
|
||||
) {
|
||||
LazyColumn(modifier = Modifier.fillMaxSize().padding(16.dp)) {
|
||||
LazyColumn(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(16.dp)
|
||||
) {
|
||||
stickyHeader {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth().background(
|
||||
color = colorResource(id = R.color.light_grey),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
|
||||
IconButton(onClick = showTaskActions) {
|
||||
Icon(
|
||||
imageVector = Icons.Filled.MoreVert,
|
||||
contentDescription = "More button",
|
||||
tint = colorResource(R.color.text_color)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.background(
|
||||
color = colorResource(id = R.color.light_grey),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
) {
|
||||
TextInputSelectButton(
|
||||
Modifier.weight(1f),
|
||||
|
@ -90,16 +116,19 @@ fun TaskDetailBottomSheet(task: Task, dismiss: () -> Unit) {
|
|||
Spacer(modifier = Modifier.height(16.dp))
|
||||
|
||||
Column(
|
||||
modifier = Modifier.fillMaxSize().background(
|
||||
color = MaterialTheme.colorScheme.secondaryContainer,
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
).padding(16.dp)
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.background(
|
||||
color = MaterialTheme.colorScheme.secondaryContainer,
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
.padding(16.dp)
|
||||
) {
|
||||
Text(
|
||||
text = if (showInput) {
|
||||
task.input ?: ""
|
||||
task.input?.input ?: ""
|
||||
} else {
|
||||
task.output ?: stringResource(R.string.assistant_screen_task_output_empty_text)
|
||||
task.output?.output ?: stringResource(R.string.assistant_screen_task_output_empty_text)
|
||||
},
|
||||
fontSize = 12.sp,
|
||||
color = MaterialTheme.colorScheme.onPrimaryContainer,
|
||||
|
@ -113,7 +142,7 @@ fun TaskDetailBottomSheet(task: Task, dismiss: () -> Unit) {
|
|||
)
|
||||
}
|
||||
|
||||
TaskStatus(task, foregroundColor = MaterialTheme.colorScheme.onPrimaryContainer)
|
||||
TaskStatusView(task, foregroundColor = colorResource(R.color.text_color))
|
||||
|
||||
Spacer(modifier = Modifier.height(32.dp))
|
||||
}
|
||||
|
@ -147,14 +176,19 @@ private fun TaskDetailScreenPreview() {
|
|||
task = Task(
|
||||
1,
|
||||
"Free Prompt",
|
||||
0,
|
||||
null,
|
||||
"1",
|
||||
"1",
|
||||
"Give me text".getRandomString(100),
|
||||
"output".getRandomString(300),
|
||||
"",
|
||||
""
|
||||
)
|
||||
TaskInput("Give me text".getRandomString(100)),
|
||||
TaskOutput("output".getRandomString(300)),
|
||||
1707692337,
|
||||
1707692337,
|
||||
1707692337,
|
||||
1707692337,
|
||||
1707692337
|
||||
),
|
||||
showTaskActions = {
|
||||
}
|
||||
) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,45 +7,60 @@
|
|||
*/
|
||||
package com.nextcloud.client.assistant.taskTypes
|
||||
|
||||
import androidx.compose.foundation.horizontalScroll
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.FilledTonalButton
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.compose.material3.ScrollableTabRow
|
||||
import androidx.compose.material3.Tab
|
||||
import androidx.compose.material3.TabRowDefaults
|
||||
import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskType
|
||||
import com.owncloud.android.R
|
||||
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
|
||||
|
||||
@SuppressLint("ResourceType")
|
||||
@Composable
|
||||
fun TaskTypesRow(selectedTaskType: TaskType?, data: List<TaskType>?, selectTaskType: (TaskType) -> Unit) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.horizontalScroll(rememberScrollState())
|
||||
) {
|
||||
data?.forEach { taskType ->
|
||||
taskType.name?.let { taskTypeName ->
|
||||
FilledTonalButton(
|
||||
onClick = { selectTaskType(taskType) },
|
||||
colors = ButtonDefaults.buttonColors(
|
||||
containerColor = if (selectedTaskType?.id == taskType.id) {
|
||||
Color.Unspecified
|
||||
} else {
|
||||
Color.Gray
|
||||
}
|
||||
)
|
||||
) {
|
||||
Text(text = taskTypeName)
|
||||
}
|
||||
fun TaskTypesRow(selectedTaskType: TaskTypeData?, data: List<TaskTypeData>, selectTaskType: (TaskTypeData) -> Unit) {
|
||||
val selectedTabIndex = data.indexOfFirst { it.id == selectedTaskType?.id }.takeIf { it >= 0 } ?: 0
|
||||
|
||||
Spacer(modifier = Modifier.padding(end = 8.dp))
|
||||
ScrollableTabRow(
|
||||
selectedTabIndex = selectedTabIndex,
|
||||
edgePadding = 0.dp,
|
||||
containerColor = colorResource(R.color.actionbar_color),
|
||||
indicator = {
|
||||
TabRowDefaults.SecondaryIndicator(
|
||||
Modifier.tabIndicatorOffset(it[selectedTabIndex]),
|
||||
color = colorResource(R.color.primary)
|
||||
)
|
||||
}
|
||||
) {
|
||||
data.forEach { taskType ->
|
||||
taskType.name?.let { taskTypeName ->
|
||||
Tab(
|
||||
selected = selectedTaskType?.id == taskType.id,
|
||||
onClick = { selectTaskType(taskType) },
|
||||
selectedContentColor = colorResource(R.color.text_color),
|
||||
unselectedContentColor = colorResource(R.color.disabled_text),
|
||||
text = { Text(text = taskTypeName) }
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
@Preview
|
||||
private fun TaskTypesRowPreview() {
|
||||
val selectedTaskType = TaskTypeData("1", "Free text to text prompt", "", null, null)
|
||||
val taskTypes = listOf(
|
||||
TaskTypeData("1", "Free text to text prompt", "", null, null),
|
||||
TaskTypeData("2", "Extract topics", "", null, null),
|
||||
TaskTypeData("3", "Generate Headline", "", null, null),
|
||||
TaskTypeData("4", "Summarize", "", null, null)
|
||||
)
|
||||
|
||||
TaskTypesRow(selectedTaskType, taskTypes) { }
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ import com.owncloud.android.lib.common.utils.Log_OC
|
|||
import com.owncloud.android.ui.activity.DrawerActivity
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
class ComposeActivity : DrawerActivity() {
|
||||
|
||||
|
@ -88,8 +87,7 @@ class ComposeActivity : DrawerActivity() {
|
|||
nextcloudClient?.let { client ->
|
||||
AssistantScreen(
|
||||
viewModel = AssistantViewModel(
|
||||
repository = AssistantRepository(client),
|
||||
context = WeakReference(this)
|
||||
repository = AssistantRepository(client)
|
||||
),
|
||||
activity = this
|
||||
)
|
||||
|
|
|
@ -43,6 +43,7 @@ fun MoreActionsBottomSheet(title: String? = null, actions: List<Triple<Int, Int,
|
|||
|
||||
ModalBottomSheet(
|
||||
modifier = Modifier.padding(top = 32.dp),
|
||||
containerColor = colorScheme.surface,
|
||||
onDismissRequest = {
|
||||
dismiss()
|
||||
},
|
||||
|
@ -72,8 +73,8 @@ fun MoreActionsBottomSheet(title: String? = null, actions: List<Triple<Int, Int,
|
|||
.launch { sheetState.hide() }
|
||||
.invokeOnCompletion {
|
||||
if (!sheetState.isVisible) {
|
||||
action.third()
|
||||
dismiss()
|
||||
action.third()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,12 @@ package com.nextcloud.utils.date
|
|||
|
||||
enum class DateFormatPattern(val pattern: String) {
|
||||
/**
|
||||
* e.g. 10.11.2024 - 12:44
|
||||
* 10.11.2024 - 12:44
|
||||
*/
|
||||
FullDateWithHours("dd.MM.yyyy - HH:mm")
|
||||
FullDateWithHours("dd.MM.yyyy - HH:mm"),
|
||||
|
||||
/**
|
||||
* Aug 3
|
||||
*/
|
||||
MonthWithDate("MMM d")
|
||||
}
|
||||
|
|
26
app/src/main/java/com/nextcloud/utils/date/DateFormatter.kt
Normal file
26
app/src/main/java/com/nextcloud/utils/date/DateFormatter.kt
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.nextcloud.utils.date
|
||||
|
||||
import android.icu.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
|
||||
object DateFormatter {
|
||||
|
||||
/**
|
||||
* Converts a Unix timestamp (in milliseconds) into a formatted date string.
|
||||
* For example, input 1733309160885 with "MMM d" pattern outputs "Dec 4".
|
||||
*/
|
||||
@Suppress("MagicNumber")
|
||||
fun timestampToDateRepresentation(timestamp: Long, formatPattern: DateFormatPattern): String {
|
||||
val date = Date(timestamp * 1000)
|
||||
val format = SimpleDateFormat(formatPattern.pattern, Locale.getDefault())
|
||||
return format.format(date)
|
||||
}
|
||||
}
|
|
@ -7,6 +7,8 @@
|
|||
|
||||
package com.nextcloud.utils.extensions
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.fragment.app.Fragment
|
||||
|
||||
|
@ -17,3 +19,13 @@ fun AppCompatActivity.isActive(): Boolean = !isFinishing && !isDestroyed
|
|||
fun AppCompatActivity.fragments(): List<Fragment> = supportFragmentManager.fragments
|
||||
|
||||
fun AppCompatActivity.lastFragment(): Fragment = fragments().last()
|
||||
|
||||
fun Activity.showShareIntent(text: String?) {
|
||||
val sendIntent = Intent(Intent.ACTION_SEND).apply {
|
||||
putExtra(Intent.EXTRA_TEXT, text)
|
||||
type = "text/plain"
|
||||
}
|
||||
|
||||
val shareIntent = Intent.createChooser(sendIntent, null)
|
||||
startActivity(shareIntent)
|
||||
}
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
<!--
|
||||
~ Nextcloud - Android Client
|
||||
~
|
||||
~ SPDX-FileCopyrightText: 2018-2024 Google LLC
|
||||
~ SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M440,680h80v-240h-80v240ZM480,360q17,0 28.5,-11.5T520,320q0,-17 -11.5,-28.5T480,280q-17,0 -28.5,11.5T440,320q0,17 11.5,28.5T480,360ZM480,880q-83,0 -156,-31.5T197,763q-54,-54 -85.5,-127T80,480q0,-83 31.5,-156T197,197q54,-54 127,-85.5T480,80q83,0 156,31.5T763,197q54,54 85.5,127T880,480q0,83 -31.5,156T763,763q-54,54 -127,85.5T480,880Z" />
|
||||
</vector>
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">منفذ البروكسي</string>
|
||||
<string name="app_widget_description">عرض أداة واحدة من لوحة القيادة</string>
|
||||
<string name="appbar_search_in">بحث في %s</string>
|
||||
<string name="assistant_screen_all_task_type">الكل</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">أكتُب أيَّ نص</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">هل أنت متأكد أنك ترغب بحذف هذه المهمة؟</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">حذف مهمة</string>
|
||||
<string name="assistant_screen_failed_task_text">فشل</string>
|
||||
<string name="assistant_screen_loading">يتم الآن تحميل قائمة المهام؛ يرجى الانتظار...</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">لا توجد أي مهام متوفرة. حدِّد نوع المهمة لإنشاء واحدة جديدة.</string>
|
||||
<string name="assistant_screen_no_task_available_text">لا توجد أي مهام متوفرة من النوع %s. يمكنك إنشاء مهمة جديدة من الشريط السفلي الجانبي.</string>
|
||||
<string name="assistant_screen_running_task_text">قيد التجهيز</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">مُجدول</string>
|
||||
<string name="assistant_screen_successful_task_text">مُكتمل</string>
|
||||
<string name="assistant_screen_task_create_fail_message">حدث خطأ أثناء إنشاء المهمة</string>
|
||||
<string name="assistant_screen_task_create_success_message">تمّ إنشاء المهمة بنجاح</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">حدث خطأ أثناء حذف المهمة</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">نتيجة المهمة غير جاهة بعدُ.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">تعذّر جلب أنواع المهام. قم رجاءً بالتحقُّق من اتصالك بالإنترنت.</string>
|
||||
<string name="assistant_screen_top_bar_title">المُساعِد</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">غير معروف</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">مُدخَلات</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">المُخرَجَات</string>
|
||||
<string name="associated_account_not_found">الحساب المرتبط غير موجود!</string>
|
||||
|
|
|
@ -24,15 +24,10 @@
|
|||
<string name="app_config_base_url_title">URL base</string>
|
||||
<string name="app_config_proxy_port_title">Puertu del proxy</string>
|
||||
<string name="appbar_search_in">Buscar en: %s</string>
|
||||
<string name="assistant_screen_all_task_type">Too</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escribi daqué</string>
|
||||
<string name="assistant_screen_failed_task_text">Falló</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Planificóse</string>
|
||||
<string name="assistant_screen_successful_task_text">Completóse</string>
|
||||
<string name="assistant_screen_task_list_error_state_message">Nun ye posible dir en cata de la llista de xeres. Comprueba la conexón a internet.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Nun ye posible dir en cata de los tipos de xeres. Comprueba la conexón a internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asistente</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconocíu</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
|
||||
<string name="auth_account_not_new">Yá esiste nel preséu una cuenta pal mesmu usuariu y sirvidor</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Proxy Port</string>
|
||||
<string name="app_widget_description">Shows one widget from dashboard</string>
|
||||
<string name="appbar_search_in">Search in %s</string>
|
||||
<string name="assistant_screen_all_task_type">All</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Type some text</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Are you sure you want to delete this task?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Delete Task</string>
|
||||
<string name="assistant_screen_failed_task_text">Failed</string>
|
||||
<string name="assistant_screen_loading">Task List are loading, please wait</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No task available. Select a task type to create a new task.</string>
|
||||
<string name="assistant_screen_no_task_available_text">No task available for %s task type, you can create a new task from bottom right.</string>
|
||||
<string name="assistant_screen_running_task_text">In Progress</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Scheduled</string>
|
||||
<string name="assistant_screen_successful_task_text">Completed</string>
|
||||
<string name="assistant_screen_task_create_fail_message">An error occurred while creating the task</string>
|
||||
<string name="assistant_screen_task_create_success_message">Task successfully created</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">An error occurred while deleting the task</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">The task output is not ready yet.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Unable to fetch task types, please check your internet connection.</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistant</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Unknown</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Input</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Output</string>
|
||||
<string name="associated_account_not_found">Associated account not found!</string>
|
||||
|
|
|
@ -36,12 +36,7 @@
|
|||
<string name="app_config_proxy_port_title">Порт на прокси сървъра</string>
|
||||
<string name="app_widget_description">Показва един изпълним модул от таблото за управление</string>
|
||||
<string name="appbar_search_in">Търсене в %s</string>
|
||||
<string name="assistant_screen_all_task_type">Всички</string>
|
||||
<string name="assistant_screen_failed_task_text">Неуспешно</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Планирано</string>
|
||||
<string name="assistant_screen_successful_task_text">Завършен</string>
|
||||
<string name="assistant_screen_task_delete_success_message">Задачата е успешно изтрита</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Неизвестен</string>
|
||||
<string name="associated_account_not_found">Свързания профил не е намерен!</string>
|
||||
<string name="auth_access_failed">Достъп неуспешен: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Профилът все още не съществува на устройството</string>
|
||||
|
|
|
@ -37,17 +37,11 @@
|
|||
<string name="app_config_proxy_port_title">Porzh Proksi</string>
|
||||
<string name="app_widget_description">Diskouez a ra ur widget dre daolenn-vourzh</string>
|
||||
<string name="appbar_search_in">Klask e %s</string>
|
||||
<string name="assistant_screen_all_task_type">Pep tra</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Skrivañ un tamm testenn</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Ha sur oc\'h e fell deoc\'h dilemel an trevell-mañ ?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Dilemel an trevell</string>
|
||||
<string name="assistant_screen_failed_task_text">C\'hwitet</string>
|
||||
<string name="assistant_screen_loading">O kargañ roll an trevelloù, gortozit ur pennadig</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">N\'eus trevell ebet evit c\'hoazh. Diuzit ur seurt trevell evit krouiñ unan nevez.</string>
|
||||
<string name="assistant_screen_no_task_available_text">N\'eus trevell ebet evit %s seurt trevell, gallout a rit krouiñ unan nevez en traoñ a-zehoùt.</string>
|
||||
<string name="assistant_screen_running_task_text">War ar stern</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Raktreset</string>
|
||||
<string name="assistant_screen_successful_task_text">Echu</string>
|
||||
<string name="assistant_screen_task_create_fail_message">C\'hoarvezet ez eus ur fazi en ur grouiñ an trevell</string>
|
||||
<string name="assistant_screen_task_create_success_message">Trevell bet krouet ervat</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">C\'hoarvezet ez eus ur fazi en ur zilemel an trevell</string>
|
||||
|
@ -56,7 +50,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Dilemel an trevell</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">N\'eus ket bet gallet tizhout ar seurtoù trevelloù, gwiriit ho kevreadenn genrouedad.</string>
|
||||
<string name="assistant_screen_top_bar_title">Skoazeller</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Dianv</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Enmont</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Ezvont</string>
|
||||
<string name="associated_account_not_found">N\'eo ket bet kavet ar gont stag !</string>
|
||||
|
|
|
@ -45,17 +45,11 @@
|
|||
<string name="app_config_proxy_port_title">Port del proxy</string>
|
||||
<string name="app_widget_description">Mostra un giny del tauler</string>
|
||||
<string name="appbar_search_in">Cerca a %s</string>
|
||||
<string name="assistant_screen_all_task_type">Totes</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriu una mica de text</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Segur que voleu suprimir aquesta tasca?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Suprimeix la tasca</string>
|
||||
<string name="assistant_screen_failed_task_text">Ha fallat</string>
|
||||
<string name="assistant_screen_loading">S\'està carregant la llista de tasques, espereu</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hi ha cap tasca disponible. Seleccioneu un tipus de tasca per a crear una tasca nova.</string>
|
||||
<string name="assistant_screen_no_task_available_text">No hi ha cap tasca disponible per al tipus de tasca %s. Podeu crear una tasca nova des de baix a la dreta.</string>
|
||||
<string name="assistant_screen_running_task_text">En curs</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Planificat</string>
|
||||
<string name="assistant_screen_successful_task_text">S\'ha completat</string>
|
||||
<string name="assistant_screen_task_create_fail_message">S\'ha produït un error en crear la tasca</string>
|
||||
<string name="assistant_screen_task_create_success_message">La tasca s\'ha creat correctament</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">S\'ha produït un error en suprimir la tasca</string>
|
||||
|
@ -65,7 +59,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">La sortida de la tasca encara no està a punt.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">No s\'han pogut obtenir els tipus de tasques. Comproveu la connexió a Internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconegut</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Sortida</string>
|
||||
<string name="associated_account_not_found">No s\'ha trobat el compte associat!</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Port proxy</string>
|
||||
<string name="app_widget_description">Zobrazuje jeden ovládací prvek z nástěnky</string>
|
||||
<string name="appbar_search_in">Hledat v %s</string>
|
||||
<string name="assistant_screen_all_task_type">Vše</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Zadejte nějaký text</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Opravdu chcete tuto úlohu smazat?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Smazat úkol</string>
|
||||
<string name="assistant_screen_failed_task_text">Nezdařilo se</string>
|
||||
<string name="assistant_screen_loading">Načítá se seznam úkolů – vyčkejte</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Není k dispozici žádný úkol. Aby bylo možné vytvořit nový úkol, vyberte jeho typ.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Pro typ úkolu %s nejsou k dispozici žádné úkoly – nový úkol je možné vytvořit vpravo dole.</string>
|
||||
<string name="assistant_screen_running_task_text">Probíhá</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Naplánováno</string>
|
||||
<string name="assistant_screen_successful_task_text">Dokončeno</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Při vytváření úlohy se vyskytla chyba</string>
|
||||
<string name="assistant_screen_task_create_success_message">Úloha byla úspěšně vytvořena</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Při mazání úlohy se vyskytla chyba</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Výstup z úkolu ještě není připraven.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Nedaří se získat typy úloh – zkontrolujte připojení k Internetu.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asistent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Neznámé</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Vstup</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Výstup</string>
|
||||
<string name="associated_account_not_found">Související účet nenalezen!</string>
|
||||
|
|
|
@ -36,21 +36,15 @@
|
|||
<string name="allow_resharing">Tillad videredeling</string>
|
||||
<string name="app_widget_description">Viser én widget fra dashboard</string>
|
||||
<string name="appbar_search_in">Søg i %s</string>
|
||||
<string name="assistant_screen_all_task_type">Alle</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Skriv noget tekst</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Er du sikker på du vil slette denne opgave?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Slet opgave</string>
|
||||
<string name="assistant_screen_failed_task_text">Mislykkede</string>
|
||||
<string name="assistant_screen_loading">Opgavelisten indlæser, vent venligst</string>
|
||||
<string name="assistant_screen_running_task_text">I gang</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Planlagt</string>
|
||||
<string name="assistant_screen_successful_task_text">Fuldført</string>
|
||||
<string name="assistant_screen_task_create_success_message">Opgaven er oprettet</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">En fejl opstod under sletning af opgaven</string>
|
||||
<string name="assistant_screen_task_delete_success_message">Opgaven er slettet</string>
|
||||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Slet opgave</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Ukendt</string>
|
||||
<string name="associated_account_not_found">Forbundet konto blev ikke fundet!</string>
|
||||
<string name="auth_access_failed">Adgang fejlede: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Kontoen findes endnu ikke på enheden</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Proxy-Port</string>
|
||||
<string name="app_widget_description">Zeigt ein Widget aus dem Dashboard an</string>
|
||||
<string name="appbar_search_in">Suche in %s</string>
|
||||
<string name="assistant_screen_all_task_type">Alle</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Bitte einen Text eingeben</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Möchten Sie diese Aufgabe wirklich löschen?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Aufgabe löschen</string>
|
||||
<string name="assistant_screen_failed_task_text">Fehlgeschlagen</string>
|
||||
<string name="assistant_screen_loading">Aufgabenlisten werden geladen, bitte warten</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Keine Aufgabe verfügbar. Aufgabentyp auswählen, um eine neue Aufgabe zu erstellen.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Für den Aufgabentyp %s ist keine Aufgabe verfügbar. Sie können unten rechts eine neue Aufgabe erstellen.</string>
|
||||
<string name="assistant_screen_running_task_text">In Bearbeitung</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Geplant</string>
|
||||
<string name="assistant_screen_successful_task_text">Fertiggestellt</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Es ist ein Fehler beim Erstellen der Aufgabe aufgetreten</string>
|
||||
<string name="assistant_screen_task_create_success_message">Aufgabe erfolgreich erstellt</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Es ist ein Fehler beim Löschen der Aufgabe aufgetreten</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Die Aufgabenausgabe ist noch nicht fertig.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Die Aufgabentypen können nicht abgerufen werden. Bitte überprüfen Sie Ihre Internetverbindung.</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Unbekannt</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Eingabe</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Ausgabe</string>
|
||||
<string name="associated_account_not_found">Verknüpftes Konto nicht gefunden!</string>
|
||||
|
|
|
@ -35,11 +35,7 @@
|
|||
<string name="app_config_proxy_port_title">Θύρα διαμεσολαβητή</string>
|
||||
<string name="app_widget_description">Εμφάνιση ενός γραφικού στοιχείου από τον πίνακα ελέγχου</string>
|
||||
<string name="appbar_search_in">Αναζήτηση στο %s</string>
|
||||
<string name="assistant_screen_all_task_type">\'Ολα</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Πληκτρολογήστε κάποιο κείμενο</string>
|
||||
<string name="assistant_screen_failed_task_text">Απέτυχε</string>
|
||||
<string name="assistant_screen_successful_task_text">Ολοκληρωμένες</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Άγνωστο</string>
|
||||
<string name="associated_account_not_found">Δεν βρέθηκε ο συνδεδεμένος λογαριασμός!</string>
|
||||
<string name="auth_access_failed">Αποτυχία πρόσβασης: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Ο λογαριασμός δεν υπάρχει ακόμα στη συσκευή</string>
|
||||
|
|
|
@ -31,9 +31,6 @@
|
|||
<string name="advanced_settings">Detalaj agordoj</string>
|
||||
<string name="allow_resharing">Permesi rekunhavigon</string>
|
||||
<string name="appbar_search_in">Serĉi en 1%s</string>
|
||||
<string name="assistant_screen_all_task_type">Ĉiuj</string>
|
||||
<string name="assistant_screen_successful_task_text">Plenumita</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Nekonata</string>
|
||||
<string name="auth_access_failed">Aliro malsukcesis: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">La konto ankoraŭ ne aldoniĝis al tiu ĉi aparato</string>
|
||||
<string name="auth_account_not_new">Konto pri samaj uzanto kaj servilo jam ekzistas tiuaparate</string>
|
||||
|
|
|
@ -37,17 +37,11 @@
|
|||
<string name="app_config_proxy_port_title">Puerto del Proxy</string>
|
||||
<string name="app_widget_description">Muestra un widget del panel</string>
|
||||
<string name="appbar_search_in">Buscar en %s</string>
|
||||
<string name="assistant_screen_all_task_type">Todos</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriba un texto</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">¿Está seguro que desea eliminar esta tarea?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Eliminar tarea</string>
|
||||
<string name="assistant_screen_failed_task_text">Error</string>
|
||||
<string name="assistant_screen_loading">Las listas de tareas están cargando, por favor espere</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hay tareas disponibles. Seleccione un tipo de tarea para crear una nueva.</string>
|
||||
<string name="assistant_screen_no_task_available_text">No hay tareas del tipo %s, puede crear una nueva tarea desde la parte inferior derecha</string>
|
||||
<string name="assistant_screen_running_task_text">En progreso</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
|
||||
<string name="assistant_screen_successful_task_text">Completado</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Ocurrió un error al crear la tarea</string>
|
||||
<string name="assistant_screen_task_create_success_message">Tarea creada exitosamente</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Ocurrió un error al eliminar la tarea</string>
|
||||
|
@ -56,7 +50,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Eliminar tarea</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">No se pudieron obtener los tipos de tareas, por favor, revise su conexión a internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asistente</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
|
||||
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>
|
||||
|
|
|
@ -37,17 +37,11 @@
|
|||
<string name="app_config_proxy_port_title">Puerto del Proxy</string>
|
||||
<string name="app_widget_description">Muestra un widget del panel de control</string>
|
||||
<string name="appbar_search_in">Buscar en %s</string>
|
||||
<string name="assistant_screen_all_task_type">Todos</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escribe un texto</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">¿Está seguro que desea eliminar esta tarea?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Tarea eliminada</string>
|
||||
<string name="assistant_screen_failed_task_text">Falló</string>
|
||||
<string name="assistant_screen_loading">Lista de Tareas en lectura, espere por favor.</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hay tareas disponibles. Seleccione un tipo de tarea para crear una nueva.</string>
|
||||
<string name="assistant_screen_no_task_available_text">No hay tareas del tipo %s, puede crear una nueva tarea desde la parte inferior derecha</string>
|
||||
<string name="assistant_screen_running_task_text">En progreso</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
|
||||
<string name="assistant_screen_successful_task_text">Completado</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Ocurrió un error mientras creaba la tarea</string>
|
||||
<string name="assistant_screen_task_create_success_message">Tarea creada con éxito</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Ocurrió un error mientras eliminaba la tarea</string>
|
||||
|
@ -56,7 +50,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Tarea eliminada</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">No se puede recuperar los tipos de tareas, comprueba la conexión a Internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asistente</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
|
||||
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>
|
||||
|
|
|
@ -31,9 +31,6 @@
|
|||
<string name="advanced_settings">Configuración avanzada</string>
|
||||
<string name="allow_resharing">Permitir volver a compartir</string>
|
||||
<string name="appbar_search_in">Buscar en %s</string>
|
||||
<string name="assistant_screen_all_task_type">Todos</string>
|
||||
<string name="assistant_screen_successful_task_text">Completado</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
|
||||
<string name="associated_account_not_found">¡No se encontró la cuenta asociada!</string>
|
||||
<string name="auth_access_failed">Error de acceso: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">La cuenta aún no ha sido agregada a este dispositivo </string>
|
||||
|
|
|
@ -30,9 +30,6 @@
|
|||
<string name="add_to_cloud">Agregar a %1$s</string>
|
||||
<string name="allow_resharing">Permitir volver a compartir</string>
|
||||
<string name="appbar_search_in">Buscar en %s</string>
|
||||
<string name="assistant_screen_all_task_type">Todos</string>
|
||||
<string name="assistant_screen_successful_task_text">Completado</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
|
||||
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>
|
||||
<string name="auth_access_failed">Error de acceso: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">La cuenta aún no ha sido agregada a este dispositivo </string>
|
||||
|
|
|
@ -36,12 +36,7 @@
|
|||
<string name="app_config_proxy_port_title">Puerto del proxy</string>
|
||||
<string name="app_widget_description">Muestra un widget del panel de control</string>
|
||||
<string name="appbar_search_in">Compartir en %s</string>
|
||||
<string name="assistant_screen_all_task_type">Todos</string>
|
||||
<string name="assistant_screen_failed_task_text">Error</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
|
||||
<string name="assistant_screen_successful_task_text">Completado</string>
|
||||
<string name="assistant_screen_task_delete_success_message">Tarea eliminada con éxito</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
|
||||
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>
|
||||
<string name="auth_access_failed">Acceso fallido: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">La cuenta aún no ha sido agregada a este dispositivo </string>
|
||||
|
|
|
@ -37,17 +37,11 @@
|
|||
<string name="app_config_proxy_port_title">Puerto del proxy</string>
|
||||
<string name="app_widget_description">Muestra un widget del panel</string>
|
||||
<string name="appbar_search_in">Buscar en %s</string>
|
||||
<string name="assistant_screen_all_task_type">Todos</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriba algo de texto</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">¿Está seguro de eliminar esta tarea?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Eliminar tarea</string>
|
||||
<string name="assistant_screen_failed_task_text">Falló</string>
|
||||
<string name="assistant_screen_loading">Las listas de tareas están cargando, por favor espere</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hay tareas disponibles. Seleccione un tipo de tarea para crear una nueva.</string>
|
||||
<string name="assistant_screen_no_task_available_text">No hay tareas disponibles para el tipo de tarea %s, puede crear una nueva tarea abajo a la derecha.</string>
|
||||
<string name="assistant_screen_running_task_text">En proceso</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
|
||||
<string name="assistant_screen_successful_task_text">Completado</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Ocurrió un error al crear la tarea</string>
|
||||
<string name="assistant_screen_task_create_success_message">Tarea creada exitosamente</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Ocurrió un error al eliminar la tarea</string>
|
||||
|
@ -56,7 +50,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Eliminar tarea</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">No se pudieron obtener los tipos de tareas, por favor, revise su conexión a internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asistente</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
|
||||
<string name="associated_account_not_found">¡No se encontró la cuenta asociada!</string>
|
||||
|
|
|
@ -38,17 +38,11 @@
|
|||
<string name="app_config_proxy_port_title">Puerto del proxy</string>
|
||||
<string name="app_widget_description">Muestra un widget del tablero</string>
|
||||
<string name="appbar_search_in">Buscar en %s</string>
|
||||
<string name="assistant_screen_all_task_type">Todo</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriba algo de texto</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">¿Está seguro de querer eliminar esta tarea?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Eliminar tarea</string>
|
||||
<string name="assistant_screen_failed_task_text">Falló</string>
|
||||
<string name="assistant_screen_loading">Las listas de tareas están cargando, por favor espere</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hay tareas disponibles. Seleccione un tipo de tarea para crear una nueva.</string>
|
||||
<string name="assistant_screen_no_task_available_text">No hay tareas disponibles para el tipo de tarea %s, puede crear una nueva tarea abajo a la derecha.</string>
|
||||
<string name="assistant_screen_running_task_text">En progreso</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
|
||||
<string name="assistant_screen_successful_task_text">Completado</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Ocurrió un error al crear la tarea</string>
|
||||
<string name="assistant_screen_task_create_success_message">Tarea creada exitosamente</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Ocurrió un error al eliminar la tarea</string>
|
||||
|
@ -57,7 +51,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Eliminar tarea</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">No se pudieron obtener los tipos de tareas, por favor, revise su conexión a internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asistente</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
|
||||
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Proxy-ataka</string>
|
||||
<string name="app_widget_description">Paneleko trepeta bat erakusten du</string>
|
||||
<string name="appbar_search_in">Bilatu %s(e)n</string>
|
||||
<string name="assistant_screen_all_task_type">Denak</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Idatzi testu bat</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Ziur zeregin hau ezabatu nahi duzula?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Ezabatu zeregina</string>
|
||||
<string name="assistant_screen_failed_task_text">Huts egin du</string>
|
||||
<string name="assistant_screen_loading">Zereginen zerrenda kargatzen ari da, itxaron mesedez</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Ez dago zereginik. Hautatu zeregin mota bat zeregin berri bat sortzeko.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Ez dago zereginik %s zeregin motarako, zeregin berri bat sor dezakezu behean eskuinean.</string>
|
||||
<string name="assistant_screen_running_task_text">Abian</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Antolatuta</string>
|
||||
<string name="assistant_screen_successful_task_text">Osatua</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Errore bat gertatu da zeregina sortzean</string>
|
||||
<string name="assistant_screen_task_create_success_message">Zeregina behar bezala sortu da</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Errore bat gertatu da zeregina ezabatzean</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Zereginaren irteera ez dago prest oraindik.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Ezin dira zeregin motak eskuratu, egiaztatu Interneteko konexioa.</string>
|
||||
<string name="assistant_screen_top_bar_title">Morroia</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Ezezaguna</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Sarrera</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Irteera</string>
|
||||
<string name="associated_account_not_found">Ez da aurkitu lotutako konturik</string>
|
||||
|
|
|
@ -38,13 +38,8 @@
|
|||
<string name="app_config_proxy_port_title">پورت پروکسی</string>
|
||||
<string name="app_widget_description">نمایش یک ابزارک از پیشخوان</string>
|
||||
<string name="appbar_search_in">جستجو در %s</string>
|
||||
<string name="assistant_screen_all_task_type">همه</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">مقداری متن را تایپ کنید</string>
|
||||
<string name="assistant_screen_failed_task_text">Failed</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Scheduled</string>
|
||||
<string name="assistant_screen_successful_task_text">نکمیل شده</string>
|
||||
<string name="assistant_screen_task_delete_success_message">Task successfully deleted</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">ناشناخته</string>
|
||||
<string name="associated_account_not_found">حساب مرتبط یافت نشد!</string>
|
||||
<string name="auth_access_failed">دسترسی خطای %1$s</string>
|
||||
<string name="auth_account_does_not_exist">حساب به این وسیله اضافه نشده است</string>
|
||||
|
|
|
@ -36,14 +36,10 @@
|
|||
<string name="app_config_proxy_port_title">Välityspalvelimen portti</string>
|
||||
<string name="app_widget_description">Näyttää yhden pienoissovelluksen konsolista</string>
|
||||
<string name="appbar_search_in">Etsi kohteesta %s</string>
|
||||
<string name="assistant_screen_all_task_type">Kaikki</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Syötä tekstiä</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Haluatko varmasti poistaa tämän tehtävän?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Poista tehtävä</string>
|
||||
<string name="assistant_screen_failed_task_text">Epäonnistui</string>
|
||||
<string name="assistant_screen_loading">Tehtävälista latautuu, odota</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Aikataulutettu</string>
|
||||
<string name="assistant_screen_successful_task_text">Valmistui</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Tehtävän luonti epäonnistui</string>
|
||||
<string name="assistant_screen_task_create_success_message">Tehtävä luotu</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Tehtävän poisto epäonnistui</string>
|
||||
|
@ -52,7 +48,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Poista tehtävä</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Tehtävätyyppen haku epäonnistui, tarkista internetyhteytesi.</string>
|
||||
<string name="assistant_screen_top_bar_title">Avustaja</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Tuntematon</string>
|
||||
<string name="associated_account_not_found">Liitettyä tiliä ei löydy!</string>
|
||||
<string name="auth_access_failed">Pääsy epäonnistui: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Tälle laitteelle ei ole vielä asennettu tiliä.</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Port Proxy</string>
|
||||
<string name="app_widget_description">Affiche un widget du tableau de bord</string>
|
||||
<string name="appbar_search_in">Recherche dans %s</string>
|
||||
<string name="assistant_screen_all_task_type">Tout</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Tapez du texte</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Êtes-vous sûr de vouloir supprimer cette tâche ?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Supprimer la tâche</string>
|
||||
<string name="assistant_screen_failed_task_text">Échec</string>
|
||||
<string name="assistant_screen_loading">La liste des tâches charge, veuillez patienter</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Aucune tâche disponible. Sélectionner un type de tâche pour créer une nouvelle tâche.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Aucune tâche disponible pour le type de tâche %s, vous pouvez créer une nouvelle tâche en bas à droite.</string>
|
||||
<string name="assistant_screen_running_task_text">En cours</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Planifié</string>
|
||||
<string name="assistant_screen_successful_task_text">Terminé</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Une erreur est survenue lors de la création de la tâche</string>
|
||||
<string name="assistant_screen_task_create_success_message">La tâche a bien été créée</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Une erreur est survenue lors de la suppression de la tâche</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Le résultat de la tâche n\'est pas encore prêt.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Impossible de récupérer les types des tâches, veuillez vérifier votre connexion Internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistant</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Inconnu</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Entrée</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Sortie</string>
|
||||
<string name="associated_account_not_found">Compte associé introuvable !</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Port Seachfhreastalaí</string>
|
||||
<string name="app_widget_description">Taispeáin giuirléid amháin ón deais</string>
|
||||
<string name="appbar_search_in">Cuardaigh i %s</string>
|
||||
<string name="assistant_screen_all_task_type">Gach</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Clóscríobh roinnt téacs</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">An bhfuil tú cinnte gur mhaith leat an tasc seo a scriosadh?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Scrios Tasc</string>
|
||||
<string name="assistant_screen_failed_task_text">Theip</string>
|
||||
<string name="assistant_screen_loading">Tá an Liosta Tasc á lódáil, fan go fóill, le do thoil</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Níl aon tasc ar fáil. Roghnaigh cineál taisc chun tasc nua a chruthú.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Níl aon tasc ar fáil do chineál taisc %s, is féidir leat tasc nua a chruthú ón mbun ar dheis.</string>
|
||||
<string name="assistant_screen_running_task_text">Ar Siúl</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Sceidealta</string>
|
||||
<string name="assistant_screen_successful_task_text">Críochnaithe</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Tharla earráid agus an tasc á chruthú</string>
|
||||
<string name="assistant_screen_task_create_success_message">D\'éirigh leis an tasc a chruthú</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Tharla earráid agus an tasc á scriosadh</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Níl an t-aschur tasc réidh fós.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Ní féidir cineálacha tascanna a fháil, seiceáil do nasc idirlín le do thoil.</string>
|
||||
<string name="assistant_screen_top_bar_title">Cúntóir</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Anaithnid</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Ionchur</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Aschur</string>
|
||||
<string name="associated_account_not_found">Cuntas gaolmhar gan aimsiú!</string>
|
||||
|
|
|
@ -31,8 +31,6 @@
|
|||
<string name="add_to_cloud">Cuir ri %1$s</string>
|
||||
<string name="allow_resharing">Ceadaich co-roinneadh às ùr</string>
|
||||
<string name="appbar_search_in">Lorg am broinn %s</string>
|
||||
<string name="assistant_screen_successful_task_text">Coileanta</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Chan eil fhios</string>
|
||||
<string name="associated_account_not_found">Cha deach an cunntas co-cheangailte a lorg!</string>
|
||||
<string name="auth_access_failed">Dh’fhàillig leis an inntrigeadh: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Cha deach an cunntas a chur ris air an uidheam seo fhathast</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Porto do proxy</string>
|
||||
<string name="app_widget_description">Amosa un trebello do taboleiro</string>
|
||||
<string name="appbar_search_in">Buscar en %s</string>
|
||||
<string name="assistant_screen_all_task_type">Todo</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriba algún texto</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Confirma que quere eliminar esta tarefa?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Eliminar tarefa</string>
|
||||
<string name="assistant_screen_failed_task_text">Fallado</string>
|
||||
<string name="assistant_screen_loading">Estase a cargar a lista de tarefas, agarde</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Non hai ningunha tarefa dispoñíbel. Seleccione un tipo de tarefa para crear unha nova tarefa.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Non hai ningunha tarefa dispoñible para o tipo de tarefa %s, pode crear unha nova desde a parte inferior dereita.</string>
|
||||
<string name="assistant_screen_running_task_text">En proceso</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
|
||||
<string name="assistant_screen_successful_task_text">Completado</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Produciuse un erro ao crear a tarefa</string>
|
||||
<string name="assistant_screen_task_create_success_message">A tarefa creouse satisfactoriamente</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Produciuse un erro ao eliminar a tarefa</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">A saída da tarefa aínda non está preparada.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Non é posíbel recuperar os tipos de tarefas. Comprobe a conexión a Internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asistente</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Descoñecido</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Saída</string>
|
||||
<string name="associated_account_not_found">Non se atopou unha conta asociada!</string>
|
||||
|
|
|
@ -34,9 +34,6 @@
|
|||
<string name="app_config_base_url_title">Osnovni URL</string>
|
||||
<string name="app_config_proxy_port_title">Proxy port</string>
|
||||
<string name="appbar_search_in">Traži u %s</string>
|
||||
<string name="assistant_screen_all_task_type">Sve</string>
|
||||
<string name="assistant_screen_successful_task_text">Završeno</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Nepoznata pogreška</string>
|
||||
<string name="associated_account_not_found">Pripadajući račun nije pronađen!</string>
|
||||
<string name="auth_access_failed">Neuspjeli pristup: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Račun još nije dodan na ovaj uređaj</string>
|
||||
|
|
|
@ -40,13 +40,8 @@
|
|||
<string name="app_config_proxy_port_title">Proxy portja</string>
|
||||
<string name="app_widget_description">Egy modult jelenít meg a irányítópultról</string>
|
||||
<string name="appbar_search_in">Keresés itt: %s</string>
|
||||
<string name="assistant_screen_all_task_type">Összes</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Gépeljen be szöveget</string>
|
||||
<string name="assistant_screen_failed_task_text">Sikertelen</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Ütemezve</string>
|
||||
<string name="assistant_screen_successful_task_text">Teljesített</string>
|
||||
<string name="assistant_screen_task_delete_success_message">Feladat sikeresen törölve</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Ismeretlen</string>
|
||||
<string name="associated_account_not_found">A kapcsolódó fiók nem található!</string>
|
||||
<string name="auth_access_failed">Hozzáférési hiba: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Az eszközön még nem létezik a fiók</string>
|
||||
|
|
|
@ -35,17 +35,11 @@
|
|||
<string name="allow_resharing">Izinkan pembagian ulang</string>
|
||||
<string name="app_widget_description">Menampilkan satu gawit dari dasbor</string>
|
||||
<string name="appbar_search_in">Cari dalam %s</string>
|
||||
<string name="assistant_screen_all_task_type">Semua</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Tulis beberapa teks</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Apakah Anda yakin ingin menghapus tugas ini?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Hapus Tugas</string>
|
||||
<string name="assistant_screen_failed_task_text">Gagal</string>
|
||||
<string name="assistant_screen_loading">Daftar Tugas sedang dimuat, mohon tunggu</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Tidak ada tugas yang tersedia. Pilih jenis tugas untuk membuat tugas baru.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Tidak ada tugas yang tersedia untuk jenis tugas %s, Anda dapat membuat tugas baru dari pojok kanan bawah.</string>
|
||||
<string name="assistant_screen_running_task_text">Sedang Berlangsung</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Dijadwalkan</string>
|
||||
<string name="assistant_screen_successful_task_text">Selesai</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Terjadi kesalahan saat membuat tugas</string>
|
||||
<string name="assistant_screen_task_create_success_message">Tugas berhasil dibuat</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Terjadi kesalahan saat menghapus tugas</string>
|
||||
|
@ -54,7 +48,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Hapus Tugas</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Tidak dapat memperoleh jenis tugas, mohon periksa koneksi internet Anda.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asisten</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Tidak diketahui</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Input</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Output</string>
|
||||
<string name="associated_account_not_found">Akun terkait tidak ditemukan!</string>
|
||||
|
|
|
@ -35,9 +35,6 @@
|
|||
<string name="app_config_proxy_port_title">Gátt milliþjóns</string>
|
||||
<string name="app_widget_description">Sýnir einn viðmótshluta af stjórnborði</string>
|
||||
<string name="appbar_search_in">Leita í %s</string>
|
||||
<string name="assistant_screen_all_task_type">Allt</string>
|
||||
<string name="assistant_screen_successful_task_text">Lokið</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Óþekkt</string>
|
||||
<string name="associated_account_not_found">Tengdur notandaaðgangur fannst ekki!</string>
|
||||
<string name="auth_access_failed">Aðgangur mistókst: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Aðgangur er ekki ennþá til á tækinu</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Porta proxy</string>
|
||||
<string name="app_widget_description">Mostra un widget dal cruscotto</string>
|
||||
<string name="appbar_search_in">Cerca in %s</string>
|
||||
<string name="assistant_screen_all_task_type">Tutti</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Aggiungi del testo</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Sei sicuro di voler rimuovere questa attività?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Elimina attività</string>
|
||||
<string name="assistant_screen_failed_task_text">Non riuscito</string>
|
||||
<string name="assistant_screen_loading">Lista dei Task in caricamento, si prega di attendere</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Nessun task disponibile. Scegli un tipo di Task per crearne uno nuovo.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Nessun task disponibile per la tipologia %s, puoi crearne uno nuovo in basso a destra.</string>
|
||||
<string name="assistant_screen_running_task_text">In corso</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Programmato</string>
|
||||
<string name="assistant_screen_successful_task_text">Completato</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Un errore è intercorso durante la creazione del task</string>
|
||||
<string name="assistant_screen_task_create_success_message">Task creato con successo</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Un errore è intercorso durante la cancellazione del task</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Il risultato del task non è ancora pronto.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Impossibile recuperare i tipi di task, per favore verifica la tua connessione a internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistente</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Sconosciuto</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Input</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Output</string>
|
||||
<string name="associated_account_not_found">Account associato non trovato.</string>
|
||||
|
|
|
@ -35,9 +35,6 @@
|
|||
<string name="app_config_proxy_port_title">פתחת מתווך</string>
|
||||
<string name="app_widget_description">מצג וידג׳ט אחד מלוח הבקרה</string>
|
||||
<string name="appbar_search_in">חפש ב %s</string>
|
||||
<string name="assistant_screen_all_task_type">הכול</string>
|
||||
<string name="assistant_screen_successful_task_text">הושלם</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">לא ידוע</string>
|
||||
<string name="associated_account_not_found">לא נמצא חשבון משויך!</string>
|
||||
<string name="auth_access_failed">גישה נכשלה: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">החשבון לא נוסף למכשיר הזה עדיין</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">プロキシポート</string>
|
||||
<string name="app_widget_description">ダッシュボードから一つのウィジェットを表示</string>
|
||||
<string name="appbar_search_in">%s の中を検索</string>
|
||||
<string name="assistant_screen_all_task_type">すべて</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">テキストを入力</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">本当にこのタスクを削除しますか?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">タスクを削除</string>
|
||||
<string name="assistant_screen_failed_task_text">失敗</string>
|
||||
<string name="assistant_screen_loading">タスクリストを読み込み中です。しばらくお待ちください</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">利用可能なタスクがありません。タスクの種類を選択して、新しいタスクを作成してください。</string>
|
||||
<string name="assistant_screen_no_task_available_text">タスクタイプ%sに使用できるタスクがありません。右下から新しいタスクを作成できます。</string>
|
||||
<string name="assistant_screen_running_task_text">進行中</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">スケジュール済</string>
|
||||
<string name="assistant_screen_successful_task_text">完了</string>
|
||||
<string name="assistant_screen_task_create_fail_message">タスクの作成中にエラーが発生しました。</string>
|
||||
<string name="assistant_screen_task_create_success_message">タスクは正常に作成されました。</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">タスクの削除中にエラーが発生しました。</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">タスクの出力はまだ準備ができていません。</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">タスクタイプを取得できません。インターネット接続を確認してください。</string>
|
||||
<string name="assistant_screen_top_bar_title">アシスタント</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">不明</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">入力</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">出力</string>
|
||||
<string name="associated_account_not_found">関連付けられたアカウントが見つかりません!</string>
|
||||
|
|
|
@ -35,10 +35,6 @@
|
|||
<string name="allow_resharing">Allow resharing</string>
|
||||
<string name="app_widget_description">Shows one widget from dashboard</string>
|
||||
<string name="appbar_search_in">Search in %s</string>
|
||||
<string name="assistant_screen_all_task_type">All</string>
|
||||
<string name="assistant_screen_failed_task_text">Failed</string>
|
||||
<string name="assistant_screen_successful_task_text">Completed</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Unknown</string>
|
||||
<string name="associated_account_not_found">Associated account not found!</string>
|
||||
<string name="auth_access_failed">Access failed: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">The account is not added on this device yet</string>
|
||||
|
|
|
@ -38,17 +38,11 @@
|
|||
<string name="app_config_proxy_port_title">프록시 포트</string>
|
||||
<string name="app_widget_description">대시보드에 위젯 하나만 표시</string>
|
||||
<string name="appbar_search_in">%s에서 검색</string>
|
||||
<string name="assistant_screen_all_task_type">모두</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">텍스트 입력</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">이 작업을 삭제하시겠습니까?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">작업 삭제</string>
|
||||
<string name="assistant_screen_failed_task_text">실패</string>
|
||||
<string name="assistant_screen_loading">작업 목록을 로드하는 중입니다. 잠시 기다려 주세요.</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">사용할 수 있는 작업이 없습니다. 새 작업을 생성하려면 작업 유형을 선택하세요.</string>
|
||||
<string name="assistant_screen_no_task_available_text">%s작업 유형을 위해 사용 가능한 작업이 없습니다, 오른쪽 하단에서 새 작업을 만들 수 있습니다.</string>
|
||||
<string name="assistant_screen_running_task_text">진행 중</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">예정됨</string>
|
||||
<string name="assistant_screen_successful_task_text">완료됨</string>
|
||||
<string name="assistant_screen_task_create_fail_message">작업을 생성하는 중에 오류가 발생했습니다.</string>
|
||||
<string name="assistant_screen_task_create_success_message">작업이 성공적으로 생성됨</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">작업을 삭제하는 중에 오류가 발생했습니다.</string>
|
||||
|
@ -57,7 +51,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">작업 삭제</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">작업 유형을 가져올 수 없습니다. 인터넷 연결을 확인하세요.</string>
|
||||
<string name="assistant_screen_top_bar_title">어시스턴트</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">알 수 없음</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">입력</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">출력</string>
|
||||
<string name="associated_account_not_found">관련 계정을 찾을 수 없습니다!</string>
|
||||
|
|
|
@ -34,8 +34,6 @@
|
|||
<string name="allow_resharing">ອະນຸຍາດໃຫ້ ການແບ່ງປັນຄືນ</string>
|
||||
<string name="app_widget_description">ສະແດງໜຶ່ງລາຍການຈາກໜ້າປັດ</string>
|
||||
<string name="appbar_search_in">ຄົ້ນຫາໃນ%s</string>
|
||||
<string name="assistant_screen_successful_task_text">ສຳເລັດ</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">ບໍ່ຮູ້</string>
|
||||
<string name="associated_account_not_found">ບໍ່ພົບບັນຊີທີ່ກ່ຽວຂ້ອງ!</string>
|
||||
<string name="auth_access_failed">ການເຂົ້າເຖິງໄດ້ບໍ່ສຳເລັດ%1$s:</string>
|
||||
<string name="auth_account_does_not_exist">ຍັງບໍ່ໄດ້ເພີ່ມບັນຊີໃສ່ໃນອຸປະກອນນີ້</string>
|
||||
|
|
|
@ -37,19 +37,15 @@
|
|||
<string name="app_config_proxy_port_title">Įgaliotojo serverio prievadas</string>
|
||||
<string name="app_widget_description">Rodo vieną valdiklį iš skydelio</string>
|
||||
<string name="appbar_search_in">Ieškoti %s</string>
|
||||
<string name="assistant_screen_all_task_type">Visos</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Įrašykite kokį nors tekstą</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Ar tikrai norite ištrinti šią užduotį?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Ištrinti užduotį</string>
|
||||
<string name="assistant_screen_failed_task_text">Nepavyko</string>
|
||||
<string name="assistant_screen_successful_task_text">Užbaigta</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Kuriant užduotį, įvyko klaida</string>
|
||||
<string name="assistant_screen_task_create_success_message">Užduotis sėkmingai sukurta</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Ištrinant užduotį, įvyko klaida</string>
|
||||
<string name="assistant_screen_task_delete_success_message">Užduotis sėkmingai ištrinta</string>
|
||||
<string name="assistant_screen_task_list_error_state_message">Nepavyko gauti užduočių sąrašo, patikrinkite savo interneto ryšį.</string>
|
||||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Ištrinti užduotį</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Nežinoma</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Išvestis</string>
|
||||
<string name="associated_account_not_found">Susieta paskyra nerasta!</string>
|
||||
<string name="auth_access_failed">Prieiga nepavyko: %1$s</string>
|
||||
|
|
|
@ -33,12 +33,8 @@
|
|||
<string name="allow_resharing">Atļaut atkārtotu koplietošanu</string>
|
||||
<string name="app_config_proxy_port_title">Starpniekservera ports</string>
|
||||
<string name="appbar_search_in">Meklēt %s</string>
|
||||
<string name="assistant_screen_all_task_type">Visi</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Dzēst uzdevumu</string>
|
||||
<string name="assistant_screen_failed_task_text">Neizdevās</string>
|
||||
<string name="assistant_screen_successful_task_text">Pabeigts</string>
|
||||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Dzēst uzdevumu</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Nezināms</string>
|
||||
<string name="associated_account_not_found">Saistītais konts nav atrasts!</string>
|
||||
<string name="auth_access_failed">Piekļuve neizdevās: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Konts vēl nav pievienots šai iekārtai</string>
|
||||
|
|
|
@ -34,10 +34,6 @@
|
|||
<string name="app_config_proxy_port_title">Proxy порта</string>
|
||||
<string name="app_widget_description">Прикажува еден виџет од контролната табла</string>
|
||||
<string name="appbar_search_in">Барај во %s</string>
|
||||
<string name="assistant_screen_all_task_type">Сите</string>
|
||||
<string name="assistant_screen_failed_task_text">Неуспешно</string>
|
||||
<string name="assistant_screen_successful_task_text">Завршено</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Непознат</string>
|
||||
<string name="associated_account_not_found">Не е пронајдена поврзана сметка!</string>
|
||||
<string name="auth_access_failed">Неуспешен пристап: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Сметката сеуште не е додадена на овој уред</string>
|
||||
|
|
|
@ -38,17 +38,11 @@
|
|||
<string name="app_config_proxy_port_title">Proxy-port</string>
|
||||
<string name="app_widget_description">Viser en widget fra dashbordet</string>
|
||||
<string name="appbar_search_in">Søk i %s</string>
|
||||
<string name="assistant_screen_all_task_type">Alle</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Skriv inn litt tekst</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Er du sikker på at du vil slette denne oppgaven?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Slett oppgave</string>
|
||||
<string name="assistant_screen_failed_task_text">Mislyktes</string>
|
||||
<string name="assistant_screen_loading">Oppgaveliste lastes inn, vennligst vent</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Ingen oppgave tilgjengelig. Velg en oppgavetype for å opprette en ny oppgave.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Ingen oppgave tilgjengelig for %s-oppgavetype, du kan opprette en ny oppgave fra nede til høyre.</string>
|
||||
<string name="assistant_screen_running_task_text">Pågår</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Planlagt</string>
|
||||
<string name="assistant_screen_successful_task_text">Ferdig</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Det oppstod en feil under oppretting av oppgaven</string>
|
||||
<string name="assistant_screen_task_create_success_message">Oppgave opprettet</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Det oppstod en feil under sletting av oppgaven</string>
|
||||
|
@ -57,7 +51,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Slett oppgave</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Kan ikke hente oppgavetyper, vennligst sjekk internettforbindelsen din.</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Ukjent</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Inndata</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Utdata</string>
|
||||
<string name="associated_account_not_found">Tilknyttet bruker ikke funnet!</string>
|
||||
|
|
|
@ -36,4 +36,6 @@
|
|||
<!-- App bar -->
|
||||
<color name="appbar">#1E1E1E</color>
|
||||
<color name="fontAppbar">@android:color/white</color>
|
||||
|
||||
<color name="actionbar_color">#101418</color>
|
||||
</resources>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Proxy poort</string>
|
||||
<string name="app_widget_description">Toont één widget van dashboard</string>
|
||||
<string name="appbar_search_in">Zoeken in %s</string>
|
||||
<string name="assistant_screen_all_task_type">Alle</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Geef wat tekst in</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Bent u zeker dat u deze taak wilt verwijderen?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Verwijder taak</string>
|
||||
<string name="assistant_screen_failed_task_text">Mislukt</string>
|
||||
<string name="assistant_screen_loading">Takenlijst wordt geladen, even geduld</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Geen taak beschikbaar. Selecteer een taaktype om een nieuwe aan te maken.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Geen taak beschikbaar voor %s taaktype, u kunt rechts onder een nieuwe taak aanmaken.</string>
|
||||
<string name="assistant_screen_running_task_text">Bezig</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Ingepland</string>
|
||||
<string name="assistant_screen_successful_task_text">Voltooid</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Er is een fout opgetreden bij het aanmaken van de taak</string>
|
||||
<string name="assistant_screen_task_create_success_message">Taak succesvol aangemaakt</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Er is een fout opgetreden bij het verwijderen van de taak</string>
|
||||
|
@ -65,7 +59,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Verwijder taak</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Kan taken types niet ophalen. Controleer je internetverbinding.</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Onbekend</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Input</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Output</string>
|
||||
<string name="associated_account_not_found">Bijbehorend account niet gevonden!</string>
|
||||
|
|
|
@ -45,17 +45,11 @@
|
|||
<string name="app_config_proxy_port_title">Port proxy</string>
|
||||
<string name="app_widget_description">Pokazuje jeden widżet z pulpitu nawigacyjnego</string>
|
||||
<string name="appbar_search_in">Szukaj w %s</string>
|
||||
<string name="assistant_screen_all_task_type">Wszystkie</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Wpisz jakiś tekst</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Czy na pewno chcesz usunąć to zadanie?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Usuń zadanie</string>
|
||||
<string name="assistant_screen_failed_task_text">Nie powiodło się</string>
|
||||
<string name="assistant_screen_loading">Trwa wczytywanie listy zadań. Proszę czekać</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Brak dostępnych zadań. Wybierz typ zadania, aby utworzyć nowe zadanie.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Brak dostępnych zadań dla typu zadania %s. Możesz utworzyć nowe zadanie w prawym dolnym rogu.</string>
|
||||
<string name="assistant_screen_running_task_text">W trakcie</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Zaplanowane</string>
|
||||
<string name="assistant_screen_successful_task_text">Zakończone</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Wystąpił błąd podczas tworzenia zadania</string>
|
||||
<string name="assistant_screen_task_create_success_message">Zadanie pomyślnie utworzone</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Wystąpił błąd podczas usuwania zadania</string>
|
||||
|
@ -65,7 +59,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Wynik zadanie nie jest jeszcze gotowy</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Nie można pobrać typów zadań. Sprawdź swoje połączenie internetowe.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asystent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Nieznany</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Wejście</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Wyjście</string>
|
||||
<string name="associated_account_not_found">Nie znaleziono powiązanego konta!</string>
|
||||
|
|
|
@ -39,17 +39,11 @@
|
|||
<string name="app_config_proxy_port_title">Porta do Proxy</string>
|
||||
<string name="app_widget_description">Mostra um widget do painel</string>
|
||||
<string name="appbar_search_in">Pesquisar em %s</string>
|
||||
<string name="assistant_screen_all_task_type">Tudos</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Digite algum texto</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Tem certeza de que deseja excluir esta tarefa?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Excluir tarefa</string>
|
||||
<string name="assistant_screen_failed_task_text">Falhou</string>
|
||||
<string name="assistant_screen_loading">A lista de tarefas está carregando, aguarde</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Nenhuma tarefa disponível. Selecione um tipo de tarefa para criar uma nova tarefa.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Nenhuma tarefa disponível para o tipo de tarefa %s. Você pode criar uma nova tarefa no canto inferior direito.</string>
|
||||
<string name="assistant_screen_running_task_text">Em Andamento</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Agendada</string>
|
||||
<string name="assistant_screen_successful_task_text">Finalizado</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Ocorreu um erro ao criar a tarefa</string>
|
||||
<string name="assistant_screen_task_create_success_message">Tarefa criada com sucesso</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Ocorreu um erro ao excluir a tarefa</string>
|
||||
|
@ -59,7 +53,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">O resultado da tarefa ainda não está pronto.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Não foi possível buscar os tipos de tarefas. Verifique sua conexão com a Internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistente</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconhecido</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Saída</string>
|
||||
<string name="associated_account_not_found">Conta associada não encontrada!</string>
|
||||
|
|
|
@ -34,9 +34,6 @@
|
|||
<string name="allow_resharing">Permitir repartilha</string>
|
||||
<string name="app_widget_description">Mostra um \'\'widget\'\' do painel</string>
|
||||
<string name="appbar_search_in">Procurar em %s</string>
|
||||
<string name="assistant_screen_all_task_type">Todos</string>
|
||||
<string name="assistant_screen_successful_task_text">Concluída</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Desconhecido</string>
|
||||
<string name="associated_account_not_found">Conta associada não encontrada!</string>
|
||||
<string name="auth_access_failed">Acesso falhou: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">A conta ainda não foi adicionada a este dispositivo</string>
|
||||
|
|
|
@ -37,17 +37,11 @@
|
|||
<string name="app_config_proxy_port_title">Port proxy </string>
|
||||
<string name="app_widget_description">Arată un singur widget din panoul principal</string>
|
||||
<string name="appbar_search_in">Caută in %s</string>
|
||||
<string name="assistant_screen_all_task_type">Toate </string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Tastează un text</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Sigur doriți să ștergeți acest task?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Şterge task</string>
|
||||
<string name="assistant_screen_failed_task_text">Eșuat</string>
|
||||
<string name="assistant_screen_loading">Lista de taskuri se încarcă, așteptați</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Nici un task disponibil. Selectați un tip de task pentru a crea unul nou.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Niciun task disponibil pentru tipul de task %s, puteți crea un task nou din dreapta jos.</string>
|
||||
<string name="assistant_screen_running_task_text">În curs de desfășurare</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Programat</string>
|
||||
<string name="assistant_screen_successful_task_text">Terminat</string>
|
||||
<string name="assistant_screen_task_create_fail_message">A apărut o eroare la crearea taskului</string>
|
||||
<string name="assistant_screen_task_create_success_message">Task creat cu succes</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">A apărut o eroare la ștergerea taskului</string>
|
||||
|
@ -56,7 +50,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Şterge task</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Nu se pot prelua tipurile taskurilor, vă rugăm să verificați conexiunea la internet.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asistent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Necunoscut</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Intrare</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Rezultat</string>
|
||||
<string name="associated_account_not_found">Contul asociat nu a fost găsit!</string>
|
||||
|
|
|
@ -40,17 +40,11 @@
|
|||
<string name="app_config_proxy_port_title">Порт прокси</string>
|
||||
<string name="app_widget_description">Показывает один виджет с главного экрана.</string>
|
||||
<string name="appbar_search_in">Искать в %s</string>
|
||||
<string name="assistant_screen_all_task_type">Все</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Наберите какой-то текст</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Вы уверены, что хотите удалить эту задачу?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Удалить задачу</string>
|
||||
<string name="assistant_screen_failed_task_text">Не удалось</string>
|
||||
<string name="assistant_screen_loading">Список задач загружается, пожалуйста подождите</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Нет доступных задач. Выберите тип задачи, чтобы создать новую задачу.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Нет доступной задачи для типа задачи %s, вы можете создать новую задачу в правом нижнем углу.</string>
|
||||
<string name="assistant_screen_running_task_text">Выполянется</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Запланированное</string>
|
||||
<string name="assistant_screen_successful_task_text">Выполнено</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Произошла ошибка при создании задачи</string>
|
||||
<string name="assistant_screen_task_create_success_message">Задача успешно создана</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Произошла ошибка во время удаления задачи</string>
|
||||
|
@ -59,7 +53,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Удалить задачу</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Не удается получить список задач, проверьте ваше подключение к Интернету.</string>
|
||||
<string name="assistant_screen_top_bar_title">Помощник</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Неизвестно</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Ввод</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Вывод</string>
|
||||
<string name="associated_account_not_found">Связанный аккаунт не найден!</string>
|
||||
|
|
|
@ -35,11 +35,7 @@
|
|||
<string name="app_config_base_url_title">URL de base</string>
|
||||
<string name="app_config_proxy_port_title">Port serbidore intermèdiu</string>
|
||||
<string name="appbar_search_in">Chirca in %s</string>
|
||||
<string name="assistant_screen_all_task_type">Totu</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Peruna faina a disponimentu. Seletziona sa genia de faina pro nde creare una noa.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Peruna faina a disponimentu pro sa genia %s. Nde podes creare una noa dae su cugione in bassu a dereta.</string>
|
||||
<string name="assistant_screen_successful_task_text">Cumpletadu</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Disconnotu</string>
|
||||
<string name="associated_account_not_found">Contu assotziadu no agatadu!</string>
|
||||
<string name="auth_access_failed">Atzessu faddidu: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Su contu non s\'agatat ancora in custu dispositivu</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Brána proxy</string>
|
||||
<string name="app_widget_description">Zobrazí jeden widget z hlavného panela</string>
|
||||
<string name="appbar_search_in">Hľadať v %s</string>
|
||||
<string name="assistant_screen_all_task_type">Všetko</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Napíšte nejaký text</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Naozaj chcete vymazať túto úlohu?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Vymazať Úlohu</string>
|
||||
<string name="assistant_screen_failed_task_text">Zlyhalo</string>
|
||||
<string name="assistant_screen_loading">Zoznam úloh sa nahráva, prosím čakajte</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Žiadne úlohy nie su dostupné. Vyberte typ úlohy pre vytvorenie novej.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Pre typ úlohy %s nie je k dispozícii žiadna úloha, môžete vytvoriť novú úlohu vpravo dole.</string>
|
||||
<string name="assistant_screen_running_task_text">Prebieha</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Naplánované</string>
|
||||
<string name="assistant_screen_successful_task_text">Dokončené</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Pri vytváraní úlohy nastala chyba</string>
|
||||
<string name="assistant_screen_task_create_success_message">Úloha bola úspešne vytvorená</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Pri odstraňovaní úlohy nastala chyba</string>
|
||||
|
@ -65,7 +59,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Vymazať Úlohu</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Nie je možné načítať typy úloh, skontrolujte svoje internetové pripojenie.</string>
|
||||
<string name="assistant_screen_top_bar_title">Asistent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Neznámy</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Vstup</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Výstup</string>
|
||||
<string name="associated_account_not_found">Priradený účet sa nenašiel</string>
|
||||
|
|
|
@ -38,11 +38,6 @@
|
|||
<string name="app_config_proxy_port_title">Vrata posredniškega strežnika</string>
|
||||
<string name="app_widget_description">Pokaži en gradnik iz nadzorne plošče</string>
|
||||
<string name="appbar_search_in">Poišči v %s</string>
|
||||
<string name="assistant_screen_all_task_type">Vse</string>
|
||||
<string name="assistant_screen_failed_task_text">Opravilo je spodletelo!</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Načrtovano</string>
|
||||
<string name="assistant_screen_successful_task_text">Končano</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Neznano</string>
|
||||
<string name="associated_account_not_found">Povezanega računa ni mogoče najti!</string>
|
||||
<string name="auth_access_failed">Dostop je spodletel: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Račun še ni dodan na to napravo.</string>
|
||||
|
|
|
@ -29,9 +29,6 @@
|
|||
<string name="advanced_settings">Cilësime të Avancuara</string>
|
||||
<string name="allow_resharing">Lejo rindarje</string>
|
||||
<string name="appbar_search_in">Kërkoni në %s</string>
|
||||
<string name="assistant_screen_all_task_type">Të gjithë</string>
|
||||
<string name="assistant_screen_successful_task_text">Të plotësuara</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">I panjohur</string>
|
||||
<string name="associated_account_not_found">Llogaria e lidhur nuk u gjet!</string>
|
||||
<string name="auth_access_failed">Hyrja dështoi: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Kjo llogari nuk është shtuar në këtë paisje akoma</string>
|
||||
|
|
|
@ -30,16 +30,10 @@
|
|||
<string name="add_to_cloud">Dodaj u %1$s</string>
|
||||
<string name="advanced_settings">Napredna podešavanja</string>
|
||||
<string name="appbar_search_in">Pretraga u %s</string>
|
||||
<string name="assistant_screen_all_task_type">Sve</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Da li ste sigurni da želite da izbrišete ovaj zadatak?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Izbriši zadatak</string>
|
||||
<string name="assistant_screen_failed_task_text">Nije uspelo</string>
|
||||
<string name="assistant_screen_loading">Lista zadataka se učitava, molimo sačekajte</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Nijedan zadatak nije dostupan. Izaberite tip zadatka da biste kreirali novi zadatak.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Nijedan zadatak nije dostupan za %s tip zadatka, možete kreirati novi zadatak dole desno.</string>
|
||||
<string name="assistant_screen_running_task_text">U toku</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Zakazano</string>
|
||||
<string name="assistant_screen_successful_task_text">Završeno</string>
|
||||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Izbriši zadatak</string>
|
||||
<string name="associated_account_not_found">Pridruženi nalog nije nađen!</string>
|
||||
<string name="auth_access_failed">Neuspeo pristup: %1$s</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Прокси порт</string>
|
||||
<string name="app_widget_description">Приказује један виџет са контролне табле</string>
|
||||
<string name="appbar_search_in">Тражи у %s</string>
|
||||
<string name="assistant_screen_all_task_type">Све</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Откуцајте неки текст</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Да ли сте сигурни да желите да обришете овај задатак?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Обриши задатак</string>
|
||||
<string name="assistant_screen_failed_task_text">Није успело</string>
|
||||
<string name="assistant_screen_loading">Листа задатака се учитава, молимо вас сачекајте</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Не постоји ниједан задатак. Да бисте креирали нови задатак, изаберите тип задатка.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Не постоји ниједан задатак типа %s, нови задатак можете да креирате доле десно.</string>
|
||||
<string name="assistant_screen_running_task_text">Напредује</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Заказано</string>
|
||||
<string name="assistant_screen_successful_task_text">Завршено</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Дошло је до грешке током креирања задатка</string>
|
||||
<string name="assistant_screen_task_create_success_message">Задатак је успешно креиран</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Дошло је до грешке током брисања задатка</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Излаз задатка још увек није спреман.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Не могу да се преузму типови задатака, молимо вас да проверите везу са интернетом.</string>
|
||||
<string name="assistant_screen_top_bar_title">Асистент</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Непознато</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Унос</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Излаз</string>
|
||||
<string name="associated_account_not_found">Придружени налог није нађен!</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Proxyport</string>
|
||||
<string name="app_widget_description">Visa en widget från dashboard</string>
|
||||
<string name="appbar_search_in">Sök i %s</string>
|
||||
<string name="assistant_screen_all_task_type">Alla</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Skriv någon text</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Är du säker på att du vill ta bort den här uppgiften?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Ta bort uppgift</string>
|
||||
<string name="assistant_screen_failed_task_text">Misslyckades</string>
|
||||
<string name="assistant_screen_loading">Uppgiftslistan laddas, vänta</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Ingen uppgift tillgänglig. Välj en uppgiftstyp för att skapa en ny uppgift.</string>
|
||||
<string name="assistant_screen_no_task_available_text">Ingen uppgift tillgänglig för uppgiftstyp %s, du kan skapa en ny uppgift längst ner till höger.</string>
|
||||
<string name="assistant_screen_running_task_text">Pågående</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Schemalagd</string>
|
||||
<string name="assistant_screen_successful_task_text">Slutförd</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Ett fel uppstod när uppgiften skapades</string>
|
||||
<string name="assistant_screen_task_create_success_message">Uppgiften har skapats</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Ett fel uppstod när uppgiften skulle tas bort</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Uppgiftens resultat är inte redo än.</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Det går inte att hämta uppgiftstyper, kontrollera din internetanslutning.</string>
|
||||
<string name="assistant_screen_top_bar_title">Assistent</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Okänd</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Inmatning</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Utdata</string>
|
||||
<string name="associated_account_not_found">Associerat konto kunde inte hittas!</string>
|
||||
|
|
|
@ -34,11 +34,7 @@
|
|||
<string name="allow_resharing">อนุญาตให้แชร์ซ้ำ</string>
|
||||
<string name="app_widget_description">แสดงหนึ่งวิดเจ็ตจากแดชบอร์ด</string>
|
||||
<string name="appbar_search_in">ค้นหาใน %s</string>
|
||||
<string name="assistant_screen_all_task_type">ทั้งหมด</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">พิมพ์ข้อความของคุณ</string>
|
||||
<string name="assistant_screen_running_task_text">อยู่ระหว่างการดำเนินการ</string>
|
||||
<string name="assistant_screen_successful_task_text">เสร็จแล้ว</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">ไม่ทราบ</string>
|
||||
<string name="associated_account_not_found">ไม่พบบัญชีที่เกี่ยวข้อง!</string>
|
||||
<string name="auth_access_failed">การเข้าถึงล้มเหลว: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">บัญชียังไม่ถูกเพิ่มบนอุปกรณ์นี้</string>
|
||||
|
|
|
@ -30,8 +30,6 @@
|
|||
<string name="add_to_cloud">Goşuň%1$s</string>
|
||||
<string name="allow_resharing">Täzeden paýlaşmaga rugsat beriň</string>
|
||||
<string name="appbar_search_in">Gözlemek%siçinde</string>
|
||||
<string name="assistant_screen_successful_task_text">Tamamlanan</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Näbelli</string>
|
||||
<string name="associated_account_not_found">Baglanyşyk hasaby tapylmady!</string>
|
||||
<string name="auth_access_failed">Şowsuz Giriş%1$s:</string>
|
||||
<string name="auth_account_does_not_exist">Akaunt entek bu enjamda goşulmaýar</string>
|
||||
|
|
|
@ -38,17 +38,11 @@
|
|||
<string name="app_config_proxy_port_title">Vekil sunucu bağlantı noktası</string>
|
||||
<string name="app_widget_description">Panodan bir pano bileşeni görüntüler</string>
|
||||
<string name="appbar_search_in">%s içinde arama</string>
|
||||
<string name="assistant_screen_all_task_type">Tümü</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Bir şeyler yazın</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Bu görevi silmek istediğinize emin misiniz?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Görevi sil</string>
|
||||
<string name="assistant_screen_failed_task_text">Tamamlanamadı</string>
|
||||
<string name="assistant_screen_loading">Lütfen görev listesi yüklenirken bekleyin</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Herhangi bir görev yok.Yeni bir görev eklemek için bir görev türü seçin.</string>
|
||||
<string name="assistant_screen_no_task_available_text">%s türünde bir görev yok. Sağ alttan yeni bir görev ekleyebilirsiniz.</string>
|
||||
<string name="assistant_screen_running_task_text">Yapılıyor</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Zamanlanmış</string>
|
||||
<string name="assistant_screen_successful_task_text">Tamamlanmış</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Görev oluşturulurken bir sorun çıktı</string>
|
||||
<string name="assistant_screen_task_create_success_message">Görev oluşturuldu</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Görev silinirken bir sorun çıktı</string>
|
||||
|
@ -57,7 +51,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Görevi sil</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Görev türleri alınamadı. Lütfen İnternet bağlantınızı denetleyin.</string>
|
||||
<string name="assistant_screen_top_bar_title">Yardımcı</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Bilinmiyor</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Giriş</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Çıkış</string>
|
||||
<string name="associated_account_not_found">İlişkili hesap bulunamadı!</string>
|
||||
|
|
|
@ -38,17 +38,11 @@
|
|||
<string name="app_config_proxy_port_title">ۋاكالەتچى ئېغىز</string>
|
||||
<string name="app_widget_description">باشقۇرۇش تاختىسىدىكى بىر كىچىك قورالنى كۆرسىتىدۇ</string>
|
||||
<string name="appbar_search_in">% S دىن ئىزدەڭ</string>
|
||||
<string name="assistant_screen_all_task_type">ھەممىسى</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">بەزى تېكىستلەرنى كىرگۈزۈڭ</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">بۇ ۋەزىپىنى ئۆچۈرمەكچىمۇ؟</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">ۋەزىپىنى ئۆچۈرۈڭ</string>
|
||||
<string name="assistant_screen_failed_task_text">مەغلۇب بولدى</string>
|
||||
<string name="assistant_screen_loading">ۋەزىپە تىزىملىكى يۈكلىنىۋاتىدۇ ، ساقلاپ تۇرۇڭ</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">ھېچقانداق ۋەزىپە يوق. يېڭى ۋەزىپە يارىتىش ئۈچۈن ۋەزىپە تۈرىنى تاللاڭ.</string>
|
||||
<string name="assistant_screen_no_task_available_text">% S ۋەزىپە تىپىغا ماس كېلىدىغان ۋەزىپە يوق ، ئاستىدىن ئوڭدىن يېڭى ۋەزىپە قۇرالايسىز.</string>
|
||||
<string name="assistant_screen_running_task_text">ئىلگىرىلەۋاتىدۇ</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">پىلانلانغان</string>
|
||||
<string name="assistant_screen_successful_task_text">تاماملاندى</string>
|
||||
<string name="assistant_screen_task_create_fail_message">ۋەزىپە قۇرغاندا خاتالىق كۆرۈلدى</string>
|
||||
<string name="assistant_screen_task_create_success_message">ۋەزىپە مۇۋەپپەقىيەتلىك قۇرۇلدى</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">ۋەزىپىنى ئۆچۈرگەندە خاتالىق كۆرۈلدى</string>
|
||||
|
@ -57,7 +51,6 @@
|
|||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">ۋەزىپىنى ئۆچۈرۈڭ</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">ۋەزىپە تۈرلىرىنى ئېلىپ كېتەلمىدىڭىز ، تور ئۇلىنىشىڭىزنى تەكشۈرۈپ بېقىڭ.</string>
|
||||
<string name="assistant_screen_top_bar_title">ياردەمچى</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">نامەلۇم</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">كىرگۈزۈش</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">چىقىرىش</string>
|
||||
<string name="associated_account_not_found">بىرلەشمە ھېسابات تېپىلمىدى!</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">Порт проксі-сервера</string>
|
||||
<string name="app_widget_description">Показувати один віджет з панелі віджетів</string>
|
||||
<string name="appbar_search_in">Пошук у %s</string>
|
||||
<string name="assistant_screen_all_task_type">Всі</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Вставте будь-який текст</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Дійсно вилучити це завдання?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Вилучити завдання</string>
|
||||
<string name="assistant_screen_failed_task_text">Не вдалося</string>
|
||||
<string name="assistant_screen_loading">Отримання переліку завдань, зачекайте</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Відсутні завдання. Виберіть вид завдань для додавання нового завдання</string>
|
||||
<string name="assistant_screen_no_task_available_text">Відсутні завдання для завдань типу %s. Ви можете додати нове завдання праворуч внизу. </string>
|
||||
<string name="assistant_screen_running_task_text">В процесі</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Заплановано</string>
|
||||
<string name="assistant_screen_successful_task_text">Виконано</string>
|
||||
<string name="assistant_screen_task_create_fail_message">Помилка під час додавання завдання</string>
|
||||
<string name="assistant_screen_task_create_success_message">Успішно додано завдання</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">Помилка під час вилучення завдання</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">Поки неможливо показати завдання</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">Не вдалося отримати типи завдань. Перевірте з\'єднання з мережею.</string>
|
||||
<string name="assistant_screen_top_bar_title">Помічник</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Невідомо</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">Введення</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Виведення</string>
|
||||
<string name="associated_account_not_found">Пов\'язаний обліковий запис не знайдено!</string>
|
||||
|
|
|
@ -33,10 +33,6 @@
|
|||
<string name="allow_resharing">Cho phép chia sẻ lại</string>
|
||||
<string name="app_widget_description">Hiện thị lối tắt từ dashboard</string>
|
||||
<string name="appbar_search_in">Tìm kiếm trong %s</string>
|
||||
<string name="assistant_screen_all_task_type">Tất cả</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Lên kế hoạch</string>
|
||||
<string name="assistant_screen_successful_task_text">Hoàn thành</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">Không xác định</string>
|
||||
<string name="associated_account_not_found">Không tìm thấy tài khoản được liên kết!</string>
|
||||
<string name="auth_access_failed">Lỗi truy cập: %1$s</string>
|
||||
<string name="auth_account_does_not_exist">Tài khoản chưa được thêm vào thiết bị này.</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">代理端口</string>
|
||||
<string name="app_widget_description">显示仪表盘中的一个小部件</string>
|
||||
<string name="appbar_search_in">在 %s 中搜索</string>
|
||||
<string name="assistant_screen_all_task_type">所有</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">输入一些文字</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">您确定要删除这些任务吗?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">删除任务</string>
|
||||
<string name="assistant_screen_failed_task_text">失败了</string>
|
||||
<string name="assistant_screen_loading">任务列表加载中,请稍等</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">没有可用任务。选择任务类型以创建新任务。</string>
|
||||
<string name="assistant_screen_no_task_available_text">%s任务类型没有可用任务,你可以从右下角创建新任务。</string>
|
||||
<string name="assistant_screen_running_task_text">进行中</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">已排程</string>
|
||||
<string name="assistant_screen_successful_task_text">已完成</string>
|
||||
<string name="assistant_screen_task_create_fail_message">创建任务时发生错误</string>
|
||||
<string name="assistant_screen_task_create_success_message">任务已创建</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">删除任务时发生错误</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">任务输出尚未就绪。</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">无法获取任务类型,请检查您的网络连接。</string>
|
||||
<string name="assistant_screen_top_bar_title">助手</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">未知</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">输入</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">输出结果</string>
|
||||
<string name="associated_account_not_found">相关账号未找到!</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">proxy代理伺服器連接埠</string>
|
||||
<string name="app_widget_description">顯示儀表板中的一個小部件</string>
|
||||
<string name="appbar_search_in">%s內搜尋</string>
|
||||
<string name="assistant_screen_all_task_type">全部</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">輸入一些文字</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">您確定要刪除此工作項目嗎?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">刪除任務</string>
|
||||
<string name="assistant_screen_failed_task_text">失敗了</string>
|
||||
<string name="assistant_screen_loading">任務清單加載中,請稍候</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">無可用的工作項目。選取工作項目類型以建立新工作項目。</string>
|
||||
<string name="assistant_screen_no_task_available_text">沒有可用於 %s 任務項目類型的任務項目,您可以從右下角建立新任務項目。</string>
|
||||
<string name="assistant_screen_running_task_text">進行中</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">預定</string>
|
||||
<string name="assistant_screen_successful_task_text">已完成</string>
|
||||
<string name="assistant_screen_task_create_fail_message">建立任務項目時發生錯誤</string>
|
||||
<string name="assistant_screen_task_create_success_message">已成功建立任務項目</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">刪除任務時發生了錯誤</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">任務輸出尚未就緒。</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">無法擷取任務類型,請檢查您的網際網路連線。</string>
|
||||
<string name="assistant_screen_top_bar_title">助手</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">不詳</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">輸入</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">輸出</string>
|
||||
<string name="associated_account_not_found">無法找到連結帳戶</string>
|
||||
|
|
|
@ -46,17 +46,11 @@
|
|||
<string name="app_config_proxy_port_title">proxy代理伺服器連接埠</string>
|
||||
<string name="app_widget_description">顯示儀表板中的一個小工具</string>
|
||||
<string name="appbar_search_in">搜尋 %s</string>
|
||||
<string name="assistant_screen_all_task_type">全部</string>
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">輸入一些文字</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">您確定要刪除此工作項目嗎?</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">刪除工作項目</string>
|
||||
<string name="assistant_screen_failed_task_text">失敗</string>
|
||||
<string name="assistant_screen_loading">未載入工作項目清單,請稍候</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">無可用的工作項目。選取工作項目類型以建立新工作項目。</string>
|
||||
<string name="assistant_screen_no_task_available_text">沒有可用於 %s 工作項目類型的工作項目,您可以從右下角建立新工作項目。</string>
|
||||
<string name="assistant_screen_running_task_text">進行中</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">已安排</string>
|
||||
<string name="assistant_screen_successful_task_text">已完成</string>
|
||||
<string name="assistant_screen_task_create_fail_message">建立工作項目時發生錯誤</string>
|
||||
<string name="assistant_screen_task_create_success_message">已成功建立工作項目</string>
|
||||
<string name="assistant_screen_task_delete_fail_message">刪除工作項目時發生錯誤</string>
|
||||
|
@ -66,7 +60,6 @@
|
|||
<string name="assistant_screen_task_output_empty_text">任務輸出尚未就緒。</string>
|
||||
<string name="assistant_screen_task_types_error_state_message">無法擷取工作項目類型,請檢查您的網際網路連線。</string>
|
||||
<string name="assistant_screen_top_bar_title">助理</string>
|
||||
<string name="assistant_screen_unknown_task_status_text">未知</string>
|
||||
<string name="assistant_task_detail_screen_input_button_title">輸入</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">輸出</string>
|
||||
<string name="associated_account_not_found">找不到相關的帳號!</string>
|
||||
|
|
|
@ -76,4 +76,6 @@
|
|||
<color name="appbar">@android:color/white</color>
|
||||
<color name="fontAppbar">#666666</color>
|
||||
<color name="fontSecondaryAppbar">#A5A5A5</color>
|
||||
|
||||
<color name="actionbar_color">#F7F9FF</color>
|
||||
</resources>
|
||||
|
|
|
@ -51,10 +51,10 @@
|
|||
<string name="assistant_screen_top_bar_title">Assistant</string>
|
||||
<string name="assistant_screen_loading">Task List are loading, please wait</string>
|
||||
<string name="assistant_screen_task_output_empty_text">The task output is not ready yet.</string>
|
||||
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No task available. Select a task type to create a new task.</string>
|
||||
<string name="assistant_screen_no_task_available_text">No task available for %s task type, you can create a new task from bottom right.</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_title">Delete Task</string>
|
||||
<string name="assistant_screen_delete_task_alert_dialog_description">Are you sure you want to delete this task?</string>
|
||||
<string name="assistant_screen_add_task_alert_dialog_title">Add new task</string>
|
||||
|
||||
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Delete Task</string>
|
||||
|
||||
|
@ -66,17 +66,9 @@
|
|||
|
||||
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Type some text</string>
|
||||
|
||||
<string name="assistant_screen_unknown_task_status_text">Unknown</string>
|
||||
<string name="assistant_screen_scheduled_task_status_text">Scheduled</string>
|
||||
<string name="assistant_screen_successful_task_text">Completed</string>
|
||||
<string name="assistant_screen_failed_task_text">Failed</string>
|
||||
<string name="assistant_screen_running_task_text">In Progress</string>
|
||||
|
||||
<string name="assistant_task_detail_screen_input_button_title">Input</string>
|
||||
<string name="assistant_task_detail_screen_output_button_title">Output</string>
|
||||
|
||||
<string name="assistant_screen_all_task_type">All</string>
|
||||
|
||||
<string name="drawer_item_assistant">Assistant</string>
|
||||
<string name="drawer_item_all_files">All files</string>
|
||||
<string name="drawer_item_personal_files">Personal files</string>
|
||||
|
@ -134,6 +126,21 @@
|
|||
<item quantity="other">%d minutes</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="time_seconds_ago">
|
||||
<item quantity="one">1 second ago</item>
|
||||
<item quantity="other">%d seconds ago</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="time_minutes_ago">
|
||||
<item quantity="one">1 minute ago</item>
|
||||
<item quantity="other">%d minutes ago</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="time_hours_ago">
|
||||
<item quantity="one">1 hour ago</item>
|
||||
<item quantity="other">%d hours ago</item>
|
||||
</plurals>
|
||||
|
||||
<string name="recommend_subject">Try %1$s on your device!</string>
|
||||
<string name="recommend_text">I want to invite you to use %1$s on your device.\nDownload here: %2$s</string>
|
||||
<string name="recommend_urls">%1$s or %2$s</string>
|
||||
|
@ -190,6 +197,7 @@
|
|||
<string name="common_yes">Yes</string>
|
||||
<string name="common_no">No</string>
|
||||
<string name="common_ok">OK</string>
|
||||
<string name="common_now">Now</string>
|
||||
<string name="common_cancel_sync">Cancel sync</string>
|
||||
<string name="common_cancel">Cancel</string>
|
||||
<string name="common_back">Back</string>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
*/
|
||||
buildscript {
|
||||
ext {
|
||||
androidLibraryVersion ="4a95888afc472369e85fccae3d3573ff9e36fb50"
|
||||
androidLibraryVersion ="f174c1ee78"
|
||||
androidPluginVersion = '8.7.3'
|
||||
androidxMediaVersion = '1.4.1'
|
||||
androidxTestVersion = "1.6.1"
|
||||
|
|
|
@ -7934,6 +7934,14 @@
|
|||
<sha256 value="486009759cf8c51c48fa7869d61a129240172e94edfea721cab5c11154c3b9de" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.github.nextcloud" name="android-library" version="f174c1ee78">
|
||||
<artifact name="android-library-f174c1ee78.aar">
|
||||
<sha256 value="8f62a8bb0b9699dfbfcdf58493d0386e6b91113e3ba2157421249ab3cbc55d8f" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||
</artifact>
|
||||
<artifact name="android-library-f174c1ee78.module">
|
||||
<sha256 value="7a2189a2b81f8210d6431a7cfc2911be36a9cf42d030101106d5577a099c28d9" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.github.nextcloud" name="android-library" version="f6420365513febcb22f143dcaeed07a9d9d550d5">
|
||||
<artifact name="android-library-f6420365513febcb22f143dcaeed07a9d9d550d5.aar">
|
||||
<sha256 value="57ab4fd7c922875a7e0b5feac20aa27ab5df0fd3b4e042f92ed727c0b6316e81" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||
|
|
Loading…
Reference in a new issue