From 544695029bca77f688a708677f4861d8df17ae9d Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Tue, 1 Nov 2022 00:49:15 +0100 Subject: Dodate funkcionalnosti na fragmentProfile, dodat kostur fragmenata za prikaz podataka,objava i recenzija korisnika u fragmentProfile. --- .../brzodolokacije/Fragments/FragmentLogin.kt | 2 + .../Fragments/FragmentMyProfileInfo.kt | 60 +++++++++++ .../Fragments/FragmentMyRecensions.kt | 60 +++++++++++ .../brzodolokacije/Fragments/FragmentProfile.kt | 95 +++++++++++------ .../brzodolokacije/Fragments/FragmentRegister.kt | 11 +- .../brzodolokacije/Fragments/FragmentUserPosts.kt | 60 +++++++++++ .../example/brzodolokacije/Models/LocationTypes.kt | 4 + .../java/com/example/brzodolokacije/Models/Post.kt | 12 +++ .../java/com/example/brzodolokacije/Models/User.kt | 10 +- .../main/res/layout/fragment_my_profile_info.xml | 14 +++ .../src/main/res/layout/fragment_my_recensions.xml | 14 +++ .../app/src/main/res/layout/fragment_profile.xml | 115 ++++++++++++++------- .../src/main/res/layout/fragment_user_posts.xml | 14 +++ 13 files changed, 399 insertions(+), 72 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt index 03df35d..6e9d75f 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt @@ -124,6 +124,8 @@ class FragmentLogin : Fragment() { + + return view } 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 new file mode 100644 index 0000000..9c4c370 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt @@ -0,0 +1,60 @@ +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 + +// 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() { + // 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) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_my_profile_info, container, false) + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment FragmentMyProfileInfo. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + FragmentMyProfileInfo().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt new file mode 100644 index 0000000..ce8679a --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt @@ -0,0 +1,60 @@ +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 + +// 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 [FragmentMyRecensions.newInstance] factory method to + * create an instance of this fragment. + */ +class FragmentMyRecensions : Fragment() { + // 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) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_my_recensions, container, false) + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment FragmentMyRecensions. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + FragmentMyRecensions().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file 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 a63bc3c..a8176b0 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 @@ -1,11 +1,21 @@ package com.example.brzodolokacije.Fragments import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Button +import android.widget.EditText +import android.widget.TextView +import androidx.fragment.app.FragmentTransaction import com.example.brzodolokacije.R +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER @@ -19,42 +29,65 @@ private const val ARG_PARAM2 = "param2" */ class FragmentProfile : Fragment(R.layout.fragment_profile) { // 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 username: TextView + private lateinit var name: TextView + private lateinit var postsCount: TextView + private lateinit var followersCount: TextView + private lateinit var followingCount:TextView + private lateinit var usernameString: String + private lateinit var nameString: String + private lateinit var postsCountString: String + private lateinit var followersCountString: String + private lateinit var followingCountString:String + private lateinit var showMyPosts: Button + private lateinit var showMyData: Button + private lateinit var showMyRecensions: Button override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_profile, container, false) - } + val view:View= inflater.inflate(R.layout.fragment_profile, container, false) + name = view.findViewById(R.id.tvFragmentProfileName) as TextView + username = view.findViewById(R.id.tvFragmentProfileUserName) as TextView + postsCount = view.findViewById(R.id.tvFragmentProfilePostsNo) as TextView + followersCount = view.findViewById(R.id.tvFragmentProfileFollowersNo) as TextView + followingCount = view.findViewById(R.id.tvFragmentProfileFollowNo) as TextView + + showMyPosts=view.findViewById(R.id.btnFragmentProfileShowMyPosts) as Button + showMyData=view.findViewById(R.id.btnFragmentProfileShowMyData) as Button + showMyRecensions=view.findViewById(R.id.btnFragmentProfileShowMyRecensions) as Button + //podaci iz baze + + + + showMyPosts.setOnClickListener{ + + var fm: FragmentTransaction =childFragmentManager.beginTransaction() + + fm.replace(R.id.flFragmentProfileFragmentContainer,FragmentUserPosts()) + fm.commit() + } - companion object { - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment FragmentProfile. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - FragmentProfile().apply { - arguments = Bundle().apply { - putString(ARG_PARAM1, param1) - putString(ARG_PARAM2, param2) - } - } + + showMyData.setOnClickListener{ + + var fm: FragmentTransaction =childFragmentManager.beginTransaction() + + fm.replace(R.id.flFragmentProfileFragmentContainer,FragmentMyProfileInfo()) + fm.commit() + } + + showMyRecensions.setOnClickListener{ + + var fm: FragmentTransaction =childFragmentManager.beginTransaction() + + fm.replace(R.id.flFragmentProfileFragmentContainer,FragmentMyRecensions()) + fm.commit() + } + + return view } + + } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt index f6300b8..9f028dc 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt @@ -87,12 +87,17 @@ class FragmentRegister : Fragment() { override fun onResponse(call: Call, response: Response) { if(response.isSuccessful()){ Toast.makeText( - activity, "Uspesna registracija. Verifikujte email. TODO(navigate to login)", Toast.LENGTH_LONG + activity, "Uspesna registracija. Verifikujte email.", Toast.LENGTH_LONG ).show(); //TODO(navigate to login) }else{ - if(response.errorBody()!=null) - Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show() + if(response.errorBody()!=null) { + Toast.makeText( + activity, + response.errorBody()!!.string(), + Toast.LENGTH_LONG + ).show() + } } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt new file mode 100644 index 0000000..561de10 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt @@ -0,0 +1,60 @@ +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 + +// 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 [FragmentUserPosts.newInstance] factory method to + * create an instance of this fragment. + */ +class FragmentUserPosts : Fragment() { + // 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) + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_user_posts, container, false) + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment FragmentUserPosts. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + FragmentUserPosts().apply { + arguments = Bundle().apply { + putString(ARG_PARAM1, param1) + putString(ARG_PARAM2, param2) + } + } + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt new file mode 100644 index 0000000..c599dae --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt @@ -0,0 +1,4 @@ +package com.example.brzodolokacije.Models + +enum class LocationTypes { +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt new file mode 100644 index 0000000..9c0eae1 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt @@ -0,0 +1,12 @@ +package com.example.brzodolokacije.Models + +import java.util.* + +data class Post ( + var _id:String, + var creationDate: Date, + var country:String,//drzava + var city:String, + var location:String,//naziv grada/naziv planine/naziv jezera/....... + var type:LocationTypes //tip lokacije + ) \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt index 151c14c..52090f9 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt @@ -10,6 +10,14 @@ data class User ( var emailToken:String, var verified:Boolean, var password:String, - var creationDate:Date + var creationDate:Date, + + //profil + var followers:List, + var followersNumber:Int, + var following:List, + var followingNumber:Int, + var postIds:List, + var postNumber:Int ) \ No newline at end of file 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 new file mode 100644 index 0000000..d20c569 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml new file mode 100644 index 0000000..d5452b9 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml @@ -0,0 +1,14 @@ + + + + + + + \ 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 bbca8cb..e7cccff 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml @@ -75,40 +75,6 @@ app:layout_constraintVertical_bias="1.0" app:shapeAppearanceOverlay="@style/imageViewCircle" /> - - -