From 019c885d1fbf5fa91d14bfa81eea38b5ab5d9eef Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Sun, 13 Nov 2022 16:49:24 +0100 Subject: Povezana početna strana sa objavama iz baze. Dodati dugmići za prikaz filtriranih lokacija. Izmenjen izgled početne strane. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client/BrzoDoLokacije/app/build.gradle | 2 + .../app/src/main/AndroidManifest.xml | 48 +-- .../Activities/NavigationActivity.kt | 2 +- .../brzodolokacije/Fragments/FragmentHomePage.kt | 17 +- .../example/brzodolokacije/Models/LocationType.kt | 44 ++- .../main/res/drawable/ic_baseline_search_24.xml | 5 + .../main/res/drawable/location_amusement_park.xml | 15 + .../src/main/res/drawable/location_attraction.xml | 15 + .../src/main/res/drawable/location_landmark.xml | 17 + .../app/src/main/res/drawable/location_spa.xml | 16 + .../app/src/main/res/layout/fragment_home_page.xml | 369 +++++++++++++-------- .../src/main/res/layout/post_item_home_page.xml | 6 +- .../app/src/main/res/values/dimens.xml | 6 +- 13 files changed, 366 insertions(+), 196 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_search_24.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/location_amusement_park.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/location_attraction.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/location_landmark.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/location_spa.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/build.gradle b/Client/BrzoDoLokacije/app/build.gradle index d0eabb6..63d28a8 100644 --- a/Client/BrzoDoLokacije/app/build.gradle +++ b/Client/BrzoDoLokacije/app/build.gradle @@ -49,6 +49,8 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'com.google.android.gms:play-services-maps:18.1.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.recyclerview:recyclerview:1.2.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index e33932c..56bdb58 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -40,37 +40,18 @@ android:usesCleartextTraffic="true" tools:targetApi="31"> - - - - - - - + + + + + android:exported="true" + android:screenOrientation="portrait" > @@ -81,17 +62,12 @@ android:name="android.app.lib_name" android:value="" /> - - - - - - - + + + + + + (R.id.bottomNavigationView) as BottomNavigationView - setCurrentFragment(fragmentShowPosts) + setCurrentFragment(fragmentHomePage) bottomNav.setOnNavigationItemSelectedListener { when(it.itemId){ R.id.navHomePage->setCurrentFragment(fragmentHomePage) 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 874d9de..3e02442 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 @@ -14,13 +14,13 @@ import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.RetrofitHelper.baseUrl import com.example.brzodolokacije.Services.SharedPreferencesHelper -import kotlinx.android.synthetic.main.activity_single_post.view.* import retrofit2.Call import retrofit2.Callback import retrofit2.Response import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory + class FragmentHomePage : Fragment() { private lateinit var posts : MutableList private lateinit var mostViewedPosts : MutableList @@ -28,6 +28,7 @@ class FragmentHomePage : Fragment() { private lateinit var bestRatedPosts:MutableList private lateinit var rvPopular: RecyclerView private lateinit var rvNewest:RecyclerView + private lateinit var rvBestRated:RecyclerView /* override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -41,7 +42,8 @@ class FragmentHomePage : Fragment() { var view:View= inflater.inflate(R.layout.fragment_home_page, container, false) rvPopular=view.findViewById(R.id.rvFragmentHomePagePopular) - rvNewest=view.findViewById(R.id.rvFragmentHomePageLatest) + rvNewest=view.findViewById(R.id.rvFragmentHomePageNewest) + rvBestRated=view.findViewById(R.id.rvFragmentHomePageBestRated) //pokupi sve objave iz baze' getAllPosts() @@ -60,7 +62,7 @@ class FragmentHomePage : Fragment() { val token= SharedPreferencesHelper.getValue("jwt", requireActivity()) val data=api.getPosts("Bearer "+token) - data.enqueue(object : Callback>{ + data.enqueue(object : Callback> { override fun onResponse( call: Call>, response: Response> @@ -97,8 +99,8 @@ class FragmentHomePage : Fragment() { mostViewedPosts=allPosts mostViewedPosts.sortByDescending { it.views } rvPopular.apply { - layoutManager=LinearLayoutManager(activity,LinearLayoutManager.HORIZONTAL,false) - adapter=ShowPostsHomePageAdapter(mostViewedPosts) + layoutManager= LinearLayoutManager(activity,LinearLayoutManager.HORIZONTAL,false) + adapter= ShowPostsHomePageAdapter(mostViewedPosts) } @@ -121,6 +123,11 @@ class FragmentHomePage : Fragment() { ).show(); bestRatedPosts=allPosts bestRatedPosts.sortByDescending { it.ratings } + rvBestRated.apply { + layoutManager=LinearLayoutManager(activity,LinearLayoutManager.HORIZONTAL,false) + adapter=ShowPostsHomePageAdapter(bestRatedPosts) + } + } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationType.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationType.kt index a078863..4714bab 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationType.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationType.kt @@ -1,7 +1,45 @@ package com.example.brzodolokacije.Models enum class LocationType { - GRAD,ULICA,JEZERO,REKA,PLAZA,OKEAN, MORE, MOREUZ, MOST,BANJA, - PLANINA, VISORAVAN, PIRAMIDA, LIVADA, SELO, OSTRVO, POLUOSTRVO, KLISURA, ARHIPELAG, - ADA, DELTA, FJORD, GEJZIR, IZVOR, KOTLINA, MINERALNI_IZVOR, PECINA ,SUMA, VODOPAD,VULKAN + GRAD, + ULICA, + JEZERO, + REKA, + PLAZA, + OKEAN, + MORE, + MOREUZ, + MOST, + BANJA, + PLANINA, + VISORAVAN, + PIRAMIDA, + LIVADA, + SELO, + OSTRVO, + POLUOSTRVO, + KLISURA, + ARHIPELAG, + ADA, + DELTA, + FJORD, + GEJZIR, + IZVOR, + KOTLINA, + MINERALNI_IZVOR, + PECINA, + SUMA, + VODOPAD, + VULKAN, + + AERODROM, + ZABAVNI_PARK, + PRODAVNICA, + ATRAKCIJA, + ZOOLOSKI_VRT, + TRZNI_CENTAR, + PARK, + LOKALITET, + + } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_search_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_search_24.xml new file mode 100644 index 0000000..5f22c2e --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_search_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/location_amusement_park.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/location_amusement_park.xml new file mode 100644 index 0000000..c6b2c37 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/location_amusement_park.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/location_attraction.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/location_attraction.xml new file mode 100644 index 0000000..7174bda --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/location_attraction.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/location_landmark.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/location_landmark.xml new file mode 100644 index 0000000..3ed6824 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/location_landmark.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/location_spa.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/location_spa.xml new file mode 100644 index 0000000..ff19c94 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/location_spa.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file 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 7d1c73a..fcfe90c 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 @@ -6,20 +6,9 @@ android:layout_height="match_parent" tools:context=".Fragments.FragmentHomePage"> - - - + + app:layout_constraintTop_toBottomOf="@+id/cvFragmentHomePageProfile" /> - + app:layout_constraintTop_toBottomOf="@+id/tvFragmentHomePageSearch"> - - + + + + + + + app:layout_constraintTop_toBottomOf="@+id/cvFragmentHomePageSearch" + app:layout_constraintVertical_bias="0.0"> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="parent" + app:layout_constraintVertical_bias="0.0"> - + > - - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:background='@color/white' - android:src="@drawable/location_mountain" - tools:ignore="SpeakableTextPresentCheck" /> - - + + + - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="16dp"> + - - + + - - android:layout_marginStart="16dp" - android:layout_marginTop="12dp" - android:text="Najnovije" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.0" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/scrollview" /> + - + - + + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/post_item_home_page.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/post_item_home_page.xml index f8ff70e..441f97b 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/post_item_home_page.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/post_item_home_page.xml @@ -3,12 +3,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="150dp" - android:layout_height="150dp"> + android:layout_height="180dp"> - 16dp + 16dp 5dp 20dp 10dp - \ No newline at end of file + 16dp + 8dp + \ No newline at end of file -- cgit v1.2.3 From cf4a1d64ecbdb9f8d400905e45c3d528ce4e1648 Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Sun, 13 Nov 2022 19:43:26 +0100 Subject: Dodati komentari, dodavanje i pregled #31 --- .../Activities/ActivitySinglePost.kt | 107 +++++++++++++++++---- .../brzodolokacije/Adapters/CommentsAdapter.kt | 38 ++++++++ .../brzodolokacije/Interfaces/IBackendApi.kt | 13 ++- .../java/com/example/brzodolokacije/Models/Post.kt | 18 +++- .../src/main/res/layout/activity_single_post.xml | 51 ++++++++++ .../app/src/main/res/layout/single_comment.xml | 22 +++++ 6 files changed, 224 insertions(+), 25 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/CommentsAdapter.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/single_comment.xml (limited to 'Client') 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 69a2bed..8dd7eea 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,36 +1,35 @@ 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.Adapter import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Adapters.CommentsAdapter 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.Models.* 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 okhttp3.internal.notifyAll import retrofit2.Call import retrofit2.Response class ActivitySinglePost : AppCompatActivity() { private lateinit var binding: ActivitySinglePostBinding - private var layoutManagerVar: RecyclerView.LayoutManager? = null - private var adapterVar: RecyclerView.Adapter? = null - private var recyclerView: RecyclerView?=null + private var layoutManagerImages: RecyclerView.LayoutManager? = null + private var layoutManagerComments: RecyclerView.LayoutManager? = null + private var adapterImages: RecyclerView.Adapter? = null + private var adapterComments: RecyclerView.Adapter? = null + private var recyclerViewImages: RecyclerView?=null + private var recyclerViewComments: RecyclerView?=null private lateinit var post:PostPreview + private var comments:MutableList?=mutableListOf() private var starNumber:Number=0 override fun onCreate(savedInstanceState: Bundle?) { @@ -38,20 +37,31 @@ class ActivitySinglePost : AppCompatActivity() { binding=ActivitySinglePostBinding.inflate(layoutInflater) setContentView(binding.root) post= intent.extras?.getParcelable("selectedPost")!! - //load data for the list //instantiate adapter and linearLayout - adapterVar= PostImageAdapter(this@ActivitySinglePost, post.images as MutableList) - layoutManagerVar= LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false) - recyclerView = binding.rvMain + adapterImages= PostImageAdapter(this@ActivitySinglePost, post.images as MutableList) + layoutManagerImages= LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false) + recyclerViewImages = binding.rvMain + buildRecyclerViewComments() + requestGetComments() + // set recyclerView attributes - recyclerView?.setHasFixedSize(true) - recyclerView?.layoutManager = layoutManagerVar - recyclerView?.adapter = adapterVar + recyclerViewImages?.setHasFixedSize(true) + recyclerViewImages?.layoutManager = layoutManagerImages + recyclerViewImages?.adapter = adapterImages loadTextComponents() setRatingListeners() } + fun buildRecyclerViewComments(){ + recyclerViewComments=binding.rvComments + adapterComments=CommentsAdapter(comments as MutableList) + layoutManagerComments= LinearLayoutManager(this@ActivitySinglePost,LinearLayoutManager.VERTICAL,false) + recyclerViewComments!!.setHasFixedSize(true) + recyclerViewComments!!.layoutManager=layoutManagerComments + recyclerViewComments!!.adapter= adapterComments + } + fun setRatingListeners(){ val emptyStar=R.drawable.empty_star val fullStar=R.drawable.full_star @@ -109,7 +119,66 @@ class ActivitySinglePost : AppCompatActivity() { Toast.makeText(this,"poslato",Toast.LENGTH_SHORT).show() } } + binding.btnPostComment.setOnClickListener { + if(binding.NewComment.text.isNotEmpty()){ + val comment=CommentReceive(binding.NewComment.text.toString(),"") + requestAddComment(comment) + } + } + + } + + fun requestAddComment(comment:CommentReceive){ + val postApi= RetrofitHelper.getInstance() + val token= SharedPreferencesHelper.getValue("jwt", this@ActivitySinglePost) + val request=postApi.addComment("Bearer "+token,post._id,comment) + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful){ + requestGetComments() + Toast.makeText( + this@ActivitySinglePost, "prosao zahtev", Toast.LENGTH_LONG + ).show() + }else{ + if(response.errorBody()!=null) + Log.d("main1",response.message().toString()) + } + + } + + override fun onFailure(call: Call, t: Throwable) { + Log.d("main2",t.message.toString()) + } + }) + } + fun requestGetComments(){ + val postApi= RetrofitHelper.getInstance() + val token= SharedPreferencesHelper.getValue("jwt", this@ActivitySinglePost) + val request=postApi.getComments("Bearer "+token,post._id) + request.enqueue(object : retrofit2.Callback?> { + override fun onResponse(call: Call?>, response: Response?>) { + if(response.isSuccessful){ + comments= response.body()!! + if(comments!=null && comments!!.isNotEmpty()){ + buildRecyclerViewComments() + if(comments!=null) + binding.tvCommentCount.text=comments?.size.toString() + else + binding.tvCommentCount.text="0" + } + }else{ + if(response.errorBody()!=null) + Log.d("main1",response.message().toString()) + } + + + } + + override fun onFailure(call: Call?>, t: Throwable) { + Log.d("main2",t.message.toString()) + } + }) } fun requestAddRating(rating:RatingReceive){ diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/CommentsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/CommentsAdapter.kt new file mode 100644 index 0000000..d43057f --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/CommentsAdapter.kt @@ -0,0 +1,38 @@ +package com.example.brzodolokacije.Adapters + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Models.CommentSend +import com.example.brzodolokacije.databinding.SingleCommentBinding + +class CommentsAdapter (val items : MutableList) + : RecyclerView.Adapter(){ + //constructer has one argument - list of objects that need to be displayed + //it is bound to xml of single item + private lateinit var binding: SingleCommentBinding + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val inflater = LayoutInflater.from(parent.context) + binding=SingleCommentBinding.inflate(inflater,parent,false) + return ViewHolder(binding) + } + override fun onBindViewHolder(holder: ViewHolder, position: Int){ + //sets components of particular item + holder.bind(items[position]) + } + override fun getItemCount(): Int { + try{ + return items.size + }catch (e:Exception){ + return 0 + } + } + inner class ViewHolder(itemView : SingleCommentBinding) : RecyclerView.ViewHolder(itemView.root){ + fun bind(item : CommentSend){ + binding.apply { + tvCommentAuthor.text=item.username + tvCommentText.text=item.comment + } + } + } +} \ 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 ac13bca..cd23a65 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 @@ -1,13 +1,10 @@ package com.example.brzodolokacije.Interfaces +import com.example.brzodolokacije.Models.* import com.example.brzodolokacije.Models.Auth.JustMail import com.example.brzodolokacije.Models.Auth.Login 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 @@ -40,6 +37,12 @@ interface IBackendApi { ):Call @POST("api/Post/posts/{id}/addrating") fun addRating(@Header("Authorization") authHeader:String,@Path("id") id:String,@Body rating: RatingReceive):Call - //@POST("putanja") + @POST("api/Post/posts/{id}/addcomment") + fun addComment(@Header("Authorization") authHeader:String,@Path("id") id:String,@Body rating: CommentReceive):Call + @GET("api/Post/posts/{id}/listcomments") + fun getComments(@Header("Authorization") authHeader:String,@Path("id") id:String):Call> + + +//@POST("putanja") //fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call } \ 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 a1eb5d0..3bbcc0c 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 @@ -33,7 +33,7 @@ data class PostPreview ( var description:String, var views:Int, var ratings:Float, - var comments:List?, + var comments:List?, var images:List //nedostaju datum i vreme kreiranja ):Parcelable @@ -47,6 +47,22 @@ data class Comment ( var timeStamp: LocalDateTime ):Parcelable +@Parcelize +data class CommentSend( + var _id: String, + var userId: String, + var comment: String, + var parentId: String, + //var timestamp:LocalDateTime, + var username: String, + var replies: List? +):Parcelable + +data class CommentReceive( + var comment: String, + var parentId: String +) + data class Rating( var useridval :String, var rating:Int 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 9c30136..cbfc063 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 @@ -227,6 +227,57 @@ android:textColor="@color/black" /> + + + + + + + + + + + + + + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/single_comment.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/single_comment.xml new file mode 100644 index 0000000..f219ea2 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/single_comment.xml @@ -0,0 +1,22 @@ + + + + + + \ No newline at end of file -- cgit v1.2.3 From 4e37b6235815f29b8a4a3cd3309207a5b580431b Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Sun, 13 Nov 2022 21:34:09 +0100 Subject: Omogućen prikaz naslovne fotografije. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Adapters/ShowPostsHomePageAdapter.kt | 20 +++++++++++++++----- .../brzodolokacije/Fragments/FragmentHomePage.kt | 6 +++--- .../app/src/main/res/layout/fragment_home_page.xml | 1 + 3 files changed, 19 insertions(+), 8 deletions(-) (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsHomePageAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsHomePageAdapter.kt index 62a4636..c382cf7 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsHomePageAdapter.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsHomePageAdapter.kt @@ -1,5 +1,6 @@ package com.example.brzodolokacije.Adapters +import android.app.Activity import android.util.Log import android.view.LayoutInflater import android.view.View @@ -7,11 +8,14 @@ import android.view.ViewGroup import android.widget.TextView import androidx.core.net.toUri import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import java.security.AccessController.getContext -class ShowPostsHomePageAdapter(var postPreview:MutableList): - RecyclerView.Adapter() { +class ShowPostsHomePageAdapter(var postPreview:MutableList,val activity:Activity): + RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PostViewHolder { Log.d("main","***********************************************adapter******************************************************") val view=LayoutInflater.from(parent.context).inflate(R.layout.post_item_home_page,parent,false) @@ -26,13 +30,19 @@ class ShowPostsHomePageAdapter(var postPreview:MutableList): return postPreview.size } -} -class PostViewHolder(view: View):RecyclerView.ViewHolder(view){ + +inner class PostViewHolder(view: View):RecyclerView.ViewHolder(view){ private val background:com.google.android.material.imageview.ShapeableImageView=view.findViewById(R.id.ivPIHPBackground) private val locationName:TextView=view.findViewById(R.id.tvPIHPLocationName) fun bindView(postPreview:PostPreview){ //background.setImageURI(postPreview.images[0]._id.to) + if(postPreview.images.isNotEmpty()) { + Glide.with(activity) + .load(RetrofitHelper.baseUrl + "/api/post/image/" + postPreview.images[0]._id) + .into(background) + } locationName.text=postPreview.location.name } -} \ No newline at end of file +} + } \ No newline at end of file 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 3e02442..150adbf 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 @@ -100,7 +100,7 @@ class FragmentHomePage : Fragment() { mostViewedPosts.sortByDescending { it.views } rvPopular.apply { layoutManager= LinearLayoutManager(activity,LinearLayoutManager.HORIZONTAL,false) - adapter= ShowPostsHomePageAdapter(mostViewedPosts) + adapter= ShowPostsHomePageAdapter(mostViewedPosts,requireActivity()) } @@ -113,7 +113,7 @@ class FragmentHomePage : Fragment() { newestPosts.sortBy { it.ratings} rvNewest.apply { layoutManager=LinearLayoutManager(activity,LinearLayoutManager.HORIZONTAL,false) - adapter=ShowPostsHomePageAdapter(newestPosts) + adapter=ShowPostsHomePageAdapter(newestPosts,requireActivity()) } } @@ -125,7 +125,7 @@ class FragmentHomePage : Fragment() { bestRatedPosts.sortByDescending { it.ratings } rvBestRated.apply { layoutManager=LinearLayoutManager(activity,LinearLayoutManager.HORIZONTAL,false) - adapter=ShowPostsHomePageAdapter(bestRatedPosts) + adapter=ShowPostsHomePageAdapter(bestRatedPosts,requireActivity()) } } 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 fcfe90c..ead86e7 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 @@ -75,6 +75,7 @@ android:layout_height="match_parent" android:background="@drawable/rounded_white_button_login" android:hint=" Pretraga" + android:paddingLeft="15dp" android:inputType="textPersonName" />