-
Notifications
You must be signed in to change notification settings - Fork 709
/
Copy pathArchive.kt
95 lines (85 loc) · 3.37 KB
/
Archive.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
class Archive(val name: String) {
val notes = mutableListOf<Note>()
init {
require(name.isNotBlank()) { "Название архива не может быть пустым." }
}
fun addNote(note: Note) {
notes.add(note)
}
}
class MainMenu(private val noteManager: NoteManager) {
fun show() {
while (true) {
println("Главное меню:")
println("1. Создать архив")
println("2. Просмотреть архивы")
println("0. Выход")
when (readLine()) {
"1" -> createArchive()
"2" -> viewArchives()
"0" -> return
else -> println("Некорректный выбор. Пожалуйста, попробуйте снова.")
}
}
}
private fun createArchive() {
while (true) {
print("Введите название архива: ")
val name = readLine() ?: ""
try {
noteManager.addArchive(Archive(name))
println("Архив создан! Нажмите любую клавишу для продолжения...")
readLine()
return
} catch (e: IllegalArgumentException) {
println(e.message)
}
}
}
private fun viewArchives() {
if (noteManager.archives.isEmpty()) {
println("Нет доступных архивов.")
return
}
println("Доступные архивы:")
noteManager.archives.forEachIndexed { index, archive ->
println("${index + 1}. ${archive.name}")
}
print("Введите номер архива для просмотра заметок (или 0 для выхода): ")
val input = readLine()?.toIntOrNull()
if (input == 0) return
if (input != null && input in 1..noteManager.archives.size) {
viewNotesInArchive(input - 1)
} else {
println("Некорректный номер архива.")
}
}
private fun viewNotesInArchive(archiveIndex: Int) {
while (true) {
noteManager.viewNotesInArchive(archiveIndex)
println("Хотите добавить новую заметку в архив? (да/нет)")
when (readLine()?.toLowerCase()) {
"да" -> addNoteToArchive(archiveIndex)
"нет" -> return
else -> println("Некорректный ввод. Пожалуйста, введите 'да' или 'нет'.")
}
}
}
private fun addNoteToArchive(archiveIndex: Int) {
while (true) {
print("Введите заголовок заметки: ")
val title = readLine() ?: ""
print("Введите содержимое заметки: ")
val content = readLine() ?: ""
try {
val note = Note(title, content)
noteManager.archives[archiveIndex].addNote(note)
println("Заметка добавлена! Нажмите любую клавишу для продолжения...")
readLine()
return
} catch (e: IllegalArgumentException) {
println(e.message)
}
}
}
}