-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainWindow.axaml.cs
More file actions
123 lines (103 loc) · 4.05 KB
/
MainWindow.axaml.cs
File metadata and controls
123 lines (103 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using Avalonia.Controls;
using Avalonia.Interactivity;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text.Json;
namespace Unicode_Calendar
{
public partial class MainWindow : Window
{
private string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
private string appFolder, configFile;
private MainPage _mainPage;
private SettingsPage _settingsPage;
private Dictionary<string, string> loadedData = new Dictionary<string, string>();
private int offset = 48;
private string datePattern = "MM/dd/yyyy", timePattern = "HH:mm:ss";
public MainWindow()
{
InitializeComponent();
appFolder = Path.Combine(appDataPath, "Unicode Calendar");
configFile = Path.Combine(appFolder, "settings.json");
LoadFromFile();
_mainPage = new MainPage(offset, datePattern, timePattern);
_settingsPage = new SettingsPage(offset, datePattern, timePattern);
ShowMainPage(null, null, offset, datePattern, timePattern); // Showing Main Page
_mainPage.ToSettings += ShowSettingsPage;
_settingsPage.ToMainMenu += ShowMainPage;
}
public void ShowMainPage(object? sender, RoutedEventArgs? e, int offset, string datePattern, string timePattern)
{
if (this.offset != offset)
{
this.offset = offset;
_mainPage.offset = this.offset;
}
if (this.datePattern != datePattern)
{
this.datePattern = datePattern ?? "MM/dd/yyyy";
_mainPage.datePattern = this.datePattern;
}
if (this.timePattern != timePattern)
{
this.timePattern = timePattern ?? "HH:mm:ss";
_mainPage.timePattern = this.timePattern;
}
_mainPage.CountDate(DateTime.Now);
SaveToFile();
CurrentPage.Content = _mainPage;
}
public void ShowSettingsPage(object? sender, RoutedEventArgs e)
{
CurrentPage.Content = _settingsPage;
}
public void LoadFromFile()
{
if (!File.Exists(configFile))
{
Directory.CreateDirectory(Path.GetDirectoryName(configFile)!);
File.WriteAllText(configFile, "{}");
}
try
{
string json = File.ReadAllText(configFile);
loadedData = JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>();
}
catch (Exception ex)
{
Debug.WriteLine(ex);
loadedData = new Dictionary<string, string>();
File.WriteAllText(configFile, "{}");
}
if (loadedData.ContainsKey("offset") && int.TryParse(loadedData["offset"], out int loadedOffset))
{
offset = loadedOffset;
}
else
{
offset = 0;
loadedData["offset"] = "0";
}
datePattern = loadedData.ContainsKey("datePattern") ? loadedData["datePattern"] : "MM/dd/yyyy";
timePattern = loadedData.ContainsKey("timePattern") ? loadedData["timePattern"] : "HH:mm:ss";
}
public void SaveToFile()
{
try
{
loadedData["offset"] = offset.ToString();
loadedData["datePattern"] = datePattern;
loadedData["timePattern"] = timePattern;
Directory.CreateDirectory(Path.GetDirectoryName(configFile)!);
var options = new JsonSerializerOptions { WriteIndented = true };
File.WriteAllText(configFile, JsonSerializer.Serialize(loadedData, options));
}
catch (Exception ex)
{
Console.WriteLine($"Error saving config: {ex.Message}");
}
}
}
}