From 00cf63fbf357e0068834487f622ba7faade51992 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Wed, 2 Nov 2022 23:35:35 +0100 Subject: Dodata splash page. --- .../brzodolokacije/Activities/SplashPage.kt | 11 ++ .../Adapters/Fragments/FragmentAddPost.kt | 48 +++++++ .../Adapters/Fragments/FragmentBrowse.kt | 60 ++++++++ .../Adapters/Fragments/FragmentHome.kt | 61 ++++++++ .../Adapters/Fragments/FragmentLogin.kt | 156 ++++++++++++++++++++ .../Adapters/Fragments/FragmentMyProfileInfo.kt | 60 ++++++++ .../Adapters/Fragments/FragmentMyRecensions.kt | 60 ++++++++ .../Adapters/Fragments/FragmentProfile.kt | 93 ++++++++++++ .../Adapters/Fragments/FragmentRegister.kt | 158 +++++++++++++++++++++ .../Adapters/Fragments/FragmentUserPosts.kt | 60 ++++++++ .../brzodolokacije/Fragments/FragmentAddPost.kt | 48 ------- .../brzodolokacije/Fragments/FragmentBrowse.kt | 60 -------- .../brzodolokacije/Fragments/FragmentHome.kt | 61 -------- .../brzodolokacije/Fragments/FragmentLogin.kt | 156 -------------------- .../Fragments/FragmentMyProfileInfo.kt | 60 -------- .../Fragments/FragmentMyRecensions.kt | 60 -------- .../brzodolokacije/Fragments/FragmentProfile.kt | 93 ------------ .../brzodolokacije/Fragments/FragmentRegister.kt | 158 --------------------- .../brzodolokacije/Fragments/FragmentUserPosts.kt | 60 -------- .../src/main/res/layout/activity_splash_page.xml | 9 ++ 20 files changed, 776 insertions(+), 756 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/SplashPage.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentAddPost.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentBrowse.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentHome.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentLogin.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyProfileInfo.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyRecensions.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentProfile.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentRegister.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentUserPosts.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/activity_splash_page.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/SplashPage.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/SplashPage.kt new file mode 100644 index 0000000..2d3a73b --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/SplashPage.kt @@ -0,0 +1,11 @@ +package com.example.brzodolokacije.Activities + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle + +class SplashPage : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_splash_page) + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentAddPost.kt new file mode 100644 index 0000000..c00cbc5 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentAddPost.kt @@ -0,0 +1,48 @@ +package com.example.brzodolokacije.Adapters.Fragments + +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import com.example.brzodolokacije.Activities.ActivityLoginRegister +import com.example.brzodolokacije.Activities.NavigationActivity +import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.SharedPreferencesHelper + + +class FragmentAddPost : Fragment(R.layout.fragment_add_post) { + + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view:View=inflater.inflate(R.layout.fragment_add_post, container, false) + // Inflate the layout for this fragment + val logOutButton=view.findViewById(R.id.btnFragmentAddLogOut) as Button + logOutButton.setOnClickListener{ + logOut() + } + return view; + } + + fun logOut(){ + if(SharedPreferencesHelper.removeValue("jwt",requireActivity())) + { + val intent= Intent(requireActivity(), ActivityLoginRegister::class.java) + startActivity(intent) + } + } + + +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentBrowse.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentBrowse.kt new file mode 100644 index 0000000..51745fe --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentBrowse.kt @@ -0,0 +1,60 @@ +package com.example.brzodolokacije.Adapters.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 [FragmentBrowse.newInstance] factory method to + * create an instance of this fragment. + */ +class FragmentBrowse : Fragment(R.layout.fragment_browse) { + // 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_browse, 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 FragmentBrowse. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + FragmentBrowse().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/Adapters/Fragments/FragmentHome.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentHome.kt new file mode 100644 index 0000000..bb9e0cb --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentHome.kt @@ -0,0 +1,61 @@ +package com.example.brzodolokacije.Adapters.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 androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Adapters.SampleAdapter +import com.example.brzodolokacije.Models.ListItemModel +import com.example.brzodolokacije.R +import com.example.brzodolokacije.databinding.FragmentHomeBinding + +/** + * A simple [Fragment] subclass. + * Use the [FragmentHome.newInstance] factory method to + * create an instance of this fragment. + */ + +class FragmentHome : Fragment(R.layout.fragment_home) { + + private lateinit var binding: FragmentHomeBinding + private var nameList : MutableList = mutableListOf() + private var layoutManagerVar: RecyclerView.LayoutManager? = null + private var adapterVar: RecyclerView.Adapter? = null + private var recyclerView:RecyclerView?=null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //load data for the list + loadData() + //instantiate adapter and linearLayout + adapterVar=SampleAdapter(nameList) + layoutManagerVar=LinearLayoutManager(activity) + } + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val rootView = inflater?.inflate(R.layout.fragment_home, container, false) + recyclerView = rootView?.findViewById(R.id.rvMain) + // set recyclerView attributes + recyclerView?.setHasFixedSize(true) + recyclerView?.layoutManager = layoutManagerVar + recyclerView?.adapter = adapterVar + return rootView + } + fun loadData(){ + nameList.add(ListItemModel(1,"Sample 1")) + nameList.add(ListItemModel(2,"Sample 2")) + nameList.add(ListItemModel(3,"Sample 3")) + nameList.add(ListItemModel(4,"Sample 4")) + nameList.add(ListItemModel(5,"Sample 5")) + nameList.add(ListItemModel(6,"Sample 6")) + } +} diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentLogin.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentLogin.kt new file mode 100644 index 0000000..a81505b --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentLogin.kt @@ -0,0 +1,156 @@ +package com.example.brzodolokacije.Adapters.Fragments + +import android.content.Intent +import android.graphics.Color +import android.os.Bundle +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 android.widget.Toast + +import com.example.brzodolokacije.Activities.ActivityLoginRegister +import com.example.brzodolokacije.Activities.NavigationActivity + +import com.example.brzodolokacije.Activities.ActivityForgottenPassword + + +import com.example.brzodolokacije.Interfaces.IAuthApi +import com.example.brzodolokacije.Models.Auth.Login +import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import retrofit2.Call +import retrofit2.Response + + +class FragmentLogin : Fragment() { + // TODO: Rename and change types of parameters + private lateinit var password: EditText + private lateinit var email: EditText + private lateinit var forgottenPassword: TextView + private lateinit var login: Button + private lateinit var passwordString:String + private lateinit var emailString:String + + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + val view:View=inflater.inflate(R.layout.fragment_login, container, false) + + + email = view.findViewById(R.id.etFragmentLoginEmail) as EditText + password = view.findViewById(R.id.etFragmentLoginPassword) as EditText + forgottenPassword = view.findViewById(R.id.tvFragmentLoginForgottenPassword) as TextView + login=view.findViewById(R.id.btnFragmentLoginLogin) as Button + + //osluskivanje unosa + + login.setOnClickListener{ + emailString=email.text.toString().trim() + passwordString=password.text.toString().trim() + //prazan unos? + if(emailString.isEmpty()) + { + email.hint="Unesite Email adresu" + email.setHintTextColor(Color.RED) + }/* + else{ + if(checkEmail(emailString)==false){ + email.hint="Pogrešan unos, unesite ispravnu Email adresu" + email.setHintTextColor(Color.RED) + } + }*/ + if(passwordString.isEmpty()) + { + password.hint = "Unesite lozinku" + password.setHintTextColor(Color.RED) + + }/* + else{ + if(checkPassword(passwordString)==false) { + password.hint = "Lozinka mora imati najmanje 6 karaktera" + password.setHintTextColor(Color.RED) + } + } +*/ + if(!emailString.isEmpty() && !passwordString.isEmpty()&& checkPassword(passwordString)==true && checkEmail(emailString)==true) { + + var loginData= Login(emailString,passwordString) + val authApi= RetrofitHelper.getInstance().create(IAuthApi::class.java) + val request=authApi.login(loginData) + + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful()){ + val token=response.body().toString() + Toast.makeText( + activity, token, Toast.LENGTH_LONG + ).show(); + //TODO(navigate to main page) + SharedPreferencesHelper.addValue("jwt",token,activity!!) + val intent= Intent(activity!!, NavigationActivity::class.java) + startActivity(intent) + }else{ + if(response.errorBody()!=null) + Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show(); + } + + + } + + override fun onFailure(call: Call, t: Throwable) { + Toast.makeText( + activity, t.toString(), Toast.LENGTH_LONG + ).show(); + } + }) + + } + } + + // zaboravljena lozinka + forgottenPassword.setOnClickListener{ + val intent = Intent (getActivity(), ActivityForgottenPassword::class.java) + getActivity()?.startActivity(intent) + } + + + + + + return view + + } + fun checkEmail(emailString:String):Boolean{ + val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" + if(!(emailRegex.toRegex().matches(emailString))){ + Toast.makeText( + activity, "Email adresa nije validna, pokušajte ponovo", Toast.LENGTH_LONG + ).show(); + email.setHintTextColor(Color.RED) + return false + } + else{ + return true + } + } + + fun checkPassword(passwordString:String):Boolean{ + if(passwordString.length<6){ + Toast.makeText( + activity, "Uneta lozinka nije validna, pokušajte ponovo", Toast.LENGTH_LONG + ).show(); + return false + } + return true + } + +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyProfileInfo.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyProfileInfo.kt new file mode 100644 index 0000000..e846695 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyProfileInfo.kt @@ -0,0 +1,60 @@ +package com.example.brzodolokacije.Adapters.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/Adapters/Fragments/FragmentMyRecensions.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyRecensions.kt new file mode 100644 index 0000000..10bdc21 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyRecensions.kt @@ -0,0 +1,60 @@ +package com.example.brzodolokacije.Adapters.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/Adapters/Fragments/FragmentProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentProfile.kt new file mode 100644 index 0000000..566e1cf --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentProfile.kt @@ -0,0 +1,93 @@ +package com.example.brzodolokacije.Adapters.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 +private const val ARG_PARAM1 = "param1" +private const val ARG_PARAM2 = "param2" + +/** + * A simple [Fragment] subclass. + * Use the [FragmentProfile.newInstance] factory method to + * create an instance of this fragment. + */ +class FragmentProfile : Fragment(R.layout.fragment_profile) { + // TODO: Rename and change types of parameters + 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 + 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() + } + + + 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/Adapters/Fragments/FragmentRegister.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentRegister.kt new file mode 100644 index 0000000..db681a3 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentRegister.kt @@ -0,0 +1,158 @@ +package com.example.brzodolokacije.Adapters.Fragments + +import android.graphics.BitmapFactory +import android.graphics.Color +import android.os.Bundle +import android.util.Base64 +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.Toast +import com.example.brzodolokacije.Interfaces.IAuthApi +import com.example.brzodolokacije.Models.Auth.Register +import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import okhttp3.ResponseBody +import retrofit2.Call +import retrofit2.Response +import javax.security.auth.callback.Callback + +class FragmentRegister : Fragment() { + // TODO: Rename and change types of parameters + private lateinit var password: EditText + private lateinit var email: EditText + private lateinit var username: EditText + private lateinit var name: EditText + private lateinit var register: Button + private lateinit var usernameString:String + private lateinit var nameString:String + private lateinit var passwordString:String + private lateinit var emailString:String + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + val view:View=inflater.inflate(R.layout.fragment_register, container, false) + + email = view.findViewById(R.id.etFragmentRegisterEmail) as EditText + password = view.findViewById(R.id.etFragmentRegisterPassword) as EditText + username = view.findViewById(R.id.etFragmentRegisterUser) as EditText + name = view.findViewById(R.id.etFragmentRegisterName) as EditText + register=view.findViewById(R.id.btnFragmentRegisterRegister) as Button + + //osluskivanje unosa + + register.setOnClickListener{ + emailString=email.text.toString().trim() + usernameString=username.text.toString().trim() + nameString=name.text.toString().trim() + passwordString=password.text.toString().trim() + + //prazan unos? neispravan email + if(emailString.isEmpty()) + { + email.hint="Unesite Email adresu" + email.setHintTextColor(Color.RED) + } + if(passwordString.isEmpty()) + { + password.hint = "Unesite lozinku" + password.setHintTextColor(Color.RED) + } + if(usernameString.isEmpty()) + { + username.hint = "Unesite korisničko ime" + username.setHintTextColor(Color.RED) + } + if(nameString.isEmpty()) + { + name.hint = "Unesite ime i prezime" + name.setHintTextColor(Color.RED) + } + if(!emailString.isEmpty() && !passwordString.isEmpty() && !nameString.isEmpty() + && !usernameString.isEmpty() && checkPassword(passwordString)==true + && checkEmail(emailString)==true && checkUsername(usernameString)==true) { + + var registerData=Register(nameString,usernameString,emailString,passwordString) + + val authApi=RetrofitHelper.getInstance().create(IAuthApi::class.java) + + val request=authApi.register(registerData) + + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful()){ + Toast.makeText( + 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() + } + } + + + } + + override fun onFailure(call: Call, t: Throwable) { + Toast.makeText( + activity, "Greska, pokusajte ponovo.", Toast.LENGTH_LONG + ).show(); + } + }) + + + + //***DODATI broj karaktera lozinke, provera da li je email sa @ i .com + + } + } + + + return view + } + fun checkEmail(emailString:String):Boolean{ + val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" + if(!(emailRegex.toRegex().matches(emailString))){ + Toast.makeText( + activity, "Email adresa nije validna, pokušajte ponovo", Toast.LENGTH_LONG + ).show(); + email.setHintTextColor(Color.RED) + return false + } + else{ + return true + } + } + + fun checkPassword(passwordString:String):Boolean{ + if(passwordString.length<6){ + Toast.makeText( + activity, "Izaberite sigurniju lozinku", Toast.LENGTH_LONG + ).show(); + return false + } + return true + } + + fun checkUsername(usernameString:String):Boolean{ + if(usernameString.length<4){ + Toast.makeText( + activity, "Izaberite korisničko ime sa 4 ili više karaktera ", Toast.LENGTH_LONG + ).show(); + return false + } + return true + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentUserPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentUserPosts.kt new file mode 100644 index 0000000..866c0f8 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentUserPosts.kt @@ -0,0 +1,60 @@ +package com.example.brzodolokacije.Adapters.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/Fragments/FragmentAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt deleted file mode 100644 index b6452e9..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.example.brzodolokacije.Fragments - -import android.content.Intent -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.Button -import com.example.brzodolokacije.Activities.ActivityLoginRegister -import com.example.brzodolokacije.Activities.NavigationActivity -import com.example.brzodolokacije.R -import com.example.brzodolokacije.Services.SharedPreferencesHelper - - -class FragmentAddPost : Fragment(R.layout.fragment_add_post) { - - - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - - } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - val view:View=inflater.inflate(R.layout.fragment_add_post, container, false) - // Inflate the layout for this fragment - val logOutButton=view.findViewById(R.id.btnFragmentAddLogOut) as Button - logOutButton.setOnClickListener{ - logOut() - } - return view; - } - - fun logOut(){ - if(SharedPreferencesHelper.removeValue("jwt",requireActivity())) - { - val intent= Intent(requireActivity(), ActivityLoginRegister::class.java) - startActivity(intent) - } - } - - -} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt deleted file mode 100644 index 1bd98a0..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt +++ /dev/null @@ -1,60 +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 - -// 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 [FragmentBrowse.newInstance] factory method to - * create an instance of this fragment. - */ -class FragmentBrowse : Fragment(R.layout.fragment_browse) { - // 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_browse, 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 FragmentBrowse. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - FragmentBrowse().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/FragmentHome.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt deleted file mode 100644 index fd5aa33..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt +++ /dev/null @@ -1,61 +0,0 @@ -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 androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.example.brzodolokacije.Adapters.SampleAdapter -import com.example.brzodolokacije.Models.ListItemModel -import com.example.brzodolokacije.R -import com.example.brzodolokacije.databinding.FragmentHomeBinding - -/** - * A simple [Fragment] subclass. - * Use the [FragmentHome.newInstance] factory method to - * create an instance of this fragment. - */ - -class FragmentHome : Fragment(R.layout.fragment_home) { - - private lateinit var binding: FragmentHomeBinding - private var nameList : MutableList = mutableListOf() - private var layoutManagerVar: RecyclerView.LayoutManager? = null - private var adapterVar: RecyclerView.Adapter? = null - private var recyclerView:RecyclerView?=null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - //load data for the list - loadData() - //instantiate adapter and linearLayout - adapterVar=SampleAdapter(nameList) - layoutManagerVar=LinearLayoutManager(activity) - } - - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - val rootView = inflater?.inflate(R.layout.fragment_home, container, false) - recyclerView = rootView?.findViewById(R.id.rvMain) - // set recyclerView attributes - recyclerView?.setHasFixedSize(true) - recyclerView?.layoutManager = layoutManagerVar - recyclerView?.adapter = adapterVar - return rootView - } - fun loadData(){ - nameList.add(ListItemModel(1,"Sample 1")) - nameList.add(ListItemModel(2,"Sample 2")) - nameList.add(ListItemModel(3,"Sample 3")) - nameList.add(ListItemModel(4,"Sample 4")) - nameList.add(ListItemModel(5,"Sample 5")) - nameList.add(ListItemModel(6,"Sample 6")) - } -} 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 deleted file mode 100644 index b9568df..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt +++ /dev/null @@ -1,156 +0,0 @@ -package com.example.brzodolokacije.Fragments - -import android.content.Intent -import android.graphics.Color -import android.os.Bundle -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 android.widget.Toast - -import com.example.brzodolokacije.Activities.ActivityLoginRegister -import com.example.brzodolokacije.Activities.NavigationActivity - -import com.example.brzodolokacije.Activities.ActivityForgottenPassword - - -import com.example.brzodolokacije.Interfaces.IAuthApi -import com.example.brzodolokacije.Models.Auth.Login -import com.example.brzodolokacije.R -import com.example.brzodolokacije.Services.RetrofitHelper -import com.example.brzodolokacije.Services.SharedPreferencesHelper -import retrofit2.Call -import retrofit2.Response - - -class FragmentLogin : Fragment() { - // TODO: Rename and change types of parameters - private lateinit var password: EditText - private lateinit var email: EditText - private lateinit var forgottenPassword: TextView - private lateinit var login: Button - private lateinit var passwordString:String - private lateinit var emailString:String - - - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - val view:View=inflater.inflate(R.layout.fragment_login, container, false) - - - email = view.findViewById(R.id.etFragmentLoginEmail) as EditText - password = view.findViewById(R.id.etFragmentLoginPassword) as EditText - forgottenPassword = view.findViewById(R.id.tvFragmentLoginForgottenPassword) as TextView - login=view.findViewById(R.id.btnFragmentLoginLogin) as Button - - //osluskivanje unosa - - login.setOnClickListener{ - emailString=email.text.toString().trim() - passwordString=password.text.toString().trim() - //prazan unos? - if(emailString.isEmpty()) - { - email.hint="Unesite Email adresu" - email.setHintTextColor(Color.RED) - }/* - else{ - if(checkEmail(emailString)==false){ - email.hint="Pogrešan unos, unesite ispravnu Email adresu" - email.setHintTextColor(Color.RED) - } - }*/ - if(passwordString.isEmpty()) - { - password.hint = "Unesite lozinku" - password.setHintTextColor(Color.RED) - - }/* - else{ - if(checkPassword(passwordString)==false) { - password.hint = "Lozinka mora imati najmanje 6 karaktera" - password.setHintTextColor(Color.RED) - } - } -*/ - if(!emailString.isEmpty() && !passwordString.isEmpty()&& checkPassword(passwordString)==true && checkEmail(emailString)==true) { - - var loginData= Login(emailString,passwordString) - val authApi= RetrofitHelper.getInstance().create(IAuthApi::class.java) - val request=authApi.login(loginData) - - request.enqueue(object : retrofit2.Callback { - override fun onResponse(call: Call, response: Response) { - if(response.isSuccessful()){ - val token=response.body().toString() - Toast.makeText( - activity, token, Toast.LENGTH_LONG - ).show(); - //TODO(navigate to main page) - SharedPreferencesHelper.addValue("jwt",token,activity!!) - val intent= Intent(activity!!, NavigationActivity::class.java) - startActivity(intent) - }else{ - if(response.errorBody()!=null) - Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show(); - } - - - } - - override fun onFailure(call: Call, t: Throwable) { - Toast.makeText( - activity, t.toString(), Toast.LENGTH_LONG - ).show(); - } - }) - - } - } - - // zaboravljena lozinka - forgottenPassword.setOnClickListener{ - val intent = Intent (getActivity(), ActivityForgottenPassword::class.java) - getActivity()?.startActivity(intent) - } - - - - - - return view - - } - fun checkEmail(emailString:String):Boolean{ - val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" - if(!(emailRegex.toRegex().matches(emailString))){ - Toast.makeText( - activity, "Email adresa nije validna, pokušajte ponovo", Toast.LENGTH_LONG - ).show(); - email.setHintTextColor(Color.RED) - return false - } - else{ - return true - } - } - - fun checkPassword(passwordString:String):Boolean{ - if(passwordString.length<6){ - Toast.makeText( - activity, "Uneta lozinka nije validna, pokušajte ponovo", Toast.LENGTH_LONG - ).show(); - return false - } - return true - } - -} \ No newline at end of file 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 deleted file mode 100644 index 9c4c370..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt +++ /dev/null @@ -1,60 +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 - -// 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 deleted file mode 100644 index ce8679a..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt +++ /dev/null @@ -1,60 +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 - -// 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 deleted file mode 100644 index a8176b0..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt +++ /dev/null @@ -1,93 +0,0 @@ -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 -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" - -/** - * A simple [Fragment] subclass. - * Use the [FragmentProfile.newInstance] factory method to - * create an instance of this fragment. - */ -class FragmentProfile : Fragment(R.layout.fragment_profile) { - // TODO: Rename and change types of parameters - 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 - 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() - } - - - 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 deleted file mode 100644 index c9102ab..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt +++ /dev/null @@ -1,158 +0,0 @@ -package com.example.brzodolokacije.Fragments - -import android.graphics.BitmapFactory -import android.graphics.Color -import android.os.Bundle -import android.util.Base64 -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.Toast -import com.example.brzodolokacije.Interfaces.IAuthApi -import com.example.brzodolokacije.Models.Auth.Register -import com.example.brzodolokacije.R -import com.example.brzodolokacije.Services.RetrofitHelper -import okhttp3.ResponseBody -import retrofit2.Call -import retrofit2.Response -import javax.security.auth.callback.Callback - -class FragmentRegister : Fragment() { - // TODO: Rename and change types of parameters - private lateinit var password: EditText - private lateinit var email: EditText - private lateinit var username: EditText - private lateinit var name: EditText - private lateinit var register: Button - private lateinit var usernameString:String - private lateinit var nameString:String - private lateinit var passwordString:String - private lateinit var emailString:String - - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - val view:View=inflater.inflate(R.layout.fragment_register, container, false) - - email = view.findViewById(R.id.etFragmentRegisterEmail) as EditText - password = view.findViewById(R.id.etFragmentRegisterPassword) as EditText - username = view.findViewById(R.id.etFragmentRegisterUser) as EditText - name = view.findViewById(R.id.etFragmentRegisterName) as EditText - register=view.findViewById(R.id.btnFragmentRegisterRegister) as Button - - //osluskivanje unosa - - register.setOnClickListener{ - emailString=email.text.toString().trim() - usernameString=username.text.toString().trim() - nameString=name.text.toString().trim() - passwordString=password.text.toString().trim() - - //prazan unos? neispravan email - if(emailString.isEmpty()) - { - email.hint="Unesite Email adresu" - email.setHintTextColor(Color.RED) - } - if(passwordString.isEmpty()) - { - password.hint = "Unesite lozinku" - password.setHintTextColor(Color.RED) - } - if(usernameString.isEmpty()) - { - username.hint = "Unesite korisničko ime" - username.setHintTextColor(Color.RED) - } - if(nameString.isEmpty()) - { - name.hint = "Unesite ime i prezime" - name.setHintTextColor(Color.RED) - } - if(!emailString.isEmpty() && !passwordString.isEmpty() && !nameString.isEmpty() - && !usernameString.isEmpty() && checkPassword(passwordString)==true - && checkEmail(emailString)==true && checkUsername(usernameString)==true) { - - var registerData=Register(nameString,usernameString,emailString,passwordString) - - val authApi=RetrofitHelper.getInstance().create(IAuthApi::class.java) - - val request=authApi.register(registerData) - - request.enqueue(object : retrofit2.Callback { - override fun onResponse(call: Call, response: Response) { - if(response.isSuccessful()){ - Toast.makeText( - 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() - } - } - - - } - - override fun onFailure(call: Call, t: Throwable) { - Toast.makeText( - activity, "Greska, pokusajte ponovo.", Toast.LENGTH_LONG - ).show(); - } - }) - - - - //***DODATI broj karaktera lozinke, provera da li je email sa @ i .com - - } - } - - - return view - } - fun checkEmail(emailString:String):Boolean{ - val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" - if(!(emailRegex.toRegex().matches(emailString))){ - Toast.makeText( - activity, "Email adresa nije validna, pokušajte ponovo", Toast.LENGTH_LONG - ).show(); - email.setHintTextColor(Color.RED) - return false - } - else{ - return true - } - } - - fun checkPassword(passwordString:String):Boolean{ - if(passwordString.length<6){ - Toast.makeText( - activity, "Izaberite sigurniju lozinku", Toast.LENGTH_LONG - ).show(); - return false - } - return true - } - - fun checkUsername(usernameString:String):Boolean{ - if(usernameString.length<4){ - Toast.makeText( - activity, "Izaberite korisničko ime sa 4 ili više karaktera ", Toast.LENGTH_LONG - ).show(); - return false - } - return true - } -} \ No newline at end of file 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 deleted file mode 100644 index 561de10..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt +++ /dev/null @@ -1,60 +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 - -// 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/res/layout/activity_splash_page.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_splash_page.xml new file mode 100644 index 0000000..240bfbb --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_splash_page.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file -- cgit v1.2.3 From a8c1194dd3ec6683548d8e8fe0bb24c4b8974454 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Wed, 2 Nov 2022 23:36:21 +0100 Subject: Dodata splash page. --- .../app/src/main/AndroidManifest.xml | 19 +++++--- .../brzodolokacije/Activities/SplashPage.kt | 14 +++++- .../src/main/res/layout/activity_splash_page.xml | 51 ++++++++++++++++++++++ 3 files changed, 76 insertions(+), 8 deletions(-) (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index edf65a2..c22f8a3 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -15,19 +15,24 @@ android:theme="@style/Theme.BrzoDoLokacije" android:usesCleartextTraffic="true" tools:targetApi="31"> - - - - - - + + + + + + + diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/SplashPage.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/SplashPage.kt index 2d3a73b..3d2f923 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/SplashPage.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/SplashPage.kt @@ -1,11 +1,23 @@ package com.example.brzodolokacije.Activities +import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.os.Handler +import com.example.brzodolokacije.MainActivity +import com.example.brzodolokacije.R class SplashPage : AppCompatActivity() { + private val time:Long = 4000 + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_splash_page) + + Handler().postDelayed({ + startActivity(Intent(this, MainActivity::class.java)) + + // close this activity + finish() }, time) } -} \ No newline at end of file +} diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_splash_page.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_splash_page.xml index 240bfbb..7035b22 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_splash_page.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_splash_page.xml @@ -4,6 +4,57 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="#FFFFFF" + android:backgroundTint="#388DAC" tools:context=".Activities.SplashPage"> + + + + + + + \ No newline at end of file -- cgit v1.2.3 From ca1fcebee0fa73bb24fd348785d29f059c86edfb Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Thu, 3 Nov 2022 14:27:11 +0100 Subject: Izmenjena lokacija foldera sa fragmentima. --- .../Adapters/Fragments/FragmentAddPost.kt | 48 ------- .../Adapters/Fragments/FragmentBrowse.kt | 60 -------- .../Adapters/Fragments/FragmentHome.kt | 61 -------- .../Adapters/Fragments/FragmentLogin.kt | 156 -------------------- .../Adapters/Fragments/FragmentMyProfileInfo.kt | 60 -------- .../Adapters/Fragments/FragmentMyRecensions.kt | 60 -------- .../Adapters/Fragments/FragmentProfile.kt | 93 ------------ .../Adapters/Fragments/FragmentRegister.kt | 158 --------------------- .../Adapters/Fragments/FragmentUserPosts.kt | 60 -------- .../brzodolokacije/Fragments/FragmentAddPost.kt | 48 +++++++ .../brzodolokacije/Fragments/FragmentBrowse.kt | 60 ++++++++ .../brzodolokacije/Fragments/FragmentHome.kt | 61 ++++++++ .../brzodolokacije/Fragments/FragmentLogin.kt | 156 ++++++++++++++++++++ .../Fragments/FragmentMyProfileInfo.kt | 60 ++++++++ .../Fragments/FragmentMyRecensions.kt | 60 ++++++++ .../brzodolokacije/Fragments/FragmentProfile.kt | 93 ++++++++++++ .../brzodolokacije/Fragments/FragmentRegister.kt | 158 +++++++++++++++++++++ .../brzodolokacije/Fragments/FragmentUserPosts.kt | 60 ++++++++ 18 files changed, 756 insertions(+), 756 deletions(-) delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentAddPost.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentBrowse.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentHome.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentLogin.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyProfileInfo.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyRecensions.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentProfile.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentRegister.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentUserPosts.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt 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/FragmentProfile.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentAddPost.kt deleted file mode 100644 index c00cbc5..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentAddPost.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.example.brzodolokacije.Adapters.Fragments - -import android.content.Intent -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.Button -import com.example.brzodolokacije.Activities.ActivityLoginRegister -import com.example.brzodolokacije.Activities.NavigationActivity -import com.example.brzodolokacije.R -import com.example.brzodolokacije.Services.SharedPreferencesHelper - - -class FragmentAddPost : Fragment(R.layout.fragment_add_post) { - - - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - - } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - val view:View=inflater.inflate(R.layout.fragment_add_post, container, false) - // Inflate the layout for this fragment - val logOutButton=view.findViewById(R.id.btnFragmentAddLogOut) as Button - logOutButton.setOnClickListener{ - logOut() - } - return view; - } - - fun logOut(){ - if(SharedPreferencesHelper.removeValue("jwt",requireActivity())) - { - val intent= Intent(requireActivity(), ActivityLoginRegister::class.java) - startActivity(intent) - } - } - - -} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentBrowse.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentBrowse.kt deleted file mode 100644 index 51745fe..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentBrowse.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.example.brzodolokacije.Adapters.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 [FragmentBrowse.newInstance] factory method to - * create an instance of this fragment. - */ -class FragmentBrowse : Fragment(R.layout.fragment_browse) { - // 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_browse, 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 FragmentBrowse. - */ - // TODO: Rename and change types and number of parameters - @JvmStatic - fun newInstance(param1: String, param2: String) = - FragmentBrowse().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/Adapters/Fragments/FragmentHome.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentHome.kt deleted file mode 100644 index bb9e0cb..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentHome.kt +++ /dev/null @@ -1,61 +0,0 @@ -package com.example.brzodolokacije.Adapters.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 androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.example.brzodolokacije.Adapters.SampleAdapter -import com.example.brzodolokacije.Models.ListItemModel -import com.example.brzodolokacije.R -import com.example.brzodolokacije.databinding.FragmentHomeBinding - -/** - * A simple [Fragment] subclass. - * Use the [FragmentHome.newInstance] factory method to - * create an instance of this fragment. - */ - -class FragmentHome : Fragment(R.layout.fragment_home) { - - private lateinit var binding: FragmentHomeBinding - private var nameList : MutableList = mutableListOf() - private var layoutManagerVar: RecyclerView.LayoutManager? = null - private var adapterVar: RecyclerView.Adapter? = null - private var recyclerView:RecyclerView?=null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - //load data for the list - loadData() - //instantiate adapter and linearLayout - adapterVar=SampleAdapter(nameList) - layoutManagerVar=LinearLayoutManager(activity) - } - - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - val rootView = inflater?.inflate(R.layout.fragment_home, container, false) - recyclerView = rootView?.findViewById(R.id.rvMain) - // set recyclerView attributes - recyclerView?.setHasFixedSize(true) - recyclerView?.layoutManager = layoutManagerVar - recyclerView?.adapter = adapterVar - return rootView - } - fun loadData(){ - nameList.add(ListItemModel(1,"Sample 1")) - nameList.add(ListItemModel(2,"Sample 2")) - nameList.add(ListItemModel(3,"Sample 3")) - nameList.add(ListItemModel(4,"Sample 4")) - nameList.add(ListItemModel(5,"Sample 5")) - nameList.add(ListItemModel(6,"Sample 6")) - } -} diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentLogin.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentLogin.kt deleted file mode 100644 index a81505b..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentLogin.kt +++ /dev/null @@ -1,156 +0,0 @@ -package com.example.brzodolokacije.Adapters.Fragments - -import android.content.Intent -import android.graphics.Color -import android.os.Bundle -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 android.widget.Toast - -import com.example.brzodolokacije.Activities.ActivityLoginRegister -import com.example.brzodolokacije.Activities.NavigationActivity - -import com.example.brzodolokacije.Activities.ActivityForgottenPassword - - -import com.example.brzodolokacije.Interfaces.IAuthApi -import com.example.brzodolokacije.Models.Auth.Login -import com.example.brzodolokacije.R -import com.example.brzodolokacije.Services.RetrofitHelper -import com.example.brzodolokacije.Services.SharedPreferencesHelper -import retrofit2.Call -import retrofit2.Response - - -class FragmentLogin : Fragment() { - // TODO: Rename and change types of parameters - private lateinit var password: EditText - private lateinit var email: EditText - private lateinit var forgottenPassword: TextView - private lateinit var login: Button - private lateinit var passwordString:String - private lateinit var emailString:String - - - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - val view:View=inflater.inflate(R.layout.fragment_login, container, false) - - - email = view.findViewById(R.id.etFragmentLoginEmail) as EditText - password = view.findViewById(R.id.etFragmentLoginPassword) as EditText - forgottenPassword = view.findViewById(R.id.tvFragmentLoginForgottenPassword) as TextView - login=view.findViewById(R.id.btnFragmentLoginLogin) as Button - - //osluskivanje unosa - - login.setOnClickListener{ - emailString=email.text.toString().trim() - passwordString=password.text.toString().trim() - //prazan unos? - if(emailString.isEmpty()) - { - email.hint="Unesite Email adresu" - email.setHintTextColor(Color.RED) - }/* - else{ - if(checkEmail(emailString)==false){ - email.hint="Pogrešan unos, unesite ispravnu Email adresu" - email.setHintTextColor(Color.RED) - } - }*/ - if(passwordString.isEmpty()) - { - password.hint = "Unesite lozinku" - password.setHintTextColor(Color.RED) - - }/* - else{ - if(checkPassword(passwordString)==false) { - password.hint = "Lozinka mora imati najmanje 6 karaktera" - password.setHintTextColor(Color.RED) - } - } -*/ - if(!emailString.isEmpty() && !passwordString.isEmpty()&& checkPassword(passwordString)==true && checkEmail(emailString)==true) { - - var loginData= Login(emailString,passwordString) - val authApi= RetrofitHelper.getInstance().create(IAuthApi::class.java) - val request=authApi.login(loginData) - - request.enqueue(object : retrofit2.Callback { - override fun onResponse(call: Call, response: Response) { - if(response.isSuccessful()){ - val token=response.body().toString() - Toast.makeText( - activity, token, Toast.LENGTH_LONG - ).show(); - //TODO(navigate to main page) - SharedPreferencesHelper.addValue("jwt",token,activity!!) - val intent= Intent(activity!!, NavigationActivity::class.java) - startActivity(intent) - }else{ - if(response.errorBody()!=null) - Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show(); - } - - - } - - override fun onFailure(call: Call, t: Throwable) { - Toast.makeText( - activity, t.toString(), Toast.LENGTH_LONG - ).show(); - } - }) - - } - } - - // zaboravljena lozinka - forgottenPassword.setOnClickListener{ - val intent = Intent (getActivity(), ActivityForgottenPassword::class.java) - getActivity()?.startActivity(intent) - } - - - - - - return view - - } - fun checkEmail(emailString:String):Boolean{ - val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" - if(!(emailRegex.toRegex().matches(emailString))){ - Toast.makeText( - activity, "Email adresa nije validna, pokušajte ponovo", Toast.LENGTH_LONG - ).show(); - email.setHintTextColor(Color.RED) - return false - } - else{ - return true - } - } - - fun checkPassword(passwordString:String):Boolean{ - if(passwordString.length<6){ - Toast.makeText( - activity, "Uneta lozinka nije validna, pokušajte ponovo", Toast.LENGTH_LONG - ).show(); - return false - } - return true - } - -} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyProfileInfo.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyProfileInfo.kt deleted file mode 100644 index e846695..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyProfileInfo.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.example.brzodolokacije.Adapters.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/Adapters/Fragments/FragmentMyRecensions.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyRecensions.kt deleted file mode 100644 index 10bdc21..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentMyRecensions.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.example.brzodolokacije.Adapters.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/Adapters/Fragments/FragmentProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentProfile.kt deleted file mode 100644 index 566e1cf..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentProfile.kt +++ /dev/null @@ -1,93 +0,0 @@ -package com.example.brzodolokacije.Adapters.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 -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" - -/** - * A simple [Fragment] subclass. - * Use the [FragmentProfile.newInstance] factory method to - * create an instance of this fragment. - */ -class FragmentProfile : Fragment(R.layout.fragment_profile) { - // TODO: Rename and change types of parameters - 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 - 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() - } - - - 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/Adapters/Fragments/FragmentRegister.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentRegister.kt deleted file mode 100644 index db681a3..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentRegister.kt +++ /dev/null @@ -1,158 +0,0 @@ -package com.example.brzodolokacije.Adapters.Fragments - -import android.graphics.BitmapFactory -import android.graphics.Color -import android.os.Bundle -import android.util.Base64 -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.Toast -import com.example.brzodolokacije.Interfaces.IAuthApi -import com.example.brzodolokacije.Models.Auth.Register -import com.example.brzodolokacije.R -import com.example.brzodolokacije.Services.RetrofitHelper -import okhttp3.ResponseBody -import retrofit2.Call -import retrofit2.Response -import javax.security.auth.callback.Callback - -class FragmentRegister : Fragment() { - // TODO: Rename and change types of parameters - private lateinit var password: EditText - private lateinit var email: EditText - private lateinit var username: EditText - private lateinit var name: EditText - private lateinit var register: Button - private lateinit var usernameString:String - private lateinit var nameString:String - private lateinit var passwordString:String - private lateinit var emailString:String - - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - val view:View=inflater.inflate(R.layout.fragment_register, container, false) - - email = view.findViewById(R.id.etFragmentRegisterEmail) as EditText - password = view.findViewById(R.id.etFragmentRegisterPassword) as EditText - username = view.findViewById(R.id.etFragmentRegisterUser) as EditText - name = view.findViewById(R.id.etFragmentRegisterName) as EditText - register=view.findViewById(R.id.btnFragmentRegisterRegister) as Button - - //osluskivanje unosa - - register.setOnClickListener{ - emailString=email.text.toString().trim() - usernameString=username.text.toString().trim() - nameString=name.text.toString().trim() - passwordString=password.text.toString().trim() - - //prazan unos? neispravan email - if(emailString.isEmpty()) - { - email.hint="Unesite Email adresu" - email.setHintTextColor(Color.RED) - } - if(passwordString.isEmpty()) - { - password.hint = "Unesite lozinku" - password.setHintTextColor(Color.RED) - } - if(usernameString.isEmpty()) - { - username.hint = "Unesite korisničko ime" - username.setHintTextColor(Color.RED) - } - if(nameString.isEmpty()) - { - name.hint = "Unesite ime i prezime" - name.setHintTextColor(Color.RED) - } - if(!emailString.isEmpty() && !passwordString.isEmpty() && !nameString.isEmpty() - && !usernameString.isEmpty() && checkPassword(passwordString)==true - && checkEmail(emailString)==true && checkUsername(usernameString)==true) { - - var registerData=Register(nameString,usernameString,emailString,passwordString) - - val authApi=RetrofitHelper.getInstance().create(IAuthApi::class.java) - - val request=authApi.register(registerData) - - request.enqueue(object : retrofit2.Callback { - override fun onResponse(call: Call, response: Response) { - if(response.isSuccessful()){ - Toast.makeText( - 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() - } - } - - - } - - override fun onFailure(call: Call, t: Throwable) { - Toast.makeText( - activity, "Greska, pokusajte ponovo.", Toast.LENGTH_LONG - ).show(); - } - }) - - - - //***DODATI broj karaktera lozinke, provera da li je email sa @ i .com - - } - } - - - return view - } - fun checkEmail(emailString:String):Boolean{ - val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" - if(!(emailRegex.toRegex().matches(emailString))){ - Toast.makeText( - activity, "Email adresa nije validna, pokušajte ponovo", Toast.LENGTH_LONG - ).show(); - email.setHintTextColor(Color.RED) - return false - } - else{ - return true - } - } - - fun checkPassword(passwordString:String):Boolean{ - if(passwordString.length<6){ - Toast.makeText( - activity, "Izaberite sigurniju lozinku", Toast.LENGTH_LONG - ).show(); - return false - } - return true - } - - fun checkUsername(usernameString:String):Boolean{ - if(usernameString.length<4){ - Toast.makeText( - activity, "Izaberite korisničko ime sa 4 ili više karaktera ", Toast.LENGTH_LONG - ).show(); - return false - } - return true - } -} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentUserPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentUserPosts.kt deleted file mode 100644 index 866c0f8..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/Fragments/FragmentUserPosts.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.example.brzodolokacije.Adapters.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/Fragments/FragmentAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt new file mode 100644 index 0000000..b6452e9 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt @@ -0,0 +1,48 @@ +package com.example.brzodolokacije.Fragments + +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import com.example.brzodolokacije.Activities.ActivityLoginRegister +import com.example.brzodolokacije.Activities.NavigationActivity +import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.SharedPreferencesHelper + + +class FragmentAddPost : Fragment(R.layout.fragment_add_post) { + + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val view:View=inflater.inflate(R.layout.fragment_add_post, container, false) + // Inflate the layout for this fragment + val logOutButton=view.findViewById(R.id.btnFragmentAddLogOut) as Button + logOutButton.setOnClickListener{ + logOut() + } + return view; + } + + fun logOut(){ + if(SharedPreferencesHelper.removeValue("jwt",requireActivity())) + { + val intent= Intent(requireActivity(), ActivityLoginRegister::class.java) + startActivity(intent) + } + } + + +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt new file mode 100644 index 0000000..1bd98a0 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.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 [FragmentBrowse.newInstance] factory method to + * create an instance of this fragment. + */ +class FragmentBrowse : Fragment(R.layout.fragment_browse) { + // 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_browse, 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 FragmentBrowse. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + FragmentBrowse().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/FragmentHome.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt new file mode 100644 index 0000000..fd5aa33 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt @@ -0,0 +1,61 @@ +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 androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Adapters.SampleAdapter +import com.example.brzodolokacije.Models.ListItemModel +import com.example.brzodolokacije.R +import com.example.brzodolokacije.databinding.FragmentHomeBinding + +/** + * A simple [Fragment] subclass. + * Use the [FragmentHome.newInstance] factory method to + * create an instance of this fragment. + */ + +class FragmentHome : Fragment(R.layout.fragment_home) { + + private lateinit var binding: FragmentHomeBinding + private var nameList : MutableList = mutableListOf() + private var layoutManagerVar: RecyclerView.LayoutManager? = null + private var adapterVar: RecyclerView.Adapter? = null + private var recyclerView:RecyclerView?=null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //load data for the list + loadData() + //instantiate adapter and linearLayout + adapterVar=SampleAdapter(nameList) + layoutManagerVar=LinearLayoutManager(activity) + } + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val rootView = inflater?.inflate(R.layout.fragment_home, container, false) + recyclerView = rootView?.findViewById(R.id.rvMain) + // set recyclerView attributes + recyclerView?.setHasFixedSize(true) + recyclerView?.layoutManager = layoutManagerVar + recyclerView?.adapter = adapterVar + return rootView + } + fun loadData(){ + nameList.add(ListItemModel(1,"Sample 1")) + nameList.add(ListItemModel(2,"Sample 2")) + nameList.add(ListItemModel(3,"Sample 3")) + nameList.add(ListItemModel(4,"Sample 4")) + nameList.add(ListItemModel(5,"Sample 5")) + nameList.add(ListItemModel(6,"Sample 6")) + } +} 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 new file mode 100644 index 0000000..b9568df --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt @@ -0,0 +1,156 @@ +package com.example.brzodolokacije.Fragments + +import android.content.Intent +import android.graphics.Color +import android.os.Bundle +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 android.widget.Toast + +import com.example.brzodolokacije.Activities.ActivityLoginRegister +import com.example.brzodolokacije.Activities.NavigationActivity + +import com.example.brzodolokacije.Activities.ActivityForgottenPassword + + +import com.example.brzodolokacije.Interfaces.IAuthApi +import com.example.brzodolokacije.Models.Auth.Login +import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import retrofit2.Call +import retrofit2.Response + + +class FragmentLogin : Fragment() { + // TODO: Rename and change types of parameters + private lateinit var password: EditText + private lateinit var email: EditText + private lateinit var forgottenPassword: TextView + private lateinit var login: Button + private lateinit var passwordString:String + private lateinit var emailString:String + + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + val view:View=inflater.inflate(R.layout.fragment_login, container, false) + + + email = view.findViewById(R.id.etFragmentLoginEmail) as EditText + password = view.findViewById(R.id.etFragmentLoginPassword) as EditText + forgottenPassword = view.findViewById(R.id.tvFragmentLoginForgottenPassword) as TextView + login=view.findViewById(R.id.btnFragmentLoginLogin) as Button + + //osluskivanje unosa + + login.setOnClickListener{ + emailString=email.text.toString().trim() + passwordString=password.text.toString().trim() + //prazan unos? + if(emailString.isEmpty()) + { + email.hint="Unesite Email adresu" + email.setHintTextColor(Color.RED) + }/* + else{ + if(checkEmail(emailString)==false){ + email.hint="Pogrešan unos, unesite ispravnu Email adresu" + email.setHintTextColor(Color.RED) + } + }*/ + if(passwordString.isEmpty()) + { + password.hint = "Unesite lozinku" + password.setHintTextColor(Color.RED) + + }/* + else{ + if(checkPassword(passwordString)==false) { + password.hint = "Lozinka mora imati najmanje 6 karaktera" + password.setHintTextColor(Color.RED) + } + } +*/ + if(!emailString.isEmpty() && !passwordString.isEmpty()&& checkPassword(passwordString)==true && checkEmail(emailString)==true) { + + var loginData= Login(emailString,passwordString) + val authApi= RetrofitHelper.getInstance().create(IAuthApi::class.java) + val request=authApi.login(loginData) + + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful()){ + val token=response.body().toString() + Toast.makeText( + activity, token, Toast.LENGTH_LONG + ).show(); + //TODO(navigate to main page) + SharedPreferencesHelper.addValue("jwt",token,activity!!) + val intent= Intent(activity!!, NavigationActivity::class.java) + startActivity(intent) + }else{ + if(response.errorBody()!=null) + Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show(); + } + + + } + + override fun onFailure(call: Call, t: Throwable) { + Toast.makeText( + activity, t.toString(), Toast.LENGTH_LONG + ).show(); + } + }) + + } + } + + // zaboravljena lozinka + forgottenPassword.setOnClickListener{ + val intent = Intent (getActivity(), ActivityForgottenPassword::class.java) + getActivity()?.startActivity(intent) + } + + + + + + return view + + } + fun checkEmail(emailString:String):Boolean{ + val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" + if(!(emailRegex.toRegex().matches(emailString))){ + Toast.makeText( + activity, "Email adresa nije validna, pokušajte ponovo", Toast.LENGTH_LONG + ).show(); + email.setHintTextColor(Color.RED) + return false + } + else{ + return true + } + } + + fun checkPassword(passwordString:String):Boolean{ + if(passwordString.length<6){ + Toast.makeText( + activity, "Uneta lozinka nije validna, pokušajte ponovo", Toast.LENGTH_LONG + ).show(); + return false + } + return true + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..c9ce8cc --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt @@ -0,0 +1,93 @@ +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 +private const val ARG_PARAM1 = "param1" +private const val ARG_PARAM2 = "param2" + +/** + * A simple [Fragment] subclass. + * Use the [FragmentProfile.newInstance] factory method to + * create an instance of this fragment. + */ +class FragmentProfile : Fragment(R.layout.fragment_profile) { + // TODO: Rename and change types of parameters + 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 + 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() + } + + + 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 new file mode 100644 index 0000000..c9102ab --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt @@ -0,0 +1,158 @@ +package com.example.brzodolokacije.Fragments + +import android.graphics.BitmapFactory +import android.graphics.Color +import android.os.Bundle +import android.util.Base64 +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.Toast +import com.example.brzodolokacije.Interfaces.IAuthApi +import com.example.brzodolokacije.Models.Auth.Register +import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import okhttp3.ResponseBody +import retrofit2.Call +import retrofit2.Response +import javax.security.auth.callback.Callback + +class FragmentRegister : Fragment() { + // TODO: Rename and change types of parameters + private lateinit var password: EditText + private lateinit var email: EditText + private lateinit var username: EditText + private lateinit var name: EditText + private lateinit var register: Button + private lateinit var usernameString:String + private lateinit var nameString:String + private lateinit var passwordString:String + private lateinit var emailString:String + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + val view:View=inflater.inflate(R.layout.fragment_register, container, false) + + email = view.findViewById(R.id.etFragmentRegisterEmail) as EditText + password = view.findViewById(R.id.etFragmentRegisterPassword) as EditText + username = view.findViewById(R.id.etFragmentRegisterUser) as EditText + name = view.findViewById(R.id.etFragmentRegisterName) as EditText + register=view.findViewById(R.id.btnFragmentRegisterRegister) as Button + + //osluskivanje unosa + + register.setOnClickListener{ + emailString=email.text.toString().trim() + usernameString=username.text.toString().trim() + nameString=name.text.toString().trim() + passwordString=password.text.toString().trim() + + //prazan unos? neispravan email + if(emailString.isEmpty()) + { + email.hint="Unesite Email adresu" + email.setHintTextColor(Color.RED) + } + if(passwordString.isEmpty()) + { + password.hint = "Unesite lozinku" + password.setHintTextColor(Color.RED) + } + if(usernameString.isEmpty()) + { + username.hint = "Unesite korisničko ime" + username.setHintTextColor(Color.RED) + } + if(nameString.isEmpty()) + { + name.hint = "Unesite ime i prezime" + name.setHintTextColor(Color.RED) + } + if(!emailString.isEmpty() && !passwordString.isEmpty() && !nameString.isEmpty() + && !usernameString.isEmpty() && checkPassword(passwordString)==true + && checkEmail(emailString)==true && checkUsername(usernameString)==true) { + + var registerData=Register(nameString,usernameString,emailString,passwordString) + + val authApi=RetrofitHelper.getInstance().create(IAuthApi::class.java) + + val request=authApi.register(registerData) + + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful()){ + Toast.makeText( + 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() + } + } + + + } + + override fun onFailure(call: Call, t: Throwable) { + Toast.makeText( + activity, "Greska, pokusajte ponovo.", Toast.LENGTH_LONG + ).show(); + } + }) + + + + //***DODATI broj karaktera lozinke, provera da li je email sa @ i .com + + } + } + + + return view + } + fun checkEmail(emailString:String):Boolean{ + val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" + if(!(emailRegex.toRegex().matches(emailString))){ + Toast.makeText( + activity, "Email adresa nije validna, pokušajte ponovo", Toast.LENGTH_LONG + ).show(); + email.setHintTextColor(Color.RED) + return false + } + else{ + return true + } + } + + fun checkPassword(passwordString:String):Boolean{ + if(passwordString.length<6){ + Toast.makeText( + activity, "Izaberite sigurniju lozinku", Toast.LENGTH_LONG + ).show(); + return false + } + return true + } + + fun checkUsername(usernameString:String):Boolean{ + if(usernameString.length<4){ + Toast.makeText( + activity, "Izaberite korisničko ime sa 4 ili više karaktera ", Toast.LENGTH_LONG + ).show(); + return false + } + return true + } +} \ No newline at end of file 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 -- cgit v1.2.3 From 52c9954d4eb3461849d8c7519d8820508a5e57ec Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Thu, 3 Nov 2022 16:31:04 +0100 Subject: Generisana aktivnost za listu objava i potrebni xml fajlovi, zapocet rad na izgledu liste objava #17 --- .../app/src/main/AndroidManifest.xml | 9 +++ .../brzodolokacije/Activities/ActivityShowPosts.kt | 12 +++ .../app/src/main/res/drawable/filter.png | Bin 0 -> 829 bytes .../res/drawable/rounded_picture_background.xml | 5 ++ .../app/src/main/res/drawable/sort.png | Bin 0 -> 3953 bytes .../src/main/res/layout/activity_show_posts.xml | 7 ++ .../app/src/main/res/layout/post_preview.xml | 84 +++++++++++++++++++++ .../app/src/main/res/values-land/dimens.xml | 3 + .../app/src/main/res/values-w1240dp/dimens.xml | 3 + .../app/src/main/res/values-w600dp/dimens.xml | 3 + .../app/src/main/res/values/colors.xml | 2 +- .../app/src/main/res/values/dimens.xml | 3 + 12 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowPosts.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/filter.png create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/sort.png create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_posts.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/values-land/dimens.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/values-w1240dp/dimens.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/values-w600dp/dimens.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/values/dimens.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index c22f8a3..7a257ec 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -15,13 +15,22 @@ android:theme="@style/Theme.BrzoDoLokacije" android:usesCleartextTraffic="true" tools:targetApi="31"> + + + + + diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowPosts.kt new file mode 100644 index 0000000..d1ad0a9 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowPosts.kt @@ -0,0 +1,12 @@ +package com.example.brzodolokacije.Activities + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import com.example.brzodolokacije.R + +class ActivityShowPosts : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_show_posts) + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/filter.png b/Client/BrzoDoLokacije/app/src/main/res/drawable/filter.png new file mode 100644 index 0000000..8cf4b39 Binary files /dev/null and b/Client/BrzoDoLokacije/app/src/main/res/drawable/filter.png differ diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml new file mode 100644 index 0000000..85f54be --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/sort.png b/Client/BrzoDoLokacije/app/src/main/res/drawable/sort.png new file mode 100644 index 0000000..828cd01 Binary files /dev/null and b/Client/BrzoDoLokacije/app/src/main/res/drawable/sort.png differ diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_posts.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_posts.xml new file mode 100644 index 0000000..20c7560 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_posts.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml new file mode 100644 index 0000000..abbd549 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/values-land/dimens.xml b/Client/BrzoDoLokacije/app/src/main/res/values-land/dimens.xml new file mode 100644 index 0000000..10125a3 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/values-w1240dp/dimens.xml b/Client/BrzoDoLokacije/app/src/main/res/values-w1240dp/dimens.xml new file mode 100644 index 0000000..ec434d3 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/values-w1240dp/dimens.xml @@ -0,0 +1,3 @@ + + 200dp + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/values-w600dp/dimens.xml b/Client/BrzoDoLokacije/app/src/main/res/values-w600dp/dimens.xml new file mode 100644 index 0000000..10125a3 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/values-w600dp/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml b/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml index 588b9cf..0d4da4f 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml @@ -7,5 +7,5 @@ #FF018786 #FF000000 #FFFFFFFF - + #DE093A4C \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/values/dimens.xml b/Client/BrzoDoLokacije/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..b789d50 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/values/dimens.xml @@ -0,0 +1,3 @@ + + 16dp + \ No newline at end of file -- cgit v1.2.3 From 3ba0c0557213a9444211b58a6a65ff4a2af09ea3 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Thu, 3 Nov 2022 21:54:29 +0100 Subject: fixed typo. --- Backend/Api/Api/Models/Location.cs | 2 +- Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) (limited to 'Client') diff --git a/Backend/Api/Api/Models/Location.cs b/Backend/Api/Api/Models/Location.cs index 5e723e4..8cc4377 100644 --- a/Backend/Api/Api/Models/Location.cs +++ b/Backend/Api/Api/Models/Location.cs @@ -11,7 +11,7 @@ namespace Api.Models public String name { get; set; } public String city { get; set; } public String country { get; set; } - public String adress { get; set; } + public String address { get; set; } public double latitude { get; set; } public double longitude { get; set; } public LocationType type { get; set; } diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml index abbd549..48a3289 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml @@ -4,7 +4,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_padding="5dp" android:layout_margin="0dp" android:background="@drawable/rounded_picture_background" android:clipToOutline="true" @@ -14,7 +13,6 @@ android:id="@+id/imageView8" android:layout_width="match_parent" android:layout_height="330dp" - android:layout_padding="0dp" android:outlineProvider="background" android:src="@drawable/b1" app:layout_constraintBottom_toBottomOf="parent" -- cgit v1.2.3 From 2810fdbe7dbf6e9d555ee8c697c6505910e65051 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Thu, 3 Nov 2022 23:19:35 +0100 Subject: Dodati i izmenjeni modeli. --- .../Fragments/FragmentAddRecension.kt | 60 ++++++++++++++++++++++ .../java/com/example/brzodolokacije/Models/File.kt | 6 +++ .../com/example/brzodolokacije/Models/Location.kt | 14 +++++ .../example/brzodolokacije/Models/LocationType.kt | 7 +++ .../example/brzodolokacije/Models/LocationTypes.kt | 4 -- .../java/com/example/brzodolokacije/Models/Post.kt | 30 ++++++++--- .../app/src/main/res/layout/fragment_add_post.xml | 10 ++-- .../src/main/res/layout/fragment_add_recension.xml | 13 +++++ 8 files changed, 131 insertions(+), 13 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddRecension.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/File.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationType.kt delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_recension.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddRecension.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddRecension.kt new file mode 100644 index 0000000..16709f7 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddRecension.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 [FragmentAddRecension.newInstance] factory method to + * create an instance of this fragment. + */ +class FragmentAddRecension : 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_add_recension, 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 FragmentAddRecension. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + FragmentAddRecension().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/File.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/File.kt new file mode 100644 index 0000000..030f658 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/File.kt @@ -0,0 +1,6 @@ +package com.example.brzodolokacije.Models + +data class File ( + var _id:String, + var path:String + ) \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt new file mode 100644 index 0000000..25125cd --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt @@ -0,0 +1,14 @@ +package com.example.brzodolokacije.Models + +import com.example.brzodolokacije.Models.LocationType + +data class Location ( + var _id:String, + var name:String, + var city:String, + var country:String, + var adress:String, + var latitude:Double, + var longitude:Double, + var type:LocationType + ) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationType.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationType.kt new file mode 100644 index 0000000..a078863 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationType.kt @@ -0,0 +1,7 @@ +package com.example.brzodolokacije.Models + +enum class LocationType { + GRAD,ULICA,JEZERO,REKA,PLAZA,OKEAN, MORE, MOREUZ, MOST,BANJA, + PLANINA, VISORAVAN, PIRAMIDA, LIVADA, SELO, OSTRVO, POLUOSTRVO, KLISURA, ARHIPELAG, + ADA, DELTA, FJORD, GEJZIR, IZVOR, KOTLINA, MINERALNI_IZVOR, PECINA ,SUMA, VODOPAD,VULKAN +} \ 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 deleted file mode 100644 index c599dae..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt +++ /dev/null @@ -1,4 +0,0 @@ -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 index 9c0eae1..3fa1f70 100644 --- 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 @@ -1,12 +1,30 @@ package com.example.brzodolokacije.Models +import java.time.LocalDateTime 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 + var location:Location, + var ownerId:String, + var description:String, + var views:List, + var reports:List, + var ratings:List, + var comments:List, + var images:List + + + ) + +data class Comment ( + var userId:String, + var comment:String, + var parent:Comment, + var timeStamp: LocalDateTime +) + +data class Rating( + var useridval :String, + var rating:Int +) \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_post.xml index 2cf3c8c..c106fcd 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_post.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_post.xml @@ -6,10 +6,14 @@ tools:context=".Fragments.FragmentAddPost"> + + android:layout_height="20dp"/> + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_recension.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_recension.xml new file mode 100644 index 0000000..433ae0e --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_recension.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file -- cgit v1.2.3 From 52ada664d8d786a5eff353fc75ee3b781eceb267 Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Fri, 4 Nov 2022 00:23:49 +0100 Subject: Dodati modeli potrebni za objave, osnovni elementi izgleda liste objava, hardkodovane vrednosti #17 --- .../app/src/main/AndroidManifest.xml | 7 -- .../brzodolokacije/Activities/ActivityShowPosts.kt | 12 --- .../Activities/NavigationActivity.kt | 11 +-- .../brzodolokacije/Adapters/ShowPostsAdapter.kt | 35 +++++++++ .../brzodolokacije/Fragments/FragmentShowPosts.kt | 69 ++++++++++++++++++ .../com/example/brzodolokacije/Models/Location.kt | 12 +++ .../example/brzodolokacije/Models/LocationTypes.kt | 4 + .../java/com/example/brzodolokacije/Models/Post.kt | 13 ++-- .../app/src/main/res/drawable/filter.png | Bin 829 -> 1509 bytes .../app/src/main/res/drawable/grid.png | Bin 0 -> 661 bytes .../app/src/main/res/drawable/list.webp | Bin 0 -> 174 bytes .../res/drawable/rounded_picture_background.xml | 2 +- .../src/main/res/layout/activity_show_posts.xml | 7 -- .../src/main/res/layout/fragment_show_posts.xml | 81 +++++++++++++++++++++ .../app/src/main/res/layout/post_preview.xml | 31 ++++---- 15 files changed, 227 insertions(+), 57 deletions(-) delete mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowPosts.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/grid.png create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/list.webp delete mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_posts.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/fragment_show_posts.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml index 7a257ec..f6e0fc5 100644 --- a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml +++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml @@ -15,13 +15,6 @@ android:theme="@style/Theme.BrzoDoLokacije" android:usesCleartextTraffic="true" tools:targetApi="31"> - - - diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowPosts.kt deleted file mode 100644 index d1ad0a9..0000000 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityShowPosts.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.example.brzodolokacije.Activities - -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import com.example.brzodolokacije.R - -class ActivityShowPosts : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_show_posts) - } -} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt index 0933460..d36dbae 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt @@ -5,10 +5,7 @@ import android.os.Bundle import android.view.View import android.widget.Button import androidx.fragment.app.Fragment -import com.example.brzodolokacije.Fragments.FragmentAddPost -import com.example.brzodolokacije.Fragments.FragmentBrowse -import com.example.brzodolokacije.Fragments.FragmentHome -import com.example.brzodolokacije.Fragments.FragmentProfile +import com.example.brzodolokacije.Fragments.* import com.example.brzodolokacije.R import com.google.android.material.bottomnavigation.BottomNavigationView @@ -17,15 +14,15 @@ class NavigationActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_navigation) - val homeFragment=FragmentHome() + val fragmentShowPosts=FragmentShowPosts() val browseFragment=FragmentBrowse() val addPostFragment=FragmentAddPost() val profileFragment=FragmentProfile() val bottomNav=findViewById(R.id.bottomNavigationView) as BottomNavigationView - setCurrentFragment(homeFragment) + setCurrentFragment(fragmentShowPosts) bottomNav.setOnNavigationItemSelectedListener { when(it.itemId){ - R.id.navHome->setCurrentFragment(homeFragment) + R.id.navHome->setCurrentFragment(fragmentShowPosts) R.id.navAddPost->setCurrentFragment(addPostFragment) R.id.navBrowse->setCurrentFragment(browseFragment) R.id.navProfile->setCurrentFragment(profileFragment) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt new file mode 100644 index 0000000..c8a0b77 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ShowPostsAdapter.kt @@ -0,0 +1,35 @@ +package com.example.brzodolokacije.Adapters + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Models.ListItemModel +import com.example.brzodolokacije.Models.Post +import com.example.brzodolokacije.databinding.ListItemBinding +import com.example.brzodolokacije.databinding.PostPreviewBinding + +class ShowPostsAdapter (val items : MutableList) + : RecyclerView.Adapter(){ + //constructer has one argument - list of objects that need to be displayed + //it is bound to xml of single item + private lateinit var binding: PostPreviewBinding + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val inflater = LayoutInflater.from(parent.context) + binding=PostPreviewBinding.inflate(inflater,parent,false) + return ViewHolder(binding) + } + override fun onBindViewHolder(holder: ViewHolder, position: Int){ + //sets components of particular item + holder.bind(items[position]) + } + override fun getItemCount() = items.size + inner class ViewHolder(itemView : PostPreviewBinding) : RecyclerView.ViewHolder(itemView.root){ + fun bind(item : Post){ + binding.apply { + tvTitle.text=item.location.name + tvLocationParent.text=item.location.country + tvLocationType.text=item.location.type.toString() + } + } + } +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt new file mode 100644 index 0000000..8dcef02 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -0,0 +1,69 @@ +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 androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Adapters.SampleAdapter +import com.example.brzodolokacije.Adapters.ShowPostsAdapter +import com.example.brzodolokacije.Models.ListItemModel +import com.example.brzodolokacije.Models.Location +import com.example.brzodolokacije.Models.LocationTypes +import com.example.brzodolokacije.Models.Post +import com.example.brzodolokacije.R +import com.example.brzodolokacije.databinding.FragmentHomeBinding + + +class FragmentShowPosts : Fragment() { + + private lateinit var binding: FragmentShowPosts + private var posts : MutableList = mutableListOf() + private var layoutManagerVar: RecyclerView.LayoutManager? = null + private var adapterVar: RecyclerView.Adapter? = null + private var recyclerView: RecyclerView?=null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //load data for the list + loadData() + //instantiate adapter and linearLayout + adapterVar=ShowPostsAdapter(posts) + layoutManagerVar= LinearLayoutManager(activity) + } + + private fun loadData() { + posts.add(Post("123","213", + Location("asd","Ajfelov toranj","Pariz", + "Francuska","idk","asda","asdsd",LocationTypes.Grad),"opsiopsaid",1.1,56, + mutableListOf(),mutableListOf())) + posts.add(Post("123","213", + Location("asd","Ajfelov toranj","Pariz", + "Francuska","idk","asda","asdsd",LocationTypes.Grad),"opsiopsaid",1.1,56, + mutableListOf(),mutableListOf(),)) + posts.add(Post("123","213", + Location("asd","Ajfelov toranj","Pariz", + "Francuska","idk","asda","asdsd",LocationTypes.Grad),"opsiopsaid",1.1,56, + mutableListOf(),mutableListOf(),)) + posts.add(Post("123","213", + Location("asd","Ajfelov toranj","Pariz", + "Francuska","idk","asda","asdsd",LocationTypes.Grad),"opsiopsaid",1.1,56, + mutableListOf(),mutableListOf(),)) + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val rootView = inflater?.inflate(R.layout.fragment_show_posts, container, false) + recyclerView = rootView?.findViewById(R.id.rvMain) + // set recyclerView attributes + recyclerView?.setHasFixedSize(true) + recyclerView?.layoutManager = layoutManagerVar + recyclerView?.adapter = adapterVar + return rootView + } + +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt new file mode 100644 index 0000000..ab47149 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Location.kt @@ -0,0 +1,12 @@ +package com.example.brzodolokacije.Models + +data class Location( + val _id:String, + val name:String, + val city:String, + val country:String, + val address:String, + val latitude:String, + val longitude:String, + val type:LocationTypes +) 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 index c599dae..cc61526 100644 --- 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 @@ -1,4 +1,8 @@ package com.example.brzodolokacije.Models enum class LocationTypes { + Plaza, + Grad, + Zgrada, + Setaliste } \ 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 index 9c0eae1..4359cea 100644 --- 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 @@ -1,12 +1,15 @@ package com.example.brzodolokacije.Models +import java.io.File 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 + var ownerId:String, + var location:Location, + var description:String, + var ratings:Number, + var views:Int, + var reviews:List, + var images:List ) \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/filter.png b/Client/BrzoDoLokacije/app/src/main/res/drawable/filter.png index 8cf4b39..4342c2c 100644 Binary files a/Client/BrzoDoLokacije/app/src/main/res/drawable/filter.png and b/Client/BrzoDoLokacije/app/src/main/res/drawable/filter.png differ diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/grid.png b/Client/BrzoDoLokacije/app/src/main/res/drawable/grid.png new file mode 100644 index 0000000..03d9ef9 Binary files /dev/null and b/Client/BrzoDoLokacije/app/src/main/res/drawable/grid.png differ diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/list.webp b/Client/BrzoDoLokacije/app/src/main/res/drawable/list.webp new file mode 100644 index 0000000..608932f Binary files /dev/null and b/Client/BrzoDoLokacije/app/src/main/res/drawable/list.webp differ diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml index 85f54be..2f898b0 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml @@ -1,5 +1,5 @@ - + diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_posts.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_posts.xml deleted file mode 100644 index 20c7560..0000000 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_show_posts.xml +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_show_posts.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_show_posts.xml new file mode 100644 index 0000000..4565b74 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_show_posts.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml index abbd549..e8ad501 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml @@ -4,17 +4,15 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_padding="5dp" - android:layout_margin="0dp" + android:layout_margin="5dp" android:background="@drawable/rounded_picture_background" android:clipToOutline="true" > -- cgit v1.2.3 From d42269e5bf6dcb4f125c395868a88295686a7895 Mon Sep 17 00:00:00 2001 From: Jelena Petrovic Date: Fri, 4 Nov 2022 01:20:58 +0100 Subject: prepravke posle merge-a --- .vs/ProjectSettings.json | 3 +++ .vs/VSWorkspaceState.json | 6 +++++ .vs/brzodolokacije/v17/.suo | Bin 0 -> 16896 bytes .vs/slnx.sqlite | Bin 0 -> 262144 bytes .../brzodolokacije/Fragments/FragmentAddPost.kt | 4 ++-- .../brzodolokacije/Fragments/FragmentShowPosts.kt | 26 ++++++++++----------- .../res/drawable/rounded_picture_background.xml | 7 ++++++ .../app/src/main/res/layout/post_preview.xml | 4 +--- 8 files changed, 32 insertions(+), 18 deletions(-) create mode 100644 .vs/ProjectSettings.json create mode 100644 .vs/VSWorkspaceState.json create mode 100644 .vs/brzodolokacije/v17/.suo create mode 100644 .vs/slnx.sqlite (limited to 'Client') diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..6b61141 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,6 @@ +{ + "ExpandedNodes": [ + "" + ], + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/brzodolokacije/v17/.suo b/.vs/brzodolokacije/v17/.suo new file mode 100644 index 0000000..5ee74c0 Binary files /dev/null and b/.vs/brzodolokacije/v17/.suo differ diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000..7c42e4b Binary files /dev/null and b/.vs/slnx.sqlite differ diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt index b6452e9..7fca83b 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt @@ -29,10 +29,10 @@ class FragmentAddPost : Fragment(R.layout.fragment_add_post) { ): View? { val view:View=inflater.inflate(R.layout.fragment_add_post, container, false) // Inflate the layout for this fragment - val logOutButton=view.findViewById(R.id.btnFragmentAddLogOut) as Button + /*val logOutButton=view.findViewById(R.id.btnFragmentAddLogOut) as Button logOutButton.setOnClickListener{ logOut() - } + }*/ return view; } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index 8dcef02..6bc9d12 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -11,7 +11,7 @@ import com.example.brzodolokacije.Adapters.SampleAdapter import com.example.brzodolokacije.Adapters.ShowPostsAdapter import com.example.brzodolokacije.Models.ListItemModel import com.example.brzodolokacije.Models.Location -import com.example.brzodolokacije.Models.LocationTypes +import com.example.brzodolokacije.Models.LocationType import com.example.brzodolokacije.Models.Post import com.example.brzodolokacije.R import com.example.brzodolokacije.databinding.FragmentHomeBinding @@ -35,22 +35,22 @@ class FragmentShowPosts : Fragment() { } private fun loadData() { - posts.add(Post("123","213", + posts.add(Post("123", Location("asd","Ajfelov toranj","Pariz", - "Francuska","idk","asda","asdsd",LocationTypes.Grad),"opsiopsaid",1.1,56, - mutableListOf(),mutableListOf())) - posts.add(Post("123","213", + "Francuska","idk",1.1,1.1, LocationType.GRAD),"opsiopsaid","opasdiad", + mutableListOf(),mutableListOf(),mutableListOf(),mutableListOf(),mutableListOf())) + posts.add(Post("123", Location("asd","Ajfelov toranj","Pariz", - "Francuska","idk","asda","asdsd",LocationTypes.Grad),"opsiopsaid",1.1,56, - mutableListOf(),mutableListOf(),)) - posts.add(Post("123","213", + "Francuska","idk",1.1,1.1, LocationType.GRAD),"opsiopsaid","opasdiad", + mutableListOf(),mutableListOf(),mutableListOf(),mutableListOf(),mutableListOf())) + posts.add(Post("123", Location("asd","Ajfelov toranj","Pariz", - "Francuska","idk","asda","asdsd",LocationTypes.Grad),"opsiopsaid",1.1,56, - mutableListOf(),mutableListOf(),)) - posts.add(Post("123","213", + "Francuska","idk",1.1,1.1, LocationType.GRAD),"opsiopsaid","opasdiad", + mutableListOf(),mutableListOf(),mutableListOf(),mutableListOf(),mutableListOf())) + posts.add(Post("123", Location("asd","Ajfelov toranj","Pariz", - "Francuska","idk","asda","asdsd",LocationTypes.Grad),"opsiopsaid",1.1,56, - mutableListOf(),mutableListOf(),)) + "Francuska","idk",1.1,1.1, LocationType.GRAD),"opsiopsaid","opasdiad", + mutableListOf(),mutableListOf(),mutableListOf(),mutableListOf(),mutableListOf())) } override fun onCreateView( diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml index 2f898b0..0a8e933 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_picture_background.xml @@ -2,4 +2,11 @@ + + + + + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml index a3642e2..ffdd5d7 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/post_preview.xml @@ -4,8 +4,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_padding="5dp" - android:layout_margin="0dp" android:layout_margin="0dp" android:background="@drawable/rounded_picture_background" android:clipToOutline="true" @@ -31,7 +29,7 @@ android:background="@color/dark_blue_transparent" android:outlineProvider="background" app:layout_constraintBottom_toBottomOf="@+id/locationImage" - tools:layout_editor_absoluteX="0dp"> + tools:layout_editor_absoluteX="10dp"> -- cgit v1.2.3 From 1746d8d5df71d905b0c4949a0056e518c57ced98 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Fri, 4 Nov 2022 23:08:40 +0100 Subject: Dodata singleton konekcija. --- .../com/example/brzodolokacije/Fragments/FragmentLogin.kt | 2 +- .../example/brzodolokacije/Fragments/FragmentRegister.kt | 2 +- .../com/example/brzodolokacije/Services/RetrofitHelper.kt | 15 +++++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) (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 b9568df..b2c8bf5 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 @@ -84,7 +84,7 @@ class FragmentLogin : Fragment() { if(!emailString.isEmpty() && !passwordString.isEmpty()&& checkPassword(passwordString)==true && checkEmail(emailString)==true) { var loginData= Login(emailString,passwordString) - val authApi= RetrofitHelper.getInstance().create(IAuthApi::class.java) + val authApi= RetrofitHelper.getInstanceNoAuth() val request=authApi.login(loginData) request.enqueue(object : retrofit2.Callback { 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 c9102ab..2201128 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 @@ -81,7 +81,7 @@ class FragmentRegister : Fragment() { var registerData=Register(nameString,usernameString,emailString,passwordString) - val authApi=RetrofitHelper.getInstance().create(IAuthApi::class.java) + val authApi=RetrofitHelper.getInstanceNoAuth() val request=authApi.register(registerData) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt index cc7eb56..4e9e0e6 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt @@ -1,5 +1,6 @@ package com.example.brzodolokacije.Services +import com.example.brzodolokacije.Interfaces.IAuthApi import com.google.gson.GsonBuilder import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory @@ -7,13 +8,23 @@ import retrofit2.converter.gson.GsonConverterFactory object RetrofitHelper { val baseUrl="http://10.0.2.2:5279" - fun getInstance():Retrofit{ + + private var retrofit_noauth: IAuthApi? = null + + + fun getInstanceNoAuth():IAuthApi{ + if(retrofit_noauth==null) + retrofit_noauth= createInstanceNoAuth() + return retrofit_noauth as IAuthApi + } + private fun createInstanceNoAuth():IAuthApi{ val gson = GsonBuilder() .setLenient() .create() return Retrofit.Builder().baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create(gson)) - .build() + .build().create(IAuthApi::class.java) + } } //Usage -- cgit v1.2.3 From 93f3ab2aa55a57000cdff1cddf4955b5329978b0 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Fri, 4 Nov 2022 23:21:47 +0100 Subject: Dodat primer upita sa auth header-om. --- .../java/com/example/brzodolokacije/Fragments/FragmentLogin.kt | 2 +- .../com/example/brzodolokacije/Fragments/FragmentRegister.kt | 2 +- .../java/com/example/brzodolokacije/Interfaces/IAuthApi.kt | 5 +++++ .../java/com/example/brzodolokacije/Services/RetrofitHelper.kt | 10 ++++++---- 4 files changed, 13 insertions(+), 6 deletions(-) (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 b2c8bf5..6e6e368 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 @@ -84,7 +84,7 @@ class FragmentLogin : Fragment() { if(!emailString.isEmpty() && !passwordString.isEmpty()&& checkPassword(passwordString)==true && checkEmail(emailString)==true) { var loginData= Login(emailString,passwordString) - val authApi= RetrofitHelper.getInstanceNoAuth() + val authApi= RetrofitHelper.getInstance() val request=authApi.login(loginData) request.enqueue(object : retrofit2.Callback { 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 2201128..cce3d04 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 @@ -81,7 +81,7 @@ class FragmentRegister : Fragment() { var registerData=Register(nameString,usernameString,emailString,passwordString) - val authApi=RetrofitHelper.getInstanceNoAuth() + val authApi=RetrofitHelper.getInstance() val request=authApi.register(registerData) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt index bd430a8..22935a5 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt @@ -2,9 +2,11 @@ package com.example.brzodolokacije.Interfaces import com.example.brzodolokacije.Models.Auth.Login import com.example.brzodolokacije.Models.Auth.Register +import com.example.brzodolokacije.Models.Post import okhttp3.ResponseBody import retrofit2.Call import retrofit2.http.Body +import retrofit2.http.Header import retrofit2.http.POST interface IAuthApi { @@ -12,4 +14,7 @@ interface IAuthApi { fun login(@Body obj:Login): Call @POST("/api/auth/register") fun register(@Body obj:Register):Call + + //@POST("putanja") + //fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt index 4e9e0e6..5f7e8d3 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt @@ -2,6 +2,8 @@ package com.example.brzodolokacije.Services import com.example.brzodolokacije.Interfaces.IAuthApi import com.google.gson.GsonBuilder +import okhttp3.OkHttpClient +import okhttp3.Request import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory @@ -10,14 +12,14 @@ object RetrofitHelper { val baseUrl="http://10.0.2.2:5279" private var retrofit_noauth: IAuthApi? = null + private var retrofit_auth: IAuthApi? = null - - fun getInstanceNoAuth():IAuthApi{ + fun getInstance():IAuthApi{ if(retrofit_noauth==null) - retrofit_noauth= createInstanceNoAuth() + retrofit_noauth= createInstance() return retrofit_noauth as IAuthApi } - private fun createInstanceNoAuth():IAuthApi{ + private fun createInstance():IAuthApi{ val gson = GsonBuilder() .setLenient() .create() -- cgit v1.2.3 From 146a732982f096bfdb3e3ed56300233736f90c21 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Sat, 5 Nov 2022 00:08:35 +0100 Subject: Dodato refreshovanje jwt-a na clientskom delu aplikacije. --- .../brzodolokacije/Fragments/FragmentLogin.kt | 1 - .../example/brzodolokacije/Interfaces/IAuthApi.kt | 3 +- .../com/example/brzodolokacije/MainActivity.kt | 42 ++++++++++++++++++++-- 3 files changed, 42 insertions(+), 4 deletions(-) (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 6e6e368..b68a04f 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 @@ -94,7 +94,6 @@ class FragmentLogin : Fragment() { Toast.makeText( activity, token, Toast.LENGTH_LONG ).show(); - //TODO(navigate to main page) SharedPreferencesHelper.addValue("jwt",token,activity!!) val intent= Intent(activity!!, NavigationActivity::class.java) startActivity(intent) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt index 22935a5..57e7e82 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt @@ -14,7 +14,8 @@ interface IAuthApi { fun login(@Body obj:Login): Call @POST("/api/auth/register") fun register(@Body obj:Register):Call - + @POST("/api/auth/refreshJwt") + fun refreshJwt(@Header("Authorization") authHeader:String): Call //@POST("putanja") //fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt index 1208564..e55da11 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt @@ -3,10 +3,15 @@ package com.example.brzodolokacije import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.util.Log +import android.widget.Toast import com.auth0.android.jwt.JWT import com.example.brzodolokacije.Activities.ActivityLoginRegister import com.example.brzodolokacije.Activities.NavigationActivity +import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper +import retrofit2.Call +import retrofit2.Response class MainActivity : AppCompatActivity() { @@ -17,8 +22,9 @@ class MainActivity : AppCompatActivity() { setContentView(R.layout.activity_main) val intent:Intent - if(checkLoggedIn()) - intent= Intent(this, NavigationActivity::class.java) + if(checkLoggedIn()) { + intent = Intent(this, NavigationActivity::class.java) + } else intent= Intent(this, ActivityLoginRegister::class.java) @@ -33,10 +39,42 @@ class MainActivity : AppCompatActivity() { var jwt:JWT=JWT(jwtString) if(jwt.isExpired(30)) return false + refreshJwt(jwtString) return true + } + + fun refreshJwt(token:String){ + Log.d("Main","RIPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP") + if(token==null) + return + var refreshJwt= RetrofitHelper.getInstance().refreshJwt("Bearer "+token) + refreshJwt.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful()){ + val newToken=response.body().toString() + Toast.makeText( + applicationContext, token, Toast.LENGTH_LONG + ).show(); + SharedPreferencesHelper.addValue("jwt",newToken,this@MainActivity) + }else{ + if(response.errorBody()!=null) + Toast.makeText(applicationContext, response.errorBody()!!.string(), Toast.LENGTH_LONG).show(); + } + + + } + + override fun onFailure(call: Call, t: Throwable) { + Toast.makeText( + applicationContext, t.toString(), Toast.LENGTH_LONG + ).show(); + } + }) + + } } \ No newline at end of file -- cgit v1.2.3 From bf2b7accb869db760ee04c2f33f93f08164b8993 Mon Sep 17 00:00:00 2001 From: "branislav.radivojevic" Date: Sat, 5 Nov 2022 14:51:17 +0100 Subject: reset sifre na app-u --- Backend/Api/Api/Services/PostService.cs | 10 +--- .../Activities/ActivityForgottenPassword.kt | 56 ++++++++++++++++++++-- .../Activities/ActivityForgottenPasswordVerify.kt | 56 ++++++++++++++++++++-- .../example/brzodolokacije/Interfaces/IAuthApi.kt | 7 +++ .../brzodolokacije/Models/Auth/ResetPass.kt | 4 ++ 5 files changed, 115 insertions(+), 18 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/ResetPass.kt (limited to 'Client') diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs index 2f29366..0a12f39 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -23,7 +23,7 @@ namespace Api.Services { Post p = new Post(); p._id = ""; - p.ownerId = _httpContext.HttpContext.User.FindFirstValue("id"); + p.ownerId = _httpContext.HttpContext.User.FindFirstValue("id").ToString(); p.locationId = post.locationId; p.description = post.description; @@ -63,14 +63,6 @@ namespace Api.Services } await _posts.InsertOneAsync(p); - - - - - - - - return postToPostSend(p); } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt index e7c9836..b0b7f5e 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt @@ -1,27 +1,73 @@ package com.example.brzodolokacije.Activities import android.content.Intent +import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.util.Log import android.view.View import android.widget.Button +import android.widget.EditText import android.widget.Toast +import com.example.brzodolokacije.Models.Auth.JustMail +import com.example.brzodolokacije.Models.Auth.Login import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import okhttp3.ResponseBody +import retrofit2.Call +import retrofit2.Response class ActivityForgottenPassword : AppCompatActivity() { private lateinit var sendCode: Button + private lateinit var email: EditText + private lateinit var emailString:String + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_forgotten_password) sendCode=findViewById(R.id.forgottenPasswordSendCode) as Button - + email=findViewById(R.id.editTextTextPersonName) as EditText sendCode.setOnClickListener{ - intent= Intent(this, ActivityForgottenPasswordVerify::class.java) - startActivity(intent) - } + emailString=email.text.toString().trim() - } + if(!emailString.isEmpty() && checkEmail(emailString)==true) { + + var emailData= JustMail(emailString) + val authApi= RetrofitHelper.getInstance() + val request=authApi.forgotpass(emailData) + val cont=this + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + Log.d("main",response.code().toString()) + Log.d("main",response.body().toString()) + if(response.code()==200){ + val intent = Intent(cont, ActivityForgottenPasswordVerify::class.java) + intent.putExtra("email", emailString) + startActivity(intent) + } + } + override fun onFailure(call: Call, t: Throwable) { + } + }) + } + } + } + //from fragment login + fun checkEmail(emailString:String):Boolean{ + val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" + if(!(emailRegex.toRegex().matches(emailString))){ + Toast.makeText( + this, "Email adresa nije validna, pokušajte ponovo", Toast.LENGTH_LONG + ).show(); + email.setHintTextColor(Color.RED) + return false + } + else{ + return true + } + } } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt index 6533237..a1db97f 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt @@ -5,24 +5,72 @@ import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button +import android.widget.EditText import android.widget.Toast import com.example.brzodolokacije.MainActivity +import com.example.brzodolokacije.Models.Auth.Login +import com.example.brzodolokacije.Models.Auth.ResetPass import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import okhttp3.ResponseBody +import retrofit2.Call +import retrofit2.Response class ActivityForgottenPasswordVerify : AppCompatActivity() { private lateinit var changePassword: Button + private lateinit var pw:EditText + private lateinit var pwchk:EditText + private lateinit var kod:EditText override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_forgotten_password_verify) + kod=findViewById(R.id.editTextTextPersonName) as EditText + pw=findViewById(R.id.editTextoldPassword) as EditText + pwchk =findViewById(R.id.editTextTextPassword) as EditText changePassword=findViewById(R.id.btnChangePassword) as Button changePassword.setOnClickListener{ + + var email =intent.getStringExtra("email") + var pwstr=pw.text.toString().trim() + var pwchkstr=pwchk.text.toString().trim() + var kodstr=kod.text.toString().trim() + + if(!kodstr.isEmpty() && checkPassword(pwstr,pwchkstr)){ + var resetData= ResetPass(email!!,kodstr,pwstr) + val authApi= RetrofitHelper.getInstance() + val request=authApi.resetpass(resetData) + val cont=this + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.code()==200){ + intent = Intent(cont, ActivityLoginRegister::class.java) + startActivity(intent) + } + } + override fun onFailure(call: Call, t: Throwable) { + } + }) + } + } + } + + //from fragment login + fun checkPassword(passwordString:String,passwordConfirm:String):Boolean{ + + if(passwordString.length<6){ Toast.makeText( - this, "Lozinka je uspešno promenjena.", Toast.LENGTH_LONG + this, "Lozinke su prekratke", Toast.LENGTH_LONG ).show(); - - intent= Intent(this, ActivityLoginRegister::class.java) - startActivity(intent) + return false + } + if(!passwordString.equals(passwordConfirm)){ + Toast.makeText( + this, "Lozinke su se ne poklapaju", Toast.LENGTH_LONG + ).show(); + return false } + return true } } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt index 57e7e82..25f18a3 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt @@ -1,7 +1,9 @@ package com.example.brzodolokacije.Interfaces +import com.example.brzodolokacije.Models.Auth.JustMail import com.example.brzodolokacije.Models.Auth.Login import com.example.brzodolokacije.Models.Auth.Register +import com.example.brzodolokacije.Models.Auth.ResetPass import com.example.brzodolokacije.Models.Post import okhttp3.ResponseBody import retrofit2.Call @@ -16,6 +18,11 @@ interface IAuthApi { fun register(@Body obj:Register):Call @POST("/api/auth/refreshJwt") fun refreshJwt(@Header("Authorization") authHeader:String): Call + @POST("/api/auth/forgotpass") + fun forgotpass(@Body obj:JustMail):Call + @POST("/api/auth/resetpass") + fun resetpass(@Body obj:ResetPass):Call + //@POST("putanja") //fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/ResetPass.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/ResetPass.kt new file mode 100644 index 0000000..945c8d1 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/ResetPass.kt @@ -0,0 +1,4 @@ +package com.example.brzodolokacije.Models.Auth + +data class ResetPass(var email:String,var kod:String,var newpass:String) +data class JustMail(var email:String) \ No newline at end of file -- cgit v1.2.3 From fb5f9f0b90eff107cf9b171a46e8ac53e633788f Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Sat, 5 Nov 2022 21:28:36 +0100 Subject: Dodati fragmenti za dodavanje objave i lokacije. Ispravljen konflikt. --- .../Activities/NavigationActivity.kt | 2 +- .../Fragments/FragmentAddLocation.kt | 60 +++++++++++++++++++ .../brzodolokacije/Fragments/FragmentAddNew.kt | 59 ++++++++++++++++++ .../brzodolokacije/Fragments/FragmentAddPost.kt | 7 +-- .../brzodolokacije/Fragments/FragmentProfile.kt | 11 +--- .../src/main/res/layout/fragment_add_location.xml | 14 +++++ .../app/src/main/res/layout/fragment_add_new.xml | 69 ++++++++++++++++++++++ 7 files changed, 207 insertions(+), 15 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddLocation.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddNew.kt create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_location.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_new.xml (limited to 'Client') diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt index d36dbae..baa83ee 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt @@ -16,7 +16,7 @@ class NavigationActivity : AppCompatActivity() { val fragmentShowPosts=FragmentShowPosts() val browseFragment=FragmentBrowse() - val addPostFragment=FragmentAddPost() + val addPostFragment= FragmentAddNew() val profileFragment=FragmentProfile() val bottomNav=findViewById(R.id.bottomNavigationView) as BottomNavigationView setCurrentFragment(fragmentShowPosts) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddLocation.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddLocation.kt new file mode 100644 index 0000000..2d0a3bd --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddLocation.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 [FragmentAddLocation.newInstance] factory method to + * create an instance of this fragment. + */ +class FragmentAddLocation : 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_add_location, 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 FragmentAddLocation. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance(param1: String, param2: String) = + FragmentAddLocation().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/FragmentAddNew.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddNew.kt new file mode 100644 index 0000000..b1b257b --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddNew.kt @@ -0,0 +1,59 @@ +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 android.widget.Button +import androidx.fragment.app.FragmentTransaction +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 [FragmentAddNew.newInstance] factory method to + * create an instance of this fragment. + */ +class FragmentAddNew : Fragment() { + // TODO: Rename and change types of parameters + + private lateinit var addNewPost: Button + private lateinit var addNewLocation: Button + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + val view:View=inflater.inflate(R.layout.fragment_add_new, container, false) + addNewPost=view.findViewById(R.id.btnFragmentAddNewNewPost) as Button + addNewLocation=view.findViewById(R.id.btnFragmentAddNewNewLocation) as Button + + + addNewPost.setOnClickListener{ + + var fm: FragmentTransaction =childFragmentManager.beginTransaction() + + fm.replace(R.id.flFragmentAddNewFragmentContainer, FragmentAddPost()) + fm.commit() + } + + + addNewLocation.setOnClickListener{ + + var fm: FragmentTransaction =childFragmentManager.beginTransaction() + + fm.replace(R.id.flFragmentAddNewFragmentContainer, FragmentAddLocation()) + fm.commit() + } + + return view + } + + +} \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt index 7fca83b..66141dd 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt @@ -7,6 +7,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import androidx.core.content.ContextCompat.startActivity import com.example.brzodolokacije.Activities.ActivityLoginRegister import com.example.brzodolokacije.Activities.NavigationActivity import com.example.brzodolokacije.R @@ -28,11 +29,7 @@ class FragmentAddPost : Fragment(R.layout.fragment_add_post) { savedInstanceState: Bundle? ): View? { val view:View=inflater.inflate(R.layout.fragment_add_post, container, false) - // Inflate the layout for this fragment - /*val logOutButton=view.findViewById(R.id.btnFragmentAddLogOut) as Button - logOutButton.setOnClickListener{ - logOut() - }*/ + return view; } 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 c9ce8cc..c10afbb 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,21 +1,14 @@ 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 @@ -54,8 +47,8 @@ class FragmentProfile : Fragment(R.layout.fragment_profile) { 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 + showMyPosts=view.findViewById(R.id.btnFragmentAddNewNewPost) as Button + showMyData=view.findViewById(R.id.btnFragmentAddNewNewLocation) as Button showMyRecensions=view.findViewById(R.id.btnFragmentProfileShowMyRecensions) as Button //podaci iz baze diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_location.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_location.xml new file mode 100644 index 0000000..bfc1edb --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_location.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_new.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_new.xml new file mode 100644 index 0000000..5cfda04 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_new.xml @@ -0,0 +1,69 @@ + + + + + + + +