From 37f735cc805d63128263d417f8150e77b4b6272a Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Sun, 6 Nov 2022 23:44:51 +0100 Subject: omogucen prelaz na klik na stranu objave, prenose se podaci o objavi, ali se ne prikazuju jos #16 --- Client/BrzoDoLokacije/app/build.gradle | 4 ++ .../app/src/main/AndroidManifest.xml | 11 +++++- .../Activities/ActivitySinglePost.kt | 43 ++++++++++++++++------ .../brzodolokacije/Adapters/PostImageAdapter.kt | 7 ++-- .../brzodolokacije/Adapters/ShowPostsAdapter.kt | 15 ++++++-- .../com/example/brzodolokacije/Models/Location.kt | 5 ++- .../java/com/example/brzodolokacije/Models/Post.kt | 11 ++++-- .../com/example/brzodolokacije/Models/PostImage.kt | 6 ++- .../src/main/res/layout/activity_single_post.xml | 22 +++++------ 9 files changed, 87 insertions(+), 37 deletions(-) (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/build.gradle b/Client/BrzoDoLokacije/app/build.gradle index f6faf0d..fa85692 100644 --- a/Client/BrzoDoLokacije/app/build.gradle +++ b/Client/BrzoDoLokacije/app/build.gradle @@ -1,6 +1,7 @@ plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' + id 'org.jetbrains.kotlin.android.extensions' } android { @@ -34,6 +35,9 @@ android { buildFeatures { viewBinding true } + androidExtensions { + experimental = true + } } dependencies { diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index 886666d..0397ee4 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -20,7 +20,7 @@ android:usesCleartextTraffic="true" tools:targetApi="31"> - + + + + + + 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 137277f..be4a73d 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,30 +1,32 @@ package com.example.brzodolokacije.Activities -import android.content.Context -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.recyclerview.widget.LinearLayoutManager +import android.os.Handler +import android.os.Looper +import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Adapters.PostImageAdapter +import com.example.brzodolokacije.Models.PostImage +import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.R import com.example.brzodolokacije.databinding.ActivitySinglePostBinding + class ActivitySinglePost : AppCompatActivity() { private lateinit var binding: ActivitySinglePostBinding - private var images : MutableList = mutableListOf() + private var images : MutableList = mutableListOf() private var layoutManagerVar: RecyclerView.LayoutManager? = null private var adapterVar: RecyclerView.Adapter? = null private var recyclerView: RecyclerView?=null + private lateinit var post:PostPreview override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + binding=ActivitySinglePostBinding.inflate(layoutInflater) setContentView(R.layout.activity_single_post) - //load data for the list - loadData() + post= intent.extras?.getParcelable("selectedPost")!! + /*//load data for the list + //instantiate adapter and linearLayout adapterVar= PostImageAdapter(images) layoutManagerVar= LinearLayoutManager(this) @@ -32,10 +34,27 @@ class ActivitySinglePost : AppCompatActivity() { // set recyclerView attributes recyclerView?.setHasFixedSize(true) recyclerView?.layoutManager = layoutManagerVar - recyclerView?.adapter = adapterVar + recyclerView?.adapter = adapterVar*/ + loadTextComponents() + } + + private fun loadImages(){ + } - private fun loadData() { + private fun loadTextComponents() { + binding.apply { + tvTitle.text= post.location.name + tvTitle.invalidate() + tvLocationType.text=post.location.type.name + tvLocationType.invalidate() + tvLocationParent.text=post.location.country + tvLocationParent.invalidate() + tvRating.text=post.ratings.toString() + tvRating.invalidate() + tvNumberOfRatings.text=post.ratings.toString() + tvNumberOfRatings.invalidate() + } } } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostImageAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostImageAdapter.kt index b2eaa30..3d2bf46 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostImageAdapter.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostImageAdapter.kt @@ -6,10 +6,11 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Models.Post +import com.example.brzodolokacije.Models.PostImage import com.example.brzodolokacije.databinding.PostImageBinding import com.example.brzodolokacije.databinding.PostPreviewBinding -class PostImageAdapter(val items : MutableList) +class PostImageAdapter(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 @@ -25,9 +26,9 @@ class PostImageAdapter(val items : MutableList) } override fun getItemCount() = items.size inner class ViewHolder(itemView : PostImageBinding) : RecyclerView.ViewHolder(itemView.root){ - fun bind(item : java.io.File){ + fun bind(item : PostImage){ binding.apply { - locationImage.setImageBitmap(BitmapFactory.decodeStream(item.inputStream())) + //locationImage.setImageBitmap(BitmapFactory.decodeStream(item.inputStream())) } } } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt index 9da0014..8e6093e 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt @@ -2,10 +2,13 @@ package com.example.brzodolokacije.Adapters import android.app.Activity import android.content.Context +import android.content.Intent +import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup import android.widget.Toast import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Activities.ActivitySinglePost import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.databinding.PostPreviewBinding @@ -23,6 +26,14 @@ class ShowPostsAdapter (val activity:Activity,val items : MutableList ) -data class PostPreview( +@Parcelize +data class PostPreview ( var _id:String, var ownerId:String, var location:Location, @@ -32,16 +35,16 @@ data class PostPreview( var ratings:Float, var comments:List, var images:List -) - +):Parcelable +@Parcelize data class Comment ( var userId:String, var comment:String, var parent:Comment, var timeStamp: LocalDateTime -) +):Parcelable data class Rating( var useridval :String, diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/PostImage.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/PostImage.kt index d024272..93326b3 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/PostImage.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/PostImage.kt @@ -1,6 +1,10 @@ package com.example.brzodolokacije.Models +import android.os.Parcelable +import kotlinx.android.parcel.Parcelize + +@Parcelize data class PostImage ( var _id:String, var path:String - ) \ No newline at end of file + ): Parcelable \ No newline at end of file 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 5688acd..d323d0c 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 @@ -23,20 +23,20 @@ android:orientation="vertical"> @@ -51,35 +51,35 @@ android:orientation="horizontal"> Date: Mon, 7 Nov 2022 02:16:20 +0100 Subject: Omogućen pregled fotografija učitanih iz galerije. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/src/main/AndroidManifest.xml | 9 ++ .../brzodolokacije/Activities/ActivityAddPost.kt | 122 +++++++++++++++++++-- .../Activities/ActivityCapturePost.kt | 11 ++ .../brzodolokacije/Fragments/FragmentAddNew.kt | 13 ++- .../main/res/drawable/ic_baseline_arrow_back.xml | 5 + .../res/drawable/ic_baseline_arrow_forward.xml | 5 + .../app/src/main/res/layout/activity_add_post.xml | 69 +++++++++--- .../src/main/res/layout/activity_capture_post.xml | 9 ++ .../app/src/main/res/layout/fragment_add_new.xml | 22 ++-- 9 files changed, 227 insertions(+), 38 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_forward.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index 00ee960..2af585f 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -4,9 +4,11 @@ + + + + + diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt index 0ada26a..c81e7fe 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt @@ -1,14 +1,19 @@ package com.example.brzodolokacije.Activities import android.Manifest +import android.content.Context import android.content.Intent import android.content.pm.PackageManager +import android.database.Cursor +import android.graphics.BitmapFactory import android.net.Uri import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.provider.MediaStore +import android.provider.MediaStore.Audio.Media import android.view.View -import android.widget.Button -import android.widget.ImageView +import android.view.ViewGroup +import android.widget.* import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import com.example.brzodolokacije.Models.PostImage @@ -19,18 +24,33 @@ import java.net.URI class ActivityAddPost : AppCompatActivity() { private lateinit var uploadFromGallery: Button private lateinit var takePhoto: Button - private lateinit var image:ImageView - private lateinit var uploadedImages:ArrayList - - var paths = mutableListOf() - + private lateinit var showNextImage:Button + private lateinit var showPreviousImage:Button + private lateinit var switcher: ImageSwitcher + private var uploadedImages:ArrayList?=null + //private var paths :ArrayList?=null + private var place=0; override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_add_post) + Toast.makeText( + applicationContext, "Add new ", Toast.LENGTH_LONG + ).show(); + uploadedImages= ArrayList() + + //paths= ArrayList() uploadFromGallery=findViewById(R.id.btnActivityAddPostUploadImages) as Button takePhoto=findViewById(R.id.btnActivityAddPosTakeImage) as Button - image=findViewById(R.id.image) as ImageView + showNextImage=findViewById(R.id.nextImage) as Button + showPreviousImage=findViewById(R.id.previousImage) as Button + switcher=findViewById(R.id.switcher) as ImageSwitcher + + switcher?.setFactory{ + val imgView = ImageView(applicationContext) + imgView.scaleType = ImageView.ScaleType.CENTER_CROP + imgView.setPadding(8, 8, 8, 8) + imgView} //dodavanje iz galerije uploadFromGallery.setOnClickListener{ @@ -45,9 +65,9 @@ class ActivityAddPost : AppCompatActivity() { intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) intent.action = Intent.ACTION_GET_CONTENT intent.type="image/*" - startActivityForResult(Intent.createChooser(intent,"Izaberi fotografije"),100) + startActivityForResult(Intent.createChooser(intent,"Izaberi fotografije"),0) } - +/* //fotografisanje takePhoto.setOnClickListener { //provera da li je odobrena upotreba kamere @@ -56,12 +76,38 @@ class ActivityAddPost : AppCompatActivity() { } } +*/ + //prikaz ucitanih + // + showPreviousImage.setOnClickListener{ + if(place>0){ + place=place-1 + switcher.setImageURI(uploadedImages!![place]) + + } + else{ + showPreviousImage.isEnabled=false + } + } + + + showNextImage.setOnClickListener{ + if(place(MediaStore.Images.Thumbnails.DATA).toTypedArray() + rs= contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,cols,null,null,null)!! + imagesGrid.adapter=ImageAdapter(applicationContext) + } + + inner class ImageAdapter:BaseAdapter{ + lateinit var context: Context + + constructor(contect: Context){ + this.context=context + } + + override fun getCount(): Int { + return rs.count + } + + override fun getItem(p0: Int): Any { + return p0 + } + + override fun getItemId(p0: Int): Long { + return p0 as Long } + override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View { + //prikaz slike u GridView-u + + //generisanje jednog imageView-a + var imageView=ImageView(context) + rs.moveToPosition(p0) + var path=rs.getString(0) + var bitmap=BitmapFactory.decodeFile(path) + + imageView.setImageBitmap(bitmap) + imageView.layoutParams=AbsListView.LayoutParams(300,300) + return imageView + + } + + }*/ + } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt new file mode 100644 index 0000000..8d639a8 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt @@ -0,0 +1,11 @@ +package com.example.brzodolokacije.Activities + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle + +class ActivityCapturePost : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_capture_post) + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddNew.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddNew.kt index b1b257b..8eaa469 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddNew.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddNew.kt @@ -1,12 +1,17 @@ package com.example.brzodolokacije.Fragments +import android.content.Intent import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import android.widget.Toast import androidx.fragment.app.FragmentTransaction +import com.example.brzodolokacije.Activities.ActivityAddPost +import com.example.brzodolokacije.Activities.ActivityForgottenPassword import com.example.brzodolokacije.R // TODO: Rename parameter arguments, choose names that match @@ -36,11 +41,17 @@ class FragmentAddNew : Fragment() { addNewPost.setOnClickListener{ + Toast.makeText( + activity, "Add new post", Toast.LENGTH_LONG + ).show(); + val intent = Intent (getActivity(), ActivityAddPost::class.java) + getActivity()?.startActivity(intent) +/* var fm: FragmentTransaction =childFragmentManager.beginTransaction() fm.replace(R.id.flFragmentAddNewFragmentContainer, FragmentAddPost()) - fm.commit() + fm.commit()*/ } diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back.xml new file mode 100644 index 0000000..d9b7ee0 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_forward.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_forward.xml new file mode 100644 index 0000000..80b796f --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_forward.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml index da38262..5727fb1 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml @@ -6,34 +6,71 @@ android:layout_height="match_parent" tools:context=".Activities.ActivityAddPost"> - -