diff options
Diffstat (limited to 'Client')
4 files changed, 359 insertions, 58 deletions
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 8bcbd72..cf8eb22 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.swiperefreshlayout.widget.SwipeRefreshLayout import com.example.brzodolokacije.Activities.NavigationActivity import com.example.brzodolokacije.Adapters.ShowPostsAdapter import com.example.brzodolokacije.Adapters.ShowPostsGridViewAdapter +import com.example.brzodolokacije.Models.FilterSort import com.example.brzodolokacije.Models.Location import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.Models.SearchParams @@ -30,11 +31,14 @@ import com.example.brzodolokacije.paging.SearchPostsViewModel import com.example.brzodolokacije.paging.SearchPostsViewModelFactory import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.button.MaterialButton +import kotlinx.android.synthetic.main.activity_splash_page.* +import kotlinx.android.synthetic.main.bottom_sheet_sort.* import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch import retrofit2.Call import retrofit2.Response +import java.util.Date class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { @@ -56,6 +60,11 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { private lateinit var searchBar: AutoCompleteTextView var responseLocations:MutableList<com.example.brzodolokacije.Models.Location>?=null var selectedLocation:com.example.brzodolokacije.Models.Location?=null + private lateinit var obj:FilterSort + + private lateinit var filter:Button + private lateinit var removeFilter:Button + private lateinit var sort:Button override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -65,6 +74,8 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { adapterVar=ShowPostsAdapter(requireActivity()) linearManagerVar= LinearLayoutManager(activity) //gridManagerVar=GridLayoutManager(activity,2) + + } fun searchText(){ if(searchBar.text==null || searchBar.text.toString().trim()=="") @@ -204,17 +215,125 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { swipeRefreshLayout?.isRefreshing=true requestToBack(searchParams!!) }) +////////////////////////////////////////////////////////////////// + //filter sort validacija + + + //filter dialog + var bottomSheetDialogFilter: BottomSheetDialog + bottomSheetDialogFilter = BottomSheetDialog(requireContext()) + bottomSheetDialogFilter.setContentView(R.layout.bottom_sheet_filter) + + //sort dialog + var bottomSheetDialogSort: BottomSheetDialog + bottomSheetDialogSort = BottomSheetDialog(requireContext()) + bottomSheetDialogSort.setContentView(R.layout.bottom_sheet_sort) + + + btnFilter=rootView.findViewById(R.id.btnSortType) btnSort=rootView.findViewById(R.id.btnSortDirection) + var dateFrom=bottomSheetDialogFilter.findViewById<View>(R.id.filterDateFrom)as EditText + var dateFromDate:Date + var dateTo=bottomSheetDialogFilter.findViewById<View>(R.id.filterDateTo) as EditText + var dateToDate:Date + var ratingFrom=bottomSheetDialogFilter.findViewById<View>(R.id.filterRatingFrom) as EditText + var ratingTo=bottomSheetDialogFilter.findViewById<View>(R.id.filterRatingTo) as EditText + var viewsFrom=bottomSheetDialogFilter.findViewById<View>(R.id.filterViewsFrom) as EditText + var viewsTo=bottomSheetDialogFilter.findViewById<View>(R.id.filterViewsTo) as EditText + + + var removeFilter = bottomSheetDialogFilter.findViewById<View>(R.id.btnBSFFilterRemove) as Button + + obj=FilterSort(false,false,0,5,0,1000000000,false,false,false,false) + obj.filter=false + obj.sort=false + + btnFilter.setOnClickListener{ - showBottomSheetFilter() + bottomSheetDialogFilter.show() + var filter = bottomSheetDialogFilter.findViewById<View>(R.id.btnBSFFilter) as Button + + filter.setOnClickListener { + //validacija unosa + Toast.makeText(activity, "Method called From Fragment", Toast.LENGTH_LONG).show(); + if(!dateFrom.text.equals("")){ + obj.filter=true } + else if(!dateTo.text.equals("")){ + obj.filter=true + } + if(ratingFrom.text.toString().trim().toInt()>=0){ + obj.filter=true + obj.filterRatingFrom=ratingFrom.text.toString().toInt() + + } + else{ + ///toast + } + if(ratingTo.text.toString().trim().toInt()>=0){ + obj.filter=true + obj.filterRatingTo=ratingTo.text.toString().toInt() + } + else{ + //toast + } + if(viewsFrom.text.toString().trim().toInt()>=0){ + obj.filter=true + obj.filterViewsFrom=viewsFrom.text.toString().toInt() + } + else{ + //toast + } + if(viewsTo.text.toString().trim().toInt()>=0){ + obj.filter=true + obj.filterViewsTo=viewsTo.text.toString().trim().toInt() + } + else{ + //toast + } + + + } } btnSort.setOnClickListener{ - showBottomSheetSort() + bottomSheetDialogSort.show() + var sort = bottomSheetDialogSort.findViewById<View>(R.id.btnSortPosts) as Button + var radioGroup = bottomSheetDialogSort.findViewById<View>(R.id.radioGroup)as RadioGroup + + sort.setOnClickListener { + val selectedRadioButtonId: Int = radioGroup.checkedRadioButtonId + if (selectedRadioButtonId != -1) { + var selectedRadioButton = + bottomSheetDialogSort.findViewById<View>(selectedRadioButtonId) as RadioButton + val string: String = selectedRadioButton.text.toString().trim() + if (string.equals("Najnovije")) { + obj.sort = true + obj.sortLatest = true + } else if (string.equals("Najstarije")) { + obj.sort = true + obj.sortOldest = true + } else if (string.equals("Najbolje ocenjeno")) { + obj.sort = true + obj.sortBest = true + } else if (string.equals("Najviše pregleda")) { + obj.sort = true + obj.sortMostViews = true + } else { + obj.sort = false + } + + } else { + textView.text = "Nothing selected from the radio group" + } + + } } + + ///////////////////////////////////////////////////////////////////////////// + searchBar=rootView.findViewById(R.id.etFragmentShowPostsSearch) as AutoCompleteTextView searchButton=rootView.findViewById<View>(R.id.mbFragmentHomePageSearch) as MaterialButton setUpSpinner() @@ -266,23 +385,28 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { } } - +/* private fun showBottomSheetFilter() { var bottomSheetDialog: BottomSheetDialog bottomSheetDialog = BottomSheetDialog(requireContext()) bottomSheetDialog.setContentView(R.layout.bottom_sheet_filter) bottomSheetDialog.show() - var dateFrom=bottomSheetDialog.findViewById<View>(R.id.dateFromBSF)as EditText - var dateTo=bottomSheetDialog.findViewById<View>(R.id.dateToBSF) as EditText - var location=bottomSheetDialog.findViewById<View>(R.id.locationBSF) as EditText + var dateFrom=bottomSheetDialog.findViewById<View>(R.id.filterDateFrom)as EditText + var dateTo=bottomSheetDialog.findViewById<View>(R.id.filterDateTo) as EditText + var ratingFrom=bottomSheetDialog.findViewById<View>(R.id.filterRatingFrom) as EditText + var ratingTo=bottomSheetDialog.findViewById<View>(R.id.filterRatingTo) as EditText + var viewsFrom=bottomSheetDialog.findViewById<View>(R.id.filterViewsFrom) as EditText + var viewsTo=bottomSheetDialog.findViewById<View>(R.id.filterViewsTo) as EditText var filter = bottomSheetDialog.findViewById<View>(R.id.btnBSFFilter) as Button + var removeFilter = bottomSheetDialog.findViewById<View>(R.id.btnBSFFilterRemove) as Button filter.setOnClickListener { //povezati sa back-om + } } private fun showBottomSheetSort() { @@ -292,4 +416,6 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { bottomSheetDialogSort.show() } + + */ }
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt index 8f07bca..a3858a7 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt @@ -93,4 +93,22 @@ data class SearchParams( var locationId: String, var sorttype:Int, var filterdate:Int -)
\ No newline at end of file +) + +data class FilterSort( + //var posts: MutableList<PostPreview>, + var sort:Boolean, + var filter:Boolean, + + //var filterDateFrom:Date, + //var filterDateTo:Date, + var filterRatingFrom:Int, + var filterRatingTo:Int, + var filterViewsFrom:Int, + var filterViewsTo:Int, + + var sortLatest:Boolean, + var sortOldest:Boolean, + var sortBest:Boolean, + var sortMostViews:Boolean + )
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_filter.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_filter.xml index 249c654..5862c60 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_filter.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_filter.xml @@ -32,8 +32,8 @@ app:layout_constraintTop_toBottomOf="@+id/textView7" /> <EditText - android:id="@+id/dateFromBSF" - android:layout_width="140dp" + android:id="@+id/filterDateFrom" + android:layout_width="150dp" android:layout_height="48dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" @@ -49,7 +49,7 @@ android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="20dp" - android:text="@string/od" + android:text="Od:" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView8" /> @@ -59,13 +59,13 @@ android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_marginEnd="8dp" - android:text="Do" - app:layout_constraintEnd_toStartOf="@+id/dateToBSF" + android:text="Do:" + app:layout_constraintEnd_toStartOf="@+id/filterDateTo" app:layout_constraintTop_toBottomOf="@+id/textView8" /> <EditText - android:id="@+id/dateToBSF" - android:layout_width="140dp" + android:id="@+id/filterDateTo" + android:layout_width="150dp" android:layout_height="48dp" android:layout_marginTop="8dp" android:layout_marginEnd="16dp" @@ -76,17 +76,39 @@ tools:ignore="SpeakableTextPresentCheck" /> <TextView - android:id="@+id/textView11" + android:id="@+id/textView15" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:layout_marginTop="16dp" - android:text="Lokacija" + android:layout_marginTop="8dp" + android:text="Rejting" android:textSize="17sp" android:textStyle="bold" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/divider2" /> + <TextView + android:id="@+id/textView16" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="20dp" + android:text="Od:" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/textView15" /> + + <TextView + android:id="@+id/textView17" + android:layout_width="wrap_content" + android:layout_height="19dp" + android:layout_marginTop="20dp" + android:layout_marginEnd="8dp" + android:text="Do:" + app:layout_constraintEnd_toStartOf="@+id/filterRatingTo" + app:layout_constraintTop_toBottomOf="@+id/textView15" /> + <View android:id="@+id/divider2" android:layout_width="409dp" @@ -94,54 +116,161 @@ android:background="?android:attr/listDivider" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/dateFromBSF" /> + app:layout_constraintTop_toBottomOf="@+id/filterDateFrom" /> + + <View + android:id="@+id/divider4" + android:layout_width="409dp" + android:layout_height="1dp" + android:background="?android:attr/listDivider" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/filterViewsFrom" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="16dp" + android:orientation="horizontal" + android:weightSum="2" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/divider4"> + + <Button + android:id="@+id/btnBSFFilter" + android:layout_width="10dp" + android:layout_height="39dp" + android:layout_marginHorizontal="10dp" + android:layout_marginTop="16dp" + android:layout_weight="1" + android:background="@drawable/view_corner_radius" + android:text="Primeni" + + tools:ignore="TouchTargetSizeCheck" /> + + <Button + android:id="@+id/btnBSFFilterRemove" + android:layout_width="10dp" + android:layout_height="39dp" + android:layout_marginHorizontal="10dp" + android:layout_marginTop="16dp" + android:layout_weight="1" + android:background="@drawable/view_corner_radius" + android:text="Poništi" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/divider4" + tools:ignore="TouchTargetSizeCheck" /> + </LinearLayout> <EditText - android:id="@+id/locationBSF" - android:layout_width="0dp" + android:id="@+id/filterRatingFrom" + android:layout_width="111dp" + android:layout_height="51dp" + android:layout_marginStart="8dp" + android:ems="10" + android:inputType="number" + app:layout_constraintStart_toEndOf="@+id/textView16" + app:layout_constraintTop_toBottomOf="@+id/textView15" /> + + <ImageView + android:id="@+id/imageView18" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:layout_marginTop="8dp" - android:layout_marginEnd="24dp" + android:layout_marginTop="20dp" + app:layout_constraintStart_toEndOf="@+id/filterRatingFrom" + app:layout_constraintTop_toBottomOf="@+id/textView15" + app:srcCompat="@drawable/ic_baseline_star_rate_24" /> + + + <EditText + android:id="@+id/filterRatingTo" + android:layout_width="111dp" + android:layout_height="51dp" + android:layout_marginEnd="12dp" android:ems="10" - android:inputType="textPersonName" - app:layout_constraintEnd_toStartOf="@+id/imageView8" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/textView11" - tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" /> + android:inputType="number" + app:layout_constraintEnd_toStartOf="@+id/imageView19" + app:layout_constraintTop_toBottomOf="@+id/textView15" /> <ImageView - android:id="@+id/imageView8" - android:layout_width="50dp" - android:layout_height="40dp" + android:id="@+id/imageView19" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="20dp" + android:layout_marginEnd="20dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/textView15" + app:srcCompat="@drawable/ic_baseline_star_rate_24" /> + + <TextView + android:id="@+id/textView20" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="17dp" android:layout_marginTop="8dp" - android:layout_marginEnd="16dp" + android:layout_marginEnd="292dp" + android:text="Broj pregleda" + android:textSize="17sp" + android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@+id/textView11" - app:srcCompat="@drawable/button_find_on_map" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/divider8" /> + + <TextView + android:id="@+id/textView21" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="20dp" + android:text="Od:" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/textView20" /> + + <TextView + android:id="@+id/textView22" + android:layout_width="wrap_content" + android:layout_height="19dp" + android:layout_marginTop="20dp" + android:layout_marginEnd="5dp" + android:text="Do:" + app:layout_constraintEnd_toStartOf="@+id/filterViewsTo" + app:layout_constraintTop_toBottomOf="@+id/textView20" /> <View - android:id="@+id/divider4" + android:id="@+id/divider8" android:layout_width="409dp" android:layout_height="1dp" android:background="?android:attr/listDivider" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/locationBSF" /> + app:layout_constraintTop_toBottomOf="@+id/filterRatingFrom" /> - <Button - android:id="@+id/btnBSFFilter" - android:layout_width="169dp" - android:layout_height="39dp" - android:layout_marginTop="16dp" - android:layout_marginBottom="24dp" - android:background="@drawable/rounded_cyan_button" - android:text="Primeni" - app:layout_constraintBottom_toBottomOf="parent" + <EditText + android:id="@+id/filterViewsFrom" + android:layout_width="150dp" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:layout_marginTop="5dp" + android:ems="10" + android:inputType="number" + app:layout_constraintStart_toEndOf="@+id/textView21" + app:layout_constraintTop_toBottomOf="@+id/textView20" /> + + <EditText + android:id="@+id/filterViewsTo" + android:layout_width="150dp" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:layout_marginEnd="12dp" + android:ems="10" + android:inputType="number" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/divider4" - app:layout_constraintVertical_bias="1.0" - tools:ignore="TouchTargetSizeCheck" /> + app:layout_constraintTop_toBottomOf="@+id/textView20" /> + </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_sort.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_sort.xml index fb06308..b8577fc 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_sort.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/bottom_sheet_sort.xml @@ -6,6 +6,7 @@ android:layout_height="wrap_content"> <RadioGroup + android:id="@+id/radioGroup" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintEnd_toEndOf="parent" @@ -13,7 +14,7 @@ app:layout_constraintTop_toBottomOf="@+id/textView12"> <RadioButton - android:id="@+id/radioButton" + android:id="@+id/sortLatest" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" @@ -21,11 +22,19 @@ android:text="Najnovije" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintStart_toStartOf="parent" /> + + <RadioButton + android:id="@+id/sortOldest" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:text="Najstarije" app:layout_constraintStart_toStartOf="parent" - /> + app:layout_constraintTop_toBottomOf="@+id/radioButton" /> <RadioButton - android:id="@+id/radioButton2" + android:id="@+id/sortBest" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" @@ -33,26 +42,45 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@+id/radioButton4" /> + <RadioButton - android:id="@+id/radioButton3" + android:id="@+id/sortMostViewed" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:text="Najstarije" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/radioButton" /> + android:text="Najviše pregleda" + app:layout_constraintTop_toBottomOf="@+id/radioButton3" + tools:layout_editor_absoluteX="16dp" /> <RadioButton - android:id="@+id/radioButton4" + android:id="@+id/noSort" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" - - android:text="Najviše pregleda" + android:text="Poništi sortiranje" app:layout_constraintTop_toBottomOf="@+id/radioButton3" tools:layout_editor_absoluteX="16dp" /> + </RadioGroup> + <Button + android:id="@+id/btnSortPosts" + android:layout_width="match_parent" + android:layout_height="39dp" + android:layout_marginHorizontal="10dp" + android:layout_marginTop="16dp" + android:layout_marginBottom="16dp" + android:layout_weight="1" + android:background="@drawable/view_corner_radius" + android:text="Primeni" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="1.0" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/radioGroup" + app:layout_constraintVertical_bias="0.0" + tools:ignore="TouchTargetSizeCheck" /> + <TextView android:id="@+id/textView12" android:layout_width="wrap_content" |