Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,109 changes: 2,109 additions & 0 deletions .idea/caches/deviceStreaming.xml

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions .idea/markdown.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions src/main/kotlin/Archive.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
data class Archive(
val name: String,
val notes: MutableList<Note> = mutableListOf()
)
50 changes: 50 additions & 0 deletions src/main/kotlin/ArchiveMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
class ArchiveMenu(
private val archives: MutableList<Archive>
) {

fun show() {
while (true) {
val items = mutableListOf("Создать архив")

archives.forEach { archive ->
items.add(archive.name)
}

items.add("Выход")

val menu = Menu(
title = "Список архивов:",
items = items
)

when (val choice = menu.show()) {
0 -> createArchive()

items.lastIndex -> {
println("Программа завершена.")
return
}

else -> {
val archive = archives[choice - 1]
NoteMenu(archive).show()
}
}
}
}

private fun createArchive() {
println()
print("Введите название архива: ")

val name = readln().trim()

if (name.isEmpty()) {
println("Название архива не может быть пустым.")
return
}

archives.add(Archive(name))
println("Архив «$name» создан.")
}
}
6 changes: 4 additions & 2 deletions src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
fun main(args: Array<String>) {
println("Hello World!")
fun main() {
val archives = mutableListOf<Archive>()

ArchiveMenu(archives).show()
}
72 changes: 72 additions & 0 deletions src/main/kotlin/NoteMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
class NoteMenu(
private val archive: Archive
) {

fun show() {
while (true) {
val items = mutableListOf("Создать заметку")

archive.notes.forEach { note ->
items.add(note.name)
}

items.add("Назад")

val menu = Menu(
title = "Заметки архива «${archive.name}»:",
items = items
)

when (val choice = menu.show()) {
0 -> createNote()

items.lastIndex -> return

else -> {
val note = archive.notes[choice - 1]
showNote(note)
}
}
}
}

private fun createNote() {
println()
print("Введите название заметки: ")

val name = readln().trim()

if (name.isEmpty()) {
println("Название заметки не может быть пустым.")
return
}

print("Введите текст заметки: ")

val content = readln().trim()

if (content.isEmpty()) {
println("Текст заметки не может быть пустым.")
return
}

archive.notes.add(
Note(
name = name,
content = content
)
)

println("Заметка «$name» создана.")
}

private fun showNote(note: Note) {
println()
println("Заметка: ${note.name}")
println("--------------------")
println(note.content)
println("--------------------")
println("Нажмите Enter, чтобы вернуться назад.")
readln()
}
}
33 changes: 33 additions & 0 deletions src/main/kotlin/menu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
class Menu(
private val title: String,
private val items: MutableList<String>
) {

fun show(): Int {
while (true) {
println()
println(title)

items.forEachIndexed { index, item ->
println("$index. $item")
}

print("Выберите пункт: ")

val input = readln()
val choice = input.toIntOrNull()

if (choice == null) {
println("Ошибка: введите номер пункта цифрой.")
continue
}

if (choice !in items.indices) {
println("Ошибка: пункта с номером $choice нет.")
continue
}

return choice
}
}
}
4 changes: 4 additions & 0 deletions src/main/kotlin/note.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
data class Note(
val name: String,
val content: String
)