From 27f706ba6491386219041a1f67fc21c71502fba9 Mon Sep 17 00:00:00 2001
From: Putu Agastya <agastya.indrayana@gmail.com>
Date: Tue, 13 Oct 2020 10:41:53 +0700
Subject: [PATCH] tugas 4 done

---
 .idea/vcs.xml                                 |  6 ++
 .../example/todo/ui/todos/AddTodoFragment.kt  | 10 +--
 .../example/todo/ui/todos/ListTodoFragment.kt | 25 +++++---
 .../com/example/todo/ui/todos/TodoActivity.kt | 61 +++++++++++--------
 app/src/main/res/layout/activity_todo.xml     | 47 ++++++++++++--
 app/src/main/res/layout/fragment_add_todo.xml |  8 ---
 6 files changed, 103 insertions(+), 54 deletions(-)
 create mode 100644 .idea/vcs.xml

diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/app/src/main/java/com/example/todo/ui/todos/AddTodoFragment.kt b/app/src/main/java/com/example/todo/ui/todos/AddTodoFragment.kt
index f1bc2e1..e91d8ab 100644
--- a/app/src/main/java/com/example/todo/ui/todos/AddTodoFragment.kt
+++ b/app/src/main/java/com/example/todo/ui/todos/AddTodoFragment.kt
@@ -34,14 +34,8 @@ class AddTodoFragment : Fragment() {
         // for this view (activity)
         val viewModel = ViewModelProvider(this, factory).get(TodosViewModel::class.java)
         button_add_todo.setOnClickListener {
-            val grocery = Todo(editText_todo_title.text.toString(), editText_todo_description.text.toString())
-            viewModel.addTodo(grocery)
-            editText_todo_title.setText("")
-            editText_todo_description.setText("")
-        }
-        button_view_todo.setOnClickListener {
-            val grocery = Todo(editText_todo_title.text.toString(), editText_todo_description.text.toString())
-            viewModel.addTodo(grocery)
+            val todo = Todo(editText_todo_title.text.toString(), editText_todo_description.text.toString())
+            viewModel.addTodo(todo)
             editText_todo_title.setText("")
             editText_todo_description.setText("")
         }
diff --git a/app/src/main/java/com/example/todo/ui/todos/ListTodoFragment.kt b/app/src/main/java/com/example/todo/ui/todos/ListTodoFragment.kt
index 7b57e6d..cc9a971 100644
--- a/app/src/main/java/com/example/todo/ui/todos/ListTodoFragment.kt
+++ b/app/src/main/java/com/example/todo/ui/todos/ListTodoFragment.kt
@@ -5,6 +5,9 @@ import androidx.fragment.app.Fragment
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.ViewModelProviders
 import com.example.todo.R
 import kotlinx.android.synthetic.main.fragment_list_todo.*
 
@@ -19,8 +22,17 @@ class ListTodoFragment : Fragment() {
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        arguments?.let {
-            todos = it.getString("data")
+        activity?.let {
+            val sharedViewModel = ViewModelProvider(it).get(TodosViewModel::class.java)
+            sharedViewModel.getTodo().observe(this, Observer { todo ->
+                if (todo.isNotEmpty()) {
+                    val stringBuilder = StringBuilder()
+                    todo.forEach { quote ->
+                        stringBuilder.append("$quote\n\n")
+                    }
+                    textView_todos.text = stringBuilder.toString()
+                }
+            })
         }
     }
 
@@ -34,16 +46,11 @@ class ListTodoFragment : Fragment() {
 
     override fun onActivityCreated(savedInstanceState: Bundle?) {
         super.onActivityCreated(savedInstanceState)
-        textView_todos.text = todos
     }
 
     companion object {
         @JvmStatic
-        fun newInstance(param1: String) =
-            ListTodoFragment().apply {
-                arguments = Bundle().apply {
-                    putString("data", param1)
-                }
-            }
+        fun newInstance() =
+            ListTodoFragment()
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/todo/ui/todos/TodoActivity.kt b/app/src/main/java/com/example/todo/ui/todos/TodoActivity.kt
index 4e59a41..c37a068 100644
--- a/app/src/main/java/com/example/todo/ui/todos/TodoActivity.kt
+++ b/app/src/main/java/com/example/todo/ui/todos/TodoActivity.kt
@@ -4,46 +4,59 @@ import androidx.appcompat.app.AppCompatActivity
 import android.os.Bundle
 import androidx.fragment.app.FragmentManager
 import androidx.fragment.app.FragmentTransaction
+import androidx.fragment.app.ListFragment
 import androidx.lifecycle.Observer
 import androidx.lifecycle.ViewModelProvider
 import com.example.todo.R
 import com.example.todo.utilities.InjectorUtils
+import kotlinx.android.synthetic.main.activity_todo.*
 
 class TodoActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_todo)
-        val fragMan: FragmentManager = supportFragmentManager
-        val fragTransaction: FragmentTransaction = fragMan.beginTransaction()
-        val addTodoFragment : AddTodoFragment = AddTodoFragment()
-        fragTransaction.add(R.id.root_layout, addTodoFragment)
-        fragTransaction.commit()
-        initializeUi()
-    }
 
-    private fun initializeUi(){
         // Get the provideTodosViewModelFactory with all of it's dependencies constructed
         val factory = InjectorUtils.provideTodosViewModelFactory()
         // Use ViewModelProviders class to create / get already created TodosViewModel
         // for this view (activity)
         val viewModel = ViewModelProvider(this, factory).get(TodosViewModel::class.java)
-        viewModel.getTodo().observe(this, Observer { todo ->
-            if (todo.isNotEmpty()) {
-                val bundle = Bundle()
-                val stringBuilder = StringBuilder()
-                todo.forEach { quote ->
-                    stringBuilder.append("$quote\n\n")
-                }
-                bundle.putString("data", stringBuilder.toString())
-                val fragMan: FragmentManager = supportFragmentManager
-                val listFragment : ListTodoFragment = ListTodoFragment()
-                listFragment.arguments = bundle
-                val transaction = fragMan.beginTransaction().replace(R.id.root_layout, listFragment).addToBackStack(null)
-                transaction.commit()
-
-            }
 
-        })
+        val listFragment = ListTodoFragment()
+        val addTodoFragment = AddTodoFragment()
+        supportFragmentManager.beginTransaction().apply {
+            replace(R.id.flFragment, addTodoFragment)
+            addToBackStack(null)
+            commit()
+        }
 
+        buttonNavList.setOnClickListener {
+            supportFragmentManager.beginTransaction().apply {
+                replace(R.id.flFragment, listFragment)
+                addToBackStack(null)
+                commit()
+            }
+        }
     }
+
+//    private fun initializeUi(){
+//        viewModel.getTodo().observe(this, Observer { todo ->
+//            if (todo.isNotEmpty()) {
+//                val bundle = Bundle()
+//                val stringBuilder = StringBuilder()
+//                todo.forEach { quote ->
+//                    stringBuilder.append("$quote\n\n")
+//                }
+//                bundle.putString("data", stringBuilder.toString())
+//                val fragMan: FragmentManager = supportFragmentManager
+//                val listFragment : ListTodoFragment = ListTodoFragment()
+//                listFragment.arguments = bundle
+//                val transaction = fragMan.beginTransaction().replace(R.id.root_layout, listFragment).addToBackStack(null)
+//                transaction.commit()
+//
+//            }
+//
+//        })
+//
+//    }
 }
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_todo.xml b/app/src/main/res/layout/activity_todo.xml
index e4acc38..91709d6 100644
--- a/app/src/main/res/layout/activity_todo.xml
+++ b/app/src/main/res/layout/activity_todo.xml
@@ -1,10 +1,47 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/root_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".ui.todos.TodoActivity"
-    android:id="@+id/root_layout">
-</FrameLayout>
\ No newline at end of file
+    tools:context=".ui.todos.TodoActivity">
+
+    <Button
+        android:id="@+id/buttonNavList"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="24dp"
+        android:text="View"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.5"
+        app:layout_constraintStart_toEndOf="@+id/buttonNavAdd" />
+
+    <Button
+        android:id="@+id/buttonNavAdd"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="24dp"
+        android:text="Add"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/buttonNavList"
+        app:layout_constraintHorizontal_bias="0.5"
+        app:layout_constraintStart_toStartOf="parent" />
+
+    <FrameLayout
+        android:id="@+id/flFragment"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="16dp"
+        android:layout_marginEnd="16dp"
+        android:layout_marginBottom="8dp"
+        app:layout_constraintBottom_toTopOf="@+id/buttonNavAdd"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.0"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="0.0" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_add_todo.xml b/app/src/main/res/layout/fragment_add_todo.xml
index 535261e..ff993a9 100644
--- a/app/src/main/res/layout/fragment_add_todo.xml
+++ b/app/src/main/res/layout/fragment_add_todo.xml
@@ -45,14 +45,6 @@
             android:layout_marginTop="24dp"
             android:text="Save" />
 
-        <Button
-            android:id="@+id/button_view_todo"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_margin="16dp"
-            android:layout_marginStart="16dp"
-            android:layout_marginTop="24dp"
-            android:text="View todos" />
     </LinearLayout>
 
 </FrameLayout>
\ No newline at end of file
-- 
GitLab