瀏覽代碼

Added edit book model

Vadik Sirekanyan 7 年之前
父節點
當前提交
8fe75857dd

+ 5 - 4
app/src/main/java/com/sirekanyan/knigopis/feature/MainActivity.kt

@@ -12,8 +12,9 @@ import com.sirekanyan.knigopis.common.functions.createLoginIntent
 import com.sirekanyan.knigopis.common.functions.extra
 import com.sirekanyan.knigopis.common.functions.logError
 import com.sirekanyan.knigopis.dependency.providePresenter
-import com.sirekanyan.knigopis.feature.book.createEditBookIntent
-import com.sirekanyan.knigopis.feature.book.createNewBookIntent
+import com.sirekanyan.knigopis.feature.book.EMPTY_BOOK
+import com.sirekanyan.knigopis.feature.book.createBookIntent
+import com.sirekanyan.knigopis.feature.book.createEditBook
 import com.sirekanyan.knigopis.feature.books.BooksPresenter
 import com.sirekanyan.knigopis.feature.login.LoginPresenter
 import com.sirekanyan.knigopis.feature.notes.NotesPresenter
@@ -122,11 +123,11 @@ class MainActivity : BaseActivity(),
     }
 
     override fun openNewBookScreen() {
-        startActivityForResult(createNewBookIntent(), BOOK_REQUEST_CODE)
+        startActivityForResult(createBookIntent(EMPTY_BOOK), BOOK_REQUEST_CODE)
     }
 
     override fun openBookScreen(book: BookDataModel) {
-        startActivityForResult(createEditBookIntent(book), BOOK_REQUEST_CODE)
+        startActivityForResult(createBookIntent(createEditBook(book)), BOOK_REQUEST_CODE)
     }
 
     override fun openUserScreen(user: UserModel) {

+ 3 - 0
app/src/main/java/com/sirekanyan/knigopis/feature/book/BookAction.kt

@@ -0,0 +1,3 @@
+package com.sirekanyan.knigopis.feature.book
+
+enum class BookAction { NEW, EDIT, COPY }

+ 41 - 0
app/src/main/java/com/sirekanyan/knigopis/feature/book/EditBookModel.kt

@@ -0,0 +1,41 @@
+package com.sirekanyan.knigopis.feature.book
+
+import android.os.Parcelable
+import com.sirekanyan.knigopis.MAX_BOOK_PRIORITY
+import com.sirekanyan.knigopis.model.BookDataModel
+import com.sirekanyan.knigopis.model.DateModel
+import com.sirekanyan.knigopis.model.EMPTY_DATE
+import kotlinx.android.parcel.Parcelize
+
+val EMPTY_BOOK = EditBookModel(BookAction.NEW)
+
+fun createTodoBook(title: String, author: String, notes: String) =
+    EditBookModel(BookAction.COPY, title = title, author = author, notes = notes)
+
+fun createDoneBook(title: String, author: String) =
+    EditBookModel(BookAction.COPY, title = title, author = author, progress = MAX_BOOK_PRIORITY)
+
+fun createEditBook(book: BookDataModel) =
+    EditBookModel(
+        BookAction.EDIT,
+        book.id,
+        book.title,
+        book.author,
+        if (book.isFinished) MAX_BOOK_PRIORITY else book.priority,
+        if (book.isFinished) book.date else EMPTY_DATE,
+        book.notes
+    )
+
+@Parcelize
+class EditBookModel(
+    val action: BookAction,
+    val id: String? = null,
+    val title: String = "",
+    val author: String = "",
+    val progress: Int = 0,
+    val date: DateModel = EMPTY_DATE,
+    val notes: String = ""
+) : Parcelable {
+    val isFinished get() = id != null && progress == MAX_BOOK_PRIORITY
+    val isPlanned get() = id != null && progress != MAX_BOOK_PRIORITY
+}

+ 8 - 4
app/src/main/java/com/sirekanyan/knigopis/feature/user/UserActivity.kt

@@ -17,8 +17,9 @@ import com.sirekanyan.knigopis.common.functions.extra
 import com.sirekanyan.knigopis.common.functions.logError
 import com.sirekanyan.knigopis.dependency.provideDialogs
 import com.sirekanyan.knigopis.dependency.provideInteractor
-import com.sirekanyan.knigopis.feature.book.createDoneBookIntent
-import com.sirekanyan.knigopis.feature.book.createTodoBookIntent
+import com.sirekanyan.knigopis.feature.book.createBookIntent
+import com.sirekanyan.knigopis.feature.book.createDoneBook
+import com.sirekanyan.knigopis.feature.book.createTodoBook
 import com.sirekanyan.knigopis.model.BookDataModel
 import kotlinx.android.synthetic.main.user_activity.*
 
@@ -139,10 +140,13 @@ class UserActivity : BaseActivity() {
         dialogs.showDialog(
             resources.getFullTitleString(book.title, book.author),
             createDialogItem(R.string.user_button_todo, R.drawable.ic_playlist_add) {
-                startActivity(createTodoBookIntent(book.title, book.author, userName))
+                val notes = getString(R.string.book_notes_copied, userName)
+                val todoBook = createTodoBook(book.title, book.author, notes)
+                startActivity(createBookIntent(todoBook))
             },
             createDialogItem(R.string.user_button_done, R.drawable.ic_playlist_add_check) {
-                startActivity(createDoneBookIntent(book.title, book.author))
+                val doneBook = createDoneBook(book.title, book.author)
+                startActivity(createBookIntent(doneBook))
             }
         )
     }

+ 1 - 1
app/src/main/java/com/sirekanyan/knigopis/model/BookModel.kt

@@ -30,7 +30,7 @@ class BookDataModel(
     val author: String,
     val isFinished: Boolean,
     val priority: Int,
-    val date: DateModel?,
+    val date: DateModel,
     val notes: String
 ) : BookModel(id, false, group) {
     val image = createBookImageUrl(title)

+ 13 - 1
app/src/main/java/com/sirekanyan/knigopis/model/DateModel.kt

@@ -1,3 +1,15 @@
 package com.sirekanyan.knigopis.model
 
-class DateModel(val year: String, val month: String, val day: String)
+import android.os.Parcelable
+import kotlinx.android.parcel.Parcelize
+
+val EMPTY_DATE = DateModel("", "", "")
+
+@Parcelize
+data class DateModel(
+    val year: String,
+    val month: String,
+    val day: String
+) : Parcelable {
+    fun isEmpty() = this == EMPTY_DATE
+}

+ 1 - 1
app/src/main/java/com/sirekanyan/knigopis/model/mappers.kt

@@ -18,7 +18,7 @@ fun PlannedBook.toBookModel(group: BookGroupModel) =
         author,
         false,
         priority,
-        null,
+        EMPTY_DATE,
         notes
     )