aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/xyz/adjutor/aniki/presentation/view/fragment/SearchMangaFragment.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/xyz/adjutor/aniki/presentation/view/fragment/SearchMangaFragment.kt')
-rw-r--r--app/src/main/java/xyz/adjutor/aniki/presentation/view/fragment/SearchMangaFragment.kt102
1 files changed, 102 insertions, 0 deletions
diff --git a/app/src/main/java/xyz/adjutor/aniki/presentation/view/fragment/SearchMangaFragment.kt b/app/src/main/java/xyz/adjutor/aniki/presentation/view/fragment/SearchMangaFragment.kt
new file mode 100644
index 0000000..4ad6e89
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/presentation/view/fragment/SearchMangaFragment.kt
@@ -0,0 +1,102 @@
+package xyz.adjutor.aniki.presentation.view.fragment
+
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.inputmethod.EditorInfo
+import android.view.inputmethod.InputMethodManager
+import android.widget.Button
+import android.widget.TextView.OnEditorActionListener
+import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.findNavController
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.google.android.material.snackbar.Snackbar
+import com.google.android.material.textfield.TextInputEditText
+import xyz.adjutor.aniki.R
+import xyz.adjutor.aniki.presentation.controller.SearchMangaController
+import xyz.adjutor.aniki.presentation.model.SearchManga
+import xyz.adjutor.aniki.presentation.view.activity.MainActivity
+import xyz.adjutor.aniki.presentation.view.adapter.SearchMangaAdapter
+
+
+class SearchMangaFragment : Fragment() {
+
+ lateinit var controller: SearchMangaController
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ val view = inflater.inflate(R.layout.search_manga_page, container, false)
+
+ controller = SearchMangaController()
+ controller.onStart(this)
+
+ return view
+ }
+
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ //button to return to the home page
+ view.findViewById<Button>(R.id.button_home).setOnClickListener {
+ findNavController().navigate(R.id.action_SearchMangaPage_to_HomePage)
+ }
+
+ view.findViewById<Button>(R.id.button_query).setOnClickListener {
+ val userInput = view.findViewById<TextInputEditText>(R.id.tiet_query).text.toString()
+ hideKeyboard()
+ controller.updateList(userInput)
+ }
+
+ view.findViewById<TextInputEditText>(R.id.tiet_query)
+ .setOnEditorActionListener(OnEditorActionListener { v, actionId, event ->
+ if (actionId == EditorInfo.IME_ACTION_SEARCH) {
+ val userInput =
+ view.findViewById<TextInputEditText>(R.id.tiet_query).text.toString()
+ hideKeyboard()
+ controller.updateList(userInput)
+ return@OnEditorActionListener true
+ }
+ false
+ })
+
+ }
+
+ private fun hideKeyboard() {
+ val activity = activity as MainActivity
+
+ val view = activity.currentFocus
+ if (view != null) {
+ val imm = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ imm.hideSoftInputFromWindow(view.windowToken, 0)
+ }
+ }
+
+
+ //display the recyclerview
+ fun showList(view: View, mangaList: List<SearchManga>) {
+ val recyclerView: RecyclerView = view.findViewById(R.id.recycler_view)
+ recyclerView.setHasFixedSize(true)
+ recyclerView.layoutManager = LinearLayoutManager(view.context)
+ recyclerView.adapter = SearchMangaAdapter(mangaList)
+ (recyclerView.adapter as SearchMangaAdapter).notifyDataSetChanged()
+ }
+
+
+ //display a snack
+ fun showError() {
+ Snackbar.make(
+ requireView(),
+ "API ERROR : Verify your internet connection or your query.",
+ Snackbar.LENGTH_LONG
+ )
+ .setAction("Action", null).show()
+ }
+
+} \ No newline at end of file