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
8 changes: 5 additions & 3 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!")
}
import screens.ArchiveListScreen

fun main() {
ArchiveListScreen().show()
}
39 changes: 39 additions & 0 deletions src/main/kotlin/menu/Menu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package menu

import java.util.Scanner

class Menu(
private val title: String,
private val items: List<MenuItem>
) {
private val scanner = Scanner(System.`in`)

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

for (i in items.indices) {
println("$i. ${items[i].title}")
}

print("Введите номер: ")
val input = scanner.nextLine()

if (input.toIntOrNull() == null) {
println("Ошибка: нужно ввести цифру")
continue
}

val choice = input.toInt()

if (choice < 0 || choice >= items.size) {
println("Ошибка: такого пункта нет")
continue
}

items[choice].action()
break
}
}
}
6 changes: 6 additions & 0 deletions src/main/kotlin/menu/MenuItem.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package menu

class MenuItem(
val title: String,
val action: () -> Unit
)
6 changes: 6 additions & 0 deletions src/main/kotlin/model/Archive.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package model

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

data class Note(
val title: String,
val text: String
)
32 changes: 32 additions & 0 deletions src/main/kotlin/screens/ArchiveListScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package screens

import menu.Menu
import menu.MenuItem
import storage.Storage

class ArchiveListScreen {

fun show() {
var isExit = false

while (!isExit) {
val items = mutableListOf<MenuItem>()

items.add(MenuItem("Создать архив") {
CreateArchiveScreen().show()
})

for (archive in Storage.archives) {
items.add(MenuItem(archive.name) {
NoteListScreen(archive).show()
})
}

items.add(MenuItem("Выход") {
isExit = true
})

Menu("Список архивов:", items).show()
}
}
}
22 changes: 22 additions & 0 deletions src/main/kotlin/screens/CreateArchiveScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package screens

import model.Archive
import storage.Storage
import java.util.Scanner

class CreateArchiveScreen {
private val scanner = Scanner(System.`in`)

fun show() {
print("Введите имя архива: ")
val name = scanner.nextLine()

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

Storage.archives.add(Archive(name))
println("Архив создан")
}
}
25 changes: 25 additions & 0 deletions src/main/kotlin/screens/CreateNoteScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package screens

import model.Archive
import model.Note
import java.util.Scanner

class CreateNoteScreen(private val archive: Archive) {
private val scanner = Scanner(System.`in`)

fun show() {
print("Введите заголовок: ")
val title = scanner.nextLine()

print("Введите текст заметки: ")
val text = scanner.nextLine()

if (title.isBlank() || text.isBlank()) {
println("Заголовок и текст не могут быть пустыми")
return
}

archive.notes.add(Note(title, text))
println("Заметка создана")
}
}
32 changes: 32 additions & 0 deletions src/main/kotlin/screens/NoteListScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package screens

import menu.Menu
import menu.MenuItem
import model.Archive

class NoteListScreen(private val archive: Archive) {

fun show() {
var isBack = false

while (!isBack) {
val items = mutableListOf<MenuItem>()

items.add(MenuItem("Создать заметку") {
CreateNoteScreen(archive).show()
})

for (note in archive.notes) {
items.add(MenuItem(note.title) {
NoteViewScreen(note).show()
})
}

items.add(MenuItem("Назад") {
isBack = true
})

Menu("Архив: ${archive.name}", items).show()
}
}
}
15 changes: 15 additions & 0 deletions src/main/kotlin/screens/NoteViewScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package screens

import model.Note

class NoteViewScreen(private val note: Note) {

fun show() {
println()
println(note.title)
println(note.text)
println()
println("Нажмите Enter для возврата")
readLine()
}
}
7 changes: 7 additions & 0 deletions src/main/kotlin/storage/Storage.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package storage

import model.Archive

object Storage {
val archives = mutableListOf<Archive>()
}