From c9ca0173325bf846d84ac0776ef00182dd3e790b Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 5 Dec 2022 18:13:58 +0100 Subject: Omogucena pretraga sa bilo kakvim stringom na clientu. --- .../java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index 714f994..0254e0f 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -69,7 +69,11 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { gridManagerVar=GridLayoutManager(activity,2) } fun searchText(){ - Log.d("MAIN","TODO") + if(searchBar.text==null || searchBar.text.toString().trim()=="") + return + + searchParams=SearchParams(searchBar.text.toString(),1,1) + requestToBack(searchParams!!) } fun onTextEnter(){ var api=RetrofitHelper.getInstance() -- cgit v1.2.3 From dfd867d9006520cfcd40f5bd08e7980a202ec530 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 5 Dec 2022 19:05:05 +0100 Subject: Omogucena pretraga lokacija i objava na pocetnoj strani. Prilikom potvrde pretrage omoguceno usmeravanje na stranicu sve objave sa datim parametrima pretrage i vrsenje pretrage. Dodat onResume. --- .../Activities/NavigationActivity.kt | 12 ++- .../brzodolokacije/Fragments/FragmentHomePage.kt | 103 +++++++++++++++++++-- .../Fragments/FragmentHomePageMainScroll.kt | 3 - .../brzodolokacije/Fragments/FragmentShowPosts.kt | 28 +++++- .../app/src/main/res/layout/fragment_home_page.xml | 3 +- 5 files changed, 132 insertions(+), 17 deletions(-) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt index 180b59d..23cbca6 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt @@ -18,19 +18,20 @@ class NavigationActivity : AppCompatActivity() { //lateinit var openAddPost:Button //lateinit var capturePost:Button - + public lateinit var bottomNav:BottomNavigationView + public lateinit var searchQuery:String + public lateinit var searchId:String override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_navigation) - Toast.makeText( - applicationContext, "Open ", Toast.LENGTH_LONG - ).show(); + searchQuery="" + searchId="" val fragmentHomePage=FragmentHomePage() val fragmentShowPosts=FragmentShowPosts() val browseFragment=FragmentBrowse() val addPostFragment= FragmentAddNew() val profileFragment=FragmentProfile() - val bottomNav=findViewById(R.id.bottomNavigationView) as BottomNavigationView + bottomNav=findViewById(R.id.bottomNavigationView) as BottomNavigationView setCurrentFragment(fragmentHomePage) bottomNav.setOnNavigationItemSelectedListener { when(it.itemId){ @@ -46,6 +47,7 @@ class NavigationActivity : AppCompatActivity() { } + } private fun setCurrentFragment(fragment: Fragment)= supportFragmentManager.beginTransaction().apply { diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePage.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePage.kt index cb48d3e..a26aaba 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePage.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePage.kt @@ -2,27 +2,31 @@ package com.example.brzodolokacije.Fragments import android.content.Intent import android.os.Bundle +import android.util.Log +import android.view.KeyEvent import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Button -import android.widget.ImageButton -import android.widget.ImageView -import android.widget.ScrollView -import android.widget.Toast +import android.widget.* import androidx.core.view.isVisible +import androidx.core.widget.addTextChangedListener import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentTransaction import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Activities.ChatActivity +import com.example.brzodolokacije.Activities.NavigationActivity import com.example.brzodolokacije.Adapters.ShowPostsHomePageAdapter import com.example.brzodolokacije.Interfaces.IBackendApi +import com.example.brzodolokacije.Models.Location import com.example.brzodolokacije.Models.LocationType import com.example.brzodolokacije.Models.PostPreview +import com.example.brzodolokacije.Models.SearchParams import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.RetrofitHelper.baseUrl import com.example.brzodolokacije.Services.SharedPreferencesHelper +import com.google.android.material.button.MaterialButton import retrofit2.Call import retrofit2.Callback import retrofit2.Response @@ -34,6 +38,9 @@ class FragmentHomePage : Fragment() { private lateinit var btnChat:ImageView private lateinit var btnBack:ImageView + private lateinit var searchBar:AutoCompleteTextView + private lateinit var searchButton: MaterialButton + var responseLocations:MutableList?=null /* override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -47,8 +54,10 @@ class FragmentHomePage : Fragment() { var view:View= inflater.inflate(R.layout.fragment_home_page, container, false) btnBack=view.findViewById(R.id.btnFragmentHomePageBack) btnChat=view.findViewById(R.id.ivFragmentHomePageChat) + searchBar=view.findViewById(R.id.etFragmentHomePageSearch) + searchButton=view.findViewById(R.id.mbFragmentHomePageSearchButton) setBtnBackInvisible() - + setUpSpinner() var fm: FragmentTransaction =childFragmentManager.beginTransaction() fm.replace(R.id.flFragmentHomePageMainContent, FragmentHomePageMainScroll()) fm.commit() @@ -62,9 +71,36 @@ class FragmentHomePage : Fragment() { val intent: Intent = Intent(activity, ChatActivity::class.java) requireActivity().startActivity(intent) } + searchButton.setOnClickListener{ + searchText() + } + searchBar.addTextChangedListener{ + onTextEnter() + } + searchBar.setOnKeyListener(View.OnKeyListener { v1, keyCode, event -> // If the event is a key-down event on the "enter" button + if (event.action === KeyEvent.ACTION_DOWN && + keyCode == KeyEvent.KEYCODE_ENTER + ) { + // Perform action on key press + searchText() + return@OnKeyListener true + } + false + }) return view } + + + fun searchText(){ + if(searchBar.text==null || searchBar.text.toString().trim()=="") + return + + var act=requireActivity() as NavigationActivity + act.searchQuery=searchBar.text.toString() + act.searchId="" + act.bottomNav.selectedItemId=R.id.navAllPosts + } fun changeScrollVIewToLocationView(){ var fm: FragmentTransaction =childFragmentManager.beginTransaction() fm.replace(R.id.flFragmentHomePageMainContent, FragmentShowPostsByLocation()) @@ -81,4 +117,59 @@ class FragmentHomePage : Fragment() { fun setBtnBackVisible(){ btnBack.isVisible=true } + fun onTextEnter(){ + var api= RetrofitHelper.getInstance() + var jwtString= SharedPreferencesHelper.getValue("jwt",requireActivity()) + var text=searchBar.text + Log.d("test",text.toString()) + if(text==null ||text.toString().trim()=="") + return + var data=api.searchLocationsQuery("Bearer "+jwtString,text.toString()) + data.enqueue(object : retrofit2.Callback> { + override fun onResponse(call: Call?>, response: Response>) { + if(response.isSuccessful){ + var existingLocation=responseLocations + responseLocations=response.body()!! + if(existingLocation!=null && existingLocation.size>0) + for(loc in existingLocation!!){ + spinnerAdapter!!.remove(loc.name) + } + for(loc in responseLocations!!){ + spinnerAdapter!!.add(loc.name) + } + spinnerAdapter!!.notifyDataSetChanged() + } + } + + override fun onFailure(call: Call>, t: Throwable) { + + } + }) + + + } + var arraySpinner :MutableList?=null + var spinnerAdapter: ArrayAdapter?=null + + fun setUpSpinner() { + arraySpinner=mutableListOf() + spinnerAdapter= ArrayAdapter( + requireContext(), + android.R.layout.simple_list_item_1, arraySpinner!!) + searchBar.threshold=1 + searchBar.setAdapter(spinnerAdapter) + searchBar.setOnItemClickListener(AdapterView.OnItemClickListener { parent, view, position, id -> + val selected = parent.getItemAtPosition(position) as String + var selectedLocation = responseLocations!!.find { location -> location.name == selected } + + var act=requireActivity() as NavigationActivity + act.searchQuery=selectedLocation!!.name + act.searchId=selectedLocation!!._id + act.bottomNav.selectedItemId=R.id.navAllPosts + + + }) + + + } } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePageMainScroll.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePageMainScroll.kt index 46904d4..82c78a1 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePageMainScroll.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePageMainScroll.kt @@ -239,9 +239,6 @@ private lateinit var change:Button // Toast.makeText( // activity, "get all mv ", Toast.LENGTH_LONG // ).show(); - Toast.makeText( - activity," get popular all", Toast.LENGTH_LONG - ).show(); val api = RetrofitHelper.getInstance() val token= SharedPreferencesHelper.getValue("jwt", requireActivity()) val data=api.get10MostViewed("Bearer "+token) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index 0254e0f..8620dc4 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -19,6 +19,7 @@ import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.example.brzodolokacije.Activities.ActivityAddPost import com.example.brzodolokacije.Activities.ChatActivity +import com.example.brzodolokacije.Activities.NavigationActivity import com.example.brzodolokacije.Adapters.ShowPostsAdapter import com.example.brzodolokacije.Models.Location import com.example.brzodolokacije.Models.SearchParams @@ -51,7 +52,7 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { private var swipeRefreshLayout:SwipeRefreshLayout?=null private lateinit var searchButton: MaterialButton private lateinit var searchPostsViewModel:SearchPostsViewModel - private var searchParams:SearchParams?= SearchParams("6385b79d7e1a2c93575e1ef1",1,1) + private var searchParams:SearchParams?= SearchParams("Kragujevac",1,1) private lateinit var btnFilter:ImageButton private lateinit var btnSort:ImageButton private lateinit var searchBar: AutoCompleteTextView @@ -62,7 +63,6 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { super.onCreate(savedInstanceState) setUpViewModel() binding=FragmentShowPostsBinding.inflate(layoutInflater) - //instantiate adapter and linearLayout adapterVar=ShowPostsAdapter(requireActivity()) linearManagerVar= LinearLayoutManager(activity) @@ -215,12 +215,36 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { } false }) + refreshSearch() + return rootView } override fun onRefresh() { requestToBack(searchParams!!) + refreshSearch() + } + override fun onResume() { + super.onResume() + refreshSearch() + + } + private fun refreshSearch(){ + var act=requireActivity() as NavigationActivity + Log.d("TEST","USAO") + if(act.searchId!=null && act.searchId.trim()!="") + { + searchBar.setText(act.searchQuery,TextView.BufferType.EDITABLE) + searchParams= SearchParams(act.searchId,1,1) + requestToBack(searchParams!!) + }else + if(act.searchQuery!=null && act.searchQuery.trim()!="") + { + searchBar.setText(act.searchQuery,TextView.BufferType.EDITABLE) + searchParams= SearchParams(act.searchQuery,1,1) + requestToBack(searchParams!!) + } } diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home_page.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home_page.xml index f39acf2..12c37e8 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home_page.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home_page.xml @@ -82,7 +82,7 @@ app:layout_constraintTop_toBottomOf="@+id/brzodolokacije"> - Date: Mon, 5 Dec 2022 19:12:02 +0100 Subject: Dodata promena parametara pretrage u FragmentShowPosts. --- .../java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index 8620dc4..76fa4e0 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -71,7 +71,9 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { fun searchText(){ if(searchBar.text==null || searchBar.text.toString().trim()=="") return - + var act=requireActivity() as NavigationActivity + act.searchQuery=searchBar.text.toString() + act.searchId="" searchParams=SearchParams(searchBar.text.toString(),1,1) requestToBack(searchParams!!) } @@ -119,6 +121,9 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { searchBar.setOnItemClickListener(AdapterView.OnItemClickListener { parent, view, position, id -> val selected = parent.getItemAtPosition(position) as String selectedLocation = responseLocations!!.find { location -> location.name == selected } + var act=requireActivity() as NavigationActivity + act.searchQuery=selectedLocation!!.name + act.searchId=selectedLocation!!._id searchParams=SearchParams(selectedLocation!!._id,1,1)//to do sort type requestToBack(searchParams!!) -- cgit v1.2.3