aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/xyz/adjutor/aniki/presentation/view/manga/SearchMangaPage.kt
blob: b6ae2bbaaaff18520745788ada68629e32453e96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package xyz.adjutor.aniki.presentation.view.manga

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.manga.SearchMangaController
import xyz.adjutor.aniki.presentation.model.manga.SearchManga
import xyz.adjutor.aniki.presentation.view.MainActivity


class SearchMangaPage : 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()
    }

}