From 1107173e607a59c4434a9727c52f367d7f2165ca Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Mon, 15 Nov 2021 16:36:36 +0100 Subject: [PATCH] Add notification text to Editor status bar after saving to improve user awareness --- Source/Editor/Editor.cs | 1 + Source/Editor/Modules/SceneModule.cs | 1 + Source/Editor/Modules/UIModule.cs | 40 ++++++++++++++++++++++++---- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/Source/Editor/Editor.cs b/Source/Editor/Editor.cs index 4831b9958..21bebfd65 100644 --- a/Source/Editor/Editor.cs +++ b/Source/Editor/Editor.cs @@ -585,6 +585,7 @@ namespace FlaxEditor Windows.SaveCurrentLayout(); Scene.SaveScenes(); SaveContent(); + UI.AddStatusMessage("Saved!"); } /// diff --git a/Source/Editor/Modules/SceneModule.cs b/Source/Editor/Modules/SceneModule.cs index 3e6662f6c..d144c5a7e 100644 --- a/Source/Editor/Modules/SceneModule.cs +++ b/Source/Editor/Modules/SceneModule.cs @@ -238,6 +238,7 @@ namespace FlaxEditor.Modules node.IsEdited = false; } Level.SaveAllScenesAsync(); + Editor.UI.AddStatusMessage("Saved!"); } /// diff --git a/Source/Editor/Modules/UIModule.cs b/Source/Editor/Modules/UIModule.cs index c5145a7aa..a7eaaf826 100644 --- a/Source/Editor/Modules/UIModule.cs +++ b/Source/Editor/Modules/UIModule.cs @@ -3,6 +3,7 @@ using System; using System.IO; using System.Linq; +using System.Collections.Generic; using FlaxEditor.Gizmo; using FlaxEditor.GUI; using FlaxEditor.GUI.ContextMenu; @@ -30,6 +31,7 @@ namespace FlaxEditor.Modules { private Label _progressLabel; private ProgressBar _progressBar; + private List> _statusMessages; private ContextMenuButton _menuFileSaveScenes; private ContextMenuButton _menuFileCloseScenes; @@ -251,18 +253,35 @@ namespace FlaxEditor.Modules Color color; if (Editor.StateMachine.IsPlayMode) - { color = Color.OrangeRed; - } else - { color = Style.Current.BackgroundSelected; - } - StatusBar.Text = Editor.StateMachine.CurrentState.Status ?? "Ready"; + string text; + if (_statusMessages != null && _statusMessages.Count != 0) + text = _statusMessages[0].Key; + else if (Editor.StateMachine.CurrentState.Status != null) + text = Editor.StateMachine.CurrentState.Status; + else + text = "Ready"; + + StatusBar.Text = text; StatusBar.StatusColor = color; } + /// + /// Adds the status bar message text to be displayed as a notification. + /// + /// The message to display. + public void AddStatusMessage(string message) + { + if (_statusMessages == null) + _statusMessages = new List>(); + _statusMessages.Add(new KeyValuePair(message, DateTime.Now + TimeSpan.FromSeconds(3.0f))); + if (_statusMessages.Count == 1) + UpdateStatusBar(); + } + internal bool ProgressVisible { get => _progressLabel?.Parent.Visible ?? false; @@ -306,6 +325,16 @@ namespace FlaxEditor.Modules }); } } + + /// + public override void OnUpdate() + { + if (_statusMessages != null && _statusMessages.Count > 0 && _statusMessages[0].Value - DateTime.Now < TimeSpan.Zero) + { + _statusMessages.RemoveAt(0); + UpdateStatusBar(); + } + } private class CustomWindowBorderControl : Control { @@ -814,6 +843,7 @@ namespace FlaxEditor.Modules StatusBar = null; _progressLabel = null; _progressBar = null; + _statusMessages = null; MenuFile = null; MenuGame = null;