diff options
author | branislav.radivojevic <wafflemynxyt@gmail.com> | 2022-11-21 15:04:34 +0100 |
---|---|---|
committer | branislav.radivojevic <wafflemynxyt@gmail.com> | 2022-11-21 15:04:34 +0100 |
commit | 66ad4ba5365eb6a07843c59f5c65f78999015385 (patch) | |
tree | 32b46a8b045552f3ca1429cec84742922bc17d43 /Client | |
parent | 045d19f46a9a79971ab9b72cad62a6b0e27bac89 (diff) |
implementacija tagova na postu
Diffstat (limited to 'Client')
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 |