mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +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,13 +55,17 @@ Kirigami.ApplicationWindow {
 | 
			
		|||
		// notifications to show the notification text, but during initialization
 | 
			
		||||
		// we instead dump the information into the textBlock below
 | 
			
		||||
		if (initialized) {
 | 
			
		||||
			// make sure any old notification is hidden
 | 
			
		||||
			// hiding notifications is no longer supported????
 | 
			
		||||
			// hidePassiveNotification()
 | 
			
		||||
			if (notificationText !== "") {
 | 
			
		||||
				// there's a risk that we have a >5 second gap in update events;
 | 
			
		||||
				// still, keep the timeout at 5s to avoid odd unchanging notifications
 | 
			
		||||
				showPassiveNotification(notificationText, 5000)
 | 
			
		||||
				var actionEnd = notificationText.indexOf("]")
 | 
			
		||||
				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)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			textBlock.text = textBlock.text + "\n" + notificationText
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1407,11 +1407,14 @@ void QMLManager::saveChangesLocal(bool fromUndo)
 | 
			
		|||
		Command::setClean();
 | 
			
		||||
		updateHaveLocalChanges(true);
 | 
			
		||||
		// 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)
 | 
			
		||||
			setNotificationText(msgFormat.arg(tr("Undo: %1").arg(getRedoText())).arg(tr("Redo")));
 | 
			
		||||
			setNotificationText(msgFormat.arg(tr("Redo")).arg(tr("Undo: %1").arg(getRedoText())));
 | 
			
		||||
		else
 | 
			
		||||
			setNotificationText(msgFormat.arg(getUndoText()).arg(tr("Undo")));
 | 
			
		||||
			setNotificationText(msgFormat.arg(tr("Undo")).arg(getUndoText()));
 | 
			
		||||
	} else {
 | 
			
		||||
		appendTextToLog("local save requested with no unsaved changes");
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue