Notes

Форк
0
/
MainViewModel.cs 
165 строк · 4.8 Кб
1
using CommunityToolkit.Mvvm.ComponentModel;
2
using CommunityToolkit.Mvvm.Input;
3
using Model;
4
using Model.Services;
5
using System;
6
using System.Collections.Generic;
7
using System.Collections.ObjectModel;
8
using System.Linq;
9
using System.Net.WebSockets;
10
using System.Text;
11
using System.Threading.Tasks;
12
using ViewModel.Services;
13

14
namespace ViewModel
15
{
16
    public partial class MainViewModel: ObservableObject
17
    {
18
        private NoteViewModel _selectedNote;
19

20
        private string? _searchNoteTitle;
21

22
        [ObservableProperty]
23
        private bool _isEnabled = false;
24

25
        [RelayCommand]
26
        private void AddNote()
27
        {
28
            var note = new NoteViewModel();
29
            note.Title = "1";
30
            note.Text = "1";
31
            if (SelectedNote != null)
32
            {
33
                SelectedNote.IsEdit = true;
34
            }
35
            if (Notes.Contains(note))
36
            {
37
                NotesSerializer.Serialize(Transfers.TransferNoteVMToNoteDTO(Notes));
38
                if (SelectedNote != null)
39
                {
40
                    SelectedNote.IsEdit = false;
41
                }
42
            }
43
            else
44
            {
45
                Notes.Add(note);
46
                NotesSerializer.Serialize(Transfers.TransferNoteVMToNoteDTO(Notes));
47
                if (SelectedNote != null)
48
                {
49
                    SelectedNote.IsEdit = false;
50
                }
51
            }
52
            SelectedNote = Notes.Last();
53
            IsEnabled = true;
54
        }
55

56
        [RelayCommand]
57
        private void DeleteNote()
58
        {
59
            if (Notes.Count > 0)
60
            {
61
                if (SelectedNote == Notes.Last())
62
                {
63
                    Notes.Remove(SelectedNote);
64
                    if (Notes.Count >= 1)
65
                    {
66
                        SelectedNote = Notes.Last();
67
                        IsEnabled = true;
68
                    }
69
                    else
70
                    {
71
                        SelectedNote = null;
72
                        IsEnabled = false;
73
                    }
74
                }
75
                else
76
                {
77
                    foreach (var note in Notes)
78
                    {
79
                        if (SelectedNote == note)
80
                        {
81
                            Notes.Remove(SelectedNote);
82
                            SelectedNote = note;
83
                            IsEnabled = true;
84
                            break;
85
                        }
86
                    }
87
                }
88
            }
89
            NotesSerializer.Serialize(Transfers.TransferNoteVMToNoteDTO(Notes));
90
            if (SelectedNote != null)
91
            {
92
                SelectedNote.IsEdit = false;
93
            }
94
        }
95

96
        [RelayCommand]
97
        private void SaveNote()
98
        {
99
            NotesSerializer.Serialize(Transfers.TransferNoteVMToNoteDTO(Notes));
100
            SelectedNote.IsEdit = false;
101
        }
102

103
        public ObservableCollection<NoteViewModel> Notes { get; set; } = 
104
            NotesSerializer.Deserialize();
105

106
        public NoteViewModel? SelectedNote
107
        {
108
            get => _selectedNote;
109
            set
110
            {
111
                if (value != null)
112
                {
113
                    var keepId = value.Id;
114
                    if (_selectedNote != null)
115
                    {
116
                        if (_selectedNote.Id != keepId)
117
                        {
118
                            _selectedNote.IsEdit = false;
119
                        }
120
                    }
121
                }
122
                _selectedNote = value;
123
                IsEnabled = true;
124
                OnPropertyChanged();
125
                NotesSerializer.Serialize(Transfers.TransferNoteVMToNoteDTO(Notes));
126
            }
127
        }
128

129
        public string SearchNoteTitle
130
        {
131
            get => _searchNoteTitle;
132
            set
133
            {
134
                _searchNoteTitle = value;
135
                if (_searchNoteTitle != null)
136
                {
137
                    var flag = false;
138
                    foreach(var note in Notes)
139
                    {
140
                        if (_searchNoteTitle == note.Title)
141
                        {
142
                            SelectedNote = note;
143
                            flag = true;
144
                            break;
145
                        }
146
                        else if (note.Title.StartsWith(_searchNoteTitle))
147
                        {
148
                            SelectedNote = note;
149
                            flag = true;
150
                        }
151
                        else
152
                        {
153
                            continue;
154
                        }
155
                    }
156
                    if (!flag)
157
                    {
158
                        SelectedNote = null;
159
                    }
160
                }
161
                OnPropertyChanged();
162
            }
163
        }
164
    }
165
}
166

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.