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;
}
}
- 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[]{
}
}
- static void SetDone()
+ private void SetDone()
{
if (!File.Exists(doneFile))
{
/// 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;
}
}
}
{
class Program : NUIApplication
{
- private ProcessManager processManager;
-
protected override void OnCreate()
{
- if (ProcessManager.IsDone())
+ if (ProcessManager.Instance.IsDone())
{
NUIApplication.Current.Exit();
return;
Window.Instance.Type = WindowType.Notification;
Window.Instance.SetNotificationLevel(NotificationLevel.High);
- processManager = new ProcessManager();
- processManager.Start();
+
+ ProcessManager.Instance.Start();
}
void SetupLanguage()