process-manager: refactor 45/239545/1
authorLukasz Stanislawski <lukasz.stanislawski@gmail.com>
Mon, 27 Jul 2020 08:53:50 +0000 (10:53 +0200)
committerLukasz Stanislawski <lukasz.stanislawski@gmail.com>
Mon, 27 Jul 2020 11:05:53 +0000 (13:05 +0200)
Change-Id: I73065991e46e1122440c843bb1021efc7d58f5ff

Oobe/Oobe/Managers/ProcessManager.cs
Oobe/Oobe/Oobe.cs

index 3be1e5ee3116d8989614dbce9a24030cfbc2458d..944de275d3f08111275fc87ad54d8afeff6f78cd 100644 (file)
@@ -28,15 +28,16 @@ using Oobe.Terms;
 
 namespace Oobe
 {
-    public class ProcessManager : IProcessNavigation
+    public sealed class ProcessManager : IProcessNavigation
     {
         private MainView ui;
         private LinkedList<Lazy<ProcessStep>> steps;
         private LinkedListNode<Lazy<ProcessStep>> current;
+        static private ProcessManager instance;
 
         static private string doneFile = Tizen.Applications.CoreUIApplication.Current.DirectoryInfo.Data + "oobe_done";
 
-        private class NavigationController : IProcessNavigation
+        internal class NavigationController : IProcessNavigation
         {
             private ProcessStep step;
             private ProcessManager manager;
@@ -72,7 +73,20 @@ namespace Oobe
             }
         }
 
-        public ProcessManager()
+        static public ProcessManager Instance
+        {
+            get
+            {
+                if (instance == null)
+                {
+                    instance = new ProcessManager();
+                }
+
+                return instance;
+            }
+        }
+
+        private ProcessManager()
         {
             //TODO consider loading this from xaml, xml or something...
             steps = new LinkedList<Lazy<ProcessStep>>(new[]{
@@ -140,7 +154,7 @@ namespace Oobe
             }
         }
 
-        static void SetDone()
+        private void SetDone()
         {
             if (!File.Exists(doneFile))
             {
@@ -152,14 +166,20 @@ namespace Oobe
         /// Indicates if oobe process has been previously finished
         /// </summary>
         /// <returns></returns>
-        static public bool IsDone()
+        public bool IsDone()
         {
             return File.Exists(doneFile);
         }
 
-        static void ClearDone()
+        public void Reset()
         {
+            ui?.Dispose();
+            foreach (var step in steps)
+            {
+                step.Value.Reset();
+            }
             File.Delete(doneFile);
+            current = steps.First;
         }
     }
 }
index c2b96f403e38fdc621c8fd368b19fca90ea3c3d3..012c6d3ad89ae927d4546efeb883a72a2446ef7d 100644 (file)
@@ -25,11 +25,9 @@ namespace Oobe
 {
     class Program : NUIApplication
     {
-        private ProcessManager processManager;
-
         protected override void OnCreate()
         {
-            if (ProcessManager.IsDone())
+            if (ProcessManager.Instance.IsDone())
             {
                 NUIApplication.Current.Exit();
                 return;
@@ -45,8 +43,8 @@ namespace Oobe
 
             Window.Instance.Type = WindowType.Notification;
             Window.Instance.SetNotificationLevel(NotificationLevel.High);
-            processManager = new ProcessManager();
-            processManager.Start();
+
+            ProcessManager.Instance.Start();
         }
 
         void SetupLanguage()