X-Git-Url: http://git.euphorik.ch/?p=master-thesis.git;a=blobdiff_plain;f=Parasitemia%2FParasitemiaUI%2FUtils.fs;h=6579cd61dfc26bc772eaf43a23f90648f19a51da;hp=324e5f048c81758f8189efad5d0fcec66e2dbbce;hb=9343c4deb0bf88c58d9c92d465d8e99f64656875;hpb=154264f33619b78e17182082b483cba97e128698 diff --git a/Parasitemia/ParasitemiaUI/Utils.fs b/Parasitemia/ParasitemiaUI/Utils.fs index 324e5f0..6579cd6 100644 --- a/Parasitemia/ParasitemiaUI/Utils.fs +++ b/Parasitemia/ParasitemiaUI/Utils.fs @@ -1,5 +1,12 @@ module ParasitemiaUI.Utils +open System.IO + +open Newtonsoft.Json +open Newtonsoft.Json.Converters + +open Types + let listAsStr (s: 'a seq) = s |> Seq.fold (fun acc obj -> acc + (if acc = "" then "" else ", ") + obj.ToString()) "" @@ -9,4 +16,47 @@ let percentText (nbTotal: int, nb: int) : string = "" else let percent = 100. * (float nb) / (float nbTotal) - sprintf "%.1f %% (%d / %d)" percent nb nbTotal \ No newline at end of file + sprintf "%.1f %% (%d / %d)" percent nb nbTotal + +let roamingDir = + Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), "Parasitemia") + +let predefinedPPIFilename = "predefined-ppi.json" +let predefinedPPIFilepath = Path.Combine(roamingDir, predefinedPPIFilename) + +let sensorSizesFilename = "sensor-sizes.json" +let sensorSizesFilepath = Path.Combine(roamingDir, sensorSizesFilename) + +let private savePredefinedPPIToFile (predefinedPPI: PredefinedPPI list) = + try + use file = new StreamWriter(predefinedPPIFilepath) + file.Write(JsonConvert.SerializeObject(predefinedPPI, JsonSerializerSettings(Formatting = Formatting.Indented))) + with + ex -> + Logger.Log.Error("Unable to save predefined PPI to file \"{0}\": {1}", predefinedPPIFilepath, ex) + +let private saveSensorSizesToFile (sensorSizes: SensorSize list) = + try + use file = new StreamWriter(sensorSizesFilepath) + file.Write(JsonConvert.SerializeObject(sensorSizes, JsonSerializerSettings(Formatting = Formatting.Indented))) + with + ex -> + Logger.Log.Error("Unable to save sensor sizes to file \"{0}\": {1}", sensorSizesFilepath, ex) + +let predefinedPPI : PredefinedPPI list = + try + use file = new StreamReader(predefinedPPIFilepath) + JsonConvert.DeserializeObject(file.ReadToEnd()) + with + | ex -> + savePredefinedPPIToFile defaultPredefinedPPI + defaultPredefinedPPI + +let sensorSizes : SensorSize list = + try + use file = new StreamReader(sensorSizesFilepath) + JsonConvert.DeserializeObject(file.ReadToEnd()) + with + | ex -> + saveSensorSizesToFile defaultSensorSizes + defaultSensorSizes