Note widget: add action to create new note
This commit is contained in:
parent
10d4b02798
commit
b217dad7c8
@ -1,10 +1,6 @@
|
|||||||
package de.mm20.launcher2.ui.launcher.widgets
|
package de.mm20.launcher2.ui.launcher.widgets
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.appwidget.AppWidgetHost
|
import android.appwidget.AppWidgetHost
|
||||||
import android.appwidget.AppWidgetManager
|
|
||||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
|
||||||
import androidx.compose.animation.graphics.res.animatedVectorResource
|
import androidx.compose.animation.graphics.res.animatedVectorResource
|
||||||
import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter
|
import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter
|
||||||
import androidx.compose.animation.graphics.vector.AnimatedImageVector
|
import androidx.compose.animation.graphics.vector.AnimatedImageVector
|
||||||
@ -95,6 +91,9 @@ fun WidgetColumn(
|
|||||||
widget = widget,
|
widget = widget,
|
||||||
appWidgetHost = widgetHost,
|
appWidgetHost = widgetHost,
|
||||||
editMode = editMode,
|
editMode = editMode,
|
||||||
|
onWidgetAdd = {
|
||||||
|
viewModel.addWidget(it, i + 1)
|
||||||
|
},
|
||||||
onWidgetRemove = {
|
onWidgetRemove = {
|
||||||
if (widget is AppWidget) {
|
if (widget is AppWidget) {
|
||||||
widgetHost.deleteAppWidgetId(widget.config.widgetId)
|
widgetHost.deleteAppWidgetId(widget.config.widgetId)
|
||||||
|
|||||||
@ -54,6 +54,7 @@ import de.mm20.launcher2.widgets.MusicWidget
|
|||||||
import de.mm20.launcher2.widgets.NotesWidget
|
import de.mm20.launcher2.widgets.NotesWidget
|
||||||
import de.mm20.launcher2.widgets.WeatherWidget
|
import de.mm20.launcher2.widgets.WeatherWidget
|
||||||
import de.mm20.launcher2.widgets.Widget
|
import de.mm20.launcher2.widgets.Widget
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun WidgetItem(
|
fun WidgetItem(
|
||||||
@ -61,6 +62,7 @@ fun WidgetItem(
|
|||||||
appWidgetHost: AppWidgetHost,
|
appWidgetHost: AppWidgetHost,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
editMode: Boolean = false,
|
editMode: Boolean = false,
|
||||||
|
onWidgetAdd: (widget: Widget) -> Unit = {},
|
||||||
onWidgetUpdate: (widget: Widget) -> Unit = {},
|
onWidgetUpdate: (widget: Widget) -> Unit = {},
|
||||||
onWidgetRemove: () -> Unit = {},
|
onWidgetRemove: () -> Unit = {},
|
||||||
draggableState: DraggableState = rememberDraggableState {},
|
draggableState: DraggableState = rememberDraggableState {},
|
||||||
@ -159,7 +161,16 @@ fun WidgetItem(
|
|||||||
}
|
}
|
||||||
|
|
||||||
is NotesWidget -> {
|
is NotesWidget -> {
|
||||||
NotesWidget(widget)
|
NotesWidget(
|
||||||
|
widget,
|
||||||
|
onNewNote = {
|
||||||
|
val newWidget = NotesWidget(
|
||||||
|
id = UUID.randomUUID(),
|
||||||
|
widget.config.copy(storedText = "")
|
||||||
|
)
|
||||||
|
onWidgetAdd(newWidget)
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
is AppWidget -> {
|
is AppWidget -> {
|
||||||
|
|||||||
@ -23,9 +23,13 @@ class WidgetsVM : ViewModel(), KoinComponent {
|
|||||||
val widgets = widgetRepository.get()
|
val widgets = widgetRepository.get()
|
||||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), emptyList())
|
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), emptyList())
|
||||||
|
|
||||||
fun addWidget(widget: Widget) {
|
fun addWidget(widget: Widget, index: Int? = null) {
|
||||||
val widgets = widgets.value.toMutableList()
|
val widgets = widgets.value.toMutableList()
|
||||||
|
if (index == null) {
|
||||||
widgets.add(widget)
|
widgets.add(widget)
|
||||||
|
} else {
|
||||||
|
widgets.add(index.coerceAtMost(widgets.size), widget)
|
||||||
|
}
|
||||||
widgetRepository.set(widgets)
|
widgetRepository.set(widgets)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -36,7 +36,10 @@ import java.time.ZonedDateTime
|
|||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun NotesWidget(widget: NotesWidget) {
|
fun NotesWidget(
|
||||||
|
widget: NotesWidget,
|
||||||
|
onNewNote: () -> Unit,
|
||||||
|
) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val viewModel: NotesWidgetVM =
|
val viewModel: NotesWidgetVM =
|
||||||
viewModel(key = "notes-widget-${widget.id}", factory = NotesWidgetVM.Factory)
|
viewModel(key = "notes-widget-${widget.id}", factory = NotesWidgetVM.Factory)
|
||||||
@ -74,11 +77,14 @@ fun NotesWidget(widget: NotesWidget) {
|
|||||||
}
|
}
|
||||||
DropdownMenu(expanded = showMenu, onDismissRequest = { showMenu = false }) {
|
DropdownMenu(expanded = showMenu, onDismissRequest = { showMenu = false }) {
|
||||||
DropdownMenuItem(
|
DropdownMenuItem(
|
||||||
text = { Text("New note") },
|
text = { Text(stringResource(R.string.notes_widget_action_new)) },
|
||||||
leadingIcon = {
|
leadingIcon = {
|
||||||
Icon(Icons.Rounded.Add, null)
|
Icon(Icons.Rounded.Add, null)
|
||||||
},
|
},
|
||||||
onClick = { /*TODO*/ },
|
onClick = {
|
||||||
|
onNewNote()
|
||||||
|
showMenu = false
|
||||||
|
},
|
||||||
)
|
)
|
||||||
DropdownMenuItem(
|
DropdownMenuItem(
|
||||||
text = { Text(stringResource(R.string.notes_widget_action_save)) },
|
text = { Text(stringResource(R.string.notes_widget_action_save)) },
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user