From b85387e159eba45e56f83c9752003a4b0986df08 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 28 Nov 2022 10:41:48 +0100 Subject: Omogucen prikaz autocompleta kada korisnik trazi lokacije ili da doda novu lokaciju. --- .gitignore | 1 + .../brzodolokacije/Activities/ActivityAddPost.kt | 4 -- .../brzodolokacije/Activities/MapsActivity.kt | 69 ++++++++++++++++++++-- .../app/src/main/res/layout/activity_maps.xml | 20 ++++++- 4 files changed, 84 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 6609d29..1261eaf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ demoProjekat/MyApplication/.gitignore demoProjekat/ +Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml 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 995ef4d..f29db17 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 @@ -107,8 +107,6 @@ class ActivityAddPost : AppCompatActivity() { imgView} addLocation.setOnClickListener { val myIntent = Intent(this, MapsActivity::class.java) - if(location.text!=null && !location.text.trim().equals("")) - myIntent.putExtra("search",location.text.toString()) startActivityForResult(myIntent,LOCATIONREQCODE) } addDescription.setOnClickListener { @@ -254,8 +252,6 @@ class ActivityAddPost : AppCompatActivity() { longitude=bundle!!.getDouble("longitude",incorectCoord) latitude=bundle!!.getDouble("latitude",incorectCoord) var locName=bundle!!.getString("name") - if(location.text.toString().trim().equals("") && locName!=null && !locName.toString().trim().equals("")) - location.setText(locName,TextView.BufferType.EDITABLE) } } private fun sendPost(){ 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 1ff07f6..af3384d 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 @@ -3,6 +3,7 @@ package com.example.brzodolokacije.Activities import android.Manifest import android.content.Context import android.content.pm.PackageManager +import android.graphics.Color import android.location.Location import android.location.LocationManager import android.os.Build @@ -15,17 +16,17 @@ import android.util.Log import android.view.KeyEvent import android.view.MotionEvent import android.view.View -import android.widget.TextView -import android.widget.Toast +import android.widget.* +import android.widget.AdapterView.OnItemClickListener import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat +import androidx.core.widget.addTextChangedListener import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.GeocoderHelper import com.google.android.gms.location.* import com.google.android.material.button.MaterialButton import com.google.android.material.floatingactionbutton.FloatingActionButton -import com.google.android.material.textfield.TextInputEditText import org.osmdroid.config.Configuration import org.osmdroid.tileprovider.tilesource.TileSourceFactory import org.osmdroid.util.GeoPoint @@ -40,6 +41,8 @@ import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider import org.osmdroid.views.overlay.gestures.RotationGestureOverlay import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay +import java.util.* +import kotlin.collections.ArrayList class MapsActivity : AppCompatActivity() { @@ -52,7 +55,9 @@ class MapsActivity : AppCompatActivity() { private lateinit var searchButton: MaterialButton private lateinit var gpsButton: FloatingActionButton private lateinit var confirmButton: FloatingActionButton - private lateinit var searchBar: TextInputEditText + private lateinit var searchBar: AutoCompleteTextView + //private lateinit var seachSpinner:Spinner + //private lateinit var autoText:AutoCompleteTextView var client: FusedLocationProviderClient? = null var locLongitude:Double?=null var locLatitude:Double?=null @@ -68,7 +73,8 @@ class MapsActivity : AppCompatActivity() { searchButton=findViewById(R.id.ActivityMapsSearchButton) as MaterialButton gpsButton=findViewById(R.id.ActivityMapsMyLocation) as FloatingActionButton confirmButton=findViewById(R.id.ActivityMapsConfirmLocation) as FloatingActionButton - searchBar=findViewById(R.id.ActivityMapsSearchBar) as TextInputEditText + searchBar=findViewById(R.id.ActivityMapsSearchBar) as AutoCompleteTextView + //autoText=findViewById(R.id.ActivityMapsAutoCompleteTextView) as AutoCompleteTextView client= LocationServices.getFusedLocationProviderClient(this) searchButton.setOnClickListener{ searchMap() @@ -91,6 +97,9 @@ class MapsActivity : AppCompatActivity() { } false }) + searchBar.addTextChangedListener{ + onTextEnter() + } val extras = intent.extras if (extras != null) { val value = extras.getString("search") @@ -98,10 +107,59 @@ class MapsActivity : AppCompatActivity() { searchBar.setText(value,TextView.BufferType.EDITABLE) searchMap() } + setUpSpinner() + + + + } + var arraySpinner :MutableList?=null + var spinnerAdapter: ArrayAdapter?=null + fun setUpSpinner() { + arraySpinner=mutableListOf() + arraySpinner!!.add("test") +// spinnerAdapter= ArrayAdapter( +// this, +// android.R.layout.simple_list_item_1, arraySpinner!!) + spinnerAdapter= ArrayAdapter( + this, + android.R.layout.simple_list_item_1, arraySpinner!!) + searchBar.threshold=1 + searchBar.setAdapter(spinnerAdapter) + searchBar.setOnItemClickListener(OnItemClickListener { parent, view, position, id -> + val selected = parent.getItemAtPosition(position) as String + Log.d("Main",selected) + }) + + + //spinnerAdapter!!.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) +// seachSpinner.setAdapter(spinnerAdapter) +// seachSpinner.setOnItemSelectedListener(object : OnItemSelectedListener { +// override fun onItemSelected( +// arg0: AdapterView<*>?, +// arg1: View, +// position: Int, +// id: Long +// ) { +// // TODO Auto-generated method stub +// Toast.makeText(baseContext, arraySpinner!!.get(position), Toast.LENGTH_SHORT).show() +// } +// +// override fun onNothingSelected(arg0: AdapterView<*>?) { +// // TODO Auto-generated method stub +// } +// }) } + var test=1 + fun onTextEnter(){ + test++ + spinnerAdapter!!.add("test"+test) + spinnerAdapter!!.notifyDataSetChanged() + Log.d("Main","test123") + //seachSpinner.performClick() + } fun returnValue(){ val intent = intent val bundle = Bundle() @@ -224,6 +282,7 @@ class MapsActivity : AppCompatActivity() { } } fun searchMap(){ + var geocoder= GeocoderHelper.getInstance() //Log.d("Main",geocoder!!.getFromLocationName("Paris",1)[0].countryName) var locString=searchBar.text.toString().trim() diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_maps.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_maps.xml index 8d37c29..0051893 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_maps.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_maps.xml @@ -33,6 +33,7 @@ app:rippleColor="#FFFFFF" app:srcCompat="@android:drawable/ic_menu_mylocation" /> + - + + + + + + + + + + + + + + + + + \ No newline at end of file -- cgit v1.2.3 From ec9fac41c863a0b6c7d83452521f8ce0ead14c30 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 28 Nov 2022 10:42:40 +0100 Subject: Obrisani kometari. --- .../brzodolokacije/Activities/MapsActivity.kt | 26 ---------------------- 1 file changed, 26 deletions(-) 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 af3384d..d8c874c 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 @@ -56,8 +56,6 @@ class MapsActivity : AppCompatActivity() { private lateinit var gpsButton: FloatingActionButton private lateinit var confirmButton: FloatingActionButton private lateinit var searchBar: AutoCompleteTextView - //private lateinit var seachSpinner:Spinner - //private lateinit var autoText:AutoCompleteTextView var client: FusedLocationProviderClient? = null var locLongitude:Double?=null var locLatitude:Double?=null @@ -74,7 +72,6 @@ class MapsActivity : AppCompatActivity() { gpsButton=findViewById(R.id.ActivityMapsMyLocation) as FloatingActionButton confirmButton=findViewById(R.id.ActivityMapsConfirmLocation) as FloatingActionButton searchBar=findViewById(R.id.ActivityMapsSearchBar) as AutoCompleteTextView - //autoText=findViewById(R.id.ActivityMapsAutoCompleteTextView) as AutoCompleteTextView client= LocationServices.getFusedLocationProviderClient(this) searchButton.setOnClickListener{ searchMap() @@ -119,9 +116,6 @@ class MapsActivity : AppCompatActivity() { arraySpinner=mutableListOf() arraySpinner!!.add("test") -// spinnerAdapter= ArrayAdapter( -// this, -// android.R.layout.simple_list_item_1, arraySpinner!!) spinnerAdapter= ArrayAdapter( this, android.R.layout.simple_list_item_1, arraySpinner!!) @@ -133,32 +127,12 @@ class MapsActivity : AppCompatActivity() { }) - //spinnerAdapter!!.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) -// seachSpinner.setAdapter(spinnerAdapter) -// seachSpinner.setOnItemSelectedListener(object : OnItemSelectedListener { -// override fun onItemSelected( -// arg0: AdapterView<*>?, -// arg1: View, -// position: Int, -// id: Long -// ) { -// // TODO Auto-generated method stub -// Toast.makeText(baseContext, arraySpinner!!.get(position), Toast.LENGTH_SHORT).show() -// } -// -// override fun onNothingSelected(arg0: AdapterView<*>?) { -// // TODO Auto-generated method stub -// } -// }) - } var test=1 fun onTextEnter(){ test++ spinnerAdapter!!.add("test"+test) spinnerAdapter!!.notifyDataSetChanged() - Log.d("Main","test123") - //seachSpinner.performClick() } fun returnValue(){ val intent = intent -- cgit v1.2.3 From d945204fba909a2dfeb25cae2d320ab6e62eaf51 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 28 Nov 2022 11:23:53 +0100 Subject: Promenjen zahtev za pretragu lokacije na backendu. Omogucena pretraga lokacija na clientu, prikazuje se naziv lokacije. --- Backend/Api/Api/Controllers/LocationController.cs | 9 +++-- .../brzodolokacije/Activities/MapsActivity.kt | 42 ++++++++++++++++++---- .../brzodolokacije/Interfaces/IBackendApi.kt | 3 ++ 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/Backend/Api/Api/Controllers/LocationController.cs b/Backend/Api/Api/Controllers/LocationController.cs index c9ef9ba..ba9c9a8 100644 --- a/Backend/Api/Api/Controllers/LocationController.cs +++ b/Backend/Api/Api/Controllers/LocationController.cs @@ -51,10 +51,15 @@ namespace Api.Controllers return BadRequest(); } - [HttpPost("search")] + [HttpGet("search")] [Authorize(Roles = "User")] - public async Task>> searchLocation(int searchtype ,string? query,Coords? coords) + public async Task>> searchLocation(int searchtype ,string? query,double? latitude,double? longitude) { + Coords coords = new Coords(); + if (latitude!=null && longitude!=null) { + coords.latitude = (double)latitude; + coords.longitude = (double)longitude; + } List ret = new List(); switch (searchtype) { 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 d8c874c..46cc5fe 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 @@ -22,8 +22,11 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.core.widget.addTextChangedListener +import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.GeocoderHelper +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper import com.google.android.gms.location.* import com.google.android.material.button.MaterialButton import com.google.android.material.floatingactionbutton.FloatingActionButton @@ -41,6 +44,8 @@ import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider import org.osmdroid.views.overlay.gestures.RotationGestureOverlay import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay +import retrofit2.Call +import retrofit2.Response import java.util.* import kotlin.collections.ArrayList @@ -59,6 +64,8 @@ class MapsActivity : AppCompatActivity() { var client: FusedLocationProviderClient? = null var locLongitude:Double?=null var locLatitude:Double?=null + var selectedLocation:com.example.brzodolokacije.Models.Location?=null + var responseLocations:MutableList?=null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_maps) @@ -114,8 +121,6 @@ class MapsActivity : AppCompatActivity() { fun setUpSpinner() { arraySpinner=mutableListOf() - arraySpinner!!.add("test") - spinnerAdapter= ArrayAdapter( this, android.R.layout.simple_list_item_1, arraySpinner!!) @@ -128,11 +133,36 @@ class MapsActivity : AppCompatActivity() { } - var test=1 fun onTextEnter(){ - test++ - spinnerAdapter!!.add("test"+test) - spinnerAdapter!!.notifyDataSetChanged() + var api=RetrofitHelper.getInstance() + var jwtString= SharedPreferencesHelper.getValue("jwt",this) + var text=searchBar.text + if(text==null ||text.toString().trim()=="") + return + var data=api.searchLocationsQuery("Bearer "+jwtString,text.toString()) + data.enqueue(object : retrofit2.Callback> { + override fun onResponse(call: Call?>, response: Response>) { + if(response.isSuccessful){ + var existingLocation=responseLocations + responseLocations=response.body()!! + var tempList=mutableListOf() + if(existingLocation!=null && existingLocation.size>0) + for(loc in existingLocation!!){ + spinnerAdapter!!.remove(loc.name) + } + for(loc in responseLocations!!){ + spinnerAdapter!!.add(loc.name) + } + spinnerAdapter!!.notifyDataSetChanged() + } + } + + override fun onFailure(call: Call>, t: Throwable) { + + } + }) + + } fun returnValue(){ val intent = intent 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 e4bfbc8..8556047 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 @@ -92,4 +92,7 @@ interface IBackendApi { @GET("/api/Post/posts/get10Newest") fun get10Newest(@Header("Authorization") authHeader:String):Call> + @GET("api/Location/search") + fun searchLocationsQuery(@Header("Authorization") authHeader:String,@Query("query") query: String):Call> + } \ No newline at end of file -- cgit v1.2.3 From 9c3cebe6f89586d2abd5f854cf5baa079d839b39 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 28 Nov 2022 11:54:31 +0100 Subject: Napravljen dialog za dodavanje imena lokacije. Dodata logika dodavanje lokacije. Uplodovanje lokacije. Dodata provera na backu ukoliko nema tagova. Omoguceno dodavanje objave pomocu novog dodavanja lokacije. --- Backend/Api/Api/Services/PostService.cs | 7 +- .../brzodolokacije/Activities/ActivityAddPost.kt | 74 ++------------- .../brzodolokacije/Activities/MapsActivity.kt | 102 ++++++++++++++++++--- 3 files changed, 101 insertions(+), 82 deletions(-) diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs index b75656e..e2e4e40 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -39,8 +39,11 @@ namespace Api.Services p.comments = new List(); p.images = new List(); p.createdAt = DateTime.Now.ToUniversalTime(); - var tags = post.tags.Split("|").ToList(); - p.tags = tags; + if (post.tags != null) + { + var tags = post.tags.Split("|").ToList(); + p.tags = tags; + } var folderPath = Path.Combine(Directory.GetCurrentDirectory(), "Files", p.ownerId); if (!Directory.Exists(folderPath)) { 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 f29db17..c2abf37 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,33 +53,27 @@ class ActivityAddPost : AppCompatActivity() { private lateinit var tagButtonAdd:Button private lateinit var tagList: MutableList private var tagidcounter:Int = 0 - val incorectCoord:Double=1000.0 val LOCATIONREQCODE=123 - var longitude:Double=incorectCoord - var latitude:Double=incorectCoord + var locationId:String?=null var progressDialog:ProgressDialog?=null private lateinit var addDescription:Button - //private var paths :ArrayList?=null + private var place=0; override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_add_post) -// Toast.makeText( -// applicationContext, "Add new ", Toast.LENGTH_LONG -// ).show(); + uploadedImages= ArrayList() tagList = mutableListOf() tagButtons= mutableListOf() tagidcounter = 0 - //paths= ArrayList() uploadFromGallery=findViewById(R.id.btnActivityAddPostUploadFromGalleryVisible) as Button showNextImage=findViewById(R.id.nextImage) as Button showPreviousImage=findViewById(R.id.previousImage) as Button switcher=findViewById(R.id.isActivityAddPostSwitcher) as ImageSwitcher - //location=findViewById(R.id.etActivityAddPostLocation) as EditText description=findViewById(R.id.etActivityAddPostDescription) as EditText post=findViewById(R.id.btnActivityAddPostPost) as Button addLocation=findViewById(R.id.btnActivityAddPostAddLocation) as Button @@ -205,11 +199,11 @@ class ActivityAddPost : AppCompatActivity() { description.hint="Unesite opis" description.setHintTextColor(Color.RED) } - if(longitude!=incorectCoord && latitude!=incorectCoord){ + if(locationId==null || locationId!!.trim()==""){ Toast.makeText(this,"Unesite lokaciju klikom na dugme",Toast.LENGTH_LONG) } - if(!locationString.isEmpty() && !descriptionString.isEmpty() && longitude!=incorectCoord && latitude!=incorectCoord && uploadedImages!!.size>0){ + if(!descriptionString.isEmpty() && uploadedImages!!.size>0){ sendPost() } } @@ -249,9 +243,7 @@ class ActivityAddPost : AppCompatActivity() { } if(requestCode==LOCATIONREQCODE && resultCode== RESULT_OK){ var bundle=data!!.extras - longitude=bundle!!.getDouble("longitude",incorectCoord) - latitude=bundle!!.getDouble("latitude",incorectCoord) - var locName=bundle!!.getString("name") + locationId=bundle!!.getString("locationId") } } private fun sendPost(){ @@ -259,58 +251,8 @@ class ActivityAddPost : AppCompatActivity() { } fun uploadLocation() { - //TO DO SEARCH EXISTING LOCATION FROM DB - //IF NOT EXISTS ADD NEW LOCATION - progressDialog!!.show() - val api =RetrofitHelper.getInstance() - var geocoder=GeocoderHelper.getInstance() - var loc1=geocoder!!.getFromLocation(latitude,longitude,1) - if(loc1==null ||loc1.size<=0) - { - progressDialog!!.dismiss() - Toast.makeText(this,"Lokacija ne postoji",Toast.LENGTH_LONG); - return - } - var countryName=loc1[0].countryName - var address="todo not possible in query" - var city="its null" - if(loc1[0].adminArea!=null) - city=loc1[0].adminArea//not possible - var loc:Location=Location("",locationString,city,countryName,address,latitude,longitude,LocationType.GRAD) - var jwtString= SharedPreferencesHelper.getValue("jwt",this) - var data=api.addLocation("Bearer "+jwtString,loc) - - data.enqueue(object : retrofit2.Callback { - override fun onResponse(call: Call, response: Response) { - if(response.isSuccessful()){ - - uploadPost(response.body()!!._id) - Toast.makeText( - applicationContext, "USPEH", Toast.LENGTH_LONG - ).show(); - - }else { - progressDialog!!.dismiss() - - if (response.errorBody() != null) { - Log.d("Main",response.errorBody()!!.string()) - Log.d("Main",response.message()) - } - Log.d("Main",response.errorBody()!!.string()) - Log.d("Main",response.message()) - } - - - } - - override fun onFailure(call: Call, t: Throwable) { - Toast.makeText( - applicationContext, t.toString(), Toast.LENGTH_LONG - ).show(); - Log.d("Main",t.toString()) - progressDialog!!.dismiss() - } - }) + if(locationId!=null && locationId!!.trim()!="") + uploadPost(locationId!!) } fun uploadPost(loc:String){ val api =RetrofitHelper.getInstance() 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 46cc5fe..faaa3b4 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 @@ -1,7 +1,9 @@ package com.example.brzodolokacije.Activities import android.Manifest +import android.app.AlertDialog import android.content.Context +import android.content.DialogInterface import android.content.pm.PackageManager import android.graphics.Color import android.location.Location @@ -22,6 +24,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.core.widget.addTextChangedListener +import com.example.brzodolokacije.Models.LocationType import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.GeocoderHelper @@ -88,8 +91,12 @@ class MapsActivity : AppCompatActivity() { getLocation() } confirmButton.setOnClickListener{ - if(locLatitude!=null && locLatitude!=null) + if(selectedLocation!=null) returnValue() + else{ + addLocation() + + } } searchBar.setOnKeyListener(View.OnKeyListener { v1, keyCode, event -> // If the event is a key-down event on the "enter" button if (event.action === KeyEvent.ACTION_DOWN && @@ -115,6 +122,73 @@ class MapsActivity : AppCompatActivity() { + } + fun addLocation(){ + var editText=EditText(this) + var dialog=AlertDialog.Builder(this).setTitle("Naziv").setMessage("Unesite naziv") + .setView(editText) + dialog.setPositiveButton("Dodaj") { dialog, which -> + uploadLocation(editText.text.toString()) + } + dialog.setNegativeButton("Prekini") { dialog, which -> + + } + dialog.show() + + } + fun uploadLocation(locationName:String){ + val api =RetrofitHelper.getInstance() + var geocoder=GeocoderHelper.getInstance() + var loc1=geocoder!!.getFromLocation(locLatitude!!,locLongitude!!,1) + if(loc1==null ||loc1.size<=0) + { + return + } + var countryName=loc1[0].countryName + var address="todo not possible in query" + var city="its null" + if(loc1[0].adminArea!=null) + city=loc1[0].adminArea//not possible + var loc: com.example.brzodolokacije.Models.Location = + com.example.brzodolokacije.Models.Location( + "", + locationName, + city, + countryName, + address, + locLatitude!!, + locLongitude!!, + LocationType.GRAD + ) + var jwtString= SharedPreferencesHelper.getValue("jwt",this) + var data=api.addLocation("Bearer "+jwtString,loc) + + data.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful()){ + selectedLocation=response.body() + returnValue() + + }else { + + if (response.errorBody() != null) { + Log.d("Main",response.errorBody()!!.string()) + Log.d("Main",response.message()) + } + Log.d("Main",response.errorBody()!!.string()) + Log.d("Main",response.message()) + } + + + } + + override fun onFailure(call: Call, t: Throwable) { + Toast.makeText( + applicationContext, t.toString(), Toast.LENGTH_LONG + ).show(); + Log.d("Main",t.toString()) + } + }) } var arraySpinner :MutableList?=null var spinnerAdapter: ArrayAdapter?=null @@ -128,10 +202,22 @@ class MapsActivity : AppCompatActivity() { searchBar.setAdapter(spinnerAdapter) searchBar.setOnItemClickListener(OnItemClickListener { parent, view, position, id -> val selected = parent.getItemAtPosition(position) as String - Log.d("Main",selected) + selectedLocation=responseLocations!!.find { location -> location.name==selected } + Log.d("main",selectedLocation.toString()) + confirmButton.visibility=View.VISIBLE }) + } + fun returnValue(){ + val intent = intent + val bundle = Bundle() + if(selectedLocation==null) + return + bundle.putString("locationId",selectedLocation!!._id) + intent.putExtras(bundle) + setResult(RESULT_OK, intent) + finish() } fun onTextEnter(){ var api=RetrofitHelper.getInstance() @@ -164,18 +250,6 @@ class MapsActivity : AppCompatActivity() { } - fun returnValue(){ - val intent = intent - val bundle = Bundle() - bundle.putDouble("longitude", locLongitude!!) - bundle.putDouble("latitude", locLatitude!!) - if(searchBar.text!=null && !searchBar.text.toString().equals("")) - bundle.putString("name", searchBar.text.toString()) - intent.putExtras(bundle) - setResult(RESULT_OK, intent) - finish() - } - override fun onResume() { super.onResume() map!!.onResume() -- cgit v1.2.3 From 5b1191e73914cdb9e307c1763beaecbfa60b8acc Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 28 Nov 2022 12:00:49 +0100 Subject: Prilagodjeno uplodanje objave slikom za kamere za novo dopremanje lokacije. --- .../brzodolokacije/Activities/ActivityAddPost.kt | 1 + .../Activities/ActivityCapturePost.kt | 76 +++------------------- 2 files changed, 9 insertions(+), 68 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 c2abf37..6835e6e 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 @@ -255,6 +255,7 @@ class ActivityAddPost : AppCompatActivity() { uploadPost(locationId!!) } fun uploadPost(loc:String){ + progressDialog!!.show() val api =RetrofitHelper.getInstance() var desc=descriptionString description.text.clear() 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 2321f18..94b5574 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 @@ -41,13 +41,10 @@ import java.io.InputStream class ActivityCapturePost : AppCompatActivity() { private lateinit var takePhoto: Button - //private lateinit var location: EditText private lateinit var description: EditText - private lateinit var locationString: String private lateinit var descriptionString: String private lateinit var post: Button 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