aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Backend/Api/Api/Controllers/LocationController.cs9
-rw-r--r--Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml17
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt79
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt76
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowFollowersAndFollowing.kt39
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt10
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt157
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserProfile.kt26
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt3
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_person_add_alt_24.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_person_remove_24.xml7
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_message_24.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_button.xml4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_maps.xml20
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_followers_and_following.xml68
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_user_profile.xml127
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_profile.xml248
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/values/styles.xml2
21 files changed, 420 insertions, 489 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/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<ActionResult<List<Location>>> searchLocation(int searchtype ,string? query,Coords? coords)
+ public async Task<ActionResult<List<Location>>> 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<Location> ret = new List<Location>();
switch (searchtype)
{
diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml
index 0c412d8..2241c80 100644
--- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml
+++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml
@@ -37,9 +37,17 @@
android:usesCleartextTraffic="true"
tools:targetApi="31">
<activity
+ android:name=".Activities.ActivityShowFollowersAndFollowing"
+ android:exported="false"
+ android:screenOrientation="portrait">
+ <meta-data
+ android:name="android.app.lib_name"
+ android:value="" />
+ </activity>
+ <activity
android:name=".Activities.ActivityUserProfile"
android:exported="false"
- android:screenOrientation="portrait" >
+ android:screenOrientation="portrait">
<meta-data
android:name="android.app.lib_name"
android:value="" />
@@ -47,8 +55,8 @@
<activity
android:name=".Activities.ChatActivityConversation"
android:exported="false"
- android:windowSoftInputMode="stateVisible|adjustPan"
- android:screenOrientation="portrait" >
+ android:screenOrientation="portrait"
+ android:windowSoftInputMode="stateVisible|adjustPan">
<meta-data
android:name="android.app.lib_name"
android:value="" />
@@ -56,11 +64,10 @@
<activity
android:name=".Activities.ChatActivity"
android:exported="true"
- android:screenOrientation="portrait" >
+ android:screenOrientation="portrait">
<meta-data
android:name="android.app.lib_name"
android:value="" />
-
</activity>
<meta-data
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 6db305e..efe2ac2 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<String>
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<String?>?=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<View>(R.id.btnActivityAddPostUploadFromGalleryVisible) as Button
showNextImage=findViewById<View>(R.id.nextImage) as Button
showPreviousImage=findViewById<View>(R.id.previousImage) as Button
switcher=findViewById<View>(R.id.isActivityAddPostSwitcher) as ImageSwitcher
- //location=findViewById<View>(R.id.etActivityAddPostLocation) as EditText
description=findViewById<View>(R.id.etActivityAddPostDescription) as EditText
post=findViewById<View>(R.id.btnActivityAddPostPost) as Button
addLocation=findViewById<View>(R.id.btnActivityAddPostAddLocation) as Button
@@ -107,8 +101,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 {
@@ -207,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()
}
}
@@ -251,11 +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")
- if(location.text.toString().trim().equals("") && locName!=null && !locName.toString().trim().equals(""))
- location.setText(locName,TextView.BufferType.EDITABLE)
+ locationId=bundle!!.getString("locationId")
}
}
private fun sendPost(){
@@ -263,60 +251,11 @@ 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<Location?> {
- override fun onResponse(call: Call<Location?>, response: Response<Location?>) {
- 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<Location?>, 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){
+ 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 40adea2..0221241 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<Button>
@@ -57,10 +54,10 @@ class ActivityCapturePost : AppCompatActivity() {
private var tagidcounter:Int = 0
private lateinit var addDescription:Button
- val incorectCoord:Double=1000.0
+
val LOCATIONREQCODE=123
- var longitude:Double=incorectCoord
- var latitude:Double=incorectCoord
+ var locationId:String?=null
+
var progressDialog: ProgressDialog?=null
override fun onCreate(savedInstanceState: Bundle?) {
@@ -70,7 +67,6 @@ class ActivityCapturePost : AppCompatActivity() {
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
@@ -217,14 +213,10 @@ class ActivityCapturePost : AppCompatActivity() {
// locationString = location.text.toString().trim()
descriptionString = description.text.toString().trim()
//prazan unos?
- if (locationString.isEmpty()) {
- // location.hint = "Unesite lokaciju"
- // location.setHintTextColor(Color.RED)
- }else
if (descriptionString.isEmpty()) {
description.hint = "Unesite opis"
description.setHintTextColor(Color.RED)
- }else if(f!=null && longitude!=incorectCoord && latitude!=incorectCoord){
+ }else if(f!=null && locationId!=null && locationId!!.trim()!=""){
uploadLocation()
}
@@ -237,11 +229,7 @@ class ActivityCapturePost : AppCompatActivity() {
super.onActivityResult(requestCode, resultCode, data)
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")
- //if(location.text.toString().trim().equals("") && locName!=null && !locName.toString().trim().equals(""))
- // location.setText(locName, TextView.BufferType.EDITABLE)
+ locationId=bundle!!.getString("locationId")
}
}
var f:File?=null
@@ -266,59 +254,11 @@ class ActivityCapturePost : 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=loc1[0].adminArea//not possible
- //var address=loc1[0].subAdminArea
- 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<Location?> {
- override fun onResponse(call: Call<Location?>, response: Response<Location?>) {
- 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<Location?>, 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){
+ 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/ActivityShowFollowersAndFollowing.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowFollowersAndFollowing.kt
new file mode 100644
index 0000000..845021e
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowFollowersAndFollowing.kt
@@ -0,0 +1,39 @@
+package com.example.brzodolokacije.Activities
+
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.widget.Button
+import android.widget.FrameLayout
+import androidx.fragment.app.FragmentTransaction
+import com.example.brzodolokacije.Fragments.FragmentFollowers
+import com.example.brzodolokacije.Fragments.FragmentFollowing
+import com.example.brzodolokacije.Fragments.FragmentRegister
+import com.example.brzodolokacije.R
+
+class ActivityShowFollowersAndFollowing : AppCompatActivity() {
+
+ private lateinit var showFollowers:Button
+ private lateinit var showFollowing:Button
+ private lateinit var fragmentContainer:FrameLayout
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_show_followers_and_following)
+
+ showFollowers=findViewById(R.id.btnActivityShowFollowersAndFollowingShowFollowers)
+ showFollowing=findViewById(R.id.btnActivityShowFollowersAndFollowingShowFollowing)
+ fragmentContainer=findViewById(R.id.flActivityShowFollowerAndFollowing)
+
+ showFollowers.setOnClickListener {
+ var fm: FragmentTransaction =supportFragmentManager.beginTransaction()
+ fm.replace(R.id.flActivityShowFollowerAndFollowing, FragmentFollowers())
+ fm.commit()
+ }
+
+ showFollowing.setOnClickListener {
+ var fm: FragmentTransaction =supportFragmentManager.beginTransaction()
+ fm.replace(R.id.flActivityShowFollowerAndFollowing, FragmentFollowing())
+ fm.commit()
+ }
+
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt
index 56e9190..2d290db 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt
@@ -11,11 +11,16 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import com.bumptech.glide.Glide
import com.example.brzodolokacije.Fragments.FragmentShowUserPosts
+import com.example.brzodolokacije.Models.PostPreview
import com.example.brzodolokacije.Models.User
import com.example.brzodolokacije.Models.UserReceive
import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
+import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.google.gson.Gson
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
class ActivityUserProfile : AppCompatActivity() {
private lateinit var name:TextView
@@ -36,7 +41,7 @@ class ActivityUserProfile : AppCompatActivity() {
followersNumber=findViewById(R.id.tvActivityUserProfileFollowersNo)
followingNumber=findViewById(R.id.tvActivityUserProfileFollowNo)
profilePicture=findViewById(R.id.tvActivityProfileProfilePicture)
- followUser=findViewById(R.id.ibActivityUserProfileFollow)
+ followUser=findViewById(R.id.btnActivityUserProfileFollow)
showUserPosts=findViewById(R.id.btnActivityUserProfileShowPosts)
fragmentContainer=findViewById(R.id.flActivityProfileFragmentContainer)
@@ -60,6 +65,9 @@ class ActivityUserProfile : AppCompatActivity() {
}
followUser.setOnClickListener{
+ val api = RetrofitHelper.getInstance()
+ val token= SharedPreferencesHelper.getValue("jwt", this@ActivityUserProfile)
+ api.addFollower("Bearer "+token,myObject._id);
}
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..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,8 +1,11 @@
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
import android.location.LocationManager
import android.os.Build
@@ -15,17 +18,21 @@ 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.Models.LocationType
+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
-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 +47,10 @@ 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
class MapsActivity : AppCompatActivity() {
@@ -52,10 +63,12 @@ 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
var client: FusedLocationProviderClient? = null
var locLongitude:Double?=null
var locLatitude:Double?=null
+ var selectedLocation:com.example.brzodolokacije.Models.Location?=null
+ var responseLocations:MutableList<com.example.brzodolokacije.Models.Location>?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_maps)
@@ -68,7 +81,7 @@ class MapsActivity : AppCompatActivity() {
searchButton=findViewById<View>(R.id.ActivityMapsSearchButton) as MaterialButton
gpsButton=findViewById<View>(R.id.ActivityMapsMyLocation) as FloatingActionButton
confirmButton=findViewById<View>(R.id.ActivityMapsConfirmLocation) as FloatingActionButton
- searchBar=findViewById<View>(R.id.ActivityMapsSearchBar) as TextInputEditText
+ searchBar=findViewById<View>(R.id.ActivityMapsSearchBar) as AutoCompleteTextView
client= LocationServices.getFusedLocationProviderClient(this)
searchButton.setOnClickListener{
searchMap()
@@ -78,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 &&
@@ -91,6 +108,9 @@ class MapsActivity : AppCompatActivity() {
}
false
})
+ searchBar.addTextChangedListener{
+ onTextEnter()
+ }
val extras = intent.extras
if (extras != null) {
val value = extras.getString("search")
@@ -98,22 +118,138 @@ class MapsActivity : AppCompatActivity() {
searchBar.setText(value,TextView.BufferType.EDITABLE)
searchMap()
}
+ setUpSpinner()
+
+ }
+ 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<com.example.brzodolokacije.Models.Location?> {
+ override fun onResponse(call: Call<com.example.brzodolokacije.Models.Location?>, response: Response<com.example.brzodolokacije.Models.Location?>) {
+ 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<com.example.brzodolokacije.Models.Location?>, t: Throwable) {
+ Toast.makeText(
+ applicationContext, t.toString(), Toast.LENGTH_LONG
+ ).show();
+ Log.d("Main",t.toString())
+ }
+ })
+ }
+ var arraySpinner :MutableList<String>?=null
+ var spinnerAdapter: ArrayAdapter<String>?=null
+
+ fun setUpSpinner() {
+ arraySpinner=mutableListOf<String>()
+ spinnerAdapter= ArrayAdapter<String>(
+ 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
+ selectedLocation=responseLocations!!.find { location -> location.name==selected }
+ Log.d("main",selectedLocation.toString())
+ confirmButton.visibility=View.VISIBLE
+ })
+
}
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())
+ if(selectedLocation==null)
+ return
+ bundle.putString("locationId",selectedLocation!!._id)
intent.putExtras(bundle)
setResult(RESULT_OK, intent)
finish()
}
+ fun onTextEnter(){
+ 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<MutableList<com.example.brzodolokacije.Models.Location>> {
+ override fun onResponse(call: Call<MutableList<com.example.brzodolokacije.Models.Location>?>, response: Response<MutableList<com.example.brzodolokacije.Models.Location>>) {
+ if(response.isSuccessful){
+ var existingLocation=responseLocations
+ responseLocations=response.body()!!
+ var tempList=mutableListOf<String>()
+ 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<MutableList<com.example.brzodolokacije.Models.Location>>, t: Throwable) {
+ }
+ })
+
+
+ }
override fun onResume() {
super.onResume()
map!!.onResume()
@@ -224,6 +360,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/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
index 7c6d998..3427658 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
@@ -214,8 +214,8 @@ class FragmentProfile : Fragment(com.example.brzodolokacije.R.layout.fragment_pr
username.setText("@"+user.username)
postsCount.setText(user.postcount.toString())
- followersCount.setText("to do")
- followingCount.setText("to do")
+ followersCount.setText(user.followersNumber.toString())
+ followingCount.setText(user.followingNumber.toString())
userId=user._id
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserProfile.kt
deleted file mode 100644
index 2635adb..0000000
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserProfile.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.brzodolokacije.Fragments
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import com.example.brzodolokacije.R
-
-class FragmentUserProfile : Fragment() {
-
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
-
- val view= inflater.inflate(R.layout.fragment_user_profile, container, false)
-
-
-
- return view
- }
-
-
-} \ No newline at end of file
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<MutableList<PostPreview>>
+ @GET("api/Location/search")
+ fun searchLocationsQuery(@Header("Authorization") authHeader:String,@Query("query") query: String):Call<MutableList<Location>>
+
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml
index 09fe069..86ad75d 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml
@@ -1,5 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
- android:tint="#274352" android:viewportHeight="24"
+ android:tint="#737374" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_person_add_alt_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_person_add_alt_24.xml
new file mode 100644
index 0000000..0c0ec5a
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_person_add_alt_24.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M20,9V6h-2v3h-3v2h3v3h2v-3h3V9H20zM9,12c2.21,0 4,-1.79 4,-4c0,-2.21 -1.79,-4 -4,-4S5,5.79 5,8C5,10.21 6.79,12 9,12zM9,6c1.1,0 2,0.9 2,2c0,1.1 -0.9,2 -2,2S7,9.1 7,8C7,6.9 7.9,6 9,6zM15.39,14.56C13.71,13.7 11.53,13 9,13c-2.53,0 -4.71,0.7 -6.39,1.56C1.61,15.07 1,16.1 1,17.22V20h16v-2.78C17,16.1 16.39,15.07 15.39,14.56zM15,18H3v-0.78c0,-0.38 0.2,-0.72 0.52,-0.88C4.71,15.73 6.63,15 9,15c2.37,0 4.29,0.73 5.48,1.34C14.8,16.5 15,16.84 15,17.22V18z"/>
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_person_remove_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_person_remove_24.xml
new file mode 100644
index 0000000..3272d5e
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_person_remove_24.xml
@@ -0,0 +1,7 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M14,8c0,-2.21 -1.79,-4 -4,-4C7.79,4 6,5.79 6,8c0,2.21 1.79,4 4,4C12.21,12 14,10.21 14,8zM12,8c0,1.1 -0.9,2 -2,2c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2C11.1,6 12,6.9 12,8z"/>
+ <path android:fillColor="@android:color/white" android:pathData="M2,18v2h16v-2c0,-2.66 -5.33,-4 -8,-4C7.33,14 2,15.34 2,18zM4,18c0.2,-0.71 3.3,-2 6,-2c2.69,0 5.77,1.28 6,2H4z"/>
+ <path android:fillColor="@android:color/white" android:pathData="M17,10h6v2h-6z"/>
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_message_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_message_24.xml
new file mode 100644
index 0000000..130c826
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_message_24.xml
@@ -0,0 +1,5 @@
+<vector android:autoMirrored="true" android:height="24dp"
+ android:tint="#FFFFFF" android:viewportHeight="24"
+ android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM17,14L7,14c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1h10c0.55,0 1,0.45 1,1s-0.45,1 -1,1zM17,11L7,11c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1h10c0.55,0 1,0.45 1,1s-0.45,1 -1,1zM17,8L7,8c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1h10c0.55,0 1,0.45 1,1s-0.45,1 -1,1z"/>
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_button.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_button.xml
new file mode 100644
index 0000000..52d0c26
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <corners android:radius="20dp"/>
+</shape> \ No newline at end of file
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" />
+
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/ActivityMapsConfirmLocation"
android:layout_width="wrap_content"
@@ -64,7 +65,7 @@
app:layout_constraintTop_toTopOf="parent">
- <com.google.android.material.textfield.TextInputEditText
+ <AutoCompleteTextView
android:id="@+id/ActivityMapsSearchBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -86,4 +87,21 @@
</androidx.cardview.widget.CardView>
+<!-- <Spinner-->
+<!-- android:id="@+id/MapsActivitySpinner"-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="40dp"-->
+<!-- android:background="@null"-->
+<!-- app:layout_constraintEnd_toEndOf="parent"-->
+<!-- app:layout_constraintStart_toStartOf="parent"-->
+<!-- app:layout_constraintTop_toBottomOf="@+id/ActivityMapsCardViewSearch" />-->
+
+<!-- <AutoCompleteTextView-->
+<!-- android:id="@+id/ActivityMapsAutoCompleteTextView"-->
+<!-- android:layout_width="match_parent"-->
+<!-- android:layout_height="40dp"-->
+<!-- app:layout_constraintEnd_toEndOf="parent"-->
+<!-- app:layout_constraintStart_toStartOf="parent"-->
+<!-- app:layout_constraintTop_toBottomOf="@+id/ActivityMapsCardViewSearch" />-->
+
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_followers_and_following.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_followers_and_following.xml
new file mode 100644
index 0000000..18c519b
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_followers_and_following.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Activities.ActivityShowFollowersAndFollowing">
+
+ <Button
+ android:id="@+id/btnActivityShowFollowersAndFollowingBackToUser"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:drawableLeft="@drawable/ic_baseline_arrow_back"
+ android:text="Korisnik"
+
+ android:textAllCaps="false"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <View
+ android:id="@+id/divider"
+ android:layout_width="409dp"
+ android:layout_height="1dp"
+ android:layout_marginTop="4dp"
+ android:background="?android:attr/listDivider"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="1.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/btnActivityShowFollowersAndFollowingShowFollowers" />
+
+ <Button
+ android:id="@+id/btnActivityShowFollowersAndFollowingShowFollowers"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:backgroundTint="#FFFFFF"
+ android:stateListAnimator="@null"
+ android:text="Objave"
+ android:drawableBottom="@drawable/ic_baseline_circle_7"
+ android:textColor="@color/cardview_dark_background"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/btnActivityShowFollowersAndFollowingBackToUser" />
+
+ <Button
+ android:id="@+id/btnActivityShowFollowersAndFollowingShowFollowing"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="20dp"
+ android:backgroundTint="#FFFFFF"
+ android:stateListAnimator="@null"
+ android:text="Podaci"
+ android:drawableBottom="@drawable/ic_baseline_circle_7"
+ android:drawableTint="@color/white"
+ android:textColor="@color/cardview_dark_background"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/btnActivityShowFollowersAndFollowingBackToUser" />
+
+ <FrameLayout
+ android:id="@+id/flActivityShowFollowerAndFollowing"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_marginTop="16dp"
+ android:orientation="vertical"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/divider"/>
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_user_profile.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_user_profile.xml
index 16f4b1e..a446f9a 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_user_profile.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_user_profile.xml
@@ -15,7 +15,7 @@
android:id="@+id/imageView3"
android:layout_width="match_parent"
- android:layout_height="300dp"
+ android:layout_height="250dp"
android:foreground="@drawable/b3"
android:foregroundGravity="center_vertical|center|center_horizontal|fill"
android:src="@drawable/b3"
@@ -28,9 +28,9 @@
android:id="@+id/tvFragmentProfileInfoContainer"
android:layout_width="0dp"
- android:layout_height="199dp"
+ android:layout_height="240dp"
android:layout_marginStart="20dp"
- android:layout_marginTop="150dp"
+ android:layout_marginTop="120dp"
android:layout_marginEnd="20dp"
android:adjustViewBounds="true"
android:background="@drawable/profile_view_background"
@@ -46,10 +46,10 @@
<androidx.cardview.widget.CardView
android:id="@+id/cvFragmentHomePageProfile"
- android:layout_width="140dp"
- android:layout_height="140dp"
+ android:layout_width="130dp"
+ android:layout_height="130dp"
android:layout_gravity="center"
- android:layout_marginTop="80dp"
+ android:layout_marginTop="60dp"
android:elevation="10dp"
app:cardCornerRadius="250dp"
app:layout_constraintEnd_toEndOf="parent"
@@ -125,17 +125,18 @@
android:layout_height="319dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="@+id/divider">
- </FrameLayout>
+ app:layout_constraintTop_toTopOf="@+id/divider"
+ app:layout_constraintVertical_bias="1.0"></FrameLayout>
<TableLayout
android:layout_width="363dp"
- android:layout_height="122dp"
+ android:layout_height="wrap_content"
android:layout_marginStart="30dp"
- android:layout_marginTop="8dp"
+ android:layout_marginTop="5dp"
android:layout_marginEnd="30dp"
android:layout_marginBottom="8dp"
android:elevation="1dp"
@@ -145,7 +146,8 @@
app:layout_constraintBottom_toBottomOf="@+id/tvFragmentProfileInfoContainer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/cvFragmentHomePageProfile">
+ app:layout_constraintTop_toBottomOf="@+id/cvFragmentHomePageProfile"
+ app:layout_constraintVertical_bias="0.35000002">
<TableRow
android:layout_width="match_parent"
@@ -158,47 +160,13 @@
android:layout_height="match_parent"
android:layout_column="1"
android:layout_gravity="center"
- android:layout_marginBottom="5dp"
android:text="Petar Petrović"
- android:textSize="20sp" />
- </TableRow>
-
- <TableRow>
-
- <androidx.constraintlayout.widget.ConstraintLayout android:layout_span="3">
-
- <ImageButton
-
- android:id="@+id/ibActivityUserProfileFollow"
- android:layout_width="115dp"
- android:layout_height="40dp"
- android:layout_marginStart="16dp"
- android:background="@drawable/rounded_transparent_button"
- android:foreground="@drawable/button_follow"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.0"
- tools:ignore="TouchTargetSizeCheck" />
-
- <ImageButton
- android:layout_width="115dp"
- android:layout_height="40dp"
- android:layout_gravity="center"
- android:layout_marginEnd="16dp"
- android:height="40dp"
- android:background="@drawable/rounded_transparent_button"
- android:foreground="@drawable/button_chat"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.0"
- tools:ignore="SpeakableTextPresentCheck" />
- </androidx.constraintlayout.widget.ConstraintLayout>
+ android:textStyle="bold"
+ android:textSize="23sp" />
</TableRow>
- <TableRow android:layout_marginTop="5dp">
+ <TableRow android:layout_marginTop="30dp">
<TextView
android:id="@+id/tvFragmentUserProfilePosts"
@@ -220,30 +188,81 @@
android:text="PRAĆENJA" />
</TableRow>
- <TableRow>
-
+ <TableRow
+ android:layout_height="wrap_content"
+ >
<TextView
android:id="@+id/tvActivityUserProfilePostsNo"
android:layout_width="110dp"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
android:gravity="center"
android:text="156"
- android:textFontWeight="700" />
+ android:textSize="20dp"
+ android:textStyle="bold" />
<TextView
android:id="@+id/tvActivityUserProfileFollowersNo"
android:layout_width="110dp"
android:gravity="center"
- android:text="50" />
+ android:text="50"
+ android:textSize="20dp"
+ android:textStyle="bold"/>
<TextView
android:id="@+id/tvActivityUserProfileFollowNo"
android:layout_width="110dp"
android:gravity="center"
- android:text="40" />
+ android:text="40"
+ android:textSize="20dp"
+ android:textStyle="bold"/>
</TableRow>
+ <TableRow
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ >
+
+ <androidx.constraintlayout.widget.ConstraintLayout android:layout_span="3">
+
+ <Button
+
+ android:id="@+id/btnActivityUserProfileFollow"
+ android:layout_width="0dp"
+ android:layout_height="30dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="8dp"
+ android:drawableLeft="@drawable/ic_outline_person_add_alt_24"
+ android:text="PRATI"
+ android:insetTop="0dp"
+ android:insetBottom="0dp"
+ app:shapeAppearanceOverlay="@style/Circular"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/activityUserProfileOpenChat"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="0.13"
+ tools:ignore="TouchTargetSizeCheck" />
+
+ <ImageButton
+ android:id="@+id/activityUserProfileOpenChat"
+ android:layout_width="35dp"
+ android:layout_height="30dp"
+ android:layout_gravity="center"
+ android:layout_marginEnd="16dp"
+ android:height="40dp"
+ android:background="@drawable/rounded_button"
+ android:backgroundTint="#4DB6AC"
+ android:src="@drawable/ic_round_message_24"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/btnActivityUserProfileFollow"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="0.0"
+ app:shapeAppearanceOverlay="@style/Circular"
+ tools:ignore="SpeakableTextPresentCheck" />
+ </androidx.constraintlayout.widget.ConstraintLayout>
+ </TableRow>
</TableLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_profile.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_profile.xml
deleted file mode 100644
index 15031e3..0000000
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_profile.xml
+++ /dev/null
@@ -1,248 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".Fragments.FragmentUserProfile">
-
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <ImageView
-
- android:id="@+id/imageView3"
- android:layout_width="match_parent"
- android:layout_height="300dp"
- android:foreground="@drawable/b3"
- android:foregroundGravity="center_vertical|center|center_horizontal|fill"
- android:src="@drawable/b3"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
-
-
- <com.google.android.material.imageview.ShapeableImageView
-
- android:id="@+id/tvFragmentProfileInfoContainer"
- android:layout_width="0dp"
- android:layout_height="199dp"
- android:layout_marginStart="20dp"
- android:layout_marginTop="150dp"
- android:layout_marginEnd="20dp"
- android:adjustViewBounds="true"
- android:background="@drawable/profile_view_background"
-
- android:elevation="1dp"
- android:scaleType="fitEnd"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.0"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="@+id/imageView3"
- app:shapeAppearanceOverlay="@style/imageViewRoundedEdge" />
-
-
- <androidx.cardview.widget.CardView
- android:id="@+id/cvFragmentHomePageProfile"
- android:layout_width="140dp"
- android:layout_height="140dp"
- android:layout_gravity="center"
- android:layout_marginTop="80dp"
- android:elevation="10dp"
- app:cardCornerRadius="250dp"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent">
-
- <ImageView
-
- android:id="@+id/tvFragmentProfileProfilePicture"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:elevation="10dp"
- android:scaleType="centerCrop"
- android:src="@drawable/ic_baseline_person_24"
- tools:ignore="ContentDescription" />
- </androidx.cardview.widget.CardView>
-
- <View
- android:id="@+id/divider"
- android:layout_width="409dp"
- android:layout_height="1dp"
- android:background="?android:attr/listDivider"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/btnFragmentUserProfileShowPosts" />
-
- <Button
- android:id="@+id/btnFragmentUserProfileShowPosts"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="20dp"
- android:layout_marginTop="4dp"
- android:backgroundTint="#FFFFFF"
- android:stateListAnimator="@null"
- android:text="Objave"
-
- android:textColor="@color/cardview_dark_background"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" />
-
- <Button
- android:id="@+id/btnFragmentUserProfileShowData"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="4dp"
- android:layout_marginEnd="20dp"
- android:backgroundTint="#FFFFFF"
- android:stateListAnimator="@null"
- android:text="Podaci"
-
- android:textColor="@color/cardview_dark_background"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="1.0"
- app:layout_constraintStart_toEndOf="@+id/btnFragmentUserProfileShowRecensions"
- app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" />
-
- <Button
- android:id="@+id/btnFragmentUserProfileShowRecensions"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="36dp"
- android:layout_marginTop="4dp"
- android:backgroundTint="#FFFFFF"
- android:stateListAnimator="@null"
- android:text="Recenzije"
- android:textColor="@color/cardview_dark_background"
- app:layout_constraintStart_toEndOf="@+id/btnFragmentUserProfileShowPosts"
- app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" />
-
- <FrameLayout
- android:id="@+id/flFragmentProfileFragmentContainer"
- android:layout_width="409dp"
- android:layout_height="319dp"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="@+id/divider">
- </FrameLayout>
-
- <TableLayout
- android:elevation="1dp"
-
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_marginStart="30dp"
- android:layout_marginTop="8dp"
- android:layout_marginEnd="30dp"
- android:layout_marginBottom="8dp"
- android:numColumns="3"
-
- android:stretchColumns="1"
- app:layout_constraintBottom_toBottomOf="@+id/tvFragmentProfileInfoContainer"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/cvFragmentHomePageProfile">
-
- <TableRow android:layout_column="1">
-
- <TextView
- android:id="@+id/tvFragmentUserProfileName"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_column="1"
- android:layout_gravity="center"
- android:text="Petar Petrović"
- android:textSize="20sp"
- android:layout_marginBottom="5dp"/>
- </TableRow>
-
- <TableRow>
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_span="3">
-
- <ImageButton
-
- android:id="@+id/materialButton"
- android:layout_width="115dp"
- android:layout_height="40dp"
- android:layout_marginStart="16dp"
- android:background="@drawable/rounded_transparent_button"
- android:foreground="@drawable/button_follow"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.0"
- tools:ignore="TouchTargetSizeCheck" />
-
- <ImageButton
- android:layout_width="115dp"
- android:layout_height="40dp"
- android:layout_gravity="center"
- android:layout_marginEnd="16dp"
- android:height="40dp"
- android:background="@drawable/rounded_transparent_button"
- android:foreground="@drawable/button_chat"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.0"
- tools:ignore="SpeakableTextPresentCheck" />
- </androidx.constraintlayout.widget.ConstraintLayout>
- </TableRow>
-
-
- <TableRow
- android:layout_marginTop="5dp">
-
- <TextView
- android:id="@+id/tvFragmentUserProfilePosts"
- android:layout_width="110dp"
- android:gravity="center"
- android:text="OBJAVE" />
-
- <TextView
- android:id="@+id/tvFragmentUserProfileFollowers"
- android:layout_width="10dp"
- android:gravity="center"
- android:text="PRATIOCI" />
-
- <TextView
- android:id="@+id/tvFragmentUserProfileFollow"
-
- android:layout_width="110dp"
- android:gravity="center"
- android:text="PRAĆENJA" />
- </TableRow>
-
- <TableRow>
-
- <TextView
- android:id="@+id/tvFragmentUserProfilePostsNo"
- android:layout_width="110dp"
- android:gravity="center"
- android:textFontWeight="700"
- android:text="156" />
-
- <TextView
- android:id="@+id/tvFragmentUserProfileFollowersNo"
- android:layout_width="110dp"
- android:gravity="center"
- android:text="50" />
-
- <TextView
- android:id="@+id/tvFragmentUserProfileFollowNo"
- android:layout_width="110dp"
- android:gravity="center"
- android:text="40" />
-
- </TableRow>
-
- </TableLayout>
-
- </androidx.constraintlayout.widget.ConstraintLayout>
-
-
-</FrameLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml b/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml
index 8fcd452..8c8a1fd 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml
@@ -11,7 +11,7 @@
<item name="color">@color/white</item>
</style>
<style name="Circular">
- <item name="cornerSize">10dp</item>
+ <item name="cornerSize">12dp</item>
</style>
<style name="roundedBottom">