aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbranislav.radivojevic <wafflemynxyt@gmail.com>2022-11-07 15:28:04 +0100
committerbranislav.radivojevic <wafflemynxyt@gmail.com>2022-11-07 15:28:04 +0100
commitab7855cbe54ccc834a98f2faec5f3d939cdcf532 (patch)
tree2fa4e58d3544de9368f093f08f42fd1a1a91867f
parentff5ff5e2934ce35b70fb75b1077c3fc5d21abbe7 (diff)
parentbf341f4e4f136cf6e82e57286b8477f78f62b9ad (diff)
Merge branch 'develop' of http://gitlab.pmf.kg.ac.rs/BrzoDoLokacije2022/odyssey/brzodolokacije into develop
-rw-r--r--Client/BrzoDoLokacije/app/build.gradle4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml19
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt122
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt42
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostImageAdapter.kt7
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt63
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddNew.kt13
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt8
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt10
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt13
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/PostImage.kt6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_forward.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml69
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml9
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml22
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_new.xml22
18 files changed, 352 insertions, 93 deletions
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..c637d24 100644
--- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml
+++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml
@@ -4,6 +4,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
@@ -19,13 +20,8 @@
android:theme="@style/Theme.BrzoDoLokacije"
android:usesCleartextTraffic="true"
tools:targetApi="31">
- <activity
- android:name=".ActivitySinglePost"
- android:exported="false">
- <meta-data
- android:name="android.app.lib_name"
- android:value="" />
- </activity>
+ <activity android:name=".Activities.ActivitySinglePost"/>
+
<activity
android:name=".Activities.ActivityAddPost"
android:exported="false">
@@ -49,7 +45,14 @@
<activity android:name=".Activities.ActivityForgottenPasswordVerify" />
<activity android:name=".Activities.ActivityForgottenPassword" />
<activity android:name=".Activities.ActivityLoginRegister" />
- <activity android:name=".Activities.NavigationActivity" />
+ <activity
+ android:name=".Activities.NavigationActivity"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
<activity
android:name=".MainActivity"
android:exported="false">
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<Uri>
-
- var paths = mutableListOf<String>()
-
+ private lateinit var showNextImage:Button
+ private lateinit var showPreviousImage:Button
+ private lateinit var switcher: ImageSwitcher
+ private var uploadedImages:ArrayList<Uri?>?=null
+ //private var paths :ArrayList<String?>?=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<View>(R.id.btnActivityAddPostUploadImages) as Button
takePhoto=findViewById<View>(R.id.btnActivityAddPosTakeImage) as Button
- image=findViewById<View>(R.id.image) as ImageView
+ showNextImage=findViewById<View>(R.id.nextImage) as Button
+ showPreviousImage=findViewById<View>(R.id.previousImage) as Button
+ switcher=findViewById<View>(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<uploadedImages!!.size-1){
+ place=place+1
+ switcher.setImageURI(uploadedImages!![place])
+
+ }
+ else{
+ showNextImage.isEnabled=false
+ }
+ }
+
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
//nakon otvaranja
- if(requestCode==100 && resultCode== RESULT_OK){
+ if(requestCode==0 && resultCode== RESULT_OK){
//samo jedna slika
//image.setImageURI(data?.data)
@@ -73,11 +119,63 @@ class ActivityAddPost : AppCompatActivity() {
var _uri: Uri = data!!.clipData!!.getItemAt(i).uri
uploadedImages!!.add(_uri)
}
+
+ // prikaz ucitanih
+ switcher.setImageURI(uploadedImages!![0])
+ place=0
//jedna slika
} else if (data?.getData() != null) {
- uploadedImages.add(data.data!!)
+ uploadedImages!!.add(data.data!!)
+
+ //prikaz jedne ucitane
+ switcher.setImageURI(data.data!!)
}
}
+ }
+
+
+
+ /*
+ private fun showImportedImages(){
+ var cols= listOf<String>(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/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
index 137277f..6a5dfe3 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,33 @@
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 android.os.Handler
+import android.os.Looper
+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.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<java.io.File> = mutableListOf()
+ private var images : MutableList<PostImage> = mutableListOf()
private var layoutManagerVar: RecyclerView.LayoutManager? = null
private var adapterVar: RecyclerView.Adapter<PostImageAdapter.ViewHolder>? = 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 +35,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="TODO"
+ tvLocationType.invalidate()
+ tvLocationParent.text="TODO"
+ 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<java.io.File>)
+class PostImageAdapter(val items : MutableList<PostImage>)
: RecyclerView.Adapter<PostImageAdapter.ViewHolder>(){
//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<java.io.File>)
}
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..134b665 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
@@ -1,21 +1,40 @@
package com.example.brzodolokacije.Adapters
import android.app.Activity
-import android.content.Context
+import android.content.Intent
+import android.graphics.BitmapFactory
+import android.os.AsyncTask
+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.Interfaces.IBackendApi
+import com.example.brzodolokacije.Models.LocationType
import com.example.brzodolokacije.Models.PostPreview
+import com.example.brzodolokacije.Services.RetrofitHelper
+import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.example.brzodolokacije.databinding.PostPreviewBinding
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.launch
+import okhttp3.ResponseBody
+import retrofit2.Call
+import retrofit2.Response
+
class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPreview>)
: RecyclerView.Adapter<ShowPostsAdapter.ViewHolder>() {
+ private lateinit var token: String
+ private lateinit var imageApi: IBackendApi
+
//constructer has one argument - list of objects that need to be displayed
//it is bound to xml of single item
private lateinit var binding: PostPreviewBinding
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
+ imageApi= RetrofitHelper.getInstance()
+ token= SharedPreferencesHelper.getValue("jwt", activity).toString()
binding = PostPreviewBinding.inflate(inflater, parent, false)
return ViewHolder(binding)
}
@@ -23,6 +42,15 @@ class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPrevie
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
//sets components of particular item
holder.bind(items[position])
+ holder.itemView.setOnClickListener {
+ //Toast.makeText(activity,item._id,Toast.LENGTH_LONG).show()
+ val intent:Intent = Intent(activity,ActivitySinglePost::class.java)
+ var b=Bundle()
+ items[position].location.type=LocationType.ADA
+ b.putParcelable("selectedPost", items[position])
+ intent.putExtras(b)
+ activity.startActivity(intent)
+ }
}
@@ -32,12 +60,35 @@ class ShowPostsAdapter (val activity:Activity,val items : MutableList<PostPrevie
binding.apply {
tvTitle.text = item.location.name
tvLocationParent.text = item.location.country
- tvLocationType.text = item.location.type.toString()
+ tvLocationType.text = "TODO"
+
+ val request=imageApi.getImage("Bearer "+token,item.images[0]._id)
+
+ request.enqueue(object : retrofit2.Callback<ResponseBody?> {
+ override fun onResponse(call: Call<ResponseBody?>, response: Response<ResponseBody?>) {
+ if (response.isSuccessful) {
+ val image: ResponseBody = response.body()!!
+ binding.locationImage.setImageBitmap(BitmapFactory.decodeStream(image.byteStream()))
+ Toast.makeText(
+ activity, "prosao zahtev", Toast.LENGTH_LONG
+ ).show()
+ } else {
+ if (response.errorBody() != null)
+ Toast.makeText(
+ activity,
+ response.errorBody()!!.string(),
+ Toast.LENGTH_LONG
+ ).show();
+ }
+ }
+
+ override fun onFailure(call: Call<ResponseBody?>, t: Throwable) {
+ Toast.makeText(
+ activity, t.toString(), Toast.LENGTH_LONG
+ ).show();
+ }
+ })
- itemView.isClickable = true
- itemView.setOnClickListener {
- Toast.makeText(activity,item._id,Toast.LENGTH_LONG).show()
- }
}
}
}
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/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt
index e9b4c08..9a0eedc 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
@@ -3,6 +3,7 @@ package com.example.brzodolokacije.Fragments
import android.content.Context
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
@@ -43,8 +44,9 @@ class FragmentShowPosts : Fragment() {
request.enqueue(object : retrofit2.Callback<MutableList<PostPreview>?> {
override fun onResponse(call: Call<MutableList<PostPreview>?>, response: Response<MutableList<PostPreview>?>) {
if(response.isSuccessful){
- //posts=response.body()!!
- //recyclerView?.adapter=ShowPostsAdapter(requireActivity(),posts)
+ posts=response.body()!!
+ Log.d("main",posts[0].toString())
+ recyclerView?.adapter=ShowPostsAdapter(requireActivity(),posts)
Toast.makeText(
activity, "prosao zahtev", Toast.LENGTH_LONG
).show()
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 bcb6e13..49dda46 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
@@ -7,10 +7,7 @@ import com.example.brzodolokacije.Models.Auth.ResetPass
import com.example.brzodolokacije.Models.PostPreview
import okhttp3.ResponseBody
import retrofit2.Call
-import retrofit2.http.Body
-import retrofit2.http.GET
-import retrofit2.http.Header
-import retrofit2.http.POST
+import retrofit2.http.*
interface IBackendApi {
@POST("/api/auth/login")
@@ -25,6 +22,9 @@ interface IBackendApi {
fun resetpass(@Body obj:ResetPass):Call<ResponseBody>
@GET("/api/post")
fun getPosts(@Header("Authorization") authHeader:String):Call<MutableList<PostPreview>>
+ @Streaming
+ @GET("/api/post/image/{id}")
+ fun getImage(@Header("Authorization") authHeader:String,@Path("id") obj:String):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/Location.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt
index 25125cd..c5fe48a 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt
@@ -1,14 +1,16 @@
package com.example.brzodolokacije.Models
-import com.example.brzodolokacije.Models.LocationType
+import android.os.Parcelable
+import kotlinx.android.parcel.Parcelize
+@Parcelize
data class Location (
var _id:String,
var name:String,
var city:String,
var country:String,
- var adress:String,
+ var address:String,
var latitude:Double,
var longitude:Double,
- var type:LocationType
- )
+ var type:LocationType?
+): Parcelable
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 2ac2619..9b9afaa 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
@@ -1,5 +1,7 @@
package com.example.brzodolokacije.Models
+import android.os.Parcelable
+import kotlinx.android.parcel.Parcelize
import okhttp3.MultipartBody
import java.time.LocalDateTime
@@ -23,25 +25,26 @@ data class PostSend(
var images: List<MultipartBody.Part>
)
-data class PostPreview(
+@Parcelize
+data class PostPreview (
var _id:String,
var ownerId:String,
var location:Location,
var description:String,
var views:Int,
var ratings:Float,
- var comments:List<Comment>,
+ var comments:List<Comment>?,
var images:List<PostImage>
-)
-
+):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/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 @@
+<vector android:autoMirrored="true" android:height="24dp"
+ android:tint="#274352" android:viewportHeight="24"
+ android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M11.67,3.87L9.9,2.1 0,12l9.9,9.9 1.77,-1.77L3.54,12z"/>
+</vector>
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 @@
+<vector android:autoMirrored="true" android:height="24dp"
+ android:tint="#274352" android:viewportHeight="24"
+ android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M6.23,20.23l1.77,1.77l10,-10l-10,-10l-1.77,1.77l8.23,8.23z"/>
+</vector>
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">
- <ImageView
- android:id="@+id/image"
- android:layout_width="200dp"
- android:layout_height="200dp"
- android:layout_weight="1"
- app:layout_constraintBottom_toTopOf="@+id/btnActivityAddPostUploadImages"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
-
<Button
android:id="@+id/btnActivityAddPostUploadImages"
- android:layout_width="match_parent"
- android:layout_height="40dp"
+ android:layout_width="417dp"
+ android:layout_height="61dp"
android:layout_gravity="center"
android:layout_weight="0"
android:text="Importuj"
app:layout_constraintBottom_toTopOf="@+id/btnActivityAddPosTakeImage"
- tools:layout_editor_absoluteX="-16dp" />
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/btnActivityAddPosTakeImage"
- android:layout_width="match_parent"
- android:layout_height="40dp"
+ android:layout_width="417dp"
+ android:layout_height="57dp"
android:layout_gravity="center"
+ android:layout_marginBottom="4dp"
android:layout_weight="0"
+
android:text="Slikaj"
app:layout_constraintBottom_toBottomOf="parent"
- tools:layout_editor_absoluteX="-16dp" />
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="parent" />
+
+ <Button
+ android:id="@+id/nextImage"
+ android:layout_width="wrap_content"
+ android:layout_height="0dp"
+ android:background="@drawable/rounded_transparent_button"
+ android:gravity="right"
+ android:textColor="@color/material_dynamic_primary30"
+ android:padding="30dp"
+ app:icon="@drawable/ic_baseline_arrow_forward"
+ app:iconTint="#072242"
+ app:layout_constraintBottom_toTopOf="@+id/btnActivityAddPostUploadImages"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:ignore="SpeakableTextPresentCheck" />
+
+ <Button
+ android:id="@+id/previousImage"
+ android:layout_width="wrap_content"
+ android:layout_height="0dp"
+ android:padding="30dp"
+
+ android:gravity="left"
+ android:background="@drawable/rounded_transparent_button"
+ android:textColor="@color/material_dynamic_primary30"
+ app:icon="@drawable/ic_baseline_arrow_back"
+ app:iconTint="#0E283C"
+ app:layout_constraintBottom_toTopOf="@+id/btnActivityAddPostUploadImages"
+ app:layout_constraintEnd_toStartOf="@+id/nextImage"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:ignore="SpeakableTextPresentCheck" />
+
+ <ImageSwitcher
+ android:id="@+id/switcher"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:layout_constraintBottom_toTopOf="@+id/btnActivityAddPostUploadImages"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml
new file mode 100644
index 0000000..c96961e
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Activities.ActivityCapturePost">
+
+</androidx.constraintlayout.widget.ConstraintLayout> \ 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">
<TextView
- android:id="@+id/textView6"
+ android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Naslov" />
<TextView
- android:id="@+id/textView7"
+ android:id="@+id/tvLocationType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="11dp"
android:text="tip lokacije" />
<TextView
- android:id="@+id/textView8"
+ android:id="@+id/tvLocationParent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Drzava, grad" />
@@ -51,35 +51,35 @@
android:orientation="horizontal">
<ImageView
- android:id="@+id/imageView8"
+ 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/imageView9"
+ 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/imageView10"
+ 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/imageView11"
+ 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/imageView12"
+ android:id="@+id/star5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
@@ -87,7 +87,7 @@
</LinearLayout>
<TextView
- android:id="@+id/textView9"
+ android:id="@+id/tvRating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
@@ -96,7 +96,7 @@
tools:layout_editor_absoluteY="0dp" />
<TextView
- android:id="@+id/textView10"
+ android:id="@+id/tvNumberOfRatings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="(10,500)"
@@ -113,7 +113,7 @@
android:elevation="5dp">
<TextView
- android:id="@+id/textView11"
+ android:id="@+id/tvDescription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView"
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_new.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_new.xml
index 5cfda04..579afdb 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_new.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_new.xml
@@ -10,6 +10,7 @@
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent" />
+
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
@@ -22,11 +23,11 @@
android:stateListAnimator="@null"
android:text="Nova lokacija"
android:textColor="@color/cardview_dark_background"
- app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintBottom_toTopOf="@+id/flFragmentAddNewFragmentContainer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/btnFragmentAddNewNewPost"
app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.00999999" />
+ app:layout_constraintVertical_bias="0.997" />
<Button
android:id="@+id/btnFragmentAddNewNewPost"
@@ -37,33 +38,36 @@
android:text="Nova objava"
android:textColor="@color/cardview_dark_background"
- app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintBottom_toTopOf="@+id/flFragmentAddNewFragmentContainer"
app:layout_constraintEnd_toStartOf="@+id/btnFragmentAddNewNewLocation"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.00999999" />
+ app:layout_constraintVertical_bias="0.997" />
<View
android:id="@+id/divider3"
android:layout_width="409dp"
android:layout_height="1dp"
android:background="?android:attr/listDivider"
+ app:layout_constraintBottom_toTopOf="@+id/flFragmentAddNewFragmentContainer"
app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/btnFragmentAddNewNewPost" />
+ app:layout_constraintTop_toBottomOf="@+id/btnFragmentAddNewNewPost"
+ app:layout_constraintVertical_bias="1.0" />
<FrameLayout
android:id="@+id/flFragmentAddNewFragmentContainer"
- android:layout_width="409dp"
- android:layout_height="673dp"
+ android:layout_width="411dp"
+ android:layout_height="309dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent">
</FrameLayout>
- </androidx.constraintlayout.widget.ConstraintLayout>
-
+ </androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout> \ No newline at end of file