WIP: Add iOS version #10
@@ -0,0 +1,8 @@
|
||||
using MayShow.Models;
|
||||
|
||||
namespace MayShow.Interfaces;
|
||||
|
||||
interface IUpdateRecentlyUsed
|
||||
{
|
||||
void UpdateRecentlyUsed(PDFReport report);
|
||||
}
|
||||
@@ -64,6 +64,8 @@ class CreatePDFReportViewModel : BaseViewModel, ICanCheckShutdown, ILogger
|
||||
_isPerformingInitialLoad = true;
|
||||
_pdfReport = new PDFReport(reportInfo);
|
||||
// todo: load/interact with StartNewChooseReportViewModel settings object properly!
|
||||
// ...which basically means when something is saved make sure to update the recently used stuff.
|
||||
// which i think we can just do through a simple interface and call it a day.
|
||||
// always default to using BaseFolder, which will always be set in the general case
|
||||
if (!string.IsNullOrWhiteSpace(_pdfReport.BaseFolder))
|
||||
{
|
||||
@@ -86,6 +88,8 @@ class CreatePDFReportViewModel : BaseViewModel, ICanCheckShutdown, ILogger
|
||||
_isPerformingInitialLoad = false;
|
||||
}
|
||||
|
||||
public IUpdateRecentlyUsed? UpdateRecentlyUsed { get; set; }
|
||||
|
||||
public PDFReport PDFReport
|
||||
{
|
||||
get => _pdfReport;
|
||||
@@ -591,6 +595,7 @@ class CreatePDFReportViewModel : BaseViewModel, ICanCheckShutdown, ILogger
|
||||
await File.WriteAllTextAsync(savePath, json);
|
||||
LogInfo("Saved report information to {0}", savePath);
|
||||
HasUnsavedWork = false;
|
||||
UpdateRecentlyUsed?.UpdateRecentlyUsed(report);
|
||||
}
|
||||
|
||||
// called from UI button
|
||||
|
||||
@@ -14,7 +14,7 @@ using Avalonia.Platform.Storage;
|
||||
|
||||
namespace MayShow.ViewModels;
|
||||
|
||||
class StartNewChooseReportViewModel : BaseViewModel, ICanCheckShutdown
|
||||
class StartNewChooseReportViewModel : BaseViewModel, ICanCheckShutdown, IUpdateRecentlyUsed
|
||||
{
|
||||
private string _creatingReportTitle;
|
||||
private ObservableCollection<PDFReportInfo> _savedReports;
|
||||
@@ -58,12 +58,11 @@ class StartNewChooseReportViewModel : BaseViewModel, ICanCheckShutdown
|
||||
UUID = Utilities.GetUniqueReportGuid(_settings).ToString()
|
||||
};
|
||||
reportInfo.BaseFolder = Path.Combine(Utilities.GetInternalDataPath(), reportInfo.UUID); // default to internal directory
|
||||
// ... this sort and save is slow, technically, but we're not going to have millions of items here, so...
|
||||
// TODO: save automatically only if mobile; desktop only saves on command
|
||||
// SavedReports = new ObservableCollection<PDFReportInfo>(_settings.AllReportInfo.OrderBy(x => x.Title));
|
||||
// await _settings.SaveSettingsAsync();
|
||||
// now update UI
|
||||
ViewModelChanger.PushViewModel(new CreatePDFReportViewModel(reportInfo, ViewModelChanger));
|
||||
ViewModelChanger.PushViewModel(new CreatePDFReportViewModel(reportInfo, ViewModelChanger)
|
||||
{
|
||||
UpdateRecentlyUsed = this
|
||||
});
|
||||
CreatingReportTitle = ""; // when user comes back they can start another new report
|
||||
}
|
||||
|
||||
@@ -89,7 +88,10 @@ class StartNewChooseReportViewModel : BaseViewModel, ICanCheckShutdown
|
||||
UUID = Utilities.GetUniqueReportGuid(_settings).ToString(),
|
||||
BaseFolder = folder.Path.LocalPath
|
||||
};
|
||||
ViewModelChanger.PushViewModel(new CreatePDFReportViewModel(reportInfo, ViewModelChanger));
|
||||
ViewModelChanger.PushViewModel(new CreatePDFReportViewModel(reportInfo, ViewModelChanger)
|
||||
{
|
||||
UpdateRecentlyUsed = this
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -128,4 +130,27 @@ class StartNewChooseReportViewModel : BaseViewModel, ICanCheckShutdown
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public async void UpdateRecentlyUsed(PDFReport report)
|
||||
{
|
||||
var didFind = false;
|
||||
foreach (var existing in _settings.AllReportInfo)
|
||||
{
|
||||
if (existing.UUID == report.UUID)
|
||||
{
|
||||
didFind = true;
|
||||
// update info on existing object
|
||||
existing.LastSaved = report.LastSaved;
|
||||
existing.Title = report.Title;
|
||||
existing.BaseFolder = report.BaseFolder;
|
||||
}
|
||||
}
|
||||
if (!didFind)
|
||||
{
|
||||
_settings.AllReportInfo.Add(report);
|
||||
}
|
||||
// ... this sort and save is slow, technically, but we're not going to have millions of items here, so...
|
||||
SavedReports = new ObservableCollection<PDFReportInfo>(_settings.AllReportInfo.OrderBy(x => x.Title));
|
||||
await _settings.SaveSettingsAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user