diff options
author | TAMARA JERINIC <tamara.jerinic@gmail.com> | 2022-12-06 04:17:14 +0100 |
---|---|---|
committer | TAMARA JERINIC <tamara.jerinic@gmail.com> | 2022-12-06 04:17:14 +0100 |
commit | 8e563f959c168a9778658c5fa2a2b143730d44fa (patch) | |
tree | e2a7c889e72dfa081d058e2132d10c9b7f5affc4 | |
parent | 1c70cfa2fd9fa455cabd9b05d354bdde56aca5fa (diff) |
Dodate funkcije za izmenu korisničkog imena i imena na back-u. Dodata aktivnost za izmenu korisničkog naloga. Izmenjen fragment myProfileInfo. Izmenjen FragmentProfile.
20 files changed, 489 insertions, 152 deletions
diff --git a/Backend/Api/Api/Controllers/UserController.cs b/Backend/Api/Api/Controllers/UserController.cs index 97f2f8b..4937467 100644 --- a/Backend/Api/Api/Controllers/UserController.cs +++ b/Backend/Api/Api/Controllers/UserController.cs @@ -146,5 +146,23 @@ namespace Api.Controllers return Ok(tosend); return BadRequest(); } + + [HttpGet("{newUsername}/profile/changeMyUsername")] + [Authorize(Roles = "User")] + public async Task<ActionResult<int>> ChangeMyProfileUsername(string newUsername) + { + return await _userService.ChangeMyProfileUsername(newUsername); + } + + + [HttpGet("{id}/changeMyName")] + [Authorize(Roles = "User")] + public async Task<ActionResult<bool>> ChangeMyProfileName(string newName) + { + return Ok(await _userService.ChangeMyProfileName(newName)); + } + + + } } diff --git a/Backend/Api/Api/Interfaces/IUserService.cs b/Backend/Api/Api/Interfaces/IUserService.cs index 95dd46d..f4954e0 100644 --- a/Backend/Api/Api/Interfaces/IUserService.cs +++ b/Backend/Api/Api/Interfaces/IUserService.cs @@ -37,5 +37,9 @@ namespace Api.Interfaces Task<List<UserSend>> GetMyFollowers(); + Task<int> ChangeMyProfileUsername(String newUsername); + Task<bool> ChangeMyProfileName(String newUsername); + + } } diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs index 666dd98..8597503 100644 --- a/Backend/Api/Api/Services/UserService.cs +++ b/Backend/Api/Api/Services/UserService.cs @@ -664,6 +664,56 @@ namespace Api.Services return null; } + public async Task<int> ChangeMyProfileUsername(string newUsername) + { + string myId = null; + + if (_httpContext.HttpContext.User.FindFirstValue("id") != null) + { + myId = _httpContext.HttpContext.User.FindFirstValue("id").ToString(); + } + User u = await _users.Find(user => user._id == myId).FirstOrDefaultAsync(); + if (u != null) + { + + //da li username vec postoji? + if (await _users.Find(x => x.username == newUsername).FirstOrDefaultAsync() != null) + { + //vec postoji korisnik sa navedenim korisnickim imenom + return -1; + } + else + { + u.username = newUsername; + await _users.ReplaceOneAsync(x => x._id == u._id, u); + return 1; + } + + } + return -2; + + } + + public async Task<bool> ChangeMyProfileName(string newName) + { + string myId = null; + if (_httpContext.HttpContext.User.FindFirstValue("id") != null) + { + myId = _httpContext.HttpContext.User.FindFirstValue("id").ToString(); + } + User u = await _users.Find(user => user._id == myId).FirstOrDefaultAsync(); + if (u != null) + { + + u.name = newName; + await _users.ReplaceOneAsync(x => x._id == u._id, u); + return true; + + } + return false; + } + + } } diff --git a/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml b/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml index 394c76a..883083b 100644 --- a/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml +++ b/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml @@ -12,6 +12,6 @@ </deviceKey> </Target> </targetSelectedWithDropDown> - <timeTargetWasSelectedWithDropDown value="2022-11-28T13:21:51.009462400Z" /> + <timeTargetWasSelectedWithDropDown value="2022-12-06T03:10:09.596363200Z" /> </component> </project>
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangeUserData.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangeUserData.kt index 820ccfc..3dee6ac 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangeUserData.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangeUserData.kt @@ -1,11 +1,127 @@ package com.example.brzodolokacije.Activities +import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.util.Log +import android.widget.EditText +import android.widget.ImageView +import android.widget.TextView +import android.widget.Toast +import androidx.core.view.isGone +import androidx.core.view.isVisible +import com.example.brzodolokacije.Models.UserReceive +import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response class ActivityChangeUserData : AppCompatActivity() { + private lateinit var username:EditText + private lateinit var name:EditText + private lateinit var editName:ImageView + private lateinit var editUsername:ImageView + private lateinit var confirmName:ImageView + private lateinit var confirmUsername:ImageView + private lateinit var errorName:TextView + private lateinit var errorUsername:TextView + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_change_user_data) + + username=findViewById(R.id.tvActivityChangeUserDataUsername) + name=findViewById(R.id.tvActivityChangeUserDataName) + editName=findViewById(R.id.btnActivityChangeUserDataName) + editUsername=findViewById(R.id.btnActivityChangeUserDataUsername) + confirmName=findViewById(R.id.btnActivityChangeUserDataNameConfirm) + confirmUsername=findViewById(R.id.btnActivityChangeUserDataUsernameConfirm) + errorName=findViewById(R.id.btnActivityChangeUserDataNameError) + errorUsername=findViewById(R.id.btnActivityChangeUserDataUsernameError) + + editUsername.isClickable=true + editUsername.isVisible=true + editUsername.isEnabled=true + editUsername.isGone=false + confirmUsername.isClickable=false + confirmUsername.isVisible=false + confirmUsername.isEnabled=false + confirmUsername.isGone=true + + getUser() + + editUsername.setOnClickListener{ + username.setText("") + editUsername.isClickable=false + editUsername.isVisible=false + editUsername.isEnabled=false + editUsername.isGone=true + confirmUsername.isClickable=true + confirmUsername.isVisible=true + confirmUsername.isEnabled=true + confirmUsername.isGone=false + + //dodati on change listener + confirmUsername.setOnClickListener { + val api = RetrofitHelper.getInstance() + val token = SharedPreferencesHelper.getValue("jwt", this@ActivityChangeUserData) + var data = api.changeMyUsername("Bearer " + token,username.toString().trim()); + data.enqueue(object : Callback<Int> { + override fun onResponse( + call: Call<Int>, + response: Response<Int> + ) { + var res=response.body()!! + Log.d("res",res.toString()) + if(res==-1){ + errorUsername.setText("Izaberite drugo korisničko ime") + errorUsername.setTextColor(Color.RED) + } + else if(res==-2){ + errorUsername.setText("Nije moguće promeniti korisničko ime") + errorUsername.setTextColor(Color.RED) + } + else if(res==1){ + errorUsername.setText("Korisničko ime je promenjeno") + errorUsername.setTextColor(Color.GREEN) + confirmUsername.isClickable=false + confirmUsername.isVisible=false + editUsername.isClickable=true + editUsername.isVisible=true + } + } + + override fun onFailure(call: Call<Int>, t: Throwable) { + Log.d("changeUsername","failllllllllllllllllllllll") + + } + }) + + } + + } + + + } + + fun getUser(){ + val api = RetrofitHelper.getInstance() + val token = SharedPreferencesHelper.getValue("jwt", this@ActivityChangeUserData) + var data = api.selfProfile("Bearer " + token); + data.enqueue(object : Callback<UserReceive> { + override fun onResponse( + call: Call<UserReceive>, + response: Response<UserReceive> + ) { + var user=response.body()!! + username.setText(user.username) + name.setText(user.name) + } + + override fun onFailure(call: Call<UserReceive>, t: Throwable) {} + }) + } }
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt index c5e30d3..2483e7e 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt @@ -7,14 +7,14 @@ import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.preference.PreferenceManager import android.util.Log -<<<<<<< HEAD + import android.view.ViewGroup import android.view.ViewGroup.LayoutParams import android.widget.Button -======= + import android.view.inputmethod.InputMethodManager import android.widget.EditText ->>>>>>> 951b36b54b106178200cfa4fb2bbc499ca1a2de0 + import android.widget.ImageView import android.widget.TextView import android.widget.Toast diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt index 9cce17f..d6e345b 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt @@ -6,36 +6,19 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import androidx.core.content.ContextCompat.startActivity import androidx.fragment.app.Fragment import com.exam.DBHelper +import com.example.brzodolokacije.Activities.ActivityChangeUserData +import com.example.brzodolokacije.Activities.ActivityForgottenPassword import com.example.brzodolokacije.Activities.ActivityLoginRegister import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.SharedPreferencesHelper -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" -/** - * A simple [Fragment] subclass. - * Use the [FragmentMyProfileInfo.newInstance] factory method to - * create an instance of this fragment. - */ class FragmentMyProfileInfo : Fragment() { private lateinit var logout:Button - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } - - } + private lateinit var changeAccount:Button override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -45,9 +28,15 @@ class FragmentMyProfileInfo : Fragment() { var view=inflater.inflate(R.layout.fragment_my_profile_info, container, false) logout=view.findViewById<View>(R.id.buttonLogOut) as Button + changeAccount=view.findViewById(R.id.changeAccountData) + logout.setOnClickListener{ logOut() + } + changeAccount.setOnClickListener { + val intent = Intent (getActivity(), ActivityChangeUserData::class.java) + getActivity()?.startActivity(intent) } return view 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 60f243d..39527f2 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 @@ -112,4 +112,7 @@ interface IBackendApi { @GET("/api/Post/favourite/{id}") fun addRemoveFavourite(@Header("Authorization") authHeader:String,@Path("id") id:String):Call <Boolean> + @GET("/api/user/{newUsername}/changeMyUsername") + fun changeMyUsername(@Header("Authorization") authHeader:String,@Path("newUsername") newUsername:String):Call<Int> + }
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_logout_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_logout_24.xml new file mode 100644 index 0000000..ac81ab8 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_logout_24.xml @@ -0,0 +1,5 @@ +<vector android:autoMirrored="true" android:height="24dp" + android:tint="#747474" 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="M17,7l-1.41,1.41L18.17,11H8v2h10.17l-2.58,2.58L17,17l5,-5zM4,5h8V3H4c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h8v-2H4V5z"/> +</vector> diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_account_circle_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_account_circle_24.xml new file mode 100644 index 0000000..b5e6c8c --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_account_circle_24.xml @@ -0,0 +1,6 @@ +<vector android:height="24dp" android:tint="#747474" + 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="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM7.35,18.5C8.66,17.56 10.26,17 12,17s3.34,0.56 4.65,1.5C15.34,19.44 13.74,20 12,20S8.66,19.44 7.35,18.5zM18.14,17.12L18.14,17.12C16.45,15.8 14.32,15 12,15s-4.45,0.8 -6.14,2.12l0,0C4.7,15.73 4,13.95 4,12c0,-4.42 3.58,-8 8,-8s8,3.58 8,8C20,13.95 19.3,15.73 18.14,17.12z"/> + <path android:fillColor="@android:color/white" android:pathData="M12,6c-1.93,0 -3.5,1.57 -3.5,3.5S10.07,13 12,13s3.5,-1.57 3.5,-3.5S13.93,6 12,6zM12,11c-0.83,0 -1.5,-0.67 -1.5,-1.5S11.17,8 12,8s1.5,0.67 1.5,1.5S12.83,11 12,11z"/> +</vector> diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_change_circle_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_change_circle_24.xml new file mode 100644 index 0000000..1a36910 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_change_circle_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#747474" + 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="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8s8,3.59 8,8S16.41,20 12,20zM16.17,14.76l-1.1,-1.1c0.71,-1.33 0.53,-3.01 -0.59,-4.13C13.79,8.84 12.9,8.5 12,8.5c-0.03,0 -0.06,0.01 -0.09,0.01L13,9.6l-1.06,1.06L9.11,7.83L11.94,5L13,6.06l-0.96,0.96c1.27,0.01 2.53,0.48 3.5,1.44C17.24,10.17 17.45,12.82 16.17,14.76zM14.89,16.17L12.06,19L11,17.94l0.95,-0.95c-1.26,-0.01 -2.52,-0.5 -3.48,-1.46c-1.71,-1.71 -1.92,-4.35 -0.64,-6.29l1.1,1.1c-0.71,1.33 -0.53,3.01 0.59,4.13c0.7,0.7 1.63,1.04 2.56,1.01L11,14.4l1.06,-1.06L14.89,16.17z"/> +</vector> diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_share_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_share_24.xml new file mode 100644 index 0000000..e95b628 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_share_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#747474" + 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="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92s2.92,-1.31 2.92,-2.92c0,-1.61 -1.31,-2.92 -2.92,-2.92zM18,4c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM6,13c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1zM18,20.02c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1z"/> +</vector> diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_stats_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_stats_24.xml new file mode 100644 index 0000000..05eb65f --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_stats_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#747474" + 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="M19.88,18.47c0.44,-0.7 0.7,-1.51 0.7,-2.39c0,-2.49 -2.01,-4.5 -4.5,-4.5s-4.5,2.01 -4.5,4.5s2.01,4.5 4.49,4.5c0.88,0 1.7,-0.26 2.39,-0.7L21.58,23L23,21.58L19.88,18.47zM16.08,18.58c-1.38,0 -2.5,-1.12 -2.5,-2.5c0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5C18.58,17.46 17.46,18.58 16.08,18.58zM15.72,10.08c-0.74,0.02 -1.45,0.18 -2.1,0.45l-0.55,-0.83l-3.8,6.18l-3.01,-3.52l-3.63,5.81L1,17l5,-8l3,3.5L13,6C13,6 15.72,10.08 15.72,10.08zM18.31,10.58c-0.64,-0.28 -1.33,-0.45 -2.05,-0.49c0,0 5.12,-8.09 5.12,-8.09L23,3.18L18.31,10.58z"/> +</vector> diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_check_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_check_24.xml new file mode 100644 index 0000000..a8e2c6e --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_check_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#747474" + 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="M9,16.17L5.53,12.7c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41l4.18,4.18c0.39,0.39 1.02,0.39 1.41,0L20.29,7.71c0.39,-0.39 0.39,-1.02 0,-1.41 -0.39,-0.39 -1.02,-0.39 -1.41,0L9,16.17z"/> +</vector> diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_favorite_border_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_favorite_border_24.xml new file mode 100644 index 0000000..0444f34 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_favorite_border_24.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#747474" + 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="M19.66,3.99c-2.64,-1.8 -5.9,-0.96 -7.66,1.1 -1.76,-2.06 -5.02,-2.91 -7.66,-1.1 -1.4,0.96 -2.28,2.58 -2.34,4.29 -0.14,3.88 3.3,6.99 8.55,11.76l0.1,0.09c0.76,0.69 1.93,0.69 2.69,-0.01l0.11,-0.1c5.25,-4.76 8.68,-7.87 8.55,-11.75 -0.06,-1.7 -0.94,-3.32 -2.34,-4.28zM12.1,18.55l-0.1,0.1 -0.1,-0.1C7.14,14.24 4,11.39 4,8.5 4,6.5 5.5,5 7.5,5c1.54,0 3.04,0.99 3.57,2.36h1.87C13.46,5.99 14.96,5 16.5,5c2,0 3.5,1.5 3.5,3.5 0,2.89 -3.14,5.74 -7.9,10.05z"/> +</vector> diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_user_data.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_user_data.xml index 43bad3c..39362b7 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_user_data.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_user_data.xml @@ -90,14 +90,13 @@ app:layout_constraintTop_toBottomOf="@+id/cvFragmentHomePageProfile" /> <EditText - android:id="@+id/editTextTextPersonName2" + android:id="@+id/tvActivityChangeUserDataName" android:layout_width="0dp" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" android:text="Name" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintEnd_toStartOf="@+id/btnActivityChangeUserDataName" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/changeDataName" /> @@ -105,22 +104,22 @@ android:id="@+id/changeDataUsername" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="24dp" + android:layout_marginTop="40dp" android:layout_marginEnd="333dp" android:text="Korisničko ime" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName2" /> + app:layout_constraintTop_toBottomOf="@+id/tvActivityChangeUserDataName" /> <EditText - android:id="@+id/editTextTextPersonName3" + android:id="@+id/tvActivityChangeUserDataUsername" android:layout_width="0dp" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" android:text="Name" - app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintEnd_toStartOf="@+id/btnActivityChangeUserDataUsername" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/changeDataUsername" /> @@ -134,7 +133,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName3" /> + app:layout_constraintTop_toBottomOf="@+id/tvActivityChangeUserDataUsername" /> <Button android:id="@+id/button2" @@ -148,4 +147,60 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button" /> + <ImageView + android:clickable="true" + android:id="@+id/btnActivityChangeUserDataName" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:layout_marginEnd="4dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/changeDataName" + app:srcCompat="@drawable/ic_outline_edit_24" /> + <ImageView + android:id="@+id/btnActivityChangeUserDataNameConfirm" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:layout_marginEnd="4dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/changeDataName" + app:srcCompat="@drawable/ic_round_check_24" /> + + <ImageView + android:clickable="true" + android:id="@+id/btnActivityChangeUserDataUsername" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:layout_marginEnd="4dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/changeDataUsername" + app:srcCompat="@drawable/ic_outline_edit_24" /> + <ImageView + android:id="@+id/btnActivityChangeUserDataUsernameConfirm" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:layout_marginEnd="4dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/changeDataUsername" + app:srcCompat="@drawable/ic_round_check_24" /> + + <TextView + android:id="@+id/btnActivityChangeUserDataNameError" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="TextView" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tvActivityChangeUserDataName" /> + + <TextView + android:id="@+id/btnActivityChangeUserDataUsernameError" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="TextView" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tvActivityChangeUserDataUsername" /> + </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 9f5dd96..5c0ceb8 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 @@ -12,9 +12,9 @@ android:layout_height="match_parent"> <ImageView - + android:scaleType="centerCrop" android:id="@+id/imageView3" - android:layout_width="447dp" + android:layout_width="match_parent" android:layout_height="180dp" android:foreground="@drawable/b3" android:foregroundGravity="center_vertical|center|center_horizontal|fill" @@ -74,51 +74,51 @@ android:background="?android:attr/listDivider" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/btnActivityUserProfileShowPosts" /> + app:layout_constraintTop_toBottomOf="@+id/buttons" /> + + <LinearLayout + android:id="@+id/buttons" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:weightSum="3" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer"> <Button + android:layout_weight="1" android:id="@+id/btnActivityUserProfileShowPosts" - android:layout_width="wrap_content" + android:layout_width="120dp" 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:layout_weight="1" android:id="@+id/btnFragmentUserProfileShowData" - android:layout_width="wrap_content" + android:layout_width="110dp" android:layout_height="wrap_content" - android:layout_marginTop="4dp" - android:layout_marginEnd="20dp" android:backgroundTint="#FFFFFF" android:stateListAnimator="@null" - android:text="Podaci" + android:text="Nalog" 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_width="120dp" 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/btnActivityUserProfileShowPosts" - app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" /> - + /> + </LinearLayout> <FrameLayout + android:layout_weight="1" android:id="@+id/flActivityProfileFragmentContainer" android:layout_width="match_parent" android:layout_height="0dp" @@ -181,6 +181,7 @@ android:textSize="14sp" android:stateListAnimator="@null" android:text="OBJAVE" + android:textColor="#757471" /> <Button diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml index 4a91f49..eaf014d 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml @@ -4,27 +4,64 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:orientation="vertical" tools:context=".Fragments.FragmentMyProfileInfo"> - <!-- TODO: Update blank fragment layout --> - - <TextView - android:id="@+id/textView5" + <LinearLayout android:layout_width="match_parent" - android:layout_height="match_parent" - android:text="Moji podaci" - tools:layout_editor_absoluteX="0dp" - tools:layout_editor_absoluteY="0dp" /> + android:layout_height="0dp" + android:orientation="vertical" + app:layout_constraintBottom_toTopOf="@+id/buttonLogOut" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <Button + android:id="@+id/changeAccountData" + style="@style/clean_button_margin" + android:drawableLeft="@drawable/ic_outline_account_circle_24" + android:text="Izmena Naloga" /> + + <Button + android:id="@+id/ChangePassword" + style="@style/clean_button_margin" + android:drawableLeft="@drawable/ic_outline_change_circle_24" + android:text="Promena Lozinke" /> + + <Button + android:id="@+id/getAccoutStatistics" + style="@style/clean_button_margin" + android:drawableLeft="@drawable/ic_outline_stats_24" + android:text="Pregled statistike" /> + + <Button + android:id="@+id/getMyFavorite" + style="@style/clean_button_margin" + android:drawableLeft="@drawable/ic_round_favorite_border_24" + android:text="Objave koje vam se sviđaju" /> + + <Button + android:id="@+id/inviteFriends" + style="@style/clean_button_margin" + android:drawableLeft="@drawable/ic_outline_share_24" + android:text="Pozovite prijatelje" /> + </LinearLayout> <Button android:id="@+id/buttonLogOut" - android:layout_width="wrap_content" + style="@style/Circular" + android:layout_width="0dp" android:layout_height="wrap_content" - android:text="Log out" - app:layout_constraintBottom_toBottomOf="@+id/textView5" - app:layout_constraintEnd_toEndOf="@+id/textView5" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@+id/textView5" /> + android:layout_gravity="bottom" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="16dp" + android:drawableLeft="@drawable/ic_baseline_logout_24" + android:text="Izlogujte se" + android:drawableTint="@color/white" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml index 54686a4..8fe6ee6 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml @@ -14,7 +14,7 @@ <ImageView android:id="@+id/imageView3" - android:layout_width="416dp" + android:layout_width="match_parent" android:layout_height="190dp" android:foreground="@drawable/b3" android:foregroundGravity="center_vertical|center|center_horizontal|fill" @@ -26,8 +26,8 @@ <ImageView android:id="@+id/imageView4" - android:layout_width="413dp" - android:layout_height="175dp" + android:layout_width="match_parent" + android:layout_height="190dp" app:layout_constraintBottom_toBottomOf="@+id/imageView3" app:layout_constraintEnd_toEndOf="@id/imageView3" app:layout_constraintHorizontal_bias="0.0" @@ -108,7 +108,7 @@ app:layout_constraintHorizontal_bias="0.488" app:layout_constraintStart_toStartOf="@+id/tvFragmentProfileInfoContainer" app:layout_constraintTop_toTopOf="@+id/tvFragmentProfileInfoContainer" - app:layout_constraintVertical_bias="0.97"> + app:layout_constraintVertical_bias="0.87"> <TableRow android:layout_width="fill_parent" @@ -117,10 +117,12 @@ <TextView android:id="@+id/tvFragmentProfileName" - style="@style/title" - android:gravity="center" + android:textSize="23sp" + android:textStyle="bold" android:layout_width="match_parent" android:layout_height="match_parent" + android:gravity="center" + android:layout_marginBottom="10dp" android:text="Petar Petrović" /> </TableRow> @@ -135,8 +137,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" - android:textSize="17sp" - android:text="PetarP" /> + android:text="PetarP" + android:textSize="17sp" /> </TableRow> <TableRow @@ -144,7 +146,7 @@ android:layout_height="100dp"> <Button - android:layout_height="15dp" + android:layout_height="8dp" android:background="@drawable/rounded_transparent_button" android:clickable="false" android:visibility="invisible" /> @@ -156,78 +158,86 @@ android:layout_height="wrap_content" android:gravity="center" android:weightSum="1"> - <LinearLayout - android:orientation="horizontal" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:weightSum="3" - > - <TextView - android:layout_width="110dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:id="@+id/tvFragmentProfilePosts" - android:width="100dp" - android:gravity="center" - android:text="OBJAVE" /> - - <TextView - android:layout_height="wrap_content" - android:layout_width="110dp" - android:layout_weight="1" - android:id="@+id/tvFragmentProfileFollowers" - android:width="100dp" - android:clickable="true" - android:gravity="center" - android:text="PRATIOCI" /> - <TextView + <LinearLayout + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_width="110dp" - android:layout_weight="1" - android:id="@+id/tvFragmentProfileFollow" - android:width="100dp" - android:gravity="center" - android:text="PRAĆENJA" /> -</LinearLayout> + android:orientation="horizontal" + android:weightSum="3"> + + <TextView + android:id="@+id/tvFragmentProfilePosts" + android:layout_width="110dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:width="100dp" + android:textSize="15dp" + android:textColor="#757471" + android:gravity="center" + android:text="OBJAVE" /> + + <TextView + android:id="@+id/tvFragmentProfileFollowers" + android:layout_width="110dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:width="100dp" + android:textSize="15sp" + android:clickable="true" + android:textColor="#757471" + android:gravity="center" + android:text="PRATIOCI" /> + + <TextView + android:id="@+id/tvFragmentProfileFollow" + android:layout_width="110dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:width="100dp" + android:gravity="center" + android:textSize="15sp" + android:textColor="#757471" + android:text="PRAĆENJA" /> + </LinearLayout> </TableRow> <TableRow - android:weightSum="1" android:layout_width="match_parent" android:layout_height="wrap_content" - android:gravity="center"> + android:gravity="center" + android:weightSum="1"> <LinearLayout> - <TextView - android:id="@+id/tvFragmentProfilePostsNo" - android:layout_weight="1" - android:gravity="center" - android:layout_width="110dp" - android:layout_height="wrap_content" - android:text="156" - android:textSize="20dp" - android:textStyle="bold" /> - - <TextView - android:layout_weight="1" - android:id="@+id/tvFragmentProfileFollowersNo" - android:gravity="center" - android:layout_width="110dp" - android:layout_height="wrap_content" - android:text="50" - android:textSize="20dp" - android:textStyle="bold" /> - <TextView - android:layout_weight="1" - android:id="@+id/tvFragmentProfileFollowNo" - android:layout_width="110dp" - android:layout_height="wrap_content" - android:gravity="center" - android:text="40" - android:textSize="20dp" - android:textStyle="bold" /> + <TextView + android:id="@+id/tvFragmentProfilePostsNo" + android:layout_width="110dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:text="156" + android:textSize="20dp" + android:textStyle="bold" /> + + <TextView + android:id="@+id/tvFragmentProfileFollowersNo" + android:layout_width="110dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:text="50" + android:textSize="20dp" + android:textStyle="bold" /> + + <TextView + android:id="@+id/tvFragmentProfileFollowNo" + android:layout_width="110dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:text="40" + android:textSize="20dp" + android:textStyle="bold" /> </LinearLayout> </TableRow> </TableLayout> @@ -255,32 +265,33 @@ app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" /> <Button - android:id="@+id/btnFragmentProfileShowMyData" + android:id="@+id/btnFragmentProfileShowMyRecensions" android:layout_width="110dp" android:layout_height="wrap_content" + android:layout_gravity="end" android:layout_weight="1" android:backgroundTint="#FFFFFF" android:stateListAnimator="@null" - - android:text="Nalog" + android:text="Istorija" android:textColor="@color/cardview_dark_background" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="1.0" - app:layout_constraintStart_toEndOf="@+id/btnFragmentProfileShowMyRecensions" + app:layout_constraintStart_toEndOf="@+id/btnFragmentProfileShowMyPosts" app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" /> <Button - android:id="@+id/btnFragmentProfileShowMyRecensions" - android:layout_width="120dp" + android:id="@+id/btnFragmentProfileShowMyData" + android:layout_width="110dp" android:layout_height="wrap_content" - android:layout_gravity="end" android:layout_weight="1" android:backgroundTint="#FFFFFF" android:stateListAnimator="@null" - android:text="Istorija" + + android:text="Nalog" android:textColor="@color/cardview_dark_background" - app:layout_constraintStart_toEndOf="@+id/btnFragmentProfileShowMyPosts" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="1.0" + app:layout_constraintStart_toEndOf="@+id/btnFragmentProfileShowMyRecensions" app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" /> + </LinearLayout> <FrameLayout diff --git a/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml b/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml index 7ec8c64..0e53f9e 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml @@ -28,4 +28,21 @@ <item name="android:textSize">@dimen/header1_size</item> <item name="android:textStyle">bold</item> </style> + + <style name="clean_button"> + <item name="android:backgroundTint">@color/white</item> + <item name="android:textColor">#757471</item> + <item name="android:stateListAnimator">@null</item> + <item name="android:layout_height">50dp</item> + <item name="android:layout_width">wrap_content</item> + </style> + + <style name="clean_button_margin"> + <item name="android:backgroundTint">@color/white</item> + <item name="android:textColor">#757471</item> + <item name="android:stateListAnimator">@null</item> + <item name="android:layout_height">50dp</item> + <item name="android:layout_width">wrap_content</item> + <item name="android:layout_marginTop">7dp</item> + </style> </resources>
\ No newline at end of file |