WIP: Add iOS version #10

Draft
Deadpikle wants to merge 67 commits from feature/ios into main
3 changed files with 41 additions and 2 deletions
Showing only changes of commit 42f7de5d5c - Show all commits
+10 -2
View File
@@ -14,8 +14,14 @@
-output in internal dir (default)
-always ask me every time (opens save file picker after generating PDF to ask user where they want it)
-always put in X folder (uses existing option)
-add option to backup added files to internal data directory (always on for iOS)
-make backup of last generated PDF somewhere
~-add option to backup added files to internal data directory (always on for iOS)
*-add option
-add to settings view
-add logic to CreatePDFReportViewModel
-programmed in but not tested yet
-make backup of last generated PDF somewhere (another internal folder, most likely);
-save to PDF report data somewhere for safe-keeping
-allow loading by user
-iOS-specific (MAUI essentials?)
-maui community essentials https://learn.microsoft.com/en-us/dotnet/communitytoolkit/maui/get-started?tabs=CommunityToolkitMaui
-I don't think this is what we are looking for ultimately....?
@@ -31,6 +37,8 @@
-https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/data/share?view=net-maui-10.0&tabs=macios
-Make sure clipboard works (not sure if it will out of the box or not)
-https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/data/clipboard?view=net-maui-10.0
-show report file size in recent list
-make sure setting for backup files is not available (always backs up files on iOS)
-----------
+13
View File
@@ -24,6 +24,7 @@ class Settings : ChangeNotifier
public string _reportDateFormat;
public int _settingsVersion;
private PDFSaveLocation _pdfOutputSaveLocation;
public bool _copyFilesToInternalDir;
public Settings() : base()
{
@@ -38,6 +39,10 @@ class Settings : ChangeNotifier
_dataGridDateFormat = "dd/MM/yyyy";
_reportDateFormat = "yyyy-MM-dd";
_pdfOutputSaveLocation = PDFSaveLocation.BaseFolder;
_copyFilesToInternalDir = false;
#if IOS
_copyFilesToInternalDir = true;
#endif
}
public Settings(Settings other)
@@ -53,6 +58,7 @@ class Settings : ChangeNotifier
_dataGridDateFormat = other.DataGridDateFormat;
_reportDateFormat = other.ReportDateFormat;
_pdfOutputSaveLocation = other.PDFOutputSaveLocation;
_copyFilesToInternalDir = other.CopyFilesToInternalDir;
}
[JsonInclude]
@@ -133,6 +139,13 @@ class Settings : ChangeNotifier
set { _reportDateFormat = value; NotifyPropertyChanged(); }
}
[JsonInclude]
public bool CopyFilesToInternalDir
{
get => _copyFilesToInternalDir;
set { _copyFilesToInternalDir = value; NotifyPropertyChanged(); }
}
public static string SettingsFileName = "settings.json";
public static string GetSettingsPath()
@@ -344,6 +344,24 @@ class CreatePDFReportViewModel : BaseViewModel, ICanCheckShutdown, ILogger
else
{
var date = Utilities.CheckValidDateInString(filePath);
if (_settings.CopyFilesToInternalDir)
{
// copy file to internal folder, then add report file based on that path
// make sure file names are not conflicting with one another, too.
var fileName = Path.GetFileName(filePath);
var fileNameNoExt = Path.GetFileNameWithoutExtension(filePath);
var extension = Path.GetExtension(filePath);
var copyToPath = Path.Combine(_pdfReport.BaseFolder, fileName);
var rnd = new Random();
// TODO: test to make sure this works
while (File.Exists(copyToPath))
{
fileName = fileNameNoExt + rnd.Next(1, 999999) + "." + extension;
copyToPath = Path.Combine(_pdfReport.BaseFolder, fileName);
}
File.Copy(filePath, copyToPath);
filePath = copyToPath;
}
ReportFiles.Add(new ReportFile()
{
Title = Path.GetFileName(filePath),