diff options
Diffstat (limited to 'Client')
8 files changed, 239 insertions, 127 deletions
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/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/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/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 |