diff options
author | branislav.radivojevic <wafflemynxyt@gmail.com> | 2022-11-07 15:28:04 +0100 |
---|---|---|
committer | branislav.radivojevic <wafflemynxyt@gmail.com> | 2022-11-07 15:28:04 +0100 |
commit | ab7855cbe54ccc834a98f2faec5f3d939cdcf532 (patch) | |
tree | 2fa4e58d3544de9368f093f08f42fd1a1a91867f | |
parent | ff5ff5e2934ce35b70fb75b1077c3fc5d21abbe7 (diff) | |
parent | bf341f4e4f136cf6e82e57286b8477f78f62b9ad (diff) |
Merge branch 'develop' of http://gitlab.pmf.kg.ac.rs/BrzoDoLokacije2022/odyssey/brzodolokacije into develop
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 |