|
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
|
using NotesNet8.Models;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
|
|
|
|
|
namespace NotesNet8.ViewModels
|
|
|
|
|
{
|
|
|
|
|
internal class NoteViewModel : ObservableObject, IQueryAttributable
|
|
|
|
|
{
|
|
|
|
|
private Note _note;
|
|
|
|
|
|
|
|
|
|
public NoteViewModel()
|
|
|
|
|
{
|
|
|
|
|
_note = new Note();
|
|
|
|
|
SaveCommand = new AsyncRelayCommand(Save);
|
|
|
|
|
DeleteCommand = new AsyncRelayCommand(Delete);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public NoteViewModel(Note note)
|
|
|
|
|
{
|
|
|
|
|
_note = note;
|
|
|
|
|
SaveCommand = new AsyncRelayCommand(Save);
|
|
|
|
|
DeleteCommand = new AsyncRelayCommand(Delete);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Text
|
|
|
|
|
{
|
|
|
|
|
get => _note.Text;
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (_note.Text != value)
|
|
|
|
|
{
|
|
|
|
|
_note.Text = value;
|
|
|
|
|
OnPropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ICommand SaveCommand { get; private set; }
|
|
|
|
|
public ICommand DeleteCommand { get; private set; }
|
|
|
|
|
|
|
|
|
|
public DateTime Date => _note.Date;
|
|
|
|
|
|
|
|
|
|
public string Identifier => _note.Filename;
|
|
|
|
|
|
|
|
|
|
private async Task Save()
|
|
|
|
|
{
|
|
|
|
|
_note.Date = DateTime.Now;
|
|
|
|
|
_note.Save();
|
|
|
|
|
await Shell.Current.GoToAsync($"..?saved={_note.Filename}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task Delete()
|
|
|
|
|
{
|
|
|
|
|
_note.Delete();
|
|
|
|
|
await Shell.Current.GoToAsync($"..?deleted={_note.Filename}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ApplyQueryAttributes(IDictionary<string, object> query)
|
|
|
|
|
{
|
|
|
|
|
if (query.ContainsKey("load"))
|
|
|
|
|
{
|
|
|
|
|
_note = Note.Load(query["load"].ToString());
|
|
|
|
|
RefreshProperties();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Reload()
|
|
|
|
|
{
|
|
|
|
|
_note = Note.Load(_note.Filename);
|
|
|
|
|
RefreshProperties();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void RefreshProperties()
|
|
|
|
|
{
|
|
|
|
|
OnPropertyChanged(nameof(Text));
|
|
|
|
|
OnPropertyChanged(nameof(Date));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|