1 // --------------------------------------------------------------------------------------------------------------------
2 // <copyright file="TaskState.cs" company="HandBrake Project (https://handbrake.fr)">
3 //   This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
4 // </copyright>
5 // <summary>
6 //   The status of the current task being processed.
7 // </summary>
8 // --------------------------------------------------------------------------------------------------------------------
9 
10 namespace HandBrake.Interop.Interop.Json.State
11 {
12     using System.Collections.Generic;
13 
14     public class TaskState
15     {
16         private static readonly Dictionary<string, TaskState> TaskStates = new Dictionary<string, TaskState>();
17 
18         public static TaskState Idle = new TaskState("IDLE");
19         public static TaskState Scanning = new TaskState("SCANNING");
20         public static TaskState ScanDone = new TaskState("SCANDONE");
21         public static TaskState Working = new TaskState("WORKING");
22         public static TaskState Paused = new TaskState("PAUSED");
23         public static TaskState Searching = new TaskState("SEARCHING");
24         public static TaskState WorkDone = new TaskState("WORKDONE");
25         public static TaskState Muxing = new TaskState("MUXING");
26         public static TaskState Unknown = new TaskState("UNKNOWN");
27 
TaskState()28         static TaskState()
29         {
30             TaskStates.Add("IDLE", Idle);
31             TaskStates.Add("SCANNING", Scanning);
32             TaskStates.Add("SCANDONE", ScanDone);
33             TaskStates.Add("WORKING", Working);
34             TaskStates.Add("PAUSED", Paused);
35             TaskStates.Add("SEARCHING", Searching);
36             TaskStates.Add("WORKDONE", WorkDone);
37             TaskStates.Add("MUXING", Muxing);
38             TaskStates.Add("UNKNOWN", Unknown);
39         }
40 
TaskState(string code)41         public TaskState(string code)
42         {
43             this.Code = code;
44         }
45 
46         public string Code { get; }
47 
FromRepositoryValue(string code)48         public static TaskState FromRepositoryValue(string code)
49         {
50             if (TaskStates.TryGetValue(code, out TaskState state))
51             {
52                 return state;
53             }
54 
55             return null;
56         }
57     }
58 }
59