mirror of
https://github.com/FossifyOrg/Notes.git
synced 2026-01-17 11:59:03 -05:00
Add collapsible checked section in checklists
Enabled by default and unlike before, this works with custom sorting as well. Related issue: https://github.com/FossifyOrg/Notes/issues/40
This commit is contained in:
@@ -93,10 +93,10 @@ class NotesPagerAdapter(fm: FragmentManager, val notes: List<Note>, val activity
|
||||
}
|
||||
|
||||
fun removeDoneCheckListItems(position: Int) {
|
||||
(fragments[position] as? TasksFragment)?.removeDoneItems()
|
||||
(fragments[position] as? TasksFragment)?.removeCheckedItems()
|
||||
}
|
||||
|
||||
fun refreshChecklist(position: Int) {
|
||||
(fragments[position] as? TasksFragment)?.refreshItems()
|
||||
(fragments[position] as? TasksFragment)?.saveAndReload()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,27 +16,30 @@ import org.fossify.commons.adapters.MyRecyclerViewListAdapter
|
||||
import org.fossify.commons.extensions.applyColorFilter
|
||||
import org.fossify.commons.extensions.beVisibleIf
|
||||
import org.fossify.commons.extensions.removeBit
|
||||
import org.fossify.commons.helpers.SORT_BY_CUSTOM
|
||||
import org.fossify.commons.interfaces.ItemMoveCallback
|
||||
import org.fossify.commons.interfaces.ItemTouchHelperContract
|
||||
import org.fossify.commons.interfaces.StartReorderDragListener
|
||||
import org.fossify.commons.views.MyRecyclerView
|
||||
import org.fossify.notes.R
|
||||
import org.fossify.notes.databinding.ItemCheckedTasksBinding
|
||||
import org.fossify.notes.databinding.ItemChecklistBinding
|
||||
import org.fossify.notes.dialogs.EditTaskDialog
|
||||
import org.fossify.notes.extensions.config
|
||||
import org.fossify.notes.extensions.getPercentageFontSize
|
||||
import org.fossify.notes.helpers.DONE_CHECKLIST_ITEM_ALPHA
|
||||
import org.fossify.notes.interfaces.TasksActionListener
|
||||
import org.fossify.notes.models.CompletedTasks
|
||||
import org.fossify.notes.models.NoteItem
|
||||
import org.fossify.notes.models.Task
|
||||
import java.util.Collections
|
||||
|
||||
private const val TYPE_TASK = 0
|
||||
private const val TYPE_COMPLETED_TASKS = 1
|
||||
|
||||
class TasksAdapter(
|
||||
activity: BaseSimpleActivity,
|
||||
val listener: TasksActionListener?,
|
||||
recyclerView: MyRecyclerView,
|
||||
itemClick: (Any) -> Unit = {},
|
||||
) : MyRecyclerViewListAdapter<Task>(
|
||||
) : MyRecyclerViewListAdapter<NoteItem>(
|
||||
activity = activity, recyclerView = recyclerView, diffUtil = TaskDiffCallback(), itemClick = itemClick
|
||||
), ItemTouchHelperContract {
|
||||
|
||||
@@ -67,20 +70,20 @@ class TasksAdapter(
|
||||
when (id) {
|
||||
R.id.cab_move_to_top -> moveSelectedItemsToTop()
|
||||
R.id.cab_move_to_bottom -> moveSelectedItemsToBottom()
|
||||
R.id.cab_rename -> renameChecklistItem()
|
||||
R.id.cab_rename -> renameTask()
|
||||
R.id.cab_delete -> deleteSelection()
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemId(position: Int) = currentList[position].id.toLong()
|
||||
override fun getItemId(position: Int) = getItemKey(getItem(position)).toLong()
|
||||
|
||||
override fun getSelectableItemCount() = currentList.size
|
||||
override fun getSelectableItemCount() = getSelectedItems().size
|
||||
|
||||
override fun getIsItemSelectable(position: Int) = true
|
||||
override fun getIsItemSelectable(position: Int) = getItem(position) is Task
|
||||
|
||||
override fun getItemSelectionKey(position: Int) = currentList.getOrNull(position)?.id
|
||||
override fun getItemSelectionKey(position: Int) = getItemKey(getItem(position))
|
||||
|
||||
override fun getItemKeyPosition(key: Int) = currentList.indexOfFirst { it.id == key }
|
||||
override fun getItemKeyPosition(key: Int) = currentList.indexOfFirst { getItemKey(it) == key }
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onActionModeCreated() = notifyDataSetChanged()
|
||||
@@ -95,78 +98,61 @@ class TasksAdapter(
|
||||
}
|
||||
|
||||
menu.findItem(R.id.cab_rename).isVisible = isOneItemSelected()
|
||||
menu.findItem(R.id.cab_move_to_top).isVisible = selectedItems.none { it.isDone } || !activity.config.moveDoneChecklistItems
|
||||
menu.findItem(R.id.cab_move_to_bottom).isVisible = selectedItems.none { it.isDone } || !activity.config.moveDoneChecklistItems
|
||||
}
|
||||
|
||||
override fun getItemViewType(position: Int): Int {
|
||||
return when (getItem(position)) {
|
||||
is Task -> TYPE_TASK
|
||||
is CompletedTasks -> TYPE_COMPLETED_TASKS
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
return createViewHolder(ItemChecklistBinding.inflate(layoutInflater, parent, false).root)
|
||||
return createViewHolder(
|
||||
when (viewType) {
|
||||
TYPE_TASK -> ItemChecklistBinding.inflate(layoutInflater, parent, false).root
|
||||
TYPE_COMPLETED_TASKS -> ItemCheckedTasksBinding.inflate(layoutInflater, parent, false).root
|
||||
else -> throw IllegalArgumentException("Unsupported view type: $viewType")
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val item = currentList[position]
|
||||
val item = getItem(position)
|
||||
holder.bindView(item, allowSingleClick = true, allowLongClick = true) { itemView, _ ->
|
||||
setupView(itemView, item, holder)
|
||||
when (item) {
|
||||
is Task -> setupView(itemView, item, holder)
|
||||
is CompletedTasks -> setupCompletedTasks(itemView, item)
|
||||
}
|
||||
}
|
||||
|
||||
bindViewHolder(holder)
|
||||
}
|
||||
|
||||
private fun renameChecklistItem() {
|
||||
val task = getSelectedItems().first()
|
||||
EditTaskDialog(activity, task.title) { title ->
|
||||
val tasks = currentList.toMutableList()
|
||||
tasks[getSelectedItemPositions().first()] = task.copy(title = title)
|
||||
saveTasks(tasks)
|
||||
private fun renameTask() {
|
||||
listener?.editTask(task = getSelectedItems().first()) {
|
||||
finishActMode()
|
||||
}
|
||||
}
|
||||
|
||||
private fun deleteSelection() {
|
||||
val tasks = currentList.toMutableList()
|
||||
val tasksToRemove = ArrayList<Task>(selectedKeys.size)
|
||||
selectedKeys.forEach { key ->
|
||||
val position = tasks.indexOfFirst { it.id == key }
|
||||
if (position != -1) {
|
||||
val favorite = getItemWithKey(key)
|
||||
if (favorite != null) {
|
||||
tasksToRemove.add(favorite)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.removeAll(tasksToRemove.toSet())
|
||||
saveTasks(tasks)
|
||||
listener?.deleteTasks(getSelectedItems())
|
||||
finishActMode()
|
||||
}
|
||||
|
||||
private fun moveSelectedItemsToTop() {
|
||||
activity.config.sorting = SORT_BY_CUSTOM
|
||||
val tasks = currentList.toMutableList()
|
||||
selectedKeys.reversed().forEach { id ->
|
||||
val position = tasks.indexOfFirst { it.id == id }
|
||||
val tempItem = tasks[position]
|
||||
tasks.removeAt(position)
|
||||
tasks.add(0, tempItem)
|
||||
}
|
||||
|
||||
saveTasks(tasks)
|
||||
listener?.moveTasksToTop(taskIds = getSelectedItems().map { it.id })
|
||||
}
|
||||
|
||||
private fun moveSelectedItemsToBottom() {
|
||||
activity.config.sorting = SORT_BY_CUSTOM
|
||||
val tasks = currentList.toMutableList()
|
||||
selectedKeys.forEach { id ->
|
||||
val position = tasks.indexOfFirst { it.id == id }
|
||||
val tempItem = tasks[position]
|
||||
tasks.removeAt(position)
|
||||
tasks.add(tasks.size, tempItem)
|
||||
}
|
||||
|
||||
saveTasks(tasks)
|
||||
listener?.moveTasksToBottom(taskIds = getSelectedItems().map { it.id })
|
||||
}
|
||||
|
||||
private fun getItemWithKey(key: Int): Task? = currentList.firstOrNull { it.id == key }
|
||||
|
||||
private fun getSelectedItems() = currentList.filter { selectedKeys.contains(it.id) }.toMutableList()
|
||||
private fun getSelectedItems() = currentList.filterIsInstance<Task>().filter { selectedKeys.contains(it.id) }.toMutableList()
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
private fun setupView(view: View, task: Task, holder: ViewHolder) {
|
||||
val isSelected = selectedKeys.contains(task.id)
|
||||
ItemChecklistBinding.bind(view).apply {
|
||||
@@ -188,7 +174,8 @@ class TasksAdapter(
|
||||
checklistCheckbox.isChecked = task.isDone
|
||||
checklistHolder.isSelected = isSelected
|
||||
|
||||
checklistDragHandle.beVisibleIf(selectedKeys.isNotEmpty())
|
||||
val canMoveTask = !task.isDone || !activity.config.moveDoneChecklistItems
|
||||
checklistDragHandle.beVisibleIf(beVisible = canMoveTask && selectedKeys.isNotEmpty())
|
||||
checklistDragHandle.applyColorFilter(textColor)
|
||||
checklistDragHandle.setOnTouchListener { _, event ->
|
||||
if (event.action == MotionEvent.ACTION_DOWN) {
|
||||
@@ -199,46 +186,43 @@ class TasksAdapter(
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRowMoved(fromPosition: Int, toPosition: Int) {
|
||||
activity.config.sorting = SORT_BY_CUSTOM
|
||||
val tasks = currentList.toMutableList()
|
||||
if (fromPosition < toPosition) {
|
||||
for (i in fromPosition until toPosition) {
|
||||
Collections.swap(tasks, i, i + 1)
|
||||
}
|
||||
} else {
|
||||
for (i in fromPosition downTo toPosition + 1) {
|
||||
Collections.swap(tasks, i, i - 1)
|
||||
}
|
||||
private fun setupCompletedTasks(view: View, completedTasks: CompletedTasks) {
|
||||
ItemCheckedTasksBinding.bind(view).apply {
|
||||
numCheckedItems.text = activity.getString(R.string.num_checked_items, completedTasks.tasks.size)
|
||||
expandCollapseIcon.setImageResource(
|
||||
if (completedTasks.expanded) {
|
||||
org.fossify.commons.R.drawable.ic_chevron_up_vector
|
||||
} else {
|
||||
org.fossify.commons.R.drawable.ic_chevron_down_vector
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
saveTasks(tasks)
|
||||
override fun onRowMoved(fromPosition: Int, toPosition: Int) {
|
||||
listener?.moveTask(fromPosition, toPosition)
|
||||
}
|
||||
|
||||
override fun onRowSelected(myViewHolder: MyRecyclerViewAdapter.ViewHolder?) {}
|
||||
|
||||
override fun onRowClear(myViewHolder: MyRecyclerViewAdapter.ViewHolder?) {
|
||||
saveTasks(currentList.toList())
|
||||
listener?.saveAndReload()
|
||||
}
|
||||
|
||||
private fun saveTasks(tasks: List<Task>) {
|
||||
listener?.saveTasks(tasks) {
|
||||
listener.refreshItems()
|
||||
private fun getItemKey(item: NoteItem) = when (item) {
|
||||
is Task -> item.id
|
||||
is CompletedTasks -> item.id
|
||||
}
|
||||
}
|
||||
|
||||
private class TaskDiffCallback : DiffUtil.ItemCallback<NoteItem>() {
|
||||
override fun areItemsTheSame(oldItem: NoteItem, newItem: NoteItem): Boolean {
|
||||
return if (oldItem is Task && newItem is Task) {
|
||||
return oldItem.id == newItem.id
|
||||
} else {
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class TaskDiffCallback : DiffUtil.ItemCallback<Task>() {
|
||||
override fun areItemsTheSame(
|
||||
oldItem: Task,
|
||||
newItem: Task
|
||||
) = oldItem.id == newItem.id
|
||||
|
||||
override fun areContentsTheSame(
|
||||
oldItem: Task,
|
||||
newItem: Task
|
||||
) = oldItem.id == newItem.id
|
||||
&& oldItem.isDone == newItem.isDone
|
||||
&& oldItem.title == newItem.title
|
||||
&& oldItem.dateCreated == newItem.dateCreated
|
||||
override fun areContentsTheSame(oldItem: NoteItem, newItem: NoteItem) = oldItem == newItem
|
||||
}
|
||||
|
||||
@@ -33,12 +33,10 @@ class SortChecklistDialog(private val activity: SimpleActivity, private val call
|
||||
|
||||
private fun setupSortRadio() {
|
||||
val fieldRadio = binding.sortingDialogRadioSorting
|
||||
fieldRadio.setOnCheckedChangeListener { group, checkedId ->
|
||||
fieldRadio.setOnCheckedChangeListener { _, checkedId ->
|
||||
val isCustomSorting = checkedId == binding.sortingDialogRadioCustom.id
|
||||
binding.sortingDialogRadioOrder.beGoneIf(isCustomSorting)
|
||||
binding.sortingDialogOrderDivider.beGoneIf(isCustomSorting)
|
||||
binding.moveUndoneChecklistItemsDivider.beGoneIf(isCustomSorting)
|
||||
binding.settingsMoveUndoneChecklistItemsHolder.beGoneIf(isCustomSorting)
|
||||
}
|
||||
|
||||
var fieldBtn = binding.sortingDialogRadioTitle
|
||||
|
||||
@@ -14,19 +14,23 @@ import org.fossify.commons.helpers.ensureBackgroundThread
|
||||
import org.fossify.notes.activities.SimpleActivity
|
||||
import org.fossify.notes.adapters.TasksAdapter
|
||||
import org.fossify.notes.databinding.FragmentChecklistBinding
|
||||
import org.fossify.notes.dialogs.EditTaskDialog
|
||||
import org.fossify.notes.dialogs.NewChecklistItemDialog
|
||||
import org.fossify.notes.extensions.config
|
||||
import org.fossify.notes.extensions.updateWidgets
|
||||
import org.fossify.notes.helpers.NOTE_ID
|
||||
import org.fossify.notes.helpers.NotesHelper
|
||||
import org.fossify.notes.interfaces.TasksActionListener
|
||||
import org.fossify.notes.models.CompletedTasks
|
||||
import org.fossify.notes.models.Note
|
||||
import org.fossify.notes.models.NoteItem
|
||||
import org.fossify.notes.models.Task
|
||||
import java.io.File
|
||||
|
||||
class TasksFragment : NoteFragment(), TasksActionListener {
|
||||
|
||||
private var noteId = 0L
|
||||
private var expanded = false
|
||||
|
||||
private lateinit var binding: FragmentChecklistBinding
|
||||
|
||||
@@ -62,13 +66,7 @@ class TasksFragment : NoteFragment(), TasksActionListener {
|
||||
try {
|
||||
val taskType = object : TypeToken<List<Task>>() {}.type
|
||||
tasks = Gson().fromJson<ArrayList<Task>>(storedNote.getNoteStoredValue(requireActivity()), taskType) ?: ArrayList(1)
|
||||
|
||||
tasks = tasks.toMutableList() as ArrayList<Task>
|
||||
val sorting = config?.sorting ?: 0
|
||||
if (sorting and SORT_BY_CUSTOM == 0 && config?.moveDoneChecklistItems == true) {
|
||||
tasks.sortBy { it.isDone }
|
||||
}
|
||||
|
||||
setupFragment()
|
||||
} catch (e: Exception) {
|
||||
migrateCheckListOnFailure(storedNote)
|
||||
@@ -90,7 +88,7 @@ class TasksFragment : NoteFragment(), TasksActionListener {
|
||||
)
|
||||
}
|
||||
|
||||
saveTasks(tasks)
|
||||
saveAndReload()
|
||||
}
|
||||
|
||||
private fun setupFragment() {
|
||||
@@ -163,37 +161,67 @@ class TasksFragment : NoteFragment(), TasksActionListener {
|
||||
}
|
||||
}
|
||||
|
||||
private fun prepareTaskItems(): List<NoteItem> {
|
||||
return if (config?.moveDoneChecklistItems == true) {
|
||||
mutableListOf<NoteItem>().apply {
|
||||
val (checked, unchecked) = tasks.partition { it.isDone }
|
||||
this += unchecked
|
||||
if (checked.isNotEmpty()) {
|
||||
if (unchecked.isEmpty()) {
|
||||
expanded = true
|
||||
}
|
||||
|
||||
this += CompletedTasks(tasks = checked, expanded = expanded)
|
||||
if (expanded) {
|
||||
this += checked
|
||||
}
|
||||
} else {
|
||||
expanded = false
|
||||
}
|
||||
}
|
||||
} else {
|
||||
tasks.toList()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getTasksAdapter(): TasksAdapter {
|
||||
var adapter = binding.checklistList.adapter as? TasksAdapter
|
||||
if (adapter == null) {
|
||||
adapter = TasksAdapter(
|
||||
activity = activity as SimpleActivity,
|
||||
listener = this,
|
||||
recyclerView = binding.checklistList,
|
||||
itemClick = ::itemClicked
|
||||
)
|
||||
binding.checklistList.adapter = adapter
|
||||
}
|
||||
|
||||
return adapter
|
||||
}
|
||||
|
||||
private fun setupAdapter() {
|
||||
updateUIVisibility()
|
||||
Task.sorting = requireContext().config.sorting
|
||||
if (Task.sorting and SORT_BY_CUSTOM == 0) {
|
||||
tasks.sort()
|
||||
if (context?.config?.moveDoneChecklistItems == true) {
|
||||
tasks.sortBy { it.isDone }
|
||||
}
|
||||
}
|
||||
|
||||
var tasksAdapter = binding.checklistList.adapter as? TasksAdapter
|
||||
if (tasksAdapter == null) {
|
||||
tasksAdapter = TasksAdapter(
|
||||
activity = activity as SimpleActivity,
|
||||
listener = this,
|
||||
recyclerView = binding.checklistList,
|
||||
itemClick = ::toggleCompletion
|
||||
)
|
||||
binding.checklistList.adapter = tasksAdapter
|
||||
}
|
||||
|
||||
tasksAdapter.submitList(tasks.toList())
|
||||
getTasksAdapter().submitList(prepareTaskItems())
|
||||
}
|
||||
|
||||
private fun toggleCompletion(any: Any) {
|
||||
val item = any as Task
|
||||
val index = tasks.indexOf(item)
|
||||
if (index != -1) {
|
||||
tasks[index] = item.copy(isDone = !item.isDone)
|
||||
saveNote {
|
||||
loadNoteById(noteId)
|
||||
private fun itemClicked(item: Any) {
|
||||
when (item) {
|
||||
is Task -> {
|
||||
val index = tasks.indexOf(item)
|
||||
if (index != -1) {
|
||||
tasks[index] = item.copy(isDone = !item.isDone)
|
||||
saveAndReload()
|
||||
}
|
||||
}
|
||||
|
||||
is CompletedTasks -> {
|
||||
expanded = !expanded
|
||||
setupAdapter()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -222,8 +250,8 @@ class TasksFragment : NoteFragment(), TasksActionListener {
|
||||
}
|
||||
}
|
||||
|
||||
fun removeDoneItems() {
|
||||
tasks = tasks.filter { !it.isDone }.toMutableList() as ArrayList<Task>
|
||||
fun removeCheckedItems() {
|
||||
tasks = tasks.filter { !it.isDone }.toMutableList()
|
||||
saveNote()
|
||||
setupAdapter()
|
||||
}
|
||||
@@ -238,16 +266,59 @@ class TasksFragment : NoteFragment(), TasksActionListener {
|
||||
|
||||
fun getTasks() = Gson().toJson(tasks)
|
||||
|
||||
override fun saveTasks(updatedTasks: List<Task>, callback: () -> Unit) {
|
||||
tasks = updatedTasks.toMutableList()
|
||||
saveNote(callback = callback)
|
||||
override fun editTask(task: Task, callback: () -> Unit) {
|
||||
EditTaskDialog(activity as SimpleActivity, task.title) { title ->
|
||||
val editedTask = task.copy(title = title)
|
||||
val index = tasks.indexOf(task)
|
||||
tasks[index] = editedTask
|
||||
saveAndReload()
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
override fun refreshItems() {
|
||||
loadNoteById(noteId)
|
||||
override fun deleteTasks(tasksToDelete: List<Task>) {
|
||||
tasks.removeAll(tasksToDelete)
|
||||
saveAndReload()
|
||||
}
|
||||
|
||||
override fun moveTask(fromPosition: Int, toPosition: Int) {
|
||||
activity?.config?.sorting = SORT_BY_CUSTOM
|
||||
if (fromPosition < toPosition) {
|
||||
for (i in fromPosition until toPosition) {
|
||||
tasks.swap(i, i + 1)
|
||||
}
|
||||
} else {
|
||||
for (i in fromPosition downTo toPosition + 1) {
|
||||
tasks.swap(i, i - 1)
|
||||
}
|
||||
}
|
||||
|
||||
saveNote()
|
||||
setupAdapter()
|
||||
}
|
||||
|
||||
override fun moveTasksToTop(taskIds: List<Int>) = moveTasks(taskIds.reversed(), targetPosition = 0)
|
||||
|
||||
override fun moveTasksToBottom(taskIds: List<Int>) = moveTasks(taskIds, targetPosition = tasks.lastIndex)
|
||||
|
||||
private fun moveTasks(taskIds: List<Int>, targetPosition: Int) {
|
||||
activity?.config?.sorting = SORT_BY_CUSTOM
|
||||
taskIds.forEach { id ->
|
||||
val position = tasks.indexOfFirst { it.id == id }
|
||||
if (position != -1) {
|
||||
tasks.move(position, targetPosition)
|
||||
}
|
||||
}
|
||||
|
||||
saveAndReload()
|
||||
}
|
||||
|
||||
override fun saveAndReload() {
|
||||
saveNote {
|
||||
loadNoteById(noteId)
|
||||
}
|
||||
}
|
||||
|
||||
private fun FragmentChecklistBinding.toCommonBinding(): CommonNoteBinding = this.let {
|
||||
object : CommonNoteBinding {
|
||||
override val root: View = it.root
|
||||
|
||||
@@ -76,7 +76,7 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
set(lastCreatedNoteType) = prefs.edit().putInt(LAST_CREATED_NOTE_TYPE, lastCreatedNoteType).apply()
|
||||
|
||||
var moveDoneChecklistItems: Boolean
|
||||
get() = prefs.getBoolean(MOVE_DONE_CHECKLIST_ITEMS, false)
|
||||
get() = prefs.getBoolean(MOVE_DONE_CHECKLIST_ITEMS, true)
|
||||
set(moveDoneChecklistItems) = prefs.edit().putBoolean(MOVE_DONE_CHECKLIST_ITEMS, moveDoneChecklistItems).apply()
|
||||
|
||||
fun getTextGravity() = when (gravity) {
|
||||
|
||||
@@ -3,7 +3,15 @@ package org.fossify.notes.interfaces
|
||||
import org.fossify.notes.models.Task
|
||||
|
||||
interface TasksActionListener {
|
||||
fun refreshItems()
|
||||
fun editTask(task: Task, callback: () -> Unit)
|
||||
|
||||
fun saveTasks(updatedTasks: List<Task>, callback: () -> Unit = {})
|
||||
fun deleteTasks(tasksToDelete: List<Task>)
|
||||
|
||||
fun moveTask(fromPosition: Int, toPosition: Int)
|
||||
|
||||
fun moveTasksToTop(taskIds: List<Int>)
|
||||
|
||||
fun moveTasksToBottom(taskIds: List<Int>)
|
||||
|
||||
fun saveAndReload()
|
||||
}
|
||||
|
||||
@@ -5,13 +5,15 @@ import org.fossify.commons.helpers.SORT_BY_TITLE
|
||||
import org.fossify.commons.helpers.SORT_DESCENDING
|
||||
import org.fossify.notes.helpers.CollatorBasedComparator
|
||||
|
||||
sealed class NoteItem
|
||||
|
||||
@Serializable
|
||||
data class Task(
|
||||
val id: Int,
|
||||
val dateCreated: Long = 0L,
|
||||
val title: String,
|
||||
val isDone: Boolean
|
||||
) : Comparable<Task> {
|
||||
) : NoteItem(), Comparable<Task> {
|
||||
|
||||
companion object {
|
||||
var sorting = 0
|
||||
@@ -30,3 +32,11 @@ data class Task(
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
data class CompletedTasks(
|
||||
val tasks: List<Task>,
|
||||
val expanded: Boolean
|
||||
) : NoteItem() {
|
||||
val id = -42
|
||||
}
|
||||
|
||||
|
||||
48
app/src/main/res/layout/item_checked_tasks.xml
Normal file
48
app/src/main/res/layout/item_checked_tasks.xml
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/checked_items_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:foreground="@drawable/selector"
|
||||
android:minHeight="@dimen/checklist_height">
|
||||
|
||||
<include
|
||||
android:id="@+id/divider"
|
||||
layout="@layout/divider" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/expand_collapse_icon"
|
||||
android:layout_width="@dimen/normal_icon_size"
|
||||
android:layout_height="@dimen/normal_icon_size"
|
||||
android:layout_marginStart="@dimen/small_margin"
|
||||
android:layout_marginTop="@dimen/tiny_margin"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:importantForAccessibility="no"
|
||||
android:padding="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_chevron_down_vector"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<org.fossify.commons.views.MyTextView
|
||||
android:id="@+id/num_checked_items"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/medium_margin"
|
||||
android:layout_marginEnd="@dimen/small_margin"
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/expand_collapse_icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="7 checked items" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/remove_done_items"
|
||||
android:title="@string/remove_done_items"
|
||||
android:title="@string/delete_checked_items"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/sort_checklist"
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<string name="add_new_checklist_item">إضافة عنصر قائمة تدقيق جديد</string>
|
||||
<string name="add_new_checklist_items">إضافة عناصر قائمة تدقيق جديدة</string>
|
||||
<string name="checklist_is_empty">قائمة التدقيق فارغة</string>
|
||||
<string name="remove_done_items">إزالة العناصر التي تم إنجازها</string>
|
||||
<string name="delete_checked_items">إزالة العناصر التي تم إنجازها</string>
|
||||
<string name="import_folder">مجلد الاستيراد</string>
|
||||
<string name="export_notes">تصدير الملاحظات</string>
|
||||
<string name="import_notes_pro">استيراد الملاحظات (Pro)</string>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<string name="add_new_checklist_item">Дадаць пункт у кантрольны спіс</string>
|
||||
<string name="add_new_checklist_items">Дадаць пункты ў кантрольны спіс</string>
|
||||
<string name="checklist_is_empty">Кантрольны спіс пусты</string>
|
||||
<string name="remove_done_items">Выдаліць выкананыя пункты</string>
|
||||
<string name="delete_checked_items">Выдаліць выкананыя пункты</string>
|
||||
<string name="import_folder">Імпартаваць папку</string>
|
||||
<string name="export_notes">Экспартаваць нататкі</string>
|
||||
<string name="import_notes">Імпартаваць нататкі</string>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Добавяне на нов елемент от контролния списък</string>
|
||||
<string name="add_new_checklist_items">Добавяне на нови елементи към контролен списък</string>
|
||||
<string name="checklist_is_empty">Контролният списък е празен</string>
|
||||
<string name="remove_done_items">Премахване на готови елементи</string>
|
||||
<string name="delete_checked_items">Премахване на готови елементи</string>
|
||||
<string name="import_folder">Папка за импортиране</string>
|
||||
<string name="export_notes">Експортиране на бележките</string>
|
||||
<string name="import_notes">Бележки за внос</string>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<string name="add_new_checklist_item">Afegeix un element nou de la llista de comprovació</string>
|
||||
<string name="add_new_checklist_items">Afegeix elements nous de la llista de comprovació</string>
|
||||
<string name="checklist_is_empty">La llista de comprovació és buida</string>
|
||||
<string name="remove_done_items">Elimina els elements fets</string>
|
||||
<string name="delete_checked_items">Elimina els elements fets</string>
|
||||
<string name="import_folder">Importa una carpeta</string>
|
||||
<string name="export_notes">Exporta notes</string>
|
||||
<string name="import_notes">Importa notes</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Protegeix amb contrasenya la supressió de notes</string>
|
||||
<string name="this_note_is_linked">Aquesta nota està enllaçada a un fitxer local.</string>
|
||||
<string name="allow_alarm_automatic_backups">Per a fer còpies de seguretat de les notes automàticament, concediu permís a l\'aplicació per a planificar alarmes exactes.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Přidat do seznamu novou položku</string>
|
||||
<string name="add_new_checklist_items">Přidat do seznamu nové položky</string>
|
||||
<string name="checklist_is_empty">Seznam položek je prázdný</string>
|
||||
<string name="remove_done_items">Odstranit splněné položky seznamu</string>
|
||||
<string name="delete_checked_items">Odstranit splněné položky seznamu</string>
|
||||
<string name="import_folder">Importovat složku</string>
|
||||
<string name="export_notes">Exportovat poznámky</string>
|
||||
<string name="import_notes">Importovat poznámky</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Odstranění ochrany poznámky heslem</string>
|
||||
<string name="this_note_is_linked">Tato poznámka je propojená s místním souborem.</string>
|
||||
<string name="allow_alarm_automatic_backups">Pro automatické zálohování poznámek prosím udělte aplikaci oprávnění k plánování přesných budíků.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<string name="add_new_checklist_item">Føj et nyt punkt til tjeklisten</string>
|
||||
<string name="add_new_checklist_items">Føj nye punkter til tjeklisten</string>
|
||||
<string name="checklist_is_empty">Tjeklisten er tom</string>
|
||||
<string name="remove_done_items">Fjern udførte elementer</string>
|
||||
<string name="delete_checked_items">Fjern udførte elementer</string>
|
||||
<string name="add_to_the_top">Føj til toppen</string>
|
||||
<string name="import_folder">Importer mappe</string>
|
||||
<string name="export_notes">Eksporter alle noter</string>
|
||||
@@ -73,4 +73,4 @@
|
||||
<string name="widget_config">Tak, fordi du bruger Fossify Notes.
|
||||
\nFor flere apps fra Fossify, kan du besøge fossify.org.</string>
|
||||
<string name="cannot_load_over_internet">Appen kan ikke indlæse filer over internettet</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<string name="add_new_checklist_item">Einen neuen Checklistenpunkt hinzufügen</string>
|
||||
<string name="add_new_checklist_items">Neue Checklistenpunkte hinzufügen</string>
|
||||
<string name="checklist_is_empty">Die Checkliste ist leer</string>
|
||||
<string name="remove_done_items">Erledigte Punkte entfernen</string>
|
||||
<string name="delete_checked_items">Erledigte Punkte entfernen</string>
|
||||
<string name="add_to_the_top">Zum Anfang hinzufügen</string>
|
||||
<string name="import_folder">Ordner importieren</string>
|
||||
<string name="export_notes">Notizen exportieren</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="this_note_is_linked">Diese Notiz ist mit einer lokalen Datei verknüpft.</string>
|
||||
<string name="password_protect_note_deletion">Löschen von Notizen durch Passwort schützen</string>
|
||||
<string name="allow_alarm_automatic_backups">Um Notizen automatisch zu sichern, musst du der App die Berechtigung erteilen, genaue Alarme zu planen.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Προσθήκη νέου στοιχείου λίστας ελέγχου</string>
|
||||
<string name="add_new_checklist_items">Προσθήκη νέων στοιχείων λίστας ελέγχου</string>
|
||||
<string name="checklist_is_empty">Η λίστα ελέγχου είναι κενή</string>
|
||||
<string name="remove_done_items">Κατάργηση ολοκληρωμένων στοιχείων</string>
|
||||
<string name="delete_checked_items">Κατάργηση ολοκληρωμένων στοιχείων</string>
|
||||
<string name="add_to_the_top">Προσθήκη στην κορυφή</string>
|
||||
<string name="import_folder">Εισαγωγή φακέλου</string>
|
||||
<string name="export_notes">Εξαγωγή όλων των σημειώσεων</string>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Añadir un nuevo ítem a la lista</string>
|
||||
<string name="add_new_checklist_items">Añadir nuevos ítems a la lista</string>
|
||||
<string name="checklist_is_empty">La lista está vacía</string>
|
||||
<string name="remove_done_items">Borrar ítems completados</string>
|
||||
<string name="delete_checked_items">Borrar ítems completados</string>
|
||||
<string name="import_folder">Importar carpeta</string>
|
||||
<string name="export_notes">Exportar las notas</string>
|
||||
<string name="import_notes_pro">Importar notas (Pro)</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Proteger con contraseña la eliminación de notas</string>
|
||||
<string name="this_note_is_linked">Esta nota está vinculada a un archivo local.</string>
|
||||
<string name="allow_alarm_automatic_backups">Para hacer una copia de seguridad automática de las notas, autoriza a la aplicación a programar alarmas exactas.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Lisa tööde loendisse uus kirje</string>
|
||||
<string name="add_new_checklist_items">Lisa tööde loendisse uued kirjed</string>
|
||||
<string name="checklist_is_empty">Tööde loend on tühi</string>
|
||||
<string name="remove_done_items">Kustuta tehtuks märgitud kirjed</string>
|
||||
<string name="delete_checked_items">Kustuta tehtuks märgitud kirjed</string>
|
||||
<string name="add_to_the_top">Lisa ülaossa</string>
|
||||
<string name="import_folder">Impordi kaust</string>
|
||||
<string name="export_notes">Ekspordi märkmed</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Kaitse märkme kustutamist salasõnaga</string>
|
||||
<string name="this_note_is_linked">See märge viitab kohalikule failile.</string>
|
||||
<string name="allow_alarm_automatic_backups">Kui soovid märkmetest teha varukoopiaid, siis palun anna süsteemi seadistusest rakendusele õigused tegevuste ajastamiseks.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<string name="password_protect_note_deletion">Pasahitzez babestu oharrak ezabatzea</string>
|
||||
<string name="checklists">Kontrol-zerrendak</string>
|
||||
<string name="add_new_checklist_item">Gehitu elementu berri bat kontrol-zerrendan</string>
|
||||
<string name="remove_done_items">Kendu burututako elementuak</string>
|
||||
<string name="delete_checked_items">Kendu burututako elementuak</string>
|
||||
<string name="add_new_checklist_items">Gehitu elementu berriak kontrol-zerrendan</string>
|
||||
<string name="checklist_is_empty">Kontrol-zerrenda hutsik dago</string>
|
||||
<string name="import_folder">Inportatu karpeta</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="show_character_count">Erakutsi karaktere kopurua</string>
|
||||
<string name="alignment">Lerrokatzea</string>
|
||||
<string name="center">Erdian</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
<string name="add_new_checklist_item">افزودن یک مورد به فهرست نشاندار</string>
|
||||
<string name="add_new_checklist_items">افزودن موارد به فهرست نشاندار</string>
|
||||
<string name="checklist_is_empty">فهرست نشاندار خالی است</string>
|
||||
<string name="remove_done_items">پاک کردن موارد انجام شده</string>
|
||||
<string name="delete_checked_items">پاک کردن موارد انجام شده</string>
|
||||
<string name="import_folder">درونریزی پوشه</string>
|
||||
<string name="faq_1_title">چگونه میتوانم رنگ ابزارکها را تغییر دهم؟</string>
|
||||
<string name="faq_1_text">در این مثال شما فقط یک ابزارک فعال دارید، شما همچنین میتوانید آن را دوباره بسازید، یا از دکمه درون تنظیمات آن را سفارشیسازی کنید. اگر شما چندین ابزارک فعال دارید، دکمه درون تنظیمات در دسترس نخواهد بود. همچنان برنامه از سفارشیسازی رنگ برای هر ابزارک پشتیبانی میکند، شما خواهید توانست با ساخت دوبارهٔ ابزارک آن را سفارشیسازی کنید.</string>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<string name="add_new_checklist_item">Lisää uusi kohta muistilistaan</string>
|
||||
<string name="add_new_checklist_items">Lisää uusia kohtia muistilistaan</string>
|
||||
<string name="checklist_is_empty">Muistilista on tyhjä</string>
|
||||
<string name="remove_done_items">Poista tehdyt kohdat</string>
|
||||
<string name="delete_checked_items">Poista tehdyt kohdat</string>
|
||||
<string name="import_folder">Tuo kansio</string>
|
||||
<string name="export_notes">Vie muistiinpanoja</string>
|
||||
<string name="import_notes">Tuo muistiinpanoja</string>
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<string name="add_new_checklist_item">Ajouter un nouvel élément</string>
|
||||
<string name="add_new_checklist_items">Ajouter de nouveaux éléments</string>
|
||||
<string name="checklist_is_empty">La liste de contrôle est vide</string>
|
||||
<string name="remove_done_items">Supprimer les éléments cochés</string>
|
||||
<string name="delete_checked_items">Supprimer les éléments cochés</string>
|
||||
<string name="add_to_the_top">Ajouter en haut de la liste</string>
|
||||
<string name="import_folder">Importer depuis un dossier</string>
|
||||
<string name="export_notes">Exporter les notes</string>
|
||||
@@ -73,4 +73,4 @@
|
||||
<string name="faq_1_title">Comment puis-je changer la couleur des widgets \?</string>
|
||||
<string name="faq_1_text">Si vous avez seulement un widget actif, vous pouvez soit le recréer, soit utiliser le bouton dans les paramètres pour le personnaliser. Si vous avez plusieurs widgets actifs, le bouton dans les paramètres ne sera pas disponible. Comme l\'application supporte la personnalisation de la couleur par widget, vous devrez recréer le widget que vous voulez personnaliser.</string>
|
||||
<string name="app_launcher_name">Notes</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<string name="add_new_checklist_item">Engadir un elemento a unha nova lista de verificación</string>
|
||||
<string name="add_new_checklist_items">Engadir elementos a unha nova lista de verificación</string>
|
||||
<string name="checklist_is_empty">A lista de verificación está baleira</string>
|
||||
<string name="remove_done_items">Elimina os elementos feitos</string>
|
||||
<string name="delete_checked_items">Elimina os elementos feitos</string>
|
||||
<string name="import_folder">Importar cartafoles</string>
|
||||
<string name="export_notes">Exportar notas</string>
|
||||
<string name="import_notes_pro">Importar notas (Pro)</string>
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<string name="checklists">चेकलिस्ट</string>
|
||||
<string name="add_new_checklist_item">एक नया चेकलिस्ट आइटम जोड़ें</string>
|
||||
<string name="checklist_is_empty">चेकलिस्ट खाली है</string>
|
||||
<string name="remove_done_items">पूर्ण किए गए आइटम हटाएँ</string>
|
||||
<string name="delete_checked_items">पूर्ण किए गए आइटम हटाएँ</string>
|
||||
<string name="add_to_the_top">शीर्ष पर जोड़ें</string>
|
||||
<string name="import_folder">फोल्डर आयात करें</string>
|
||||
<string name="export_notes">नोट निर्यात करें</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">नोट हटाने के लिए पासवर्ड रखें</string>
|
||||
<string name="this_note_is_linked">यह नोट एक स्थानीय फाइल से जुड़ा हुआ है।</string>
|
||||
<string name="allow_alarm_automatic_backups">स्वचालित रूप से नोट्स का बैकअप लेने के लिए, कृपया ऐप को सटीक अलार्म अनुसूचित करने की अनुमति दें।</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Dodaj novu stavku u popis zadataka</string>
|
||||
<string name="add_new_checklist_items">Dodaj novu stavku u popis zadataka</string>
|
||||
<string name="checklist_is_empty">Popis zadataka je prazan</string>
|
||||
<string name="remove_done_items">Ukloni gotove stavke</string>
|
||||
<string name="delete_checked_items">Ukloni gotove stavke</string>
|
||||
<string name="import_folder">Uvezi mapu</string>
|
||||
<string name="export_notes">Izvezi bilješke</string>
|
||||
<string name="import_notes">Uvezi bilješke</string>
|
||||
@@ -73,4 +73,4 @@
|
||||
<string name="widget_config">Hvala ti što koristiš Fossify bilješke.
|
||||
\nZa više Fossify aplikacija posjeti fossify.org.</string>
|
||||
<string name="add_to_the_top">Dodaj na vrh popisa</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<string name="add_new_checklist_item">Új ellenőrzőlista-elem hozzáadása</string>
|
||||
<string name="add_new_checklist_items">Új ellenőrzőlista-elemek hozzáadása</string>
|
||||
<string name="checklist_is_empty">Az ellenőrzőlista üres</string>
|
||||
<string name="remove_done_items">Kész elemek eltávolítása</string>
|
||||
<string name="delete_checked_items">Kész elemek eltávolítása</string>
|
||||
<string name="import_folder">Mappa importálása</string>
|
||||
<string name="export_notes">Jegyzetek exportálása</string>
|
||||
<string name="import_notes">Jegyzetek importálása</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Jelszóval védett jegyzettörlés</string>
|
||||
<string name="this_note_is_linked">Ez a jegyzet egy helyi fájlhoz kapcsolódik.</string>
|
||||
<string name="allow_alarm_automatic_backups">A jegyzetek automatikus mentéséhez adja meg az alkalmazásnak az engedélyt a pontos riasztások ütemezésére.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<string name="add_new_checklist_item">Tambah item checklist baru</string>
|
||||
<string name="add_new_checklist_items">Tambah item checklist baru</string>
|
||||
<string name="checklist_is_empty">Checklist kosong</string>
|
||||
<string name="remove_done_items">Hapus item yang sudah</string>
|
||||
<string name="delete_checked_items">Hapus item yang sudah</string>
|
||||
<string name="import_folder">Impor folder</string>
|
||||
<string name="export_notes">Ekspor nota</string>
|
||||
<string name="import_notes_pro">Impor catatan (Pro)</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Lindungi penghapusan catatan dengan kata sandi</string>
|
||||
<string name="this_note_is_linked">Catatan ini ditautan dengan berkas lokal.</string>
|
||||
<string name="allow_alarm_automatic_backups">Untuk mencadangkan catatan secara otomatis, silakan memberikan perizinan kepada aplikasi untuk menjadwalkan alarm tepat.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<string name="add_new_checklist_item">Aggiungi un nuovo elemento</string>
|
||||
<string name="add_new_checklist_items">Aggiungi nuovi elementi</string>
|
||||
<string name="checklist_is_empty">La scaletta è vuota</string>
|
||||
<string name="remove_done_items">Rimuovi gli elementi finiti</string>
|
||||
<string name="delete_checked_items">Rimuovi gli elementi finiti</string>
|
||||
<string name="import_folder">Importa cartella</string>
|
||||
<string name="export_notes">Esporta note</string>
|
||||
<string name="import_notes">Importa note</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Proteggi con password l\'eliminazione delle note</string>
|
||||
<string name="this_note_is_linked">Questa nota è collegata a un file locale.</string>
|
||||
<string name="allow_alarm_automatic_backups">Per eseguire il backup automatico delle note, concedi all\'app l\'autorizzazione a programmare sveglie precise.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<string name="add_new_checklist_item">הוסף פריט רשימת תיוג חדש</string>
|
||||
<string name="add_new_checklist_items">הוסף פריטי רשימת בדיקה חדשים</string>
|
||||
<string name="checklist_is_empty">רשימת התיוגים ריקה</string>
|
||||
<string name="remove_done_items">הסר פריטים שבוצעו</string>
|
||||
<string name="delete_checked_items">הסר פריטים שבוצעו</string>
|
||||
<string name="import_folder">ייבא תקיות</string>
|
||||
<string name="export_notes">ייצא את כל הפתקים</string>
|
||||
<string name="import_notes">ייבא פתקים</string>
|
||||
@@ -67,4 +67,4 @@
|
||||
<string name="faq_1_title">כיצד אוכל לשנות את צבע הווידג\'טים\?</string>
|
||||
<string name="faq_1_text">במקרה שיש לך רק ווידג\'ט פעיל אחד, תוכל ליצור אותו מחדש או להשתמש בכפתור בהגדרות האפליקציה כדי להתאים אותו. אם יש לך מספר ווידג\'טים פעילים, הכפתור בהגדרות האפליקציה לא יהיה זמין. מכיוון שהאפליקציה תומכת בהתאמה אישית של צבע לכל ווידג\'ט, תצטרך ליצור מחדש את הווידג\'ט שברצונך להתאים אישית.</string>
|
||||
<string name="open_file">פתח קובץ</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<string name="add_new_checklist_item">新しいチェックリスト項目を追加</string>
|
||||
<string name="add_new_checklist_items">新しいチェックリスト項目を追加</string>
|
||||
<string name="checklist_is_empty">チェックリストが空です</string>
|
||||
<string name="remove_done_items">完了した項目を削除</string>
|
||||
<string name="delete_checked_items">完了した項目を削除</string>
|
||||
<string name="add_to_the_top">上部に追加</string>
|
||||
<string name="import_folder">フォルダからインポート</string>
|
||||
<string name="export_notes">メモをすべてエクスポート</string>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<string name="add_new_checklist_item">အမှန်ခြစ် စာရင်းအသစ်</string>
|
||||
<string name="add_new_checklist_items">အမှတ်ခြစ် စာရင်းအသစ်များ</string>
|
||||
<string name="checklist_is_empty">အမှန်ခြစ် စာရင်း မှာဘာမှမရှိပါ</string>
|
||||
<string name="remove_done_items">ပြီးသွားသောအရာများကို ဖယ်ရှားပါ</string>
|
||||
<string name="delete_checked_items">ပြီးသွားသောအရာများကို ဖယ်ရှားပါ</string>
|
||||
<string name="add_to_the_top">အပေါ်ဆုံးကို ပို့ပါ</string>
|
||||
<string name="import_folder">ဖိုဒါကို သွင်းမည်</string>
|
||||
<string name="export_notes">မှတ်စုများကိုထုတ်မည်</string>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<string name="add_new_checklist_item">Legg til nytt sjekklisteelement</string>
|
||||
<string name="add_new_checklist_items">Legg til nye sjekklisteelementer</string>
|
||||
<string name="checklist_is_empty">Sjekklisten er tom</string>
|
||||
<string name="remove_done_items">Fjern utførte elementer</string>
|
||||
<string name="delete_checked_items">Fjern utførte elementer</string>
|
||||
<string name="import_folder">Importer mappe</string>
|
||||
<string name="export_notes">Eksportere alle notater</string>
|
||||
<string name="import_notes">Importere notater</string>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Item toevoegen</string>
|
||||
<string name="add_new_checklist_items">Items toevoegen</string>
|
||||
<string name="checklist_is_empty">De lijst is leeg</string>
|
||||
<string name="remove_done_items">Afgeronde items wissen</string>
|
||||
<string name="delete_checked_items">Afgeronde items wissen</string>
|
||||
<string name="add_to_the_top">Bovenaan toevoegen</string>
|
||||
<string name="import_folder">Map importeren</string>
|
||||
<string name="export_notes">Notities exporteren</string>
|
||||
@@ -75,4 +75,4 @@
|
||||
<string name="password_protect_note_deletion">Wachtwoordbeveiliging voor het verwijderen van notities</string>
|
||||
<string name="this_note_is_linked">Deze notities is gekoppeld aan een lokaal bestand.</string>
|
||||
<string name="allow_alarm_automatic_backups">Om automatisch een back-up te maken van notities moet de app toestemming krijgen om precieze alarmen in te plannen.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<string name="add_new_checklist_item">چیکلِسٹ وچ نواں حصہ پایو</string>
|
||||
<string name="add_new_checklist_items">چیکلِسٹ وچ نویں حصے پایو</string>
|
||||
<string name="checklist_is_empty">چیکلِسٹ وچ نوٹ کوئی نہیں</string>
|
||||
<string name="remove_done_items">کیٹیاں ائیٹماں نوں ہٹاؤ</string>
|
||||
<string name="delete_checked_items">کیٹیاں ائیٹماں نوں ہٹاؤ</string>
|
||||
<string name="import_folder">فولڈر ایمپورٹ کرو</string>
|
||||
<string name="export_notes">سارے نوٹ ایکسپورٹ کرو</string>
|
||||
<string name="import_notes">نوٹ ایمپورٹ کرو</string>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<string name="add_new_checklist_item">Dodaj nowy element listy kontrolnej</string>
|
||||
<string name="add_new_checklist_items">Dodaj nowe elementy listy kontrolnej</string>
|
||||
<string name="checklist_is_empty">Lista kontrolna jest pusta</string>
|
||||
<string name="remove_done_items">Usuń wykonane elementy</string>
|
||||
<string name="delete_checked_items">Usuń wykonane elementy</string>
|
||||
<string name="add_to_the_top">Dodaj na górze</string>
|
||||
<string name="import_folder">Importuj folder</string>
|
||||
<string name="export_notes">Eksportuj notatki</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Chroń hasłem usuwanie notatek</string>
|
||||
<string name="this_note_is_linked">Ta notatka jest połączona z plikiem lokalnym</string>
|
||||
<string name="allow_alarm_automatic_backups">Aby automatycznie tworzyć kopie zapasowe notatek, przyznaj aplikacji uprawnienie do planowania dokładnych alarmów.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Adicionar novo item à lista de verificação</string>
|
||||
<string name="add_new_checklist_items">Adicionar novos itens à lista de verificação</string>
|
||||
<string name="checklist_is_empty">A lista de verificação está vazia</string>
|
||||
<string name="remove_done_items">Remover itens concluídos</string>
|
||||
<string name="delete_checked_items">Remover itens concluídos</string>
|
||||
<string name="import_folder">Importar pasta</string>
|
||||
<string name="export_notes">Exportar notas</string>
|
||||
<string name="import_notes_pro">Importar notas (Pro)</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Proteger a eliminação de notas com senha</string>
|
||||
<string name="this_note_is_linked">Essa nota é conectada a um arquivo local.</string>
|
||||
<string name="allow_alarm_automatic_backups">Para fazer backup das notas automaticamente, conceda a permissão do app para agendar alarmes exatos.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Adicionar item à lista de verificação</string>
|
||||
<string name="add_new_checklist_items">Adicionar itens à lista de verificação</string>
|
||||
<string name="checklist_is_empty">A lista está vazia</string>
|
||||
<string name="remove_done_items">Remover itens concluídos</string>
|
||||
<string name="delete_checked_items">Remover itens concluídos</string>
|
||||
<string name="import_folder">Importar pasta</string>
|
||||
<string name="export_notes">Exportar notas</string>
|
||||
<string name="import_notes">Importar notas</string>
|
||||
@@ -74,4 +74,4 @@
|
||||
<string name="widget_config">Obrigado por utilizar Fossify Notes.
|
||||
\nPara conhecer as outras aplicações Fossify, aceda a fossify.org.</string>
|
||||
<string name="password_protect_note_deletion">Proteger eliminação de notas com palavra-passe</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<string name="add_new_checklist_item">Adăugați un nou element în lista de verificare</string>
|
||||
<string name="add_new_checklist_items">Adăugați noi elemente în lista de verificare</string>
|
||||
<string name="checklist_is_empty">Lista de verificare este goală</string>
|
||||
<string name="remove_done_items">Elimină elementele realizate</string>
|
||||
<string name="delete_checked_items">Elimină elementele realizate</string>
|
||||
<string name="import_folder">Importare dosar</string>
|
||||
<string name="export_notes">Exportați toate notițele</string>
|
||||
<string name="import_notes">Importaţi notițele</string>
|
||||
@@ -73,4 +73,4 @@
|
||||
<string name="widget_config">Vă mulțumim pentru că folosiți Fossify Notes.
|
||||
\nPentru mai multe aplicații de la Fossify, vă rugăm vizitați fossify.org.</string>
|
||||
<string name="cannot_load_over_internet">Aplicația nu poate incârca fișiere pe internet.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Добавить позицию в список</string>
|
||||
<string name="add_new_checklist_items">Добавить позиции в список</string>
|
||||
<string name="checklist_is_empty">Список пуст</string>
|
||||
<string name="remove_done_items">Удалить выполненные позиции</string>
|
||||
<string name="delete_checked_items">Удалить выполненные позиции</string>
|
||||
<string name="add_to_the_top">Добавить в начало</string>
|
||||
<string name="import_folder">Импортировать папку</string>
|
||||
<string name="export_notes">Экспортировать заметки</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Удалять заметки, защищённые паролем</string>
|
||||
<string name="this_note_is_linked">Эта заметка связана с локальным файлом.</string>
|
||||
<string name="allow_alarm_automatic_backups">Для автоматического резервного копирования заметок предоставьте приложению разрешение на установку будильников.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Pridať do zoznamu novú položku</string>
|
||||
<string name="add_new_checklist_items">Pridať do zoznamu nové položky</string>
|
||||
<string name="checklist_is_empty">Zoznam položiek je prázdny</string>
|
||||
<string name="remove_done_items">Odstrániť splnené položky</string>
|
||||
<string name="delete_checked_items">Odstrániť splnené položky</string>
|
||||
<string name="add_to_the_top">Pridať na vrch</string>
|
||||
<string name="import_folder">Importovať priečinok</string>
|
||||
<string name="export_notes">Exportovať poznámky</string>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<string name="add_new_checklist_item">Dodaj nov element na seznam</string>
|
||||
<string name="add_new_checklist_items">Dodaj nove elemente na seznam</string>
|
||||
<string name="checklist_is_empty">Seznam je prazen</string>
|
||||
<string name="remove_done_items">Odstrani opravljene elemente</string>
|
||||
<string name="delete_checked_items">Odstrani opravljene elemente</string>
|
||||
<string name="import_folder">Uvozi mapo</string>
|
||||
<string name="export_notes">Izvozi zapiske</string>
|
||||
<string name="import_notes">Uvozi zapiske</string>
|
||||
@@ -73,4 +73,4 @@
|
||||
<string name="unlock_notes">Odkleni zapiske</string>
|
||||
<string name="found_locked_notes_info">Naslednje opombe so zaklenjene. Lahko jih posamezno odklenete ali pa preskočite njihovo izvažanje.</string>
|
||||
<string name="cannot_load_over_internet">Aplikacija ne more naložiti datotek prek interneta</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<string name="add_new_checklist_item">Додајте нову ставку контролне листе</string>
|
||||
<string name="add_new_checklist_items">Додајте нове ставке контролне листе</string>
|
||||
<string name="checklist_is_empty">Контролна листа је празна</string>
|
||||
<string name="remove_done_items">Уклоните готове ставке</string>
|
||||
<string name="delete_checked_items">Уклоните готове ставке</string>
|
||||
<string name="import_folder">Увоз фолдера</string>
|
||||
<string name="export_notes">Извези све белешке</string>
|
||||
<string name="import_notes">Увезите белешке</string>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Lägg till ett nytt checklisteobjekt</string>
|
||||
<string name="add_new_checklist_items">Lägg till nya checklisteobjekt</string>
|
||||
<string name="checklist_is_empty">Checklistan är tom</string>
|
||||
<string name="remove_done_items">Ta bort slutförda</string>
|
||||
<string name="delete_checked_items">Ta bort slutförda</string>
|
||||
<string name="add_to_the_top">Lägg till överst</string>
|
||||
<string name="import_folder">Importera mapp</string>
|
||||
<string name="export_notes">Exportera anteckningar</string>
|
||||
@@ -73,4 +73,4 @@
|
||||
<string name="faq_1_text">Om du bara har 1 aktiv widget kan du antingen återskapa den eller använda knappen i appinställningarna för att anpassa den. Om du har flera aktiva widgetar är knappen i appinställningarna inte tillgänglig. Eftersom appen stöder färganpassning per widget måste du återskapa den widget som du vill anpassa.</string>
|
||||
<string name="widget_config">Tack för att du använder Fossify Notes.
|
||||
\nFör fler appar från Fossify, besök fossify.org.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<string name="add_new_checklist_item">เพิ่มรายการตรวจสอบใหม่</string>
|
||||
<string name="add_new_checklist_items">เพิ่มรายการตรวจสอบใหม่</string>
|
||||
<string name="checklist_is_empty">รายการตรวจนั้นว่างเปล่า</string>
|
||||
<string name="remove_done_items">ลบของที่เรียบร้อยแล้ว</string>
|
||||
<string name="delete_checked_items">ลบของที่เรียบร้อยแล้ว</string>
|
||||
<string name="import_folder">เอาโฟลเดอร์เข้า</string>
|
||||
<string name="export_notes">ส่งออกโน็ตทุกตัว</string>
|
||||
<string name="import_notes">นำเข้าโน็ตทุกตัว</string>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<string name="add_new_checklist_item">Yeni bir yapılacak listesi ögesi ekle</string>
|
||||
<string name="add_new_checklist_items">Yeni yapılacak listesi ögeleri ekle</string>
|
||||
<string name="checklist_is_empty">Yapılacak listesi boş</string>
|
||||
<string name="remove_done_items">Tamamlanan ögeleri kaldır</string>
|
||||
<string name="delete_checked_items">Tamamlanan ögeleri kaldır</string>
|
||||
<string name="add_to_the_top">En üste ekle</string>
|
||||
<string name="import_folder">Klasörü içe aktar</string>
|
||||
<string name="export_notes">Notları dışa aktar</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Not silmeyi parola ile koru</string>
|
||||
<string name="this_note_is_linked">Bu not yerel bir dosya ile bağlantılı.</string>
|
||||
<string name="allow_alarm_automatic_backups">Notları otomatik olarak yedeklemek için, lütfen uygulamaya tam alarmları zamanlama izni verin.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="add_new_checklist_item">Додати нову позицію у списку</string>
|
||||
<string name="add_new_checklist_items">Додати нові позиції у списку</string>
|
||||
<string name="checklist_is_empty">Список порожній</string>
|
||||
<string name="remove_done_items">Вилучати виконані позиції</string>
|
||||
<string name="delete_checked_items">Вилучати виконані позиції</string>
|
||||
<string name="add_to_the_top">Додати вгорі</string>
|
||||
<string name="import_folder">Імпортувати теку</string>
|
||||
<string name="export_notes">Експортувати нотатки</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">Пароль захищає нотатку від видалення</string>
|
||||
<string name="this_note_is_linked">Ця примітка пов\'язана з локальним файлом.</string>
|
||||
<string name="allow_alarm_automatic_backups">Для автоматичного резервного копіювання нотаток, будь ласка, надайте застосунку дозвіл на планування точних будильників.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<string name="add_new_checklist_item">Thêm một mục mới trong danh sách kiểm tra</string>
|
||||
<string name="add_new_checklist_items">Thêm các mục mới trong danh sách kiểm tra</string>
|
||||
<string name="checklist_is_empty">Danh sách kiểm tra trống</string>
|
||||
<string name="remove_done_items">Xóa các mục đã hoàn thành</string>
|
||||
<string name="delete_checked_items">Xóa các mục đã hoàn thành</string>
|
||||
<string name="add_to_the_top">Thêm trên đầu</string>
|
||||
<string name="import_folder">Nhập thư mục</string>
|
||||
<string name="export_notes">Xuất tất cả các ghi chú</string>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<string name="add_new_checklist_item">添加一个新的清单项目</string>
|
||||
<string name="add_new_checklist_items">添加新的清单项目</string>
|
||||
<string name="checklist_is_empty">清单为空</string>
|
||||
<string name="remove_done_items">删除完成的项目</string>
|
||||
<string name="delete_checked_items">删除完成的项目</string>
|
||||
<string name="import_folder">导入文件夹</string>
|
||||
<string name="export_notes">导出笔记</string>
|
||||
<string name="import_notes">导入笔记</string>
|
||||
@@ -76,4 +76,4 @@
|
||||
<string name="password_protect_note_deletion">密码保护笔记删除</string>
|
||||
<string name="this_note_is_linked">此笔记和一个本地文件关联。</string>
|
||||
<string name="allow_alarm_automatic_backups">要自动备份笔记,请授予应用设置精确闹钟的权限。</string>
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<string name="add_new_checklist_item">新增新的核對清單項目</string>
|
||||
<string name="add_new_checklist_items">新增新的核對清單項目</string>
|
||||
<string name="checklist_is_empty">核對清單為空白</string>
|
||||
<string name="remove_done_items">移除已完成的項目</string>
|
||||
<string name="delete_checked_items">移除已完成的項目</string>
|
||||
<string name="import_folder">匯入資料夾</string>
|
||||
<string name="export_notes">匯出筆記</string>
|
||||
<string name="faq_1_title">要怎麼變更小工具的顏色?</string>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<string name="autosave_notes">Autosave notes</string>
|
||||
<string name="enable_line_wrap">Enable line wrap</string>
|
||||
<string name="use_incognito_mode">Use Incognito mode of keyboards</string>
|
||||
<string name="move_done_checklist_items">Move done checklist items to the bottom</string>
|
||||
<string name="move_done_checklist_items">Move checked items to the bottom</string>
|
||||
<string name="add_new_checklist_items_top">Add new checklist items at the top</string>
|
||||
<string name="password_protect_note_deletion">Password protect note deletion</string>
|
||||
|
||||
@@ -70,8 +70,9 @@
|
||||
<string name="add_new_checklist_item">Add a new checklist item</string>
|
||||
<string name="add_new_checklist_items">Add new checklist items</string>
|
||||
<string name="checklist_is_empty">The checklist is empty</string>
|
||||
<string name="remove_done_items">Remove done items</string>
|
||||
<string name="delete_checked_items">Delete checked items</string>
|
||||
<string name="add_to_the_top">Add to the top</string>
|
||||
<string name="num_checked_items">%d checked items</string>
|
||||
|
||||
<!-- Import / Export -->
|
||||
<string name="import_folder">Import folder</string>
|
||||
|
||||
@@ -10,7 +10,7 @@ androidx-documentfile = "1.0.1"
|
||||
#Room
|
||||
room = "2.6.1"
|
||||
#Fossify
|
||||
commons = "4c2d362fe3"
|
||||
commons = "54f71d56a6"
|
||||
#Gradle
|
||||
gradlePlugins-agp = "8.5.0"
|
||||
#build
|
||||
|
||||
Reference in New Issue
Block a user