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;
|
_isPerformingInitialLoad = true;
|
||||||
_pdfReport = new PDFReport(reportInfo);
|
_pdfReport = new PDFReport(reportInfo);
|
||||||
// todo: load/interact with StartNewChooseReportViewModel settings object properly!
|
// 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
|
// always default to using BaseFolder, which will always be set in the general case
|
||||||
if (!string.IsNullOrWhiteSpace(_pdfReport.BaseFolder))
|
if (!string.IsNullOrWhiteSpace(_pdfReport.BaseFolder))
|
||||||
{
|
{
|
||||||
@@ -86,6 +88,8 @@ class CreatePDFReportViewModel : BaseViewModel, ICanCheckShutdown, ILogger
|
|||||||
_isPerformingInitialLoad = false;
|
_isPerformingInitialLoad = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IUpdateRecentlyUsed? UpdateRecentlyUsed { get; set; }
|
||||||
|
|
||||||
public PDFReport PDFReport
|
public PDFReport PDFReport
|
||||||
{
|
{
|
||||||
get => _pdfReport;
|
get => _pdfReport;
|
||||||
@@ -591,6 +595,7 @@ class CreatePDFReportViewModel : BaseViewModel, ICanCheckShutdown, ILogger
|
|||||||
await File.WriteAllTextAsync(savePath, json);
|
await File.WriteAllTextAsync(savePath, json);
|
||||||
LogInfo("Saved report information to {0}", savePath);
|
LogInfo("Saved report information to {0}", savePath);
|
||||||
HasUnsavedWork = false;
|
HasUnsavedWork = false;
|
||||||
|
UpdateRecentlyUsed?.UpdateRecentlyUsed(report);
|
||||||
}
|
}
|
||||||
|
|
||||||
// called from UI button
|
// called from UI button
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ using Avalonia.Platform.Storage;
|
|||||||
|
|
||||||
namespace MayShow.ViewModels;
|
namespace MayShow.ViewModels;
|
||||||
|
|
||||||
class StartNewChooseReportViewModel : BaseViewModel, ICanCheckShutdown
|
class StartNewChooseReportViewModel : BaseViewModel, ICanCheckShutdown, IUpdateRecentlyUsed
|
||||||
{
|
{
|
||||||
private string _creatingReportTitle;
|
private string _creatingReportTitle;
|
||||||
private ObservableCollection<PDFReportInfo> _savedReports;
|
private ObservableCollection<PDFReportInfo> _savedReports;
|
||||||
@@ -58,12 +58,11 @@ class StartNewChooseReportViewModel : BaseViewModel, ICanCheckShutdown
|
|||||||
UUID = Utilities.GetUniqueReportGuid(_settings).ToString()
|
UUID = Utilities.GetUniqueReportGuid(_settings).ToString()
|
||||||
};
|
};
|
||||||
reportInfo.BaseFolder = Path.Combine(Utilities.GetInternalDataPath(), reportInfo.UUID); // default to internal directory
|
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
|
// 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
|
CreatingReportTitle = ""; // when user comes back they can start another new report
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +88,10 @@ class StartNewChooseReportViewModel : BaseViewModel, ICanCheckShutdown
|
|||||||
UUID = Utilities.GetUniqueReportGuid(_settings).ToString(),
|
UUID = Utilities.GetUniqueReportGuid(_settings).ToString(),
|
||||||
BaseFolder = folder.Path.LocalPath
|
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;
|
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