aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
authorTAMARA JERINIC <tamara.jerinic@gmail.com>2022-12-13 03:42:01 +0100
committerTAMARA JERINIC <tamara.jerinic@gmail.com>2022-12-13 03:42:01 +0100
commit61f1cd36b0d2263cd1c19f9d44004131639ae776 (patch)
tree28add109b59248a9174e28bcb3c27cc2a18e8220 /Client
parent7e322b41ab26c0b1b0a4c7bacca24d1e63530cd7 (diff)
parent5ffa30b80f06a87eef13dd830959a4289c787a35 (diff)
Merge branch 'develop' of http://gitlab.pmf.kg.ac.rs/BrzoDoLokacije2022/odyssey/brzodolokacije into develop
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/build.gradle1
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt16
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt8
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt67
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt72
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/CommentsAdapter.kt5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostComments.kt1
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt82
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt77
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt111
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml12
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml25
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml9
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml46
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml46
22 files changed, 469 insertions, 139 deletions
diff --git a/Client/BrzoDoLokacije/app/build.gradle b/Client/BrzoDoLokacije/app/build.gradle
index 0bc0fe8..2db362d 100644
--- a/Client/BrzoDoLokacije/app/build.gradle
+++ b/Client/BrzoDoLokacije/app/build.gradle
@@ -24,6 +24,7 @@ android {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ signingConfig signingConfigs.debug
}
}
compileOptions {
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt
index b0b7f5e..6dfbeb0 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt
@@ -46,13 +46,19 @@ class ActivityForgottenPassword : AppCompatActivity() {
val intent = Intent(cont, ActivityForgottenPasswordVerify::class.java)
intent.putExtra("email", emailString)
startActivity(intent)
+ }else{
+ Toast.makeText(this@ActivityForgottenPassword,"Email ne postoji",Toast.LENGTH_LONG).show()
}
}
override fun onFailure(call: Call<ResponseBody?>, t: Throwable) {
+ Toast.makeText(this@ActivityForgottenPassword,"Email ne postoji",Toast.LENGTH_LONG).show()
}
})
}
+ else{
+ Toast.makeText(this@ActivityForgottenPassword,"Unesite validan email",Toast.LENGTH_LONG).show()
+ }
}
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt
index a1db97f..a519a32 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt
@@ -1,6 +1,7 @@
package com.example.brzodolokacije.Activities
import android.content.Intent
+import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
@@ -36,6 +37,19 @@ class ActivityForgottenPasswordVerify : AppCompatActivity() {
var pwstr=pw.text.toString().trim()
var pwchkstr=pwchk.text.toString().trim()
var kodstr=kod.text.toString().trim()
+ if(kodstr.isEmpty())
+ {
+ kod.hint = "Unesite kod"
+ kod.setHintTextColor(Color.RED)
+ }
+ if(pwstr.isEmpty()){
+ pw.hint = "Unesite novu lozinku"
+ pw.setHintTextColor(Color.RED)
+ }
+ if(pwchkstr.isEmpty()){
+ pwchk.hint = "Potvrdite novu lozinku"
+ pwchk.setHintTextColor(Color.RED)
+ }
if(!kodstr.isEmpty() && checkPassword(pwstr,pwchkstr)){
var resetData= ResetPass(email!!,kodstr,pwstr)
@@ -47,6 +61,8 @@ class ActivityForgottenPasswordVerify : AppCompatActivity() {
if(response.code()==200){
intent = Intent(cont, ActivityLoginRegister::class.java)
startActivity(intent)
+ }else{
+ Toast.makeText(this@ActivityForgottenPasswordVerify,"Nevalidan kod",Toast.LENGTH_LONG).show()
}
}
override fun onFailure(call: Call<ResponseBody?>, t: Throwable) {
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt
index d1f1e4c..f1c704e 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt
@@ -1,5 +1,6 @@
package com.example.brzodolokacije.Activities
+import LinePagerIndicatorDecoration
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.os.Build
@@ -7,6 +8,7 @@ import android.os.Bundle
import android.provider.MediaStore
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.PagerSnapHelper
import androidx.recyclerview.widget.RecyclerView
@@ -17,6 +19,7 @@ import com.bumptech.glide.request.transition.Transition
import com.example.brzodolokacije.Adapters.OpenedPostImageAdapter
import com.example.brzodolokacije.Models.PostImage
import com.example.brzodolokacije.Models.PostPreview
+import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.databinding.ActivityOpenedImagesBinding
import java.util.*
@@ -78,6 +81,11 @@ class ActivityOpenedImages : AppCompatActivity() {
snap.attachToRecyclerView(rvImages)
rvImages!!.layoutManager=linearLayout
rvImages!!.adapter=adapter
+ //tackice
+ var color = ContextCompat.getColor(this@ActivityOpenedImages, R.color.unfollow)
+ var color1 = ContextCompat.getColor(this@ActivityOpenedImages, R.color.button_main)
+ if(images!!.size>1)
+ rvImages!!.addItemDecoration(LinePagerIndicatorDecoration(10,10,100,color,color1))
}
} \ 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 040edf3..d2a820f 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
@@ -1,16 +1,21 @@
package com.example.brzodolokacije.Activities
+import LinePagerIndicatorDecoration
import android.content.Intent
import android.graphics.Color
-import android.graphics.drawable.GradientDrawable
import android.os.Bundle
import android.preference.PreferenceManager
+import android.util.Log
import android.util.TypedValue
+import android.view.GestureDetector
+import android.view.MotionEvent
import android.view.ViewGroup
+import android.view.ViewGroup.MarginLayoutParams
import android.widget.*
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
+import androidx.core.view.GestureDetectorCompat
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.core.view.setMargins
@@ -35,6 +40,7 @@ import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.example.brzodolokacije.databinding.ActivitySinglePostBinding
import com.google.gson.Gson
+import kotlinx.android.synthetic.main.activity_single_post.*
import org.osmdroid.config.Configuration
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
import org.osmdroid.util.GeoPoint
@@ -70,7 +76,7 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener {
private lateinit var btnChangeHeightUp:ImageView
private lateinit var btnChangeHeightDown:ImageView
private lateinit var fragmentContainer: FrameLayout
-
+ //private lateinit var detector: GestureDetectorCompat
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding=ActivitySinglePostBinding.inflate(layoutInflater)
@@ -89,16 +95,22 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener {
btnChangeHeightUp.isClickable=true
linearLayout2=findViewById(R.id.linearLayout2)
+
linearLayout2.setOnClickListener {
linearLayout2.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT;
}
-
+ //detector= GestureDetectorCompat(this,SwipeGestureListener())
//instantiate adapter and linearLayout
adapterImages= PostImageAdapter(this@ActivitySinglePost, post.images as MutableList<PostImage>)
layoutManagerImages= LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false)
recyclerViewImages = binding.rvMain
+ //tackice image
+ var color = ContextCompat.getColor(this@ActivitySinglePost, R.color.unfollow)
+ var color1 = ContextCompat.getColor(this@ActivitySinglePost, R.color.button_main)
+ if(post.images.size>1)
+ recyclerViewImages!!.addItemDecoration(LinePagerIndicatorDecoration(10,10,100,color,color1))
//DODATI SLIKE
recyclerViewImages?.setHasFixedSize(true)
@@ -190,8 +202,53 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener {
R.color.dark_blue_transparent,
R.color.purple_700
)
+
+ btnChangeHeightUp.performClick()
+ btnChangeHeightDown.performClick()
+ }
+
+ /*override fun onTouchEvent(event: MotionEvent?): Boolean {
+ return if(event?.let { detector.onTouchEvent(it) } == true){
+ Log.d("testing swipeup","------------------------")
+ true
+ }
+ else return super.onTouchEvent(event)
}
+ inner class SwipeGestureListener : GestureDetector.SimpleOnGestureListener() {
+ private val SWIPE_THRESHOLD = 20
+ private val SWIPE_VELOCITY_THRESHOLD = 20
+ override fun onFling(
+ downEvent: MotionEvent,
+ moveEvent: MotionEvent,
+ velocityX: Float,
+ velocityY: Float
+ ): Boolean {
+
+ Log.d("testing swipeup","------------------------")
+ var diffX = moveEvent?.x?.minus(downEvent!!.x) ?: 0.0F
+ var diffY = moveEvent?.y?.minus(downEvent!!.y) ?: 0.0F
+
+ if (Math.abs(diffX) < Math.abs(diffY)) {
+ if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
+ if (diffY > 0 ) {
+ //top to bot
+
+ }
+ else {
+ //bot to top
+ btnChangeHeightUp.performClick()
+ }
+
+ }
+ return true
+ }else{
+ return super.onFling(downEvent, moveEvent, velocityX, velocityY)
+ }
+ return super.onFling(downEvent, moveEvent, velocityX, velocityY)
+ }
+ }*/
+
fun setUpFirstFragment(){
var fm: FragmentTransaction =supportFragmentManager.beginTransaction()
val fragment = FragmentSinglePostDescription()
@@ -212,6 +269,8 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener {
loadTags()
loadFavourite()
setUpFirstFragment()
+ btnChangeHeightUp.performClick()
+ btnChangeHeightDown.performClick()
swipeRefreshLayout.isRefreshing=false
}
@@ -317,7 +376,7 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener {
tvNumberOfRatings.invalidate()
//tvRating.text=String.format("%.2f",data.ratings)
//tvNumberOfRatings.text=String.format("%d",data.ratingscount)
- tvDatePosted.text=SimpleDateFormat("dd/MM/yyyy").format(post.lastViewed)
+ tvDatePosted.text=SimpleDateFormat("dd/MM/yyyy").format(post.createdAt)
tvDatePosted.invalidate()
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt
index 49c61c7..18ff392 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt
@@ -1,7 +1,6 @@
package com.example.brzodolokacije.Activities
import android.Manifest
-import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
@@ -132,11 +131,6 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {
fun setListeners(){
- findViewById<ImageButton>(R.id.addNewMessage).setOnClickListener {
- val intent: Intent = Intent(this@ChatActivity,ChatActivityConversation::class.java)
- intent.putExtra("receiverId","")
- startActivity(intent)
- }
findViewById<ImageButton>(R.id.btnBack).setOnClickListener {
finish()
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt
index 3a52cc4..723980b 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt
@@ -4,7 +4,6 @@ import android.content.Intent
import android.graphics.Bitmap
import android.os.Bundle
import android.util.Log
-import android.view.View
import android.widget.EditText
import android.widget.ImageButton
import android.widget.Toast
@@ -72,63 +71,6 @@ class ChatActivityConversation : AppCompatActivity() {
var messageContent=findViewById<EditText>(R.id.etNewMessage).text.trim().toString()
val Api= RetrofitHelper.getInstance()
if(!messageContent.isNullOrEmpty()){
- if(userId.isNullOrEmpty() || userId.equals("null")){
- //zahtev sa username=om
- receiverUsername=findViewById<EditText>(R.id.etReceiverUsername).text.toString()
- val request=Api.getProfile("Bearer "+token,
- receiverUsername!!
- )
- request.enqueue(object : retrofit2.Callback<UserReceive?> {
- override fun onResponse(call: Call<UserReceive?>, response: Response<UserReceive?>) {
- if(response.isSuccessful()){
- //zahtev da se posalje poruka
- var user:UserReceive=response.body()!!
- if(user._id==JWT(SharedPreferencesHelper.getValue("jwt",this@ChatActivityConversation)!!).claims["id"]?.asString()!!){
- Toast.makeText(this@ChatActivityConversation,"Ne mozete slati poruku sami sebi.",Toast.LENGTH_LONG).show()
- }
- else{
- userId=user._id
- setHeader()
- var message= MessageSend(userId!!,messageContent)
- val request2=Api.sendMessage("Bearer "+token,
- message
- )
- request2.enqueue(object : retrofit2.Callback<Message?> {
- override fun onResponse(call: Call<Message?>, response: Response<Message?>) {
- if(response.isSuccessful()){
- //zahtev da se posalje poruka
- var responseMessage=response.body()
- var cal: Calendar = Calendar.getInstance()
- cal.time=responseMessage?.timestamp
- responseMessage?.usableTimeStamp=cal
- dbConnection?.addMessage(responseMessage!!,username=user.username)
- requestMessages()
- binding.etNewMessage.text?.clear()
-
- }
- else{
- Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime1.",Toast.LENGTH_LONG).show()
- }
- }
-
- override fun onFailure(call: Call<Message?>, t: Throwable) {
- Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime2.",Toast.LENGTH_LONG).show()
- }
- })
- }
- }
- else{
- Log.d("main",response.message())
- //Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime3.",Toast.LENGTH_LONG).show()
- }
- }
-
- override fun onFailure(call: Call<UserReceive?>, t: Throwable) {
- Toast.makeText(this@ChatActivityConversation,"fail.",Toast.LENGTH_LONG).show()
- }
- })
- }
- else{
//zahtev da se posalje poruka
var message= MessageSend(userId!!,messageContent)
val request2=Api.sendMessage("Bearer "+token,
@@ -155,8 +97,6 @@ class ChatActivityConversation : AppCompatActivity() {
Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime.",Toast.LENGTH_LONG).show()
}
})
- }
-
}
}
binding.llHeader.setOnClickListener {
@@ -172,20 +112,12 @@ class ChatActivityConversation : AppCompatActivity() {
private fun setHeader(){
if(userId.isNullOrEmpty() || userId.equals("null")){
- binding.cvParentUsername.visibility= View.VISIBLE
- binding.cvParentUsername.forceLayout()
- binding.llHeader.visibility= View.GONE
- binding.llHeader.invalidate()
- binding.llHeader.forceLayout()
+ binding.tvFragmentTitle.text="Nije nađen korisnik"
+ binding.tvFragmentTitle.invalidate()
}
else{
- binding.llHeader.visibility= View.VISIBLE
- binding.llHeader.invalidate()
- binding.llHeader.forceLayout()
binding.tvFragmentTitle.text=receiverUsername
binding.tvFragmentTitle.invalidate()
- binding.cvParentUsername.visibility= View.GONE
- binding.cvParentUsername.forceLayout()
}
binding.btnBack.setOnClickListener {
finish()
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt
index a8fe567..82fd7a4 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt
@@ -137,6 +137,10 @@ class MapsActivity : AppCompatActivity() {
}
fun uploadLocation(locationName:String){
+ if(locationName.isNullOrEmpty() ||locationName.toString().trim()=="") {
+ Toast.makeText(this@MapsActivity,"Morate uneti naziv lokacije",Toast.LENGTH_SHORT).show()
+ return
+ }
val api =RetrofitHelper.getInstance()
var geocoder=GeocoderHelper.getInstance()
var loc1=geocoder!!.getFromLocation(locLatitude!!,locLongitude!!,1)
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
index ea5a851..143b4a2 100644
--- 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
@@ -11,6 +11,7 @@ import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import android.widget.Toast
+import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
@@ -21,6 +22,7 @@ import com.example.brzodolokacije.Interfaces.IBackendApi
import com.example.brzodolokacije.Models.CommentReceive
import com.example.brzodolokacije.Models.CommentSend
import com.example.brzodolokacije.Models.UserReceive
+import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.example.brzodolokacije.databinding.SingleCommentBinding
@@ -58,6 +60,8 @@ class CommentsAdapter (val items : MutableList<CommentSend>,val activity: Activi
inner class ViewHolder(itemView : SingleCommentBinding) : RecyclerView.ViewHolder(itemView.root){
fun bind(item : CommentSend){
binding.apply {
+ var color = ContextCompat.getColor(activity, R.color.purple_500)
+ etReplyCount.setTextColor(color)
tvCommentAuthor.text=item.username
tvCommentText.text=item.comment
Log.d("info",tvCommentText.text.toString()+binding.toString())
@@ -128,6 +132,7 @@ class CommentsAdapter (val items : MutableList<CommentSend>,val activity: Activi
}
}
fun setReplyCount(position: Int){
+
if(items[position].replies!!.count()==1)
itemView.etReplyCount.text=items[position].replies!!.count().toString() + " odgovor"
else
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt
index fd5aa33..d0a9818 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt
@@ -45,7 +45,7 @@ class FragmentHome : Fragment(R.layout.fragment_home) {
val rootView = inflater?.inflate(R.layout.fragment_home, container, false)
recyclerView = rootView?.findViewById(R.id.rvMain)
// set recyclerView attributes
- recyclerView?.setHasFixedSize(true)
+// recyclerView?.setHasFixedSize(true)
recyclerView?.layoutManager = layoutManagerVar
recyclerView?.adapter = adapterVar
return rootView
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 cf8eb22..3b976ad 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
@@ -198,7 +198,7 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener {
val rootView = inflater?.inflate(R.layout.fragment_show_posts, container, false)
recyclerView = rootView?.findViewById(R.id.rvMain)
// set recyclerView attributes
- recyclerView?.setHasFixedSize(true)
+// recyclerView?.setHasFixedSize(true)
//recyclerView?.layoutManager = linearManagerVar
recyclerView?.layoutManager = linearManagerVar
recyclerView?.adapter = adapterVar
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostComments.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostComments.kt
index ca4505f..bdca6cd 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostComments.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostComments.kt
@@ -128,6 +128,7 @@ class FragmentSinglePostComments : Fragment() {
})
}
else{
+ newComment.replies= mutableListOf()
(adapterComments as CommentsAdapter).items.add(0,newComment)
recyclerViewComments?.adapter=adapterComments
addedComment()
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt
index 376517c..f2c817a 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt
@@ -1,30 +1,37 @@
package com.example.brzodolokacije.Fragments
import android.os.Bundle
+import android.text.Editable
+import android.text.TextWatcher
import android.util.Log
-import androidx.fragment.app.Fragment
+import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AutoCompleteTextView
+import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.brzodolokacije.Adapters.FollowersAdapter
-import com.example.brzodolokacije.Adapters.ShowPostsHomePageAdapter
-import com.example.brzodolokacije.Models.PostPreview
import com.example.brzodolokacije.Models.UserReceive
import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
+import com.google.android.material.button.MaterialButton
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
+
class FragmentUserFollowers : Fragment() {
private lateinit var followers:MutableList<UserReceive>
+ private lateinit var searchedFollowers:MutableList<UserReceive>
private lateinit var rvFollowers:RecyclerView
private lateinit var userId:String
private lateinit var showMy:String
+ private lateinit var searchBar:AutoCompleteTextView
+ private lateinit var searchButton:MaterialButton
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -37,6 +44,8 @@ class FragmentUserFollowers : Fragment() {
userId = bundle!!.getString("userId").toString()
showMy = bundle!!.getString("showMy").toString().trim()
rvFollowers=view.findViewById(R.id.rvFragmentUserFollowers)
+ searchBar=view.findViewById(R.id.FragmentFollowersSearchBar)
+ searchButton=view.findViewById(R.id.FragmentFollowersSearchBButton)
if(showMy=="yes"){
getFollowersWithoutId()
@@ -44,9 +53,63 @@ class FragmentUserFollowers : Fragment() {
else if(showMy=="no") {
getFollowers()
}
+ searchButton.setOnClickListener {
+ searchText()
+ }
+ searchBar.setOnKeyListener(View.OnKeyListener { v1, keyCode, event -> // If the event is a key-down event on the "enter" button
+ if (event.action === KeyEvent.ACTION_DOWN &&
+ keyCode == KeyEvent.KEYCODE_ENTER
+ ) {
+ // Perform action on key press
+ searchText()
+ return@OnKeyListener true
+ }
+ false
+ })
+
+ searchBar.addTextChangedListener(object : TextWatcher {
+ override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
+ }
+
+ override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
+ searchText()
+ if(count==0)
+ if(showMy=="yes"){
+ getFollowersWithoutId()
+ }
+ else if(showMy=="no") {
+ getFollowers()
+ }
+ }
+
+ override fun afterTextChanged(s: Editable) {
+ }
+ })
return view
}
+ fun searchText(){
+ if(searchBar.text==null || searchBar.text.isNullOrEmpty() || searchBar.text.toString().trim()=="")
+ return
+ if(!this::followers.isInitialized)
+ return
+ var text=searchBar.text.toString().trim()
+ searchedFollowers= mutableListOf()
+ for(user in followers){
+ if(user.username.contains(text))
+ searchedFollowers.add(user)
+ }
+ rvFollowers.apply {
+ layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false)
+ adapter= FollowersAdapter(searchedFollowers,requireActivity())
+
+ }
+
+
+
+
+ }
+
fun getFollowers(){
val api = RetrofitHelper.getInstance()
@@ -64,7 +127,7 @@ class FragmentUserFollowers : Fragment() {
}
followers = response.body()!!.toMutableList<UserReceive>()
rvFollowers.apply {
- layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false)
+ layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false)
adapter= FollowersAdapter(followers,requireActivity())
}
@@ -89,7 +152,7 @@ class FragmentUserFollowers : Fragment() {
Log.d("MyFollowers","Successsssssssssssssssssssssssssssss")
followers = response.body()!!.toMutableList<UserReceive>()
rvFollowers.apply {
- layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false)
+ layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false)
adapter= FollowersAdapter(followers,requireActivity())
}
}
@@ -98,4 +161,13 @@ class FragmentUserFollowers : Fragment() {
}
})
}
+ override fun onResume() {
+ super.onResume()
+ if(showMy=="yes"){
+ getFollowersWithoutId()
+ }
+ else if(showMy=="no") {
+ getFollowers()
+ }
+ }
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt
index 9a78b6e..0508c13 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt
@@ -1,11 +1,15 @@
package com.example.brzodolokacije.Fragments
import android.os.Bundle
+import android.text.Editable
+import android.text.TextWatcher
import android.util.Log
+import android.view.KeyEvent
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AutoCompleteTextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.brzodolokacije.Adapters.FollowersAdapter
@@ -13,6 +17,7 @@ import com.example.brzodolokacije.Models.UserReceive
import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
+import com.google.android.material.button.MaterialButton
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
@@ -21,9 +26,12 @@ import retrofit2.Response
class FragmentUserFollowing : Fragment() {
private lateinit var following:MutableList<UserReceive>
+ private lateinit var searchedFollowing:MutableList<UserReceive>
private lateinit var rvFollowing: RecyclerView
private lateinit var userId:String
private lateinit var showMy:String
+ private lateinit var searchBar: AutoCompleteTextView
+ private lateinit var searchButton: MaterialButton
override fun onCreateView(
@@ -36,15 +44,68 @@ class FragmentUserFollowing : Fragment() {
userId = bundle!!.getString("userId").toString()
showMy = bundle!!.getString("showMy").toString().trim()
rvFollowing=view.findViewById(R.id.rvFragmentUserFollowing)
-
+ searchBar=view.findViewById(R.id.FragmentFollowingSearchBar)
+ searchButton=view.findViewById(R.id.FragmentFollowingSearchBButton)
if(showMy=="yes"){
getFollowingWithoutId()
}
else if(showMy=="no") {
getFollowing()
}
+ searchButton.setOnClickListener {
+ searchText()
+ }
+ searchBar.setOnKeyListener(View.OnKeyListener { v1, keyCode, event -> // If the event is a key-down event on the "enter" button
+ if (event.action === KeyEvent.ACTION_DOWN &&
+ keyCode == KeyEvent.KEYCODE_ENTER
+ ) {
+ // Perform action on key press
+ searchText()
+ return@OnKeyListener true
+ }
+ false
+ })
+ searchBar.addTextChangedListener(object : TextWatcher {
+ override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
+ }
+
+ override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
+ searchText()
+ if(count==0)
+ if(showMy=="yes"){
+ getFollowingWithoutId()
+ }
+ else if(showMy=="no") {
+ getFollowing()
+ }
+ }
+
+ override fun afterTextChanged(s: Editable) {
+ }
+ })
return view
}
+ fun searchText(){
+ if(searchBar.text==null || searchBar.text.isNullOrEmpty() || searchBar.text.toString().trim()=="")
+ return
+ var text=searchBar.text.toString().trim()
+ if(!this::following.isInitialized)
+ return
+ searchedFollowing= mutableListOf()
+ for(user in following){
+ if(user.username.contains(text))
+ searchedFollowing.add(user)
+ }
+ rvFollowing.apply {
+ layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false)
+ adapter= FollowersAdapter(searchedFollowing,requireActivity())
+
+ }
+
+
+
+
+ }
fun getFollowing(){
val api = RetrofitHelper.getInstance()
@@ -58,7 +119,7 @@ class FragmentUserFollowing : Fragment() {
Log.d("Following","Successsssssssssssssssssssssssssssss")
following = response.body()!!.toMutableList<UserReceive>()
rvFollowing.apply {
- layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false)
+ layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false)
adapter= FollowersAdapter(following,requireActivity())
}
}
@@ -80,7 +141,7 @@ class FragmentUserFollowing : Fragment() {
Log.d("MyFollowings","Successsssssssssssssssssssssssssssss")
following = response.body()!!.toMutableList<UserReceive>()
rvFollowing.apply {
- layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false)
+ layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false)
adapter= FollowersAdapter(following,requireActivity())
}
}
@@ -90,4 +151,14 @@ class FragmentUserFollowing : Fragment() {
})
}
+ override fun onResume() {
+ super.onResume()
+ if(showMy=="yes"){
+ getFollowingWithoutId()
+ }
+ else if(showMy=="no") {
+ getFollowing()
+ }
+ }
+
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt
new file mode 100644
index 0000000..31f03ab
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt
@@ -0,0 +1,111 @@
+import android.content.res.Resources
+import android.graphics.Canvas
+import android.graphics.Paint
+import android.graphics.Rect
+import android.view.View
+import androidx.annotation.ColorInt
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.RecyclerView.ItemDecoration
+
+
+class LinePagerIndicatorDecoration(
+ radius: Int,
+ padding: Int,
+ indicatorHeight: Int,
+ @ColorInt colorInactive: Int,
+ @ColorInt colorActive: Int
+) :
+ ItemDecoration() {
+ private val indicatorHeight: Int
+ private val indicatorItemPadding: Int
+ private val radius: Int
+ private val inactivePaint: Paint = Paint()
+ private val activePaint: Paint = Paint()
+
+ init {
+ val strokeWidth: Float = Resources.getSystem().getDisplayMetrics().density * 1
+ this.radius = radius
+ inactivePaint.setStrokeCap(Paint.Cap.ROUND)
+ inactivePaint.setStrokeWidth(strokeWidth)
+ inactivePaint.setStyle(Paint.Style.STROKE)
+ inactivePaint.setAntiAlias(true)
+ inactivePaint.setColor(colorInactive)
+ activePaint.setStrokeCap(Paint.Cap.ROUND)
+ activePaint.setStrokeWidth(strokeWidth)
+ activePaint.setStyle(Paint.Style.FILL)
+ activePaint.setAntiAlias(true)
+ activePaint.setColor(colorActive)
+ indicatorItemPadding = padding
+ this.indicatorHeight = indicatorHeight
+ }
+
+ override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
+ super.onDrawOver(c, parent, state)
+ val adapter = parent.adapter ?: return
+ val itemCount = adapter.itemCount
+
+ // center horizontally, calculate width and subtract half from center
+ val totalLength = (radius * 2 * itemCount).toFloat()
+ val paddingBetweenItems = (Math.max(0, itemCount - 1) * indicatorItemPadding).toFloat()
+ val indicatorTotalWidth = totalLength + paddingBetweenItems
+ val indicatorStartX = (parent.width - indicatorTotalWidth) / 2f
+
+ // center vertically in the allotted space
+ val indicatorPosY = parent.height - indicatorHeight / 2f
+ drawInactiveDots(c, indicatorStartX, indicatorPosY, itemCount)
+ val activePosition: Int
+ activePosition = if (parent.layoutManager is GridLayoutManager) {
+ (parent.layoutManager as GridLayoutManager?)!!.findFirstVisibleItemPosition()
+ } else if (parent.layoutManager is LinearLayoutManager) {
+ (parent.layoutManager as LinearLayoutManager?)!!.findFirstVisibleItemPosition()
+ } else {
+ // not supported layout manager
+ return
+ }
+ if (activePosition == RecyclerView.NO_POSITION) {
+ return
+ }
+
+ // find offset of active page if the user is scrolling
+ val activeChild = parent.layoutManager!!.findViewByPosition(activePosition)
+ ?: return
+ drawActiveDot(c, indicatorStartX, indicatorPosY, activePosition)
+ }
+
+ private fun drawInactiveDots(
+ c: Canvas,
+ indicatorStartX: Float,
+ indicatorPosY: Float,
+ itemCount: Int
+ ) {
+ // width of item indicator including padding
+ val itemWidth = (radius * 2 + indicatorItemPadding).toFloat()
+ var start = indicatorStartX + radius
+ for (i in 0 until itemCount) {
+ c.drawCircle(start, indicatorPosY, radius.toFloat(), inactivePaint)
+ start += itemWidth
+ }
+ }
+
+ private fun drawActiveDot(
+ c: Canvas, indicatorStartX: Float, indicatorPosY: Float,
+ highlightPosition: Int
+ ) {
+ // width of item indicator including padding
+ val itemWidth = (radius * 2 + indicatorItemPadding).toFloat()
+ val highlightStart = indicatorStartX + radius + itemWidth * highlightPosition
+ c.drawCircle(highlightStart, indicatorPosY, radius.toFloat(), activePaint)
+ }
+
+ override fun getItemOffsets(
+ outRect: Rect,
+ view: View,
+ parent: RecyclerView,
+ state: RecyclerView.State
+ ) {
+ super.getItemOffsets(outRect, view, parent, state)
+ outRect.bottom = indicatorHeight
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt
index 88685e4..43c2109 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt
@@ -7,8 +7,8 @@ import retrofit2.converter.gson.GsonConverterFactory
object RetrofitHelper {
- //val baseUrl="http://10.0.2.2:5279"
- val baseUrl="http://147.91.204.115:10082"
+ val baseUrl="http://10.0.2.2:5279"
+ //val baseUrl="http://147.91.204.115:10082"
private var retrofit_noauth: IBackendApi? = null
private var retrofit_auth: IBackendApi? = null
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml
index 9815ce1..3b92058 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml
@@ -6,18 +6,6 @@
android:layout_height="match_parent"
tools:context=".Activities.ChatActivity">
- <ImageButton
- android:id="@+id/addNewMessage"
- android:layout_width="60dp"
- android:layout_height="60dp"
- android:clickable="true"
- android:elevation="50dp"
- android:focusable="true"
- android:backgroundTint="@color/unfollow"
- android:src="@drawable/ic_baseline_add_message_24"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent" />
-
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:id="@+id/llHeader"
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml
index d68d4b6..f6b767c 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml
@@ -45,34 +45,9 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
- android:text="Chat"
android:textSize="20dp" />
</androidx.appcompat.widget.LinearLayoutCompat>
- <androidx.cardview.widget.CardView
- android:id="@+id/cvParentUsername"
- android:layout_width="wrap_content"
- android:layout_height="40dp"
- android:layout_gravity="center_vertical"
- android:layout_weight="1"
- android:elevation="0dp"
- app:cardCornerRadius="20dp"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent">
-
-
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/etReceiverUsername"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/rounded_white_button_login"
- android:hint=" kome slati poruku?"
- android:inputType="textPersonName"
- android:paddingLeft="15dp" />
-
-
- </androidx.cardview.widget.CardView>
</androidx.appcompat.widget.LinearLayoutCompat>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml
index 5841b49..95545c2 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml
@@ -5,10 +5,12 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Activities.ActivityForgottenPassword">
-
+<androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<LinearLayout
- android:layout_width="399dp"
- android:layout_height="556dp"
+ android:layout_width="350dp"
+ android:layout_height="570dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -71,5 +73,6 @@
android:layout_height="30dp" />
</LinearLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml
index c652469..0b8b7f0 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml
@@ -6,8 +6,11 @@
android:layout_height="match_parent"
tools:context=".Activities.ActivityForgottenPassword">
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<LinearLayout
- android:layout_width="398dp"
+ android:layout_width="350dp"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
@@ -102,5 +105,6 @@
android:layout_height="30dp" />
</LinearLayout>
+ </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml
index 8b820bc..579e402 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml
@@ -1,18 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".Fragments.FragmentUserFollowers">
<!-- TODO: Update blank fragment layout -->
<TextView
+ android:id="@+id/textView17"
android:layout_width="match_parent"
android:layout_height="match_parent" />
+ <androidx.cardview.widget.CardView
+ android:id="@+id/FragmentBrowseCardViewSearch"
+ android:layout_width="0dp"
+ android:layout_height="40dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
+ android:elevation="10dp"
+ app:cardCornerRadius="20dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+
+
+ <AutoCompleteTextView
+ android:id="@+id/FragmentFollowersSearchBar"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:backgroundTint="@color/white"
+ android:hint=" Pretraga"
+ android:inputType="textPersonName"
+ android:paddingLeft="15dp" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/FragmentFollowersSearchBButton"
+ android:layout_width="49dp"
+ android:layout_height="match_parent"
+ android:layout_gravity="right"
+ android:background="#00FFFFFF"
+ app:backgroundTint="#00FFFFFF"
+ app:cornerRadius="16dp"
+ app:icon="@drawable/ic_baseline_search_24"
+ app:iconTint="#333D70" />
+
+ </androidx.cardview.widget.CardView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvFragmentUserFollowers"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="wrap_content"
+ android:layout_marginTop="15dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/FragmentBrowseCardViewSearch" />
-</FrameLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml
index 7558375..f7c07df 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml
@@ -1,18 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".Fragments.FragmentUserFollowing">
<!-- TODO: Update blank fragment layout -->
<TextView
+ android:id="@+id/textView16"
android:layout_width="match_parent"
android:layout_height="match_parent" />
+ <androidx.cardview.widget.CardView
+ android:id="@+id/FragmentBrowseCardViewSearch"
+ android:layout_width="0dp"
+ android:layout_height="40dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
+ android:elevation="10dp"
+ app:cardCornerRadius="20dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+
+
+ <AutoCompleteTextView
+ android:id="@+id/FragmentFollowingSearchBar"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:backgroundTint="@color/white"
+ android:hint=" Pretraga"
+ android:inputType="textPersonName"
+ android:paddingLeft="15dp" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/FragmentFollowingSearchBButton"
+ android:layout_width="49dp"
+ android:layout_height="match_parent"
+ android:layout_gravity="right"
+ android:background="#00FFFFFF"
+ app:backgroundTint="#00FFFFFF"
+ app:cornerRadius="16dp"
+ app:icon="@drawable/ic_baseline_search_24"
+ app:iconTint="#333D70" />
+
+ </androidx.cardview.widget.CardView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvFragmentUserFollowing"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="wrap_content"
+ android:layout_marginTop="15dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/FragmentBrowseCardViewSearch" />
-</FrameLayout> \ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file