From 6185c928e5022c10902879cb7e385d88ab327c2f Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Tue, 29 Nov 2022 01:14:11 +0100 Subject: Cuvanje vremena slanja poruke, prikazuje se u cetu, sredjen izgled ceta #59 --- .../brzodolokacije/Activities/ChatActivity.kt | 5 +- .../Activities/ChatActivityConversation.kt | 7 +++ .../brzodolokacije/Adapters/ChatMessagesAdapter.kt | 34 +++++++++++ .../java/com/example/brzodolokacije/Models/Chat.kt | 3 +- .../com/example/brzodolokacije/chat/DBHelper.kt | 19 +++--- .../example/brzodolokacije/chat/SignalRListener.kt | 5 +- .../app/src/main/res/layout/chat_message.xml | 69 +++++++++++++++++---- .../app/src/main/res/layout/chat_message_other.xml | 70 ++++++++++++++++++---- 8 files changed, 176 insertions(+), 36 deletions(-) (limited to 'Client') 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 25ef88e..951cbb4 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 @@ -21,6 +21,7 @@ import com.example.brzodolokacije.chat.SignalRListener import com.example.brzodolokacije.databinding.ActivityChatBinding import retrofit2.Call import retrofit2.Response +import java.util.* class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener { @@ -83,9 +84,11 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener { if(!messages.isNullOrEmpty()){ var dbHelper= DBHelper.getInstance(this@ChatActivity) for( message in messages){ + var cal: Calendar = Calendar.getInstance() + cal.time=message.timestamp dbHelper.addMessage( Message(message.senderId+message.timestamp,message.senderId, - JWT(SharedPreferencesHelper.getValue("jwt",this@ChatActivity)!!).claims["id"]?.asString()!!,message.messagge,message.timestamp),false) + JWT(SharedPreferencesHelper.getValue("jwt",this@ChatActivity)!!).claims["id"]?.asString()!!,message.messagge,message.timestamp,cal),false) } } requestForChats() 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 b4722ea..47cd903 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 @@ -24,6 +24,7 @@ import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch import retrofit2.Call import retrofit2.Response +import java.util.* class ChatActivityConversation : AppCompatActivity() { @@ -78,6 +79,9 @@ class ChatActivityConversation : AppCompatActivity() { 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!!) requestMessages() binding.etNewMessage.text?.clear() @@ -115,6 +119,9 @@ class ChatActivityConversation : AppCompatActivity() { 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!!) requestMessages() binding.etNewMessage.text?.clear() 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 index 45ffbf0..403b736 100644 --- 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 @@ -2,6 +2,7 @@ package com.example.brzodolokacije.Adapters import android.app.Activity import android.view.LayoutInflater +import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.auth0.android.jwt.JWT @@ -9,6 +10,7 @@ import com.example.brzodolokacije.Models.Message import com.example.brzodolokacije.Services.SharedPreferencesHelper import com.example.brzodolokacije.databinding.ChatMessageBinding import com.example.brzodolokacije.databinding.ChatMessageOtherBinding +import java.util.* class ChatMessagesAdapter (val items : MutableList, val activity:Activity) : RecyclerView.Adapter(){ @@ -49,6 +51,17 @@ class ChatMessagesAdapter (val items : MutableList, val activity:Activi fun bind(item : Message){ bindingOther?.apply { tvMessage?.text=item.messagge + tvTimestamp.text=item.usableTimeStamp.get(Calendar.HOUR_OF_DAY).toString() + ":" + item.usableTimeStamp.get(Calendar.MINUTE).toString() + if(layoutPosition==0 || isDifferentDays(items[layoutPosition].usableTimeStamp,items[layoutPosition-1].usableTimeStamp)){ + + tvDate.text=item.usableTimeStamp.get(Calendar.DAY_OF_MONTH).toString()+"/"+ + (item.usableTimeStamp.get(Calendar.MONTH)+1).toString()+"/"+ + item.usableTimeStamp.get(Calendar.YEAR).toString() + } + else{ + tvDate.visibility= View.GONE + tvDate.forceLayout() + } } } } @@ -56,10 +69,31 @@ class ChatMessagesAdapter (val items : MutableList, val activity:Activi fun bind(item : Message){ binding?.apply { tvMessage.text=item.messagge + tvTimestamp.text=item.usableTimeStamp.get(Calendar.HOUR_OF_DAY).toString() + ":" + item.usableTimeStamp.get(Calendar.MINUTE).toString() + if(layoutPosition==0 || isDifferentDays(items[layoutPosition].usableTimeStamp,items[layoutPosition-1].usableTimeStamp)){ + + tvDate.text=item.usableTimeStamp.get(Calendar.DAY_OF_MONTH).toString()+"/"+ + (item.usableTimeStamp.get(Calendar.MONTH)+1).toString()+"/"+ + item.usableTimeStamp.get(Calendar.YEAR).toString() + } + else{ + tvDate.visibility= View.GONE + tvDate.forceLayout() + } } } } + fun isDifferentDays(c1:Calendar,c2:Calendar):Boolean{ + if(c1.get(Calendar.DAY_OF_YEAR)!=c2.get(Calendar.DAY_OF_YEAR)){ + return true + } + else if(c1.get(Calendar.YEAR)!=c2.get(Calendar.YEAR)){ + return true + } + return false + } + override fun getItemViewType(position: Int): Int { var sender=items.get(position).senderId 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 3404541..6725c15 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 @@ -18,7 +18,8 @@ data class Message( var senderId: String, var receiverId: String, var messagge: String, - var timestamp: Date + var timestamp: Date, + var usableTimeStamp:Calendar ) data class ChatPreview( 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 191df3c..74e30bd 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 @@ -41,7 +41,7 @@ class DBHelper : if(!doesTableExist(CONTACTS_TABLE_NAME,db)){ var sql:String="CREATE TABLE "+ CONTACTS_TABLE_NAME+" (" + "userId " +"TEXT PRIMARY KEY,"+ - "read " +"INT"+ + "read " +"INTEGER"+ ")" db?.execSQL(sql) } @@ -51,7 +51,7 @@ class DBHelper : "senderId " +"TEXT,"+ "receiverId "+"TEXT,"+ "messagge " +"TEXT,"+ - "timestamp "+"TEXT"+ + "timestamp "+"INTEGER"+ ")" db?.execSQL(sql) } @@ -88,8 +88,8 @@ class DBHelper : var sql="INSERT INTO "+ MESSAGES_TABLE_NAME+"(_id,senderId,receiverid,messagge,timestamp) VALUES('"+message._id+"','"+ message.senderId+"','"+ message.receiverId+"','"+ - message.messagge+ "','"+ - message.timestamp+ "')" + message.messagge+ "',"+ + message.usableTimeStamp.timeInMillis+")" db?.execSQL(sql) if(sent) sql="SELECT * FROM "+ CONTACTS_TABLE_NAME+" WHERE userId='"+message.receiverId+"'" @@ -111,9 +111,9 @@ class DBHelper : onCreate(db) var sql:String if(!self) - sql="SELECT * FROM "+ MESSAGES_TABLE_NAME+" WHERE senderId='"+userId+"' OR receiverId='"+userId+"'" + sql="SELECT * FROM "+ MESSAGES_TABLE_NAME+" WHERE senderId='"+userId+"' OR receiverId='"+userId+"' ORDER BY timestamp ASC" else - sql="SELECT * FROM "+ MESSAGES_TABLE_NAME+" WHERE senderId='"+userId+"' AND receiverId='"+userId+"'" + sql="SELECT * FROM "+ MESSAGES_TABLE_NAME+" WHERE senderId='"+userId+"' AND receiverId='"+userId+"' ORDER BY timestamp ASC" var cursor=db?.rawQuery(sql,null) if(cursor?.count!! >0){ var messagesList:MutableList =mutableListOf() @@ -123,17 +123,20 @@ class DBHelper : var messageIndex=cursor.getColumnIndexOrThrow("messagge") var timestampIndex=cursor.getColumnIndexOrThrow("timestamp") while(cursor.moveToNext()){ + var cal:Calendar= Calendar.getInstance() + cal.timeInMillis=cursor.getLong(timestampIndex) messagesList.add( Message( cursor.getString(idIndex), cursor.getString(senderIdIndex), cursor.getString(receiverIdIndex), cursor.getString(messageIndex), - Date() + cal.time, + cal ) ) + Log.d("main",cal.time.toString()) } - Log.d("main",messagesList.size.toString()) return messagesList } return null 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 4b16f25..39689c7 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 @@ -14,6 +14,7 @@ import com.microsoft.signalr.Action1 import com.microsoft.signalr.HubConnection import com.microsoft.signalr.HubConnectionBuilder import com.microsoft.signalr.HubConnectionState +import java.util.* class SignalRListener private constructor(val activity: Activity){ @@ -62,8 +63,10 @@ class SignalRListener private constructor(val activity: Activity){ } fun addToDbAndloadMessageIfInChat(message:MessageReceive,activity: Activity){ + var cal:Calendar= Calendar.getInstance() + cal.time=message.timestamp dbHelper.addMessage(Message(message.senderId+message.timestamp,message.senderId, - JWT(SharedPreferencesHelper.getValue("jwt",activity)!!).claims["id"]?.asString()!!,message.messagge,message.timestamp),false) + JWT(SharedPreferencesHelper.getValue("jwt",activity)!!).claims["id"]?.asString()!!,message.messagge,message.timestamp,cal),false) if(activity is ChatActivity){ if(activity.clickedChat?.userId==message.senderId){ activity.clickedChat?.requestMessages() diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message.xml index 2342779..a5f4a34 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message.xml @@ -1,26 +1,69 @@ + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:layout_marginTop="16dp"> + + + + app:layout_constraintTop_toBottomOf="@id/tvDate"> - + android:orientation="vertical"> + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message_other.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message_other.xml index 647127c..016852e 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message_other.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/chat_message_other.xml @@ -1,23 +1,69 @@ + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:layout_marginTop="16dp"> + + + app:cardBackgroundColor="#eef1f6" + app:cardCornerRadius="12dp" + app:cardElevation="0dp" + app:cardPreventCornerOverlap="false" + app:cardUseCompatPadding="true" + app:layout_constraintTop_toBottomOf="@+id/tvDate"> + + + + + + + + + - + android:text="8:00" + android:textColor="#C0C0C0" + android:textSize="10sp" + app:layout_constraintBottom_toBottomOf="@+id/cvContainer" + app:layout_constraintStart_toEndOf="@+id/cvContainer" /> + + \ No newline at end of file -- cgit v1.2.3 From 5fa0fd023429f32a756070b28a6c9268820b147f Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Tue, 29 Nov 2022 01:20:51 +0100 Subject: Dodavanje tagova na enter click. Prikaz datuma zadnjeg pregleda u istoriji objava. --- .../brzodolokacije/Activities/ActivityAddPost.kt | 81 ++++++++++++--------- .../Activities/ActivityCapturePost.kt | 83 +++++++++++++--------- .../brzodolokacije/Adapters/PostHistoryAdapter.kt | 3 +- 3 files changed, 97 insertions(+), 70 deletions(-) (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt index efe2ac2..450fa41 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt @@ -9,6 +9,7 @@ import android.net.Uri import android.os.Bundle import android.util.Log import android.util.TypedValue +import android.view.KeyEvent import android.view.View import android.widget.* import androidx.appcompat.app.AppCompatActivity @@ -109,41 +110,18 @@ class ActivityAddPost : AppCompatActivity() { } //dodavanje i brisanje tagova tagButtonAdd.setOnClickListener { - tagText.isGone=false - tagText.isVisible=true - - if(tagList.count()<4 && tagText.text.toString().length>=3) { - var tagstr = tagText.text.toString() - var newbtn = Button(this) - newbtn.setId(tagidcounter) - newbtn.text = tagstr - var layoutParams = LinearLayout.LayoutParams( - LinearLayout.LayoutParams.WRAP_CONTENT, - 50 - ) - layoutParams.setMargins(3) - newbtn.layoutParams=layoutParams - newbtn.setBackgroundColor(Color.parseColor("#1C789A")) - newbtn.setTextColor(Color.WHITE) - newbtn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10F) - newbtn.setPadding(3,1,3,1) - - newbtn.setOnClickListener { - var btntext = newbtn.text.toString() - tagList.remove(btntext) - tagButtons.remove(newbtn) - tagLayout.removeView(newbtn) - } - - tagList.add(tagstr) - tagButtons.add(newbtn) - tagLayout.addView(newbtn) - tagText.text.clear() - } - else{ - Toast.makeText(this,"Maksimalno 4 tagova ( duzine + karaktera)",Toast.LENGTH_LONG) - } + addTag() } + tagText.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 + addTag() + return@OnKeyListener true + } + false + }) //dodavanje iz galerije uploadFromGallery.setOnClickListener{ @@ -208,7 +186,42 @@ class ActivityAddPost : AppCompatActivity() { } } } + fun addTag(){ + tagText.isGone=false + tagText.isVisible=true + + if(tagList.count()<4 && tagText.text.toString().length>=3) { + var tagstr = tagText.text.toString() + var newbtn = Button(this) + newbtn.setId(tagidcounter) + newbtn.text = tagstr + var layoutParams = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + 50 + ) + layoutParams.setMargins(3) + newbtn.layoutParams=layoutParams + newbtn.setBackgroundColor(Color.parseColor("#1C789A")) + newbtn.setTextColor(Color.WHITE) + newbtn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10F) + newbtn.setPadding(3,1,3,1) + + newbtn.setOnClickListener { + var btntext = newbtn.text.toString() + tagList.remove(btntext) + tagButtons.remove(newbtn) + tagLayout.removeView(newbtn) + } + tagList.add(tagstr) + tagButtons.add(newbtn) + tagLayout.addView(newbtn) + tagText.text.clear() + } + else{ + Toast.makeText(this,"Maksimalno 4 tagova ( duzine + karaktera)",Toast.LENGTH_LONG) + } + } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt index 0221241..f012da0 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt @@ -11,6 +11,7 @@ import android.os.Bundle import android.provider.MediaStore import android.util.Log import android.util.TypedValue +import android.view.KeyEvent import android.view.View import android.widget.* import androidx.activity.result.contract.ActivityResultContracts @@ -95,42 +96,18 @@ class ActivityCapturePost : AppCompatActivity() { } //dodavanje i brisanje tagova tagButtonAdd.setOnClickListener { - tagText.isGone=false - tagText.isVisible=true - - if(tagList.count()<4 && tagText.text.toString().length>=3) { - var tagstr = tagText.text.toString() - var newbtn = Button(this) - newbtn.setId(tagidcounter) - newbtn.text = tagstr - var layoutParams = LinearLayout.LayoutParams( - LinearLayout.LayoutParams.WRAP_CONTENT, - 50 - ) - layoutParams.setMargins(3) - newbtn.layoutParams=layoutParams - newbtn.setBackgroundColor(Color.parseColor("#1C789A")) - newbtn.setTextColor(Color.WHITE) - newbtn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10F) - newbtn.setPadding(3,1,3,1) - - newbtn.setOnClickListener { - var btntext = newbtn.text.toString() - tagList.remove(btntext) - tagButtons.remove(newbtn) - tagLayout.removeView(newbtn) - } - - tagList.add(tagstr) - tagButtons.add(newbtn) - tagLayout.addView(newbtn) - tagText.text.clear() - } - else{ - Toast.makeText(this,"Maksimalno 4 tagova (duzine 3+ karaktera)",Toast.LENGTH_LONG) - } + addTag() } - + tagText.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 + addTag() + return@OnKeyListener true + } + false + }) //dodavanje sa kamere @@ -223,6 +200,42 @@ class ActivityCapturePost : AppCompatActivity() { + } + } + fun addTag(){ + tagText.isGone=false + tagText.isVisible=true + + if(tagList.count()<4 && tagText.text.toString().length>=3) { + var tagstr = tagText.text.toString() + var newbtn = Button(this) + newbtn.setId(tagidcounter) + newbtn.text = tagstr + var layoutParams = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + 50 + ) + layoutParams.setMargins(3) + newbtn.layoutParams=layoutParams + newbtn.setBackgroundColor(Color.parseColor("#1C789A")) + newbtn.setTextColor(Color.WHITE) + newbtn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10F) + newbtn.setPadding(3,1,3,1) + + newbtn.setOnClickListener { + var btntext = newbtn.text.toString() + tagList.remove(btntext) + tagButtons.remove(newbtn) + tagLayout.removeView(newbtn) + } + + tagList.add(tagstr) + tagButtons.add(newbtn) + tagLayout.addView(newbtn) + tagText.text.clear() + } + else{ + Toast.makeText(this,"Maksimalno 4 tagova ( duzine + karaktera)",Toast.LENGTH_LONG) } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostHistoryAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostHistoryAdapter.kt index db3fc2e..79f0af2 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostHistoryAdapter.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/PostHistoryAdapter.kt @@ -13,6 +13,7 @@ import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper import com.example.brzodolokacije.databinding.SinglePostHistoryBinding +import java.text.SimpleDateFormat class PostHistoryAdapter (val activity:Activity,val items : MutableList) @@ -39,7 +40,7 @@ class PostHistoryAdapter (val activity:Activity,val items : MutableList Date: Tue, 29 Nov 2022 02:43:40 +0100 Subject: Username kontakta je podebljan ako nisu procitane zadnje poruke #60 --- .../brzodolokacije/Activities/ChatActivityConversation.kt | 1 + .../example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt | 8 ++++++++ .../main/java/com/example/brzodolokacije/chat/DBHelper.kt | 14 ++++++++++++++ 3 files changed, 23 insertions(+) (limited to 'Client') 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 47cd903..19fd836 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 @@ -186,5 +186,6 @@ class ChatActivityConversation : AppCompatActivity() { } adapterVar= items?.let { ChatMessagesAdapter(it,this@ChatActivityConversation) } setRecyclerView(setParams = false) + dbConnection?.readContact(userId!!) } } \ 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 index f875366..6e62180 100644 --- 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 @@ -1,11 +1,13 @@ package com.example.brzodolokacije.Adapters import android.content.Intent +import android.graphics.Typeface import android.view.LayoutInflater import android.view.ViewGroup import android.widget.Toast import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide +import com.exam.DBHelper import com.example.brzodolokacije.Activities.ChatActivity import com.example.brzodolokacije.Activities.ChatActivityConversation import com.example.brzodolokacije.Interfaces.IBackendApi @@ -25,6 +27,7 @@ class ChatPreviewsAdapter (val items : MutableList,val activity:Cha private var api: IBackendApi?=null private var token:String?=null private lateinit var binding: ChatPreviewBinding + private var db:DBHelper=DBHelper.getInstance(activity) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val inflater = LayoutInflater.from(parent.context) binding=ChatPreviewBinding.inflate(inflater,parent,false) @@ -39,6 +42,9 @@ class ChatPreviewsAdapter (val items : MutableList,val activity:Cha val intent: Intent = Intent(activity, ChatActivityConversation::class.java) intent.putExtra("userId",items[position].userId) intent.putExtra("username",holder.itemView.tvUsername.text) + db.readContact(items[position].userId) + items[position].read=true + holder.itemView.tvUsername.typeface= Typeface.DEFAULT activity.startActivity(intent) } } @@ -54,6 +60,8 @@ class ChatPreviewsAdapter (val items : MutableList,val activity:Cha if(response.isSuccessful()){ //zahtev da se posalje poruka var user=response.body()!! + if(!item.read) + tvUsername.typeface= Typeface.DEFAULT_BOLD tvUsername.text=user.username if(user.pfp!=null) { Glide.with(activity) 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 74e30bd..a3d5a13 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 @@ -105,6 +105,10 @@ class DBHelper : read+"')" db?.execSQL(sql) } + else{ + if(!sent) + unreadContact(message.senderId) + } } } fun getMessages(userId:String, self:Boolean=false): MutableList? { @@ -137,6 +141,7 @@ class DBHelper : ) Log.d("main",cal.time.toString()) } + readContact(userId) return messagesList } return null @@ -165,4 +170,13 @@ class DBHelper : sql="DROP TABLE IF EXISTS "+ MESSAGES_TABLE_NAME db?.execSQL(sql) } + + fun readContact(userId: String){ + var sql="UPDATE "+ CONTACTS_TABLE_NAME+" SET read=1 WHERE userId='"+userId+"'" + db?.execSQL(sql) + } + fun unreadContact(userId: String){ + var sql="UPDATE "+ CONTACTS_TABLE_NAME+" SET read=0 WHERE userId='"+userId+"'" + db?.execSQL(sql) + } } \ No newline at end of file -- cgit v1.2.3 From 10caf0c6f1efbfad03345ad9b94bc6ae3a4fc0f2 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Tue, 29 Nov 2022 07:52:18 +0100 Subject: Otvaranje objave kada se objava doda. --- .../com/example/brzodolokacije/Activities/ActivityAddPost.kt | 9 ++++++--- .../com/example/brzodolokacije/Activities/ActivityCapturePost.kt | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt index 450fa41..c084623 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt @@ -311,9 +311,12 @@ class ActivityAddPost : AppCompatActivity() { override fun onResponse(call: Call, response: Response) { progressDialog!!.dismiss() if(response.isSuccessful()){ - Toast.makeText( - applicationContext, "USPEH", Toast.LENGTH_LONG - ).show(); + val intent:Intent = Intent(this@ActivityAddPost,ActivitySinglePost::class.java) + var b=Bundle() + b.putParcelable("selectedPost",response.body()) + intent.putExtras(b) + startActivity(intent) + finish() }else { if (response.errorBody() != null) { diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt index f012da0..701d8e8 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt @@ -304,9 +304,12 @@ class ActivityCapturePost : AppCompatActivity() { override fun onResponse(call: Call, response: Response) { if(response.isSuccessful()){ progressDialog!!.dismiss() - Toast.makeText( - applicationContext, "USPEH", Toast.LENGTH_LONG - ).show(); + val intent:Intent = Intent(this@ActivityCapturePost,ActivitySinglePost::class.java) + var b=Bundle() + b.putParcelable("selectedPost",response.body()) + intent.putExtras(b) + startActivity(intent) + finish() }else { progressDialog!!.dismiss() -- cgit v1.2.3 From 860fdc934f09f4384d88df426dc1969cad151218 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Tue, 29 Nov 2022 08:15:12 +0100 Subject: Omoguceno da korisnik moze da pretrazi vec postojecu lokacije i da promeni lokaciju pin-a, onda ce biti pitan da doda tu lokaciju kao novu tako sto ce da unese ime. Pinovi se smenjuju. --- .../brzodolokacije/Activities/MapsActivity.kt | 35 +++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'Client') 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 fa3f06b..25a2b4b 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 @@ -39,6 +39,7 @@ import org.osmdroid.util.GeoPoint import org.osmdroid.views.MapView import org.osmdroid.views.Projection import org.osmdroid.views.overlay.ItemizedIconOverlay +import org.osmdroid.views.overlay.Marker import org.osmdroid.views.overlay.Overlay import org.osmdroid.views.overlay.OverlayItem import org.osmdroid.views.overlay.ScaleBarOverlay @@ -205,15 +206,47 @@ class MapsActivity : AppCompatActivity() { selectedLocation=responseLocations!!.find { location -> location.name==selected } Log.d("main",selectedLocation.toString()) confirmButton.visibility=View.VISIBLE + val locGeopoint=GeoPoint(selectedLocation!!.latitude,selectedLocation!!.longitude) + map!!.controller.animateTo(locGeopoint) + val marker = ContextCompat.getDrawable(this@MapsActivity, R.drawable.ic_baseline_add_location_24); + locLatitude=selectedLocation!!.latitude + locLongitude=selectedLocation!!.longitude + + + val overlayArray = ArrayList() + val mapItem = OverlayItem( + "", "", locGeopoint + ) + mapItem.setMarker(marker) + overlayArray.add(mapItem) + if (anotherItemizedIconOverlay == null) { + anotherItemizedIconOverlay = + ItemizedIconOverlay(applicationContext, overlayArray, null) + map!!.overlays.add(anotherItemizedIconOverlay) + map!!.invalidate() + } else { + map!!.overlays.remove(anotherItemizedIconOverlay) + map!!.invalidate() + anotherItemizedIconOverlay = + ItemizedIconOverlay(applicationContext, overlayArray, null) + map!!.overlays.add(anotherItemizedIconOverlay) + } + }) } + var anotherItemizedIconOverlay: ItemizedIconOverlay? = null fun returnValue(){ val intent = intent val bundle = Bundle() if(selectedLocation==null) return + if(selectedLocation!!.latitude!=locLatitude || selectedLocation!!.longitude!=locLongitude) + { + addLocation() + return + } bundle.putString("locationId",selectedLocation!!._id) intent.putExtras(bundle) setResult(RESULT_OK, intent) @@ -296,7 +329,7 @@ class MapsActivity : AppCompatActivity() { val touchOverlay: Overlay = object : Overlay(this) { - var anotherItemizedIconOverlay: ItemizedIconOverlay? = null + override fun onSingleTapConfirmed(e: MotionEvent, mapView: MapView): Boolean { val marker = ContextCompat.getDrawable(this@MapsActivity, R.drawable.ic_baseline_add_location_24); val proj: Projection = mapView.projection -- cgit v1.2.3 From 0299ff891845bca854af99bb73e1a2d24c3b362d Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Tue, 29 Nov 2022 08:42:44 +0100 Subject: Kada korisnik izabere zeljenu lokaciju za dodavanje objave, prikazuje naziv te lokacije i obavestava korisnika da je izabrao lokaciju. --- .../com/example/brzodolokacije/Activities/ActivityAddPost.kt | 6 ++++++ .../example/brzodolokacije/Activities/ActivityCapturePost.kt | 6 ++++++ .../java/com/example/brzodolokacije/Activities/MapsActivity.kt | 1 + .../app/src/main/res/layout/activity_add_post.xml | 10 ++++++++++ .../app/src/main/res/layout/activity_capture_post.xml | 10 ++++++++++ 5 files changed, 33 insertions(+) (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt index c084623..746d8b0 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt @@ -53,6 +53,7 @@ class ActivityAddPost : AppCompatActivity() { private lateinit var tagText: EditText private lateinit var tagButtonAdd:Button private lateinit var tagList: MutableList + private lateinit var locText: EditText private var tagidcounter:Int = 0 val LOCATIONREQCODE=123 var locationId:String?=null @@ -81,6 +82,7 @@ class ActivityAddPost : AppCompatActivity() { tagText =findViewById(R.id.acTags) as EditText tagButtonAdd = findViewById(R.id.btnActivityAddPostAddTag) as Button tagLayout = findViewById(R.id.llTags) as LinearLayout + locText=findViewById(R.id.etActivityAddPostLocationText) as EditText addDescription=findViewById(R.id.tvActivityAddPostDescriptiontext)as Button @@ -257,6 +259,10 @@ class ActivityAddPost : AppCompatActivity() { if(requestCode==LOCATIONREQCODE && resultCode== RESULT_OK){ var bundle=data!!.extras locationId=bundle!!.getString("locationId") + var name=bundle!!.getString("name") + locText.isGone=false + locText.isVisible=true + locText.setText(name,TextView.BufferType.EDITABLE) } } private fun sendPost(){ diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt index 701d8e8..79062c9 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt @@ -54,6 +54,7 @@ class ActivityCapturePost : AppCompatActivity() { private lateinit var tagList: MutableList private var tagidcounter:Int = 0 private lateinit var addDescription:Button + private lateinit var locText: EditText val LOCATIONREQCODE=123 @@ -78,6 +79,7 @@ class ActivityCapturePost : AppCompatActivity() { tagLayout = findViewById(R.id.llTagsCap) as LinearLayout addDescription=findViewById(R.id.tvActivityCapturePostDescriptiontext)as Button + locText=findViewById(R.id.etActivityAddPostLocationText) as EditText progressDialog= ProgressDialog(this) @@ -243,6 +245,10 @@ class ActivityCapturePost : AppCompatActivity() { if(requestCode==LOCATIONREQCODE && resultCode== RESULT_OK){ var bundle=data!!.extras locationId=bundle!!.getString("locationId") + var name=bundle!!.getString("name") + locText.isGone=false + locText.isVisible=true + locText.setText(name,TextView.BufferType.EDITABLE) } } var f:File?=null 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 25a2b4b..238c7e8 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 @@ -248,6 +248,7 @@ class MapsActivity : AppCompatActivity() { return } bundle.putString("locationId",selectedLocation!!._id) + bundle.putString("name",selectedLocation!!.name) intent.putExtras(bundle) setResult(RESULT_OK, intent) finish() diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml index 8e3fbb4..405c221 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml @@ -73,6 +73,16 @@ app:layout_constraintHorizontal_bias="0.074" app:layout_constraintStart_toStartOf="parent" /> +