/// <summary> /// Изменяет текущую заметку, т.е. помещает на верх стека новые заголовок и текст /// </summary> /// <param name="newTitle"></param> /// <param name="newText"></param> public void ChangeNote(string newTitle, string newText) { BaseNote newNote = new BaseNote(newTitle, newText); // заметка хранит до 10 последних изменений, включая текущее видимое значение if (this.noteStack.Count == 10) { // удаляем самый глубокий элемент // К сожалению, нет метода, удаляющего самый первый элемент стека, // хотя реализовать его проще простого - просто отсекаешь последний эл-т массива, // через который реализован стек. BaseNote[] tempArr = noteStack.ToArray(); // Поэтому просто копируем стек в массив, noteStack.Clear(); // очищаем стек for (int i = tempArr.Length - 2; i >= 0; i--) // а потом запихиваем назад в стек { noteStack.Push(tempArr[i]); // все эл-ты, кроме первого (посл. в массиве) } } this.noteStack.Push(newNote); SimpleDateTime newChangeDT = new SimpleDateTime(DateTime.Now); this.ChangeDT = newChangeDT; }
/// <summary> /// Редактирует текущую запись - меняет заголовок и текст /// </summary> /// <param name="keyDT">Ключ записи. Включает в себя дату и время записи</param> /// <param name="newTitle">Новый заголовок</param> /// <param name="newText">Новый текст</param> public void EditNoteContent(KeyStruct keyDT, string newTitle, string newText) { BaseNote noteToEdit = Organizer[keyDT.Year][keyDT.Month][keyDT.Day].Day[keyDT].noteStack.Peek(); noteToEdit.Title = newTitle; noteToEdit.Text = newText; Organizer[keyDT.Year][keyDT.Month][keyDT.Day].Day[keyDT].noteStack.Push(noteToEdit); SimpleDateTime changeDT = new SimpleDateTime(DateTime.Now); Organizer[keyDT.Year][keyDT.Month][keyDT.Day].Day[keyDT].ChangeDT = changeDT; }
/// <summary> /// Создаёт стек заметок, помещает туда общие для всех записей эл-ты: ID, заголовок и текст, /// дату отображения, дату создания. Устанавливает в минимальное значение даты изменения и удаления. /// </summary> /// <param name="id"></param> /// <param name="dt"></param> /// <param name="title"></param> /// <param name="text"></param> private void CreateNote(KeyStruct keyDT, string title, string text) { // Помним, что конструктор класса вызывается при первом создании экземпляра класса через new // Поэтому переменным память не выделена. Переменные не инициализированы this.noteStack = new Stack <BaseNote>(); // создаём стек заметок BaseNote newNote = new BaseNote(title, text); // создаём заметку. this.noteStack.Push(newNote); // помещаем заметку в стек // генерируется время this.DisplayDT = keyDT; // передаём уникальный ID и отображаемые дату и время заметки this.CreationDT = new SimpleDateTime(DateTime.Now); // Текущее значение даты и времени this.ChangeDT = new SimpleDateTime(DateTime.MinValue); // Значение по умлочанию 01.01.0001 00:00:00 this.DeleteDT = new SimpleDateTime(DateTime.MinValue); // Значение по умлочанию 01.01.0001 00:00:00 }