Przeglądaj źródła

chore: models, interfaces and some code

beautusg 7 lat temu
rodzic
commit
bb844822f8

+ 23 - 2
app/src/main/java/com/sduduzog/slimlauncher/adapters/NotesAdapter.kt

@@ -7,15 +7,25 @@ import android.widget.TextView
 import androidx.recyclerview.widget.RecyclerView
 import com.sduduzog.slimlauncher.R
 import com.sduduzog.slimlauncher.data.model.Note
+import com.sduduzog.slimlauncher.utils.OnItemActionListener
+import com.sduduzog.slimlauncher.utils.OnShitDoneToNotesListener
 
-class NotesAdapter : RecyclerView.Adapter<NotesAdapter.ViewHolder>() {
+class NotesAdapter(private val listener: OnShitDoneToNotesListener) : RecyclerView.Adapter<NotesAdapter.ViewHolder>() , OnItemActionListener{
 
     private var notes: List<Note> = listOf()
 
     override fun getItemCount(): Int = notes.size
 
     override fun onBindViewHolder(holder: ViewHolder, position: Int) {
-        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+        val note = notes[position]
+        if (note.title.isNullOrEmpty()){
+            holder.itemTitle.visibility = View.GONE
+        } else {
+            holder.itemTitle.text = note.title
+            holder.itemTitle.visibility = View.VISIBLE
+        }
+        holder.itemSnippet.text = note.body
+        holder.itemView.setOnClickListener { listener.onViewNote(note) }
     }
 
     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
@@ -28,6 +38,17 @@ class NotesAdapter : RecyclerView.Adapter<NotesAdapter.ViewHolder>() {
         notifyDataSetChanged()
     }
 
+    override fun onViewIdle() {
+        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+    }
+
+    override fun onViewMoved(oldPosition: Int, newPosition: Int): Boolean {
+        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+    }
+
+    override fun onViewSwiped(position: Int) {
+    }
+
     inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
         val itemTitle: TextView = itemView.findViewById(R.id.notes_fragment_list_item_title)
         val itemSnippet: TextView = itemView.findViewById(R.id.notes_fragment_list_item_snippet)

+ 7 - 4
app/src/main/java/com/sduduzog/slimlauncher/data/MainViewModel.kt

@@ -11,7 +11,7 @@ import com.sduduzog.slimlauncher.data.model.Note
 class MainViewModel(application: Application) : AndroidViewModel(application) {
 
     private val _appRepository = AppRepository(application)
-    private val _noteRepository  = NoteRepository(application)
+    private val _noteRepository = NoteRepository(application)
 
     private var _apps: LiveData<List<HomeApp>>
     private var _notes: LiveData<List<Note>>
@@ -26,16 +26,19 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
 
     val installedApps = MutableLiveData<List<App>>()
 
-    fun add(app: App){
+    val notes: LiveData<List<Note>>
+        get() = _notes
+
+    fun add(app: App) {
         val index = _apps.value!!.size
         _appRepository.add(HomeApp.from(app, index))
     }
 
-    fun update(vararg args: HomeApp){
+    fun update(vararg args: HomeApp) {
         _appRepository.update(*args)
     }
 
-    fun remove(app: HomeApp){
+    fun remove(app: HomeApp) {
         _appRepository.remove(app)
     }
 }

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/data/model/HomeApp.kt

@@ -15,7 +15,7 @@ data class HomeApp(
         var activityName: String,
         @field:ColumnInfo(name = "sorting_index")
         var sortingIndex: Int
-) {
+){
     companion object {
         fun from(app: App, sortingIndex: Int = 0): HomeApp {
             return HomeApp(appName = app.appName, activityName = app.activityName, packageName = app.packageName, sortingIndex = sortingIndex)

+ 47 - 2
app/src/main/java/com/sduduzog/slimlauncher/ui/main/NotesFragment.kt

@@ -4,14 +4,23 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.lifecycle.Observer
 import androidx.lifecycle.ViewModelProviders
+import androidx.navigation.Navigation
+import androidx.recyclerview.widget.ItemTouchHelper
+import androidx.recyclerview.widget.RecyclerView
 import com.sduduzog.slimlauncher.R
 import com.sduduzog.slimlauncher.adapters.NotesAdapter
 import com.sduduzog.slimlauncher.data.MainViewModel
+import com.sduduzog.slimlauncher.data.model.HomeApp
+import com.sduduzog.slimlauncher.data.model.Note
 import com.sduduzog.slimlauncher.ui.BaseFragment
+import com.sduduzog.slimlauncher.utils.OnItemActionListener
+import com.sduduzog.slimlauncher.utils.OnLaunchAppListener
+import com.sduduzog.slimlauncher.utils.OnShitDoneToNotesListener
 import kotlinx.android.synthetic.main.notes_fragment.*
 
-class NotesFragment : BaseFragment(){
+class NotesFragment : BaseFragment(), OnShitDoneToNotesListener {
 
     override fun getFragmentView(): View = notes_fragment
 
@@ -24,10 +33,46 @@ class NotesFragment : BaseFragment(){
 
     override fun onActivityCreated(savedInstanceState: Bundle?) {
         super.onActivityCreated(savedInstanceState)
-        val adapter = NotesAdapter()
+        val adapter = NotesAdapter(this)
         activity?.let {
             viewModel = ViewModelProviders.of(it).get(MainViewModel::class.java)
         } ?: throw Error("Activity null, something here is fucked up")
+
+        viewModel.notes.observe(this, Observer {
+            it?.let { list ->
+                adapter.setItems(list)
+            }
+        })
+
         notes_fragment_list.adapter = adapter
+
+        val listener: OnItemActionListener = adapter
+
+        val simpleItemTouchCallback = object : ItemTouchHelper.Callback() {
+
+            override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
+                val swipeFlags = ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT
+                return makeMovementFlags(0, swipeFlags)
+            }
+
+            override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
+                // Do nothing
+                return true
+            }
+
+            override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
+                listener.onViewSwiped(viewHolder.adapterPosition)
+            }
+        }
+
+        val itemTouchHelper = ItemTouchHelper(simpleItemTouchCallback)
+        itemTouchHelper.attachToRecyclerView(notes_fragment_list)
+    }
+
+
+    override fun onViewNote(note: Note) {
+        val bundle = Bundle()
+        bundle.putSerializable("note", note)
+        Navigation.findNavController(notes_fragment).navigate(R.id.action_notesFragment_to_noteFragment, bundle)
     }
 }

+ 0 - 7
app/src/main/java/com/sduduzog/slimlauncher/ui/main/OnItemActionListener.kt

@@ -1,7 +0,0 @@
-package com.sduduzog.slimlauncher.ui.main
-
-interface OnItemActionListener {
-    fun onViewMoved(oldPosition: Int, newPosition: Int): Boolean
-    fun onViewSwiped(position: Int)
-    fun onViewIdle()
-}

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/ui/main/notes/NotesListAdapter.kt

@@ -13,7 +13,7 @@ import androidx.recyclerview.widget.RecyclerView
 import com.google.android.material.snackbar.Snackbar
 import com.sduduzog.slimlauncher.R
 import com.sduduzog.slimlauncher.data.model.Note
-import com.sduduzog.slimlauncher.ui.main.OnItemActionListener
+import com.sduduzog.slimlauncher.utils.OnItemActionListener
 import java.text.SimpleDateFormat
 import java.util.*
 

+ 1 - 1
app/src/main/java/com/sduduzog/slimlauncher/ui/main/notes/NotesListFragment.kt

@@ -11,7 +11,7 @@ import androidx.navigation.Navigation
 import androidx.recyclerview.widget.ItemTouchHelper
 import androidx.recyclerview.widget.RecyclerView
 import com.sduduzog.slimlauncher.R
-import com.sduduzog.slimlauncher.ui.main.OnItemActionListener
+import com.sduduzog.slimlauncher.utils.OnItemActionListener
 import kotlinx.android.synthetic.main.notes_list_fragment.*
 
 

+ 7 - 0
app/src/main/java/com/sduduzog/slimlauncher/utils/OnShitDoneToNotesListener.kt

@@ -0,0 +1,7 @@
+package com.sduduzog.slimlauncher.utils
+
+import com.sduduzog.slimlauncher.data.model.Note
+
+interface OnShitDoneToNotesListener{
+    fun onViewNote(note: Note)
+}