aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml17
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt34
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt77
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatMessagesAdapter.kt38
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt39
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Chat.kt5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt66
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt8
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml49
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/chat_message.xml17
11 files changed, 289 insertions, 65 deletions
diff --git a/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml b/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml
deleted file mode 100644
index 6fac072..0000000
--- a/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="deploymentTargetDropDown">
- <targetSelectedWithDropDown>
- <Target>
- <type value="QUICK_BOOT_TARGET" />
- <deviceKey>
- <Key>
- <type value="VIRTUAL_DEVICE_PATH" />
- <value value="C:\Users\TAMARA\.android\avd\Pixel_3a_XL_API_33.avd" />
- </Key>
- </deviceKey>
- </Target>
- </targetSelectedWithDropDown>
- <timeTargetWasSelectedWithDropDown value="2022-11-21T20:28:37.906817700Z" />
- </component>
-</project> \ No newline at end of file
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 4cc7cc1..992f09f 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
@@ -4,8 +4,12 @@ import android.content.Intent
import android.os.Bundle
import android.widget.ImageButton
import androidx.appcompat.app.AppCompatActivity
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.exam.DBHelper
+import com.example.brzodolokacije.Adapters.ChatPreviewsAdapter
+import com.example.brzodolokacije.Models.ChatPreview
import com.example.brzodolokacije.R
-import com.example.brzodolokacije.chat.DBHelper
import com.example.brzodolokacije.chat.SignalRListener
import com.example.brzodolokacije.databinding.ActivityChatBinding
@@ -14,14 +18,20 @@ class ChatActivity : AppCompatActivity() {
private var dbConnection:DBHelper?=null
lateinit var binding: ActivityChatBinding
var ws:SignalRListener?=null
+ var recyclerView:RecyclerView?=null
+ var adapterVar:ChatPreviewsAdapter?=null
+ var layoutVar:LinearLayoutManager?=null
+ var items:MutableList<ChatPreview>?= mutableListOf()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_chat)
- binding=ActivityChatBinding.inflate(layoutInflater)
+ binding= ActivityChatBinding.inflate(layoutInflater)
+ setContentView(binding.root)
dbConnection= DBHelper(this@ChatActivity,null)
ws=SignalRListener.getInstance(this@ChatActivity)
setListeners()
+ setRecyclerView()
+ requestForChats()
}
fun setListeners(){
@@ -31,4 +41,22 @@ class ChatActivity : AppCompatActivity() {
startActivity(intent)
}
}
+
+ fun requestForChats(){
+ var dbHelper= DBHelper.getInstance(this@ChatActivity)
+ items=dbHelper.getContacts()
+ adapterVar= items?.let { ChatPreviewsAdapter(it,this@ChatActivity) }
+ setRecyclerView(setParams = false)
+ }
+
+ fun setRecyclerView(setParams:Boolean=true){
+ if(setParams){
+ adapterVar= items?.let { ChatPreviewsAdapter(it,this@ChatActivity) }
+ layoutVar=LinearLayoutManager(this@ChatActivity)
+ }
+ recyclerView=binding.rvMain
+ recyclerView?.setHasFixedSize(true)
+ recyclerView?.layoutManager=layoutVar
+ recyclerView?.adapter=adapterVar
+ }
} \ No newline at end of file
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 715f5f3..d523485 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
@@ -2,43 +2,47 @@ package com.example.brzodolokacije.Activities
import android.os.Bundle
import android.util.Log
+import android.view.View
import android.widget.EditText
import android.widget.ImageButton
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
-import androidx.cardview.widget.CardView
-import androidx.core.view.isVisible
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.exam.DBHelper
+import com.example.brzodolokacije.Adapters.ChatMessagesAdapter
import com.example.brzodolokacije.Models.Message
import com.example.brzodolokacije.Models.MessageSend
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.chat.DBHelper
import com.example.brzodolokacije.chat.SignalRListener
+import com.example.brzodolokacije.databinding.ActivityChatConversationBinding
import retrofit2.Call
import retrofit2.Response
class ChatActivityConversation : AppCompatActivity() {
- var receiverId:String?=null
+ var recyclerView:RecyclerView?=null
+ var adapterVar: ChatMessagesAdapter?=null
+ var layoutVar: RecyclerView.LayoutManager?=null
+ lateinit var binding:ActivityChatConversationBinding
+ var userId:String?=null
var receiverUsername:String?="jelena"
- var dbConnection:DBHelper?=null
+ var dbConnection: DBHelper?=null
var webSocketConnection:SignalRListener?=null
+ var items:MutableList<Message>?=mutableListOf()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_chat_conversation)
- receiverId=intent.extras?.get("receiverId").toString()
- if(receiverId.isNullOrEmpty()){
- findViewById<CardView>(R.id.cvParentMessageEdit).isVisible=true
- findViewById<CardView>(R.id.cvParentMessageEdit).invalidate()
- }
- else{
- findViewById<CardView>(R.id.cvParentUsername).isVisible=true
- findViewById<CardView>(R.id.cvParentUsername).invalidate()
- }
+ binding= ActivityChatConversationBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ userId=intent.extras?.get("userId").toString()
dbConnection=DBHelper.getInstance(this@ChatActivityConversation)
+ setHeader()
+ setRecyclerView()
+ requestMessages()
webSocketConnection=SignalRListener.getInstance(this@ChatActivityConversation)
setListeners()
}
@@ -49,7 +53,7 @@ class ChatActivityConversation : AppCompatActivity() {
var messageContent=findViewById<EditText>(R.id.etNewMessage).text.toString()
Log.d("main",token!!)
val Api= RetrofitHelper.getInstance()
- if(receiverId.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,
@@ -59,8 +63,8 @@ class ChatActivityConversation : AppCompatActivity() {
override fun onResponse(call: Call<UserReceive?>, response: Response<UserReceive?>) {
if(response.isSuccessful()){
//zahtev da se posalje poruka
- receiverId=response.body()?._id
- var message= MessageSend(receiverId!!,messageContent)
+ userId=response.body()?._id
+ var message= MessageSend(userId!!,messageContent)
val request2=Api.sendMessage("Bearer "+token,
message
)
@@ -70,8 +74,7 @@ class ChatActivityConversation : AppCompatActivity() {
//zahtev da se posalje poruka
var responseMessage=response.body()
dbConnection?.addMessage(responseMessage!!)
- dbConnection?.getMessages()
- webSocketConnection?.getConnectionState()
+
}
@@ -98,7 +101,7 @@ class ChatActivityConversation : AppCompatActivity() {
}
else{
//zahtev da se posalje poruka
- var message= MessageSend(receiverId!!,messageContent)
+ var message= MessageSend(userId!!,messageContent)
val request2=Api.sendMessage("Bearer "+token,
message
)
@@ -108,7 +111,7 @@ class ChatActivityConversation : AppCompatActivity() {
//zahtev da se posalje poruka
var responseMessage=response.body()
dbConnection?.addMessage(responseMessage!!)
- dbConnection?.getMessages()
+ requestMessages()
}
@@ -125,4 +128,34 @@ class ChatActivityConversation : AppCompatActivity() {
}
}
+
+ private fun setHeader(){
+ if(userId.isNullOrEmpty() || userId.equals("null")){
+ binding.tvFragmentTitle.visibility= View.GONE
+ binding.tvFragmentTitle.invalidate()
+ binding.tvFragmentTitle.forceLayout()
+ }
+ else{
+ binding.tvFragmentTitle.text=userId
+ binding.tvFragmentTitle.invalidate()
+ binding.cvParentUsername.visibility= View.GONE
+ binding.cvParentUsername.forceLayout()
+ }
+ }
+ fun setRecyclerView(setParams:Boolean=true){
+ if(setParams){
+ adapterVar= items?.let { ChatMessagesAdapter(it,this@ChatActivityConversation) }
+ layoutVar= LinearLayoutManager(this@ChatActivityConversation)
+ }
+ recyclerView = binding.rvMain
+ recyclerView?.setHasFixedSize(true)
+ recyclerView?.layoutManager=layoutVar
+ recyclerView?.adapter=adapterVar
+ }
+
+ fun requestMessages(){
+ items=dbConnection?.getMessages(userId!!)
+ adapterVar= items?.let { ChatMessagesAdapter(it,this@ChatActivityConversation) }
+ setRecyclerView(setParams = false)
+ }
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatMessagesAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatMessagesAdapter.kt
new file mode 100644
index 0000000..4c917f3
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatMessagesAdapter.kt
@@ -0,0 +1,38 @@
+package com.example.brzodolokacije.Adapters
+
+import android.app.Activity
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.example.brzodolokacije.Models.Message
+import com.example.brzodolokacije.databinding.ChatMessageBinding
+
+class ChatMessagesAdapter (val items : MutableList<Message>, val activity:Activity)
+ : RecyclerView.Adapter<ChatMessagesAdapter.ViewHolder>(){
+ //constructer has one argument - list of objects that need to be displayed
+ //it is bound to xml of single item
+ private lateinit var binding: ChatMessageBinding
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val inflater = LayoutInflater.from(parent.context)
+ binding= ChatMessageBinding.inflate(inflater,parent,false)
+ return ViewHolder(binding)
+ }
+ override fun onBindViewHolder(holder: ViewHolder, position: Int){
+ //sets components of particular item
+ holder.bind(items[position])
+// holder.itemView.setOnClickListener {
+// val intent: Intent = Intent(activity, ChatActivityConversation::class.java)
+// intent.putExtra("userId",items[position].userId)
+// activity.startActivity(intent)
+// }
+ }
+ override fun getItemCount() = items.size
+ inner class ViewHolder(itemView : ChatMessageBinding) : RecyclerView.ViewHolder(itemView.root){
+ fun bind(item : Message){
+ binding.apply {
+ //clMessage.foregroundGravity=Gravity.END
+ tvMessage.text=item.messagge
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt
new file mode 100644
index 0000000..b63cb2f
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt
@@ -0,0 +1,39 @@
+package com.example.brzodolokacije.Adapters
+
+import android.app.Activity
+import android.content.Intent
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.example.brzodolokacije.Activities.ChatActivityConversation
+import com.example.brzodolokacije.Models.ChatPreview
+import com.example.brzodolokacije.databinding.ChatPreviewBinding
+
+class ChatPreviewsAdapter (val items : MutableList<ChatPreview>,val activity:Activity)
+ : RecyclerView.Adapter<ChatPreviewsAdapter.ViewHolder>(){
+ //constructer has one argument - list of objects that need to be displayed
+ //it is bound to xml of single item
+ private lateinit var binding: ChatPreviewBinding
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val inflater = LayoutInflater.from(parent.context)
+ binding=ChatPreviewBinding.inflate(inflater,parent,false)
+ return ViewHolder(binding)
+ }
+ override fun onBindViewHolder(holder: ViewHolder, position: Int){
+ //sets components of particular item
+ holder.bind(items[position])
+ holder.itemView.setOnClickListener {
+ val intent: Intent = Intent(activity, ChatActivityConversation::class.java)
+ intent.putExtra("userId",items[position].userId)
+ activity.startActivity(intent)
+ }
+ }
+ override fun getItemCount() = items.size
+ inner class ViewHolder(itemView : ChatPreviewBinding) : RecyclerView.ViewHolder(itemView.root){
+ fun bind(item : ChatPreview){
+ binding.apply {
+ tvUsername.text=item.userId
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Chat.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Chat.kt
index 4b87d51..3404541 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Chat.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Chat.kt
@@ -19,4 +19,9 @@ data class Message(
var receiverId: String,
var messagge: String,
var timestamp: Date
+)
+
+data class ChatPreview(
+ var userId:String,
+ var read:Boolean
) \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt
index d4ee046..d3a95b4 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/DBHelper.kt
@@ -1,4 +1,5 @@
-package com.example.brzodolokacije.chat
+package com.exam
+
import android.app.Activity
import android.content.Context
@@ -6,7 +7,9 @@ import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import android.util.Log
+import com.example.brzodolokacije.Models.ChatPreview
import com.example.brzodolokacije.Models.Message
+import java.util.*
class DBHelper :
@@ -36,7 +39,7 @@ class DBHelper :
override fun onCreate(db: SQLiteDatabase?) {
if(!doesTableExist(CONTACTS_TABLE_NAME,db)){
- var sql:String="CREATE TABLE "+ CONTACTS_TABLE_NAME+"(" +
+ var sql:String="CREATE TABLE "+ CONTACTS_TABLE_NAME+" (" +
"userId " +"TEXT PRIMARY KEY,"+
"read " +"INT"+
")"
@@ -74,7 +77,7 @@ class DBHelper :
onCreate(db)
}
- fun addMessage(message: Message){
+ fun addMessage(message: Message, sent:Boolean=true){
if(message._id.isNullOrEmpty()){
message._id=message.senderId+message.timestamp
}
@@ -84,10 +87,61 @@ class DBHelper :
message.messagge+ "','"+
message.timestamp+ "')"
db?.execSQL(sql)
+ if(sent)
+ sql="SELECT * FROM "+ CONTACTS_TABLE_NAME+" WHERE userId='"+message.receiverId+"'"
+ else
+ sql="SELECT * FROM "+ CONTACTS_TABLE_NAME+" WHERE userId='"+message.senderId+"'"
+ var cursor=db?.rawQuery(sql,null)
+ if(cursor?.count==0){
+ //dodati u kontakte
+ var id:String
+ id = if(sent) message.receiverId else message.senderId
+ var read:Int=if(sent) 1 else 0
+ sql="INSERT INTO "+ CONTACTS_TABLE_NAME+"(userId,read) VALUES('"+id+"','"+
+ read+"')"
+ db?.execSQL(sql)
+ }
}
- fun getMessages(){
- var sql="SELECT * FROM "+ MESSAGES_TABLE_NAME
+ fun getMessages(userId:String): MutableList<Message>? {
+ var sql="SELECT * FROM "+ MESSAGES_TABLE_NAME+" WHERE senderId='"+userId+"' OR receiverId='"+userId+"'"
var cursor=db?.rawQuery(sql,null)
- Log.d("main",cursor?.count.toString())
+ if(cursor?.count!! >0){
+ var messagesList:MutableList<Message> =mutableListOf()
+ var idIndex=cursor.getColumnIndexOrThrow("_id")
+ var senderIdIndex=cursor.getColumnIndexOrThrow("senderId")
+ var receiverIdIndex=cursor.getColumnIndexOrThrow("receiverId")
+ var messageIndex=cursor.getColumnIndexOrThrow("messagge")
+ var timestampIndex=cursor.getColumnIndexOrThrow("timestamp")
+ while(cursor.moveToNext()){
+ messagesList.add(
+ Message(
+ cursor.getString(idIndex),
+ cursor.getString(senderIdIndex),
+ cursor.getString(receiverIdIndex),
+ cursor.getString(messageIndex),
+ Date()
+ )
+ )
+ }
+ Log.d("main",messagesList.size.toString())
+ return messagesList
+ }
+ return null
+ }
+
+ fun getContacts(): MutableList<ChatPreview>? {
+ var sql="SELECT * FROM "+ CONTACTS_TABLE_NAME
+ var cursor=db?.rawQuery(sql,null)
+ if(cursor?.count!! >0){
+ var contactList:MutableList<ChatPreview> =mutableListOf()
+ var userIdIndex=cursor.getColumnIndexOrThrow("userId")
+ var readIndex=cursor.getColumnIndexOrThrow("read")
+ while(cursor.moveToNext()){
+ contactList.add(ChatPreview(cursor.getString(userIdIndex),cursor.getInt(readIndex)==1))
+ }
+ Log.d("main",contactList.size.toString())
+ return contactList
+ }
+ return null
}
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt
index 1aa6afa..07a9d3e 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/chat/SignalRListener.kt
@@ -2,6 +2,8 @@ package com.example.brzodolokacije.chat
import android.app.Activity
import android.util.Log
+import com.exam.DBHelper
+import com.example.brzodolokacije.Models.Message
import com.example.brzodolokacije.Models.MessageReceive
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
@@ -13,13 +15,17 @@ import com.microsoft.signalr.HubConnectionState
class SignalRListener private constructor(val activity: Activity){
private var hubConnection:HubConnection
+ private var dbHelper:DBHelper
init{
+ dbHelper= DBHelper.getInstance(activity)
hubConnection=HubConnectionBuilder.create(RetrofitHelper.baseUrl+"/chathub")
.withHeader("access_token",SharedPreferencesHelper.getValue("jwt",activity))
.build()
hubConnection.keepAliveInterval=120
hubConnection.on("Message",
- Action1 {message:MessageReceive->Log.d("main",message.messagge)},
+ Action1 {
+ message:MessageReceive->dbHelper.addMessage(Message(message.senderId+message.timestamp,message.senderId,message.senderId,message.messagge,message.timestamp),false)
+ },
MessageReceive::class.java
)
hubConnection.start().blockingAwait()
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 694e972..9e28d6d 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml
@@ -32,7 +32,7 @@
</ImageButton>
-<!-- <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/swipeContainer"
@@ -46,6 +46,6 @@
app:layout_constraintTop_toTopOf="parent" >
</androidx.recyclerview.widget.RecyclerView>
- </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>-->
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
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 ea7d3e7..5afcd86 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
@@ -5,26 +5,30 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Activities.ChatActivityConversation">
+
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/topBanner"
android:layout_width="match_parent"
- android:clickable="true"
android:layout_height="50dp"
+ android:elevation="5dp"
android:background="@color/dark_blue_transparent"
+ android:clickable="true"
app:layout_constraintStart_toStartOf="parent">
+
<TextView
+ android:id="@+id/tvFragmentTitle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:textSize="40dp"
- android:id="@+id/tvFragmentTitle"
android:text="Chat"
- android:textColor="@color/white"/>
+ android:textColor="@color/white"
+ android:textSize="40dp" />
+
<androidx.cardview.widget.CardView
android:id="@+id/cvParentUsername"
android:layout_width="match_parent"
android:layout_height="40dp"
- android:layout_marginTop="10dp"
android:layout_marginStart="16dp"
+ android:layout_marginTop="10dp"
android:layout_marginEnd="16dp"
android:elevation="0dp"
app:cardCornerRadius="20dp"
@@ -39,25 +43,42 @@
android:layout_height="match_parent"
android:background="@drawable/rounded_white_button_login"
android:hint=" kome slati poruku?"
- android:paddingLeft="15dp"
- android:inputType="textPersonName" />
+ android:inputType="textPersonName"
+ android:paddingLeft="15dp" />
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/messagesContainer"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layout_constraintBottom_toTopOf="@id/cvParentMessageEdit"
+ app:layout_constrainedHeight="true">
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/rvMain"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ app:layout_constraintBottom_toBottomOf="parent">
+
+ </androidx.recyclerview.widget.RecyclerView>
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
<androidx.cardview.widget.CardView
android:id="@+id/cvParentMessageEdit"
android:layout_width="match_parent"
android:layout_height="40dp"
- android:layout_marginTop="10dp"
android:layout_marginStart="16dp"
+ android:layout_marginTop="10dp"
android:layout_marginEnd="16dp"
android:elevation="0dp"
app:cardCornerRadius="20dp"
+ app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintBottom_toBottomOf="parent">
+ app:layout_constraintStart_toStartOf="parent">
<com.google.android.material.textfield.TextInputEditText
@@ -66,8 +87,8 @@
android:layout_height="match_parent"
android:background="@drawable/rounded_white_button_login"
android:hint=" poruka"
- android:paddingLeft="15dp"
- android:inputType="textPersonName" />
+ android:inputType="textPersonName"
+ android:paddingLeft="15dp" />
<ImageButton
android:id="@+id/btnSendMessage"
@@ -75,8 +96,8 @@
android:layout_height="50dp"
android:layout_gravity="right"
android:scaleType="centerCrop"
- app:cornerRadius="16dp"
- android:src="@drawable/post_comment" />
+ android:src="@drawable/post_comment"
+ app:cornerRadius="16dp" />
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message.xml
new file mode 100644
index 0000000..2210fa0
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/rounded_cyan_button"
+ android:id="@+id/clMessage">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="@color/white"
+ android:id="@+id/tvMessage"
+ android:text="blabla"
+ android:padding="@dimen/component_padding"/>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file