diff options
Diffstat (limited to 'Client')
6 files changed, 288 insertions, 171 deletions
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt index 32cb3ef..69a2bed 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt @@ -1,16 +1,28 @@ package com.example.brzodolokacije.Activities +import android.content.res.Resources import android.os.Bundle import android.os.Handler import android.os.Looper +import android.util.Log +import android.widget.ImageButton +import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Adapters.PostImageAdapter +import com.example.brzodolokacije.Adapters.ShowPostsAdapter import com.example.brzodolokacije.Models.PostImage import com.example.brzodolokacije.Models.PostPreview +import com.example.brzodolokacije.Models.Rating +import com.example.brzodolokacije.Models.RatingReceive import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper import com.example.brzodolokacije.databinding.ActivitySinglePostBinding +import okhttp3.ResponseBody +import retrofit2.Call +import retrofit2.Response class ActivitySinglePost : AppCompatActivity() { @@ -19,6 +31,7 @@ class ActivitySinglePost : AppCompatActivity() { private var adapterVar: RecyclerView.Adapter<PostImageAdapter.ViewHolder>? = null private var recyclerView: RecyclerView?=null private lateinit var post:PostPreview + private var starNumber:Number=0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -36,10 +49,91 @@ class ActivitySinglePost : AppCompatActivity() { recyclerView?.layoutManager = layoutManagerVar recyclerView?.adapter = adapterVar loadTextComponents() + setRatingListeners() } - private fun loadImages(){ + fun setRatingListeners(){ + val emptyStar=R.drawable.empty_star + val fullStar=R.drawable.full_star + + binding.rateStar1.setOnClickListener { + Toast.makeText(this,"kliknuta prva zvezdica",Toast.LENGTH_SHORT).show() + binding.rateStar1.setImageResource(fullStar) + binding.rateStar2.setImageResource(emptyStar) + binding.rateStar3.setImageResource(emptyStar) + binding.rateStar4.setImageResource(emptyStar) + binding.rateStar5.setImageResource(emptyStar) + starNumber=1 + } + binding.rateStar2.setOnClickListener { + Toast.makeText(this,"kliknuta druga zvezdica",Toast.LENGTH_SHORT).show() + binding.rateStar1.setImageResource(fullStar) + binding.rateStar2.setImageResource(fullStar) + binding.rateStar3.setImageResource(emptyStar) + binding.rateStar4.setImageResource(emptyStar) + binding.rateStar5.setImageResource(emptyStar) + starNumber=2 + } + binding.rateStar3.setOnClickListener { + Toast.makeText(this,"kliknuta treca zvezdica",Toast.LENGTH_SHORT).show() + binding.rateStar1.setImageResource(fullStar) + binding.rateStar2.setImageResource(fullStar) + binding.rateStar3.setImageResource(fullStar) + binding.rateStar4.setImageResource(emptyStar) + binding.rateStar5.setImageResource(emptyStar) + starNumber=3 + } + binding.rateStar4.setOnClickListener { + Toast.makeText(this,"kliknuta cetvrta zvezdica",Toast.LENGTH_SHORT).show() + binding.rateStar1.setImageResource(fullStar) + binding.rateStar2.setImageResource(fullStar) + binding.rateStar3.setImageResource(fullStar) + binding.rateStar4.setImageResource(fullStar) + binding.rateStar5.setImageResource(emptyStar) + starNumber=4 + } + binding.rateStar5.setOnClickListener { + Toast.makeText(this,"kliknuta peta zvezdica",Toast.LENGTH_SHORT).show() + binding.rateStar1.setImageResource(fullStar) + binding.rateStar2.setImageResource(fullStar) + binding.rateStar3.setImageResource(fullStar) + binding.rateStar4.setImageResource(fullStar) + binding.rateStar5.setImageResource(fullStar) + starNumber=5 + } + binding.submitRating.setOnClickListener{ + if(starNumber.toInt()>0){ + val rating= RatingReceive(starNumber.toInt(),post._id) + requestAddRating(rating) + Toast.makeText(this,"poslato",Toast.LENGTH_SHORT).show() + } + } + + } + + fun requestAddRating(rating:RatingReceive){ + val postApi= RetrofitHelper.getInstance() + val token= SharedPreferencesHelper.getValue("jwt", this@ActivitySinglePost) + val request=postApi.addRating("Bearer "+token,post._id,rating) + request.enqueue(object : retrofit2.Callback<ResponseBody?> { + override fun onResponse(call: Call<ResponseBody?>, response: Response<ResponseBody?>) { + if(response.isSuccessful){ + Toast.makeText( + this@ActivitySinglePost, "prosao zahtev", Toast.LENGTH_LONG + ).show() + }else{ + if(response.errorBody()!=null) + Log.d("main1",response.errorBody().toString()) + } + + + } + + override fun onFailure(call: Call<ResponseBody?>, t: Throwable) { + Log.d("main2",t.message.toString()) + } + }) } private fun loadTextComponents() { @@ -59,4 +153,4 @@ class ActivitySinglePost : AppCompatActivity() { } } -}
\ No newline at end of file +} diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt index c712597..ac13bca 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt @@ -6,6 +6,8 @@ import com.example.brzodolokacije.Models.Auth.Register import com.example.brzodolokacije.Models.Auth.ResetPass import com.example.brzodolokacije.Models.Location import com.example.brzodolokacije.Models.PostPreview +import com.example.brzodolokacije.Models.Rating +import com.example.brzodolokacije.Models.RatingReceive import okhttp3.MultipartBody import okhttp3.Request import okhttp3.RequestBody @@ -36,7 +38,8 @@ interface IBackendApi { ,@Part("description") description:RequestBody ,@Part("locationId") locationId:RequestBody ):Call<PostPreview> - + @POST("api/Post/posts/{id}/addrating") + fun addRating(@Header("Authorization") authHeader:String,@Path("id") id:String,@Body rating: RatingReceive):Call<ResponseBody> //@POST("putanja") //fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call<Post> }
\ 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 9b9afaa..f24e72f 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 @@ -49,4 +49,9 @@ data class Comment ( data class Rating( var useridval :String, var rating:Int +) + +data class RatingReceive( + var rating:Int, + var postId:String )
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/empty_star.webp b/Client/BrzoDoLokacije/app/src/main/res/drawable/empty_star.webp Binary files differnew file mode 100644 index 0000000..cea48aa --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/empty_star.webp diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/full_star.png b/Client/BrzoDoLokacije/app/src/main/res/drawable/full_star.png Binary files differnew file mode 100644 index 0000000..e3f605d --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/full_star.png diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml index 436784e..9c30136 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml @@ -1,4 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> + + <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" @@ -7,8 +9,14 @@ android:padding="@dimen/component_padding" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".Activities.ActivitySinglePost"> - - <androidx.recyclerview.widget.RecyclerView + <ScrollView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:fillViewport="true"> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + <androidx.recyclerview.widget.RecyclerView android:id="@+id/rvMain" android:layout_width="match_parent" android:paddingBottom="@dimen/component_padding" @@ -17,204 +25,211 @@ app:layout_constraintTop_toTopOf="parent"> </androidx.recyclerview.widget.RecyclerView> + + +<androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="bottom" + app:layout_constraintTop_toBottomOf="@id/rvMain" + tools:layout_editor_absoluteX="0dp"> + + <TextView + android:id="@+id/tvLocationParent" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="top|start" + android:padding="@dimen/text_padding" + android:text="Drzava, grad" + app:layout_constraintTop_toBottomOf="@+id/tvLocationType" + tools:layout_editor_absoluteX="0dp" /> + + <TextView + android:id="@+id/tvTitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="top|start" + android:padding="@dimen/text_padding" + android:text="Naslov" + android:textSize="@dimen/header1_size" + android:textStyle="bold" /> + + <TextView + android:id="@+id/tvLocationType" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="top|start" + android:padding="@dimen/text_padding" + android:text="Tip lokacije" + app:layout_constraintTop_toBottomOf="@+id/tvTitle" + tools:layout_editor_absoluteX="0dp" /> + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/constraintLayout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:gravity="bottom" - app:layout_constraintTop_toBottomOf="@id/rvMain" - tools:layout_editor_absoluteX="0dp"> + android:layout_marginTop="20dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tvLocationParent"> - <TextView - android:id="@+id/tvLocationParent" + <LinearLayout + android:id="@+id/linearLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:gravity="top|start" - android:padding="@dimen/text_padding" - android:text="Drzava, grad" - app:layout_constraintTop_toBottomOf="@+id/tvLocationType" - tools:layout_editor_absoluteX="0dp" /> + android:orientation="horizontal" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <ImageView + android:id="@+id/star1" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:src="@android:drawable/btn_star_big_on" /> + + <ImageView + android:id="@+id/star2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:src="@android:drawable/btn_star_big_on" /> + + <ImageView + android:id="@+id/star3" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:src="@android:drawable/btn_star_big_on" /> + + <ImageView + android:id="@+id/star4" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:src="@android:drawable/btn_star_big_on" /> + + <ImageView + android:id="@+id/star5" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:src="@android:drawable/btn_star_big_on" /> + </LinearLayout> <TextView - android:id="@+id/tvTitle" + android:id="@+id/tvRating" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Naslov" - android:textSize="@dimen/header1_size" + android:padding="@dimen/text_padding" + android:text="4.2" android:textStyle="bold" - android:gravity="top|start" - android:padding="@dimen/text_padding"/> + app:layout_constraintEnd_toStartOf="@+id/tvNumberOfRatings" + tools:layout_editor_absoluteY="4dp" /> <TextView - android:id="@+id/tvLocationType" + android:id="@+id/tvNumberOfRatings" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:gravity="top|start" - android:text="Tip lokacije" android:padding="@dimen/text_padding" - app:layout_constraintTop_toBottomOf="@+id/tvTitle" - tools:layout_editor_absoluteX="0dp" /> + android:text="(10,500)" + app:layout_constraintEnd_toEndOf="parent" + tools:layout_editor_absoluteY="4dp" /> <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/constraintLayout" + android:id="@+id/constraintLayout3" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="20dp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/tvLocationParent"> - - <LinearLayout - android:id="@+id/linearLayout" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="horizontal" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> - - <ImageView - android:id="@+id/star1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:src="@android:drawable/btn_star_big_on" /> - - <ImageView - android:id="@+id/star2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:src="@android:drawable/btn_star_big_on" /> - - <ImageView - android:id="@+id/star3" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:src="@android:drawable/btn_star_big_on" /> - - <ImageView - android:id="@+id/star4" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:src="@android:drawable/btn_star_big_on" /> - - <ImageView - android:id="@+id/star5" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:src="@android:drawable/btn_star_big_on" /> - </LinearLayout> + android:background="@drawable/rounded_picture_background" + android:elevation="5dp" + android:padding="@dimen/component_padding" + app:layout_constraintTop_toBottomOf="@+id/linearLayout" + tools:layout_editor_absoluteX="0dp"> <TextView - android:id="@+id/tvRating" + android:id="@+id/tvDescriptionLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:gravity="top|start" android:padding="@dimen/text_padding" - android:text="4.2" - android:textStyle="bold" - app:layout_constraintEnd_toStartOf="@+id/tvNumberOfRatings" - tools:layout_editor_absoluteY="4dp" /> + android:text="Opis" + android:textStyle="bold" /> <TextView - android:id="@+id/tvNumberOfRatings" + android:id="@+id/tvDescription" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:padding="@dimen/text_padding" - android:text="(10,500)" - app:layout_constraintEnd_toEndOf="parent" - tools:layout_editor_absoluteY="4dp" /> + android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" + app:layout_constraintTop_toBottomOf="@+id/tvDescriptionLabel" /> + </androidx.constraintlayout.widget.ConstraintLayout> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/constraintLayout3" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/rounded_picture_background" - android:elevation="5dp" - android:padding="@dimen/component_padding" - app:layout_constraintTop_toBottomOf="@+id/linearLayout" - tools:layout_editor_absoluteX="0dp"> - - <TextView - android:id="@+id/tvDescriptionLabel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:gravity="top|start" - android:padding="@dimen/text_padding" - android:text="Opis" - android:textStyle="bold" /> - - <TextView - android:id="@+id/tvDescription" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" - app:layout_constraintTop_toBottomOf="@+id/tvDescriptionLabel" /> - </androidx.constraintlayout.widget.ConstraintLayout> - - <LinearLayout - android:id="@+id/linearLayout2" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingVertical="@dimen/component_padding" + <LinearLayout + android:id="@+id/linearLayout2" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1" + android:orientation="horizontal" + android:paddingVertical="@dimen/component_padding" + app:layout_constraintTop_toBottomOf="@id/constraintLayout3"> + + <ImageButton + android:id="@+id/rateStar1" + android:layout_width="24dp" + android:layout_height="24dp" + android:scaleType="centerCrop" + android:layout_weight="1" + android:backgroundTint="@color/white" + android:src="@drawable/empty_star" /> + + <ImageButton + android:id="@+id/rateStar2" + android:layout_width="24dp" + android:layout_height="24dp" + android:scaleType="centerCrop" + android:layout_weight="1" + android:backgroundTint="@color/white" + android:src="@drawable/empty_star" /> + + <ImageButton + android:id="@+id/rateStar3" + android:layout_width="24dp" + android:layout_height="24dp" + android:scaleType="centerCrop" android:layout_weight="1" - android:orientation="horizontal" - app:layout_constraintTop_toBottomOf="@id/constraintLayout3"> - - <ImageButton - android:id="@+id/rateStar1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:backgroundTint="@color/white" - android:src="@android:drawable/btn_star_big_off" /> - - <ImageButton - android:id="@+id/rateStar2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:backgroundTint="@color/white" - android:src="@android:drawable/btn_star_big_off" /> - - <ImageButton - android:id="@+id/rateStar3" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:backgroundTint="@color/white" - android:src="@android:drawable/btn_star_big_off" /> - - <ImageButton - android:id="@+id/rateStar4" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:backgroundTint="@color/white" - android:src="@android:drawable/btn_star_big_off" /> - - <ImageButton - android:id="@+id/rateStar5" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:backgroundTint="@color/white" - android:src="@android:drawable/btn_star_big_off" /> - - <Button - android:id="@+id/submitRating" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:backgroundTint="@color/white" - android:text="oceni" - android:textColor="@color/black" /> - </LinearLayout> + android:backgroundTint="@color/white" + android:src="@drawable/empty_star" /> + + <ImageButton + android:id="@+id/rateStar4" + android:layout_width="24dp" + android:layout_height="24dp" + android:scaleType="centerCrop" + android:layout_weight="1" + android:backgroundTint="@color/white" + android:src="@drawable/empty_star" /> + + <ImageButton + android:id="@+id/rateStar5" + android:layout_width="24dp" + android:layout_height="24dp" + android:scaleType="centerCrop" + android:layout_weight="1" + android:backgroundTint="@color/white" + android:src="@drawable/empty_star" /> + <Button + android:id="@+id/submitRating" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:backgroundTint="@color/white" + android:text="oceni" + android:textColor="@color/black" /> + </LinearLayout> - </androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout> - -</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file +</androidx.constraintlayout.widget.ConstraintLayout> +</androidx.constraintlayout.widget.ConstraintLayout> +</ScrollView> +</androidx.constraintlayout.widget.ConstraintLayout> |