mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
mobile/UI: add button to change notification
This is fun... with just a tiny bit of 'magic text parsing' we can allow the backend code to add a button to the notification that will open the context menu that will make it super obvious to the user how they can undo an operation. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
e1cb368437
commit
126329ab7c
2 changed files with 16 additions and 9 deletions
|
@ -55,14 +55,18 @@ Kirigami.ApplicationWindow {
|
||||||
// notifications to show the notification text, but during initialization
|
// notifications to show the notification text, but during initialization
|
||||||
// we instead dump the information into the textBlock below
|
// we instead dump the information into the textBlock below
|
||||||
if (initialized) {
|
if (initialized) {
|
||||||
// make sure any old notification is hidden
|
|
||||||
// hiding notifications is no longer supported????
|
|
||||||
// hidePassiveNotification()
|
|
||||||
if (notificationText !== "") {
|
if (notificationText !== "") {
|
||||||
// there's a risk that we have a >5 second gap in update events;
|
var actionEnd = notificationText.indexOf("]")
|
||||||
// still, keep the timeout at 5s to avoid odd unchanging notifications
|
if (notificationText.startsWith("[") && actionEnd !== -1) {
|
||||||
|
// we have a notification text that starts with our special syntax to indication
|
||||||
|
// an action that the user can take (the actual action is always opening the context drawer
|
||||||
|
// so the action text should always be something that can then be found in the context drawer)
|
||||||
|
showPassiveNotification(notificationText.substring(actionEnd + 1), 5000, notificationText.substring(1,actionEnd),
|
||||||
|
function() { contextDrawer.open() })
|
||||||
|
} else {
|
||||||
showPassiveNotification(notificationText, 5000)
|
showPassiveNotification(notificationText, 5000)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
textBlock.text = textBlock.text + "\n" + notificationText
|
textBlock.text = textBlock.text + "\n" + notificationText
|
||||||
}
|
}
|
||||||
|
|
|
@ -1407,11 +1407,14 @@ void QMLManager::saveChangesLocal(bool fromUndo)
|
||||||
Command::setClean();
|
Command::setClean();
|
||||||
updateHaveLocalChanges(true);
|
updateHaveLocalChanges(true);
|
||||||
// provide a useful undo/redo notification
|
// provide a useful undo/redo notification
|
||||||
QString msgFormat = tr("Changes saved:'%1'. %2 possible via context menu");
|
// NOTE: the QML UI interprets a leading '[action]' (where only the two brackets are checked for)
|
||||||
|
// as an indication to use the text between those two brackets as the label of a button that
|
||||||
|
// can be used to open the context menu
|
||||||
|
QString msgFormat = tr("[%1]Changes saved:'%2'.\n%1 possible via context menu");
|
||||||
if (fromUndo)
|
if (fromUndo)
|
||||||
setNotificationText(msgFormat.arg(tr("Undo: %1").arg(getRedoText())).arg(tr("Redo")));
|
setNotificationText(msgFormat.arg(tr("Redo")).arg(tr("Undo: %1").arg(getRedoText())));
|
||||||
else
|
else
|
||||||
setNotificationText(msgFormat.arg(getUndoText()).arg(tr("Undo")));
|
setNotificationText(msgFormat.arg(tr("Undo")).arg(getUndoText()));
|
||||||
} else {
|
} else {
|
||||||
appendTextToLog("local save requested with no unsaved changes");
|
appendTextToLog("local save requested with no unsaved changes");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue