aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
authorbranislav.radivojevic <wafflemynxyt@gmail.com>2022-11-21 15:04:34 +0100
committerbranislav.radivojevic <wafflemynxyt@gmail.com>2022-11-21 15:04:34 +0100
commit66ad4ba5365eb6a07843c59f5c65f78999015385 (patch)
tree32b46a8b045552f3ca1429cec84742922bc17d43 /Client
parent045d19f46a9a79971ab9b72cad62a6b0e27bac89 (diff)
implementacija tagova na postu
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt68
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt60
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt1
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml26
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml63
5 files changed, 188 insertions, 30 deletions
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 c4b5a60..c247743 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
@@ -8,6 +8,7 @@ import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import android.util.Log
+import android.util.TypedValue
import android.view.View
import android.widget.*
import androidx.appcompat.app.AppCompatActivity
@@ -15,6 +16,7 @@ import androidx.appcompat.widget.AppCompatImageView
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
+import androidx.core.view.setMargins
import com.example.brzodolokacije.Models.Location
import com.example.brzodolokacije.Models.LocationType
import com.example.brzodolokacije.Models.PostPreview
@@ -45,8 +47,11 @@ class ActivityAddPost : AppCompatActivity() {
private lateinit var post:Button
private lateinit var addLocation:Button
private lateinit var tagLayout:LinearLayout
- private lateinit var tagButtons:List<Button>
- private lateinit var tagAutoText: AutoCompleteTextView
+ private lateinit var tagButtons:MutableList<Button>
+ private lateinit var tagText: EditText
+ private lateinit var tagButtonAdd:Button
+ private lateinit var tagList: MutableList<String>
+ private var tagidcounter:Int = 0
val incorectCoord:Double=1000.0
val LOCATIONREQCODE=123
var longitude:Double=incorectCoord
@@ -61,7 +66,9 @@ class ActivityAddPost : AppCompatActivity() {
// applicationContext, "Add new ", Toast.LENGTH_LONG
// ).show();
uploadedImages= ArrayList()
-
+ tagList = mutableListOf()
+ tagButtons= mutableListOf()
+ tagidcounter = 0
//paths= ArrayList()
uploadFromGallery=findViewById<View>(R.id.btnActivityAddPostUploadFromGalleryVisible) as Button
@@ -72,12 +79,9 @@ class ActivityAddPost : AppCompatActivity() {
description=findViewById<View>(R.id.etActivityAddPostDescription) as EditText
post=findViewById<View>(R.id.btnActivityAddPostPost) as Button
addLocation=findViewById<View>(R.id.btnActivityAddPostAddLocation) as Button
-
- val tags=resources.getStringArray(R.array.Tags)
- //Log.d("Main",tags[0].toString())
- val tagadapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,tags)
- tagAutoText= findViewById(R.id.acTags) as AutoCompleteTextView
- tagAutoText.setAdapter(tagadapter)
+ tagText =findViewById<View>(R.id.acTags) as EditText
+ tagButtonAdd = findViewById<View>(R.id.btnActivityAddPostAddTag) as Button
+ tagLayout = findViewById<View>(R.id.llTags) as LinearLayout
progressDialog= ProgressDialog(this)
progressDialog!!.setMessage("Molimo sacekajte!!!")
@@ -97,6 +101,41 @@ class ActivityAddPost : AppCompatActivity() {
startActivityForResult(myIntent,LOCATIONREQCODE)
}
+ //dodavanje i brisanje tagova
+ tagButtonAdd.setOnClickListener {
+ if(tagList.count()<5) {
+ 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 5 tagova",Toast.LENGTH_LONG)
+ }
+ }
+
//dodavanje iz galerije
uploadFromGallery.setOnClickListener{
@@ -267,6 +306,13 @@ class ActivityAddPost : AppCompatActivity() {
var locReq=RequestBody.create("text/plain".toMediaTypeOrNull(),loc)
var descReq=RequestBody.create("text/plain".toMediaTypeOrNull(),desc)
var idReq=RequestBody.create("text/plain".toMediaTypeOrNull(),"dsa")
+
+ var tagliststring=""
+ for(tag in tagList){
+ tagliststring=tagliststring+tag+"|"
+ }
+ var tagReq=RequestBody.create("text/plain".toMediaTypeOrNull(),tagliststring)
+
val imagesParts = arrayOfNulls<MultipartBody.Part>(
uploadedImages!!.size
)
@@ -285,8 +331,8 @@ class ActivityAddPost : AppCompatActivity() {
imagesParts[i]=MultipartBody.Part.createFormData("images",file.name,imageBody)
}
var jwtString= SharedPreferencesHelper.getValue("jwt",this)
- var data=api.addPost("Bearer "+jwtString,imagesParts,idReq,descReq,locReq)
-
+ var data=api.addPost("Bearer "+jwtString,imagesParts,idReq,descReq,locReq,tagReq)
+ //multipart formdata : images , _id , description , locationId , tags
data.enqueue(object : retrofit2.Callback<PostPreview?> {
override fun onResponse(call: Call<PostPreview?>, response: Response<PostPreview?>) {
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 7f2c264..3fab37a 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
@@ -10,6 +10,7 @@ import android.net.Uri
import android.os.Bundle
import android.provider.MediaStore
import android.util.Log
+import android.util.TypedValue
import android.view.View
import android.widget.*
import androidx.activity.result.contract.ActivityResultContracts
@@ -17,6 +18,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
+import androidx.core.view.setMargins
import com.example.brzodolokacije.Models.Location
import com.example.brzodolokacije.Models.LocationType
import com.example.brzodolokacije.Models.PostPreview
@@ -46,6 +48,12 @@ class ActivityCapturePost : AppCompatActivity() {
private lateinit var showImage: ImageView
private var uploadedImages: Uri? = null
private lateinit var addLocation:Button
+ private lateinit var tagLayout:LinearLayout
+ private lateinit var tagButtons:MutableList<Button>
+ private lateinit var tagText: EditText
+ private lateinit var tagButtonAdd:Button
+ private lateinit var tagList: MutableList<String>
+ private var tagidcounter:Int = 0
val incorectCoord:Double=1000.0
val LOCATIONREQCODE=123
@@ -56,12 +64,19 @@ class ActivityCapturePost : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_capture_post)
+ tagList = mutableListOf()
+ tagButtons= mutableListOf()
+ tagidcounter = 0
+
location = findViewById<View>(R.id.etActivityCapturePostLocation) as EditText
description = findViewById<View>(R.id.etActivityCapturePostDescription) as EditText
post = findViewById<View>(R.id.btnActivityCapturePostPost) as Button
showImage = findViewById<View>(R.id.ivActivityCapturePostImage) as ImageView
takePhoto = findViewById<View>(R.id.btnActivityCapturePostCaptureVisible) as Button
addLocation=findViewById<View>(R.id.btnActivityCapturePostAddLocation) as Button
+ tagText =findViewById<View>(R.id.acTagsCap) as EditText
+ tagButtonAdd = findViewById<View>(R.id.btnActivityAddPostAddTagCap) as Button
+ tagLayout = findViewById<View>(R.id.llTagsCap) as LinearLayout
progressDialog= ProgressDialog(this)
progressDialog!!.setMessage("Molimo sacekajte!!!")
@@ -69,6 +84,42 @@ class ActivityCapturePost : AppCompatActivity() {
progressDialog!!.setCanceledOnTouchOutside(false)
+ //dodavanje i brisanje tagova
+ tagButtonAdd.setOnClickListener {
+ if(tagList.count()<5) {
+ 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 5 tagova",Toast.LENGTH_LONG)
+ }
+ }
+
+
//dodavanje sa kamere
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -259,6 +310,13 @@ class ActivityCapturePost : AppCompatActivity() {
var locReq= RequestBody.create("text/plain".toMediaTypeOrNull(),loc)
var descReq= RequestBody.create("text/plain".toMediaTypeOrNull(),desc)
var idReq= RequestBody.create("text/plain".toMediaTypeOrNull(),"dsa")
+
+ var tagliststring=""
+ for(tag in tagList){
+ tagliststring=tagliststring+tag+"|"
+ }
+ var tagReq=RequestBody.create("text/plain".toMediaTypeOrNull(),tagliststring)
+
val imagesParts = arrayOfNulls<MultipartBody.Part>(
1
)
@@ -267,7 +325,7 @@ class ActivityCapturePost : AppCompatActivity() {
imagesParts[0]= MultipartBody.Part.createFormData("images",f!!.name,imageBody)
var jwtString= SharedPreferencesHelper.getValue("jwt",this)
- var data=api.addPost("Bearer "+jwtString,imagesParts,idReq,descReq,locReq)
+ var data=api.addPost("Bearer "+jwtString,imagesParts,idReq,descReq,locReq,tagReq)
data.enqueue(object : retrofit2.Callback<PostPreview?> {
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
index 9f53522..1ba6b53 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
@@ -35,6 +35,7 @@ interface IBackendApi {
,@Part("_id") _id:RequestBody
,@Part("description") description:RequestBody
,@Part("locationId") locationId:RequestBody
+ ,@Part("tags") tags:RequestBody
):Call<PostPreview>
@POST("api/Post/posts/{id}/addrating")
fun addRating(@Header("Authorization") authHeader:String,@Path("id") id:String,@Body rating: RatingReceive):Call<ResponseBody>
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 c0b1ab7..fbe2230 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
@@ -152,7 +152,7 @@
<LinearLayout
android:id="@+id/llTags"
android:layout_width="0dp"
- android:layout_height="50dp"
+ android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:orientation="horizontal"
@@ -160,15 +160,33 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"></LinearLayout>
- <AutoCompleteTextView
+ <EditText
android:id="@+id/acTags"
- android:layout_width="wrap_content"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
+ android:layout_marginRight="20dp"
+ android:hint="Planina,Reka,Park..."
android:minHeight="48dp"
- android:hint="Dodaj tag"
+ android:maxLength= "12"
app:layout_constraintBottom_toTopOf="@+id/btnActivityAddPostPost"
+ app:layout_constraintEnd_toStartOf="@+id/btnActivityAddPostAddTag"
app:layout_constraintStart_toStartOf="parent" />
+ <Button
+ android:id="@+id/btnActivityAddPostAddTag"
+ android:layout_width="wrap_content"
+ android:layout_height="40dp"
+ android:layout_marginTop="5dp"
+ android:layout_marginEnd="20dp"
+ android:layout_marginStart="20dp"
+ android:layout_marginBottom="5dp"
+ android:background="@drawable/rounded_cyan_button"
+ android:backgroundTint="#1C789A"
+ android:text="Dodaj tag"
+ app:layout_constraintBottom_toTopOf="@+id/btnActivityAddPostPost"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/llTags" />
+
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml
index c3d42a5..2b64a27 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_capture_post.xml
@@ -39,30 +39,28 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
- android:layout_marginTop="516dp"
android:layout_marginEnd="16dp"
android:text="Lokacija"
+ app:layout_constraintBottom_toTopOf="@+id/etActivityCapturePostLocation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintStart_toStartOf="parent" />
<EditText
android:id="@+id/etActivityCapturePostLocation"
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
- android:layout_marginTop="4dp"
android:layout_marginEnd="16dp"
android:ems="10"
android:hint="Reykjavik, Iceland"
+ android:importantForAutofill="no"
android:inputType="textEmailAddress"
+ app:layout_constraintBottom_toTopOf="@+id/tvActivityCapturePostDescriptiontext"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/tvActivityCapturePostLocationtext"
- tools:ignore="DuplicateSpeakableTextCheck,TextContrastCheck"
- android:importantForAutofill="no" />
+ tools:ignore="DuplicateSpeakableTextCheck,TextContrastCheck" />
<Button
android:id="@+id/btnActivityCapturePostAddLocation"
android:layout_width="wrap_content"
@@ -82,29 +80,27 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
- android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:text="Opis"
+ app:layout_constraintBottom_toTopOf="@+id/etActivityCapturePostDescription"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/etActivityCapturePostLocation" />
+ app:layout_constraintStart_toStartOf="parent" />
<EditText
android:id="@+id/etActivityCapturePostDescription"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="16dp"
- android:layout_marginTop="4dp"
android:layout_marginEnd="16dp"
android:ems="10"
android:hint="Reykjavik, Iceland"
+ android:importantForAutofill="no"
android:inputType="textEmailAddress"
+ app:layout_constraintBottom_toTopOf="@+id/llTagsCap"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/tvActivityCapturePostDescriptiontext"
- tools:ignore="TextContrastCheck"
- android:importantForAutofill="no" />
+ tools:ignore="TextContrastCheck" />
<Button
@@ -139,4 +135,43 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+ <LinearLayout
+ android:id="@+id/llTagsCap"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="20dp"
+ android:layout_marginRight="20dp"
+ android:orientation="horizontal"
+ app:layout_constraintBottom_toTopOf="@+id/acTagsCap"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"></LinearLayout>
+
+ <EditText
+ android:id="@+id/acTagsCap"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="20dp"
+ android:layout_marginRight="20dp"
+ android:hint="Planina,Reka,Park..."
+ android:minHeight="48dp"
+ android:maxLength= "12"
+ app:layout_constraintBottom_toTopOf="@+id/btnActivityCapturePostPost"
+ app:layout_constraintEnd_toStartOf="@+id/btnActivityAddPostAddTagCap"
+ app:layout_constraintStart_toStartOf="parent" />
+
+ <Button
+ android:id="@+id/btnActivityAddPostAddTagCap"
+ android:layout_width="wrap_content"
+ android:layout_height="40dp"
+ android:layout_marginTop="5dp"
+ android:layout_marginEnd="20dp"
+ android:layout_marginStart="20dp"
+ android:layout_marginBottom="5dp"
+ android:background="@drawable/rounded_cyan_button"
+ android:backgroundTint="#1C789A"
+ android:text="Dodaj tag"
+ app:layout_constraintBottom_toTopOf="@+id/btnActivityCapturePostPost"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/llTagsCap" />
+
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file