iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Software Development

就是要來點 A.I. 的 TopAOAIConnector App系列 第 11

EP 11 - 對應畫面的功能與資料儲存

  • 分享至 

  • xImage
  •  

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會展開使用 Avalonia UI 技術所建立的 TopAOAIConnector App 。由於使用 Avalonia UI 可以很快速的進行各平台的 桌面 應用程式開發,並且透過此 TopAOAIConnector App 來串接 Azure OpenAI Service 時所需的功能研究。

本篇是 就是要來點 A.I. 的 TopAOAIConnector App 系列文的 EP11。


前一回 時已經完成的 Setting 的最基本 UI 部分,接下來就把功能面的處理給完成吧!

找到 ViewModels/SettingPageViewModel.cs 。

首先,調整一下原本 settingsPath 欄位的設計(點 1):

原本的:

private readonly string settingsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "TopAOAIConnector", "settings.json");

取代為:

private const string directoryName = "TopAOAIConnector";
private const string settingsFileName = "settings.json";

private readonly string settingsFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), directoryName, settingsFileName);

接著來設計 SettingPageViewModel 的建構方法(點 2):

public SettingPageViewModel()
{
    if (File.Exists(settingsFilePath))
    {
        var jsonSettings = File.ReadAllText(settingsFilePath);
        var aoaiSettings = JsonSerializer.Deserialize<AOAISettings>(jsonSettings);
        Settings = aoaiSettings;
    }
    else
    {
        Settings = new();
    }
}

改完後大概會如下圖 (紅框為所加入的 C# 程式碼):
01

繼續調整一下在前一回所設計的 "Clear" 方法。

原本的:

System.Diagnostics.Debug.WriteLine($"Clear...");

在其後加入程式碼:

if (File.Exists(settingsFilePath))
{
    File.Delete(settingsFilePath);
}

var directoryPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), directoryName);
if (Directory.Exists(directoryPath))
{
    Directory.Delete(directoryPath);
}

Settings = new();

完成後如下圖紅框所示:
02

繼續調整一下在前一回所設計的 "Save" 方法。

把原本的:

System.Diagnostics.Debug.WriteLine($"Save to...{settingsFilePath}");

在其後加入程式碼:

var directoryPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), directoryName);
if (!Directory.Exists(directoryPath))
{
    Directory.CreateDirectory(directoryPath);
}

var jsonSettings = JsonSerializer.Serialize(Settings);
await File.WriteAllTextAsync(settingsFilePath, jsonSettings);

完成後如下圖紅框所示:
03

"執行並偵錯(F5)" 後,切到 "Setting" 後,在四個文字輸入框中輸入文字後點選 "儲存":
04-1

在點選儲存前後用主要透過命令提示字元的下列指令觀察變化:

dir /OD

(上述指令的概念為: 根據時間由舊到新,列出當前路徑資料夾底下的資料夾與檔案。)

下圖為透過命令提示字元的相關指令對變化觀察:
04-2

透過點選 "清除" 除了把畫面當中的文字給清除外,也順便會把所記錄的資訊檔案給刪除:
04-3

除非剛好有應用程式正開啟 TopAOAIConnector 這個資料夾,那目前 "Clear" 的程式則會直接拋出例外(Expection),但為了力求介紹簡潔,在本系列文就盡量不節外生枝介紹相關處理。

例外處理 是門重要的大學問,有興趣的看倌可以參考 Skilltree 的 例外處理實戰 課程,上完課程後將會有截然不同的感受。

看倌們也可以玩玩看,若已經有儲存資料,下次再執行此 TopAOAIConnector App 並切換到 Setting 時,資料是否能讀取回來唷!

那就下回見~~~


上一篇
EP 10 - 設計應用的畫面 UI (II)
下一篇
EP 12 - 對應畫面的功能與資料讀取
系列文
就是要來點 A.I. 的 TopAOAIConnector App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言