@@ -7,19 +7,24 @@ import android.support.v4.app.Fragment
77import android.support.v4.widget.SwipeRefreshLayout
88import android.support.v7.widget.LinearLayoutManager
99import android.support.v7.widget.SnapHelper
10+ import android.view.KeyEvent
1011import android.view.LayoutInflater
1112import android.view.View
1213import android.view.ViewGroup
14+ import android.widget.Toast
1315import kotlinx.android.synthetic.main.fragment_group_wise_skill_listing.*
1416import org.fossasia.susi.ai.R
1517import org.fossasia.susi.ai.dataclasses.GroupWiseSkills
1618import org.fossasia.susi.ai.helper.SimpleDividerItemDecoration
1719import org.fossasia.susi.ai.helper.StartSnapHelper
20+ import org.fossasia.susi.ai.rest.responses.susi.SkillData
1821import org.fossasia.susi.ai.skills.SkillFragmentCallback
1922import org.fossasia.susi.ai.skills.groupwiseskills.adapters.recycleradapters.SkillsListAdapter
2023import org.fossasia.susi.ai.skills.groupwiseskills.contract.IGroupWiseSkillsPresenter
2124import org.fossasia.susi.ai.skills.groupwiseskills.contract.IGroupWiseSkillsView
25+ import org.fossasia.susi.ai.skills.skillSearch.SearchSkillFragment
2226import timber.log.Timber
27+ import kotlin.collections.ArrayList
2328
2429/* *
2530 *
@@ -31,6 +36,7 @@ class GroupWiseSkillsFragment : Fragment(), IGroupWiseSkillsView, SwipeRefreshLa
3136 private var skills = GroupWiseSkills (" " , ArrayList ())
3237 private lateinit var skillsAdapter: SkillsListAdapter
3338 private lateinit var skillCallback: SkillFragmentCallback
39+ private var isSearching: Boolean = false
3440
3541 companion object {
3642 private const val SKILL_GROUP = " group"
@@ -59,6 +65,12 @@ class GroupWiseSkillsFragment : Fragment(), IGroupWiseSkillsView, SwipeRefreshLa
5965 swipeRefreshLayout.setOnRefreshListener(this )
6066 setUPAdapter()
6167 groupWiseSkillsPresenter.getSkills(swipeRefreshLayout.isRefreshing, skills.group)
68+ isSearching = true
69+ skillWiseSearchEdit.visibility = View .GONE
70+ searchSkillGroupWise.visibility = View .VISIBLE
71+ searchSkillGroupWise.setOnClickListener {
72+ handleSearchAction()
73+ }
6274 super .onViewCreated(view, savedInstanceState)
6375 }
6476
@@ -77,6 +89,60 @@ class GroupWiseSkillsFragment : Fragment(), IGroupWiseSkillsView, SwipeRefreshLa
7789 progressSkillWait.visibility = if (boolean) View .VISIBLE else View .GONE
7890 }
7991
92+ fun handleSearchAction () {
93+ if (isSearching == false || skillWiseSearchEdit.getVisibility() == View .VISIBLE ) {
94+ skillWiseSearchEdit.setVisibility(View .GONE )
95+ } else {
96+ skillWiseSearchEdit.setVisibility(View .VISIBLE )
97+ handleSearch()
98+ }
99+ }
100+
101+ fun handleSearch () {
102+ skillWiseSearchEdit?.setOnKeyListener { v, keyCode, event ->
103+ if (keyCode == KeyEvent .KEYCODE_ENTER && event.action == KeyEvent .ACTION_UP && skillWiseSearchEdit?.text.toString().isNotEmpty()) {
104+ performSearch(skillWiseSearchEdit?.text.toString())
105+ }
106+ true
107+ }
108+ skillWiseSearchEdit?.requestFocus()
109+ isSearching = true
110+ }
111+
112+ fun performSearch (query : String ): Boolean {
113+
114+ var searchedSkillsList: ArrayList <SkillData > = arrayListOf ()
115+
116+ if (skills.skillsList.isEmpty()) {
117+ Toast .makeText(context, R .string.skill_empty, Toast .LENGTH_SHORT ).show()
118+ return true
119+ }
120+
121+ for (skill in skills.skillsList) {
122+ if (skill.skillName != " " && skill.skillName != null ) {
123+ if (skill.skillName.toLowerCase().contains(query.toLowerCase())) {
124+ searchedSkillsList.add(skill)
125+ }
126+ }
127+ }
128+ Timber .d(searchedSkillsList.toString())
129+ if (searchedSkillsList.isEmpty()) {
130+ Toast .makeText(context, R .string.skill_not_found, Toast .LENGTH_SHORT ).show()
131+ return false
132+ }
133+
134+ loadSearchSkillsFragment(searchedSkillsList, query)
135+ return true
136+ }
137+
138+ private fun loadSearchSkillsFragment (searchedSkills : ArrayList <SkillData >, searchQuery : String ) {
139+ val skillSearchFragment = SearchSkillFragment .newInstance(searchedSkills, searchQuery)
140+ fragmentManager?.beginTransaction()
141+ ?.add(R .id.fragment_container, skillSearchFragment)
142+ ?.addToBackStack(SearchSkillFragment ().toString())
143+ ?.commit()
144+ }
145+
80146 override fun showEmptySkillsListMessage () {
81147 if (activity != null ) {
82148 swipeRefreshLayout.isRefreshing = false
0 commit comments