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