Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @AndroidEntryPoint
- class MainActivity : AppCompatActivity() {
- private lateinit var binding: ActivityMainBinding
- private lateinit var navController: NavController
- private lateinit var appBarConfiguration: AppBarConfiguration
- private var arrayList: ArrayList<TopModel> = arrayListOf()
- private lateinit var reviewManager: ReviewManager
- private val viewModel by viewModels<SliderViewModel>()
- private lateinit var fab: FloatingActionButton
- private lateinit var headerBinding: NavHeaderMainBinding
- override fun attachBaseContext(newBase: Context?) {
- val lang = newBase?.let { Session(it).getLanguage() }
- super.attachBaseContext(ContextWrapper(lang?.let { newBase.setAppLocale(it) }))
- }
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityMainBinding.inflate(layoutInflater)
- setContentView(binding.root)
- fab = binding.followDone
- reviewManager = ReviewManagerFactory.create(this)
- binding.apply {
- setSupportActionBar(toolbar)
- navController = findNavController(R.id.nav_host_fragment)
- appBarConfiguration = AppBarConfiguration(
- setOf(
- R.id.nav_post, R.id.nav_center,
- R.id.nav_communication, R.id.nav_notification,
- R.id.nav_profile, R.id.bajarBhav, R.id.aboutUs, R.id.privacy
- ), drawer
- )
- setupActionBarWithNavController(navController, appBarConfiguration)
- navigationView.setupWithNavController(navController)
- navView.setupWithNavController(navController)
- val session = Session(this@MainActivity)
- headerBinding = NavHeaderMainBinding.inflate(LayoutInflater.from(this@MainActivity))
- headerBinding.apply {
- if (session.isUserLoggedIn()) {
- userName.text = session.getUserName()
- userMobile.text = session.getUserPhone()
- Glide.with(userProfile).asBitmap()
- .circleCrop()
- .load(session.getUserImage())
- .into(userProfile)
- } else {
- userName.text = getString(R.string.app_name)
- userMobile.text = ""
- userProfile.setImageResource(R.mipmap.ic_launcher_foreground)
- }
- }
- navigationView.addHeaderView(headerBinding.root)
- navigationViewLogin()
- navigationView.setNavigationItemSelectedListener { item ->
- when (item.itemId) {
- R.id.nav_communication -> {
- val navigationOption: NavOptions = NavOptions.Builder()
- .setLaunchSingleTop(true)
- .setPopUpTo(R.id.nav_communication, false)
- .setEnterAnim(R.anim.nav_default_enter_anim)
- .setExitAnim(R.anim.nav_default_exit_anim)
- .setPopEnterAnim(R.anim.nav_default_pop_enter_anim)
- .setPopExitAnim(R.anim.nav_default_pop_exit_anim)
- .build()
- navController.navigate(R.id.nav_communication, null, navigationOption)
- }
- R.id.aboutUs -> {
- val bundle = Bundle()
- bundle.putString("url", "https://starlinedemo.com/khedut_putra/about_us.php")
- bundle.putString("displayName", "About us")
- navController.navigate(R.id.bajarBhav, bundle)
- }
- R.id.shareApp -> {
- shareApp()
- }
- R.id.rateUs -> {
- showRateApp()
- }
- R.id.changeLan -> {
- if (session.getLanguage().equals("gu", true)) {
- item.title = getString(R.string.gujarati)
- session.setLanguage("en")
- changeLanguage("en")
- } else {
- item.title = getString(R.string.english)
- session.setLanguage("gu")
- changeLanguage("gu")
- }
- }
- R.id.privacy -> {
- val bundle = Bundle()
- bundle.putString("url", "https://starlinedemo.com/khedut_putra/privacy_policy.php")
- bundle.putString("displayName", "Privacy Policy")
- navController.navigate(R.id.bajarBhav, bundle)
- }
- R.id.logOut -> {
- if (session.isUserLoggedIn()) {
- session.setUserLoggedIn(false)
- session.setUserName("")
- session.setUserPhone("")
- session.setUserImage("")
- session.setUserId("")
- item.title = getString(R.string.login)
- navigationViewLogin()
- } else {
- item.title = getString(R.string.loginout)
- navController.navigate(R.id.loginBottomSheet)
- }
- }
- }
- if (drawer.isDrawerOpen(GravityCompat.START)) {
- drawer.closeDrawer(GravityCompat.START)
- }
- return@setNavigationItemSelectedListener true
- }
- /*Start:-> Top RecyclerView for showing different types of data*/
- arrayList.clear()
- arrayList.add(TopModel(getString(R.string.ask_question), R.drawable.ic_baseline_add))
- arrayList.add(TopModel(getString(R.string.market_price), R.drawable.ic_grain))
- arrayList.add(TopModel(getString(R.string.kishanSaman), R.drawable.pmkishan))
- arrayList.add(TopModel(getString(R.string.ikhedutPortal), R.drawable.ikhedut))
- arrayList.add(TopModel(getString(R.string.divyaBhaskar), R.drawable.divya_bhaskar))
- arrayList.add(TopModel(getString(R.string.anyror), R.drawable.ic_grain))
- arrayList.add(TopModel(getString(R.string.radioChannel), R.drawable.ic_baseline_radio))
- arrayList.add(TopModel(getString(R.string.weather), R.drawable.ic_img_weather))
- lifecycleScope.launchWhenStarted {
- viewModel.getSliderList()
- viewModel._sliderList.observe(this@MainActivity, EventObserver {
- when (it.status) {
- Status.LOADING -> {
- }
- Status.ERROR -> {
- }
- Status.SUCCESS -> {
- val arrayList = arrayListOf<SliderModel.Data>()
- arrayList.add(SliderModel.Data(title = getString(R.string.ask_question), sliderLink = "", sliderImage = ""))
- it.data?.let { it1 -> arrayList.addAll(it1) }
- arrayList.add(SliderModel.Data(sliderImage = "", title = getString(R.string.weather), sliderLink = ""))
- val topAdapter = TopAdapter(this@MainActivity, arrayList)
- recyclerView.adapter = topAdapter
- topAdapter.onItemClick = { topModel, _ ->
- if (topModel.title.equals(getString(R.string.ask_question), true)) {
- if (Session(this@MainActivity).isUserLoggedIn()) {
- navController.navigate(R.id.nav_post)
- } else {
- navController.navigate(R.id.loginBottomSheet)
- }
- } else if (topModel.title.equals(getString(R.string.weather), true)) {
- navController.navigate(R.id.weather)
- } else {
- val bundle = Bundle()
- bundle.putString("url", topModel.sliderLink)
- bundle.putString("displayName", topModel.title)
- navController.navigate(R.id.bajarBhav, bundle)
- }
- /*else if (topModel.title.equals(getString(R.string.market_price), true)) {
- val bundle = Bundle()
- bundle.putString("url", "http://www.apmcrajkot.com/daily_rates")
- bundle.putString("displayName", getString(R.string.market_price))
- navController.navigate(R.id.bajarBhav, bundle)
- } else if (topModel.title.equals(getString(R.string.kishanSaman), true)) {
- val bundle = Bundle()
- bundle.putString("url", "https://www.pmkisan.gov.in/beneficiarystatus/NewHome3.aspx")
- bundle.putString("displayName", getString(R.string.kishanSaman))
- navController.navigate(R.id.bajarBhav, bundle)
- } else if (topModel.title.equals(getString(R.string.ikhedutPortal), true)) {
- val bundle = Bundle()
- bundle.putString("url", "https://ikhedut.gujarat.gov.in/Public/frm_Public_SchemeDetails.aspx")
- bundle.putString("displayName", getString(R.string.ikhedutPortal))
- navController.navigate(R.id.bajarBhav, bundle)
- } else if (topModel.title.equals(getString(R.string.divyaBhaskar), true)) {
- val bundle = Bundle()
- bundle.putString("url", "https://www.divyabhaskar.co.in/")
- bundle.putString("displayName", getString(R.string.divyaBhaskar))
- navController.navigate(R.id.bajarBhav, bundle)
- } else if (topModel.title.equals(getString(R.string.anyror), true)) {
- val bundle = Bundle()
- bundle.putString("url", "https://anyror.gujarat.gov.in/")
- bundle.putString("displayName", getString(R.string.anyror))
- navController.navigate(R.id.bajarBhav, bundle)
- } else if (topModel.title.equals(getString(R.string.radioChannel), true)) {
- val bundle = Bundle()
- bundle.putString("url", "http://radio.garden/visit/ahmedabad/vhLjTndB")
- bundle.putString("displayName", getString(R.string.radioChannel))
- navController.navigate(R.id.bajarBhav, bundle)
- }*/
- }
- }
- }
- })
- }
- }
- }
- override fun onCreateOptionsMenu(menu: Menu?): Boolean {
- menuInflater.inflate(R.menu.language_menu, menu)
- if (Session(this).getLanguage().equals("gu", true)) {
- menu?.findItem(R.id.changeLng)?.title = getString(R.string.english)
- } else {
- menu?.findItem(R.id.changeLng)?.title = getString(R.string.gujarati)
- }
- menu?.findItem(R.id.changeLng)?.isVisible = false
- return true
- }
- override fun onOptionsItemSelected(item: MenuItem): Boolean {
- if (item.itemId == R.id.changeLng) {
- if (Session(this).getLanguage().equals("gu", true)) {
- item.title = getString(R.string.english)
- Session(this).setLanguage("en")
- changeLanguage("en")
- } else {
- item.title = getString(R.string.gujarati)
- Session(this).setLanguage("gu")
- changeLanguage("gu")
- }
- return true
- }
- if (binding.drawer.isDrawerOpen(GravityCompat.START)) {
- binding.drawer.closeDrawer(GravityCompat.START)
- }
- return item.onNavDestinationSelected(navController) || super.onOptionsItemSelected(item)
- }
- private fun changeLanguage(lng: String) {
- val locale = Locale(lng)
- Locale.setDefault(locale)
- val config = Configuration(resources.configuration)
- config.locale = locale
- applicationContext.resources.updateConfiguration(config, null)
- startActivity(Intent(this, MainActivity::class.java))
- finish()
- }
- fun hideBottomNavigation() {
- binding.navView.visibility = View.GONE
- if (binding.recyclerView.visibility == View.VISIBLE) {
- binding.recyclerView.visibility = View.GONE
- }
- if (binding.view.visibility == View.VISIBLE) {
- binding.view.visibility = View.GONE
- }
- }
- fun showBottomNavigation() {
- binding.navView.visibility = View.VISIBLE
- if (binding.recyclerView.visibility == View.GONE) {
- binding.recyclerView.visibility = View.VISIBLE
- }
- if (binding.view.visibility == View.GONE) {
- binding.view.visibility = View.VISIBLE
- }
- }
- fun resetCollapsed() {
- val params: CoordinatorLayout.LayoutParams = binding.appBar.layoutParams as CoordinatorLayout.LayoutParams
- val behavior = params.behavior as AppBarLayout.Behavior
- if (behavior != null) {
- behavior.topAndBottomOffset = 0
- behavior.onNestedPreScroll(binding.coordinator, binding.appBar, binding.navView, 0, 1, intArrayOf(2))
- }
- }
- fun getFloatingButton(): FloatingActionButton {
- return fab
- }
- override fun onSupportNavigateUp(): Boolean {
- return findNavController(R.id.nav_host_fragment).navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
- }
- override fun onPause() {
- super.onPause()
- if (isFinishing) {
- binding.unbind()
- }
- }
- fun navigationViewLogin() {
- if (Session(this).isUserLoggedIn()) {
- binding.navigationView.menu.findItem(R.id.logOut).title = getString(R.string.loginout)
- } else {
- binding.navigationView.menu.findItem(R.id.logOut).title = getString(R.string.login)
- }
- }
- private fun shareApp() {
- try {
- val string = "${resources.getString(R.string.recommend)} \nhttps://play.google.com/store/apps/details?id=${application.packageName}".trimIndent()
- val intent = Intent(Intent.ACTION_SEND)
- intent.type = "text/plain"
- intent.putExtra(Intent.EXTRA_SUBJECT, resources.getString(R.string.app_name))
- intent.putExtra(Intent.EXTRA_TEXT, string)
- startActivity(Intent.createChooser(intent, resources.getString(R.string.choose_one)))
- } catch (e: Exception) {
- Log.d("app_data", "$e")
- }
- }
- private fun showRateApp() {
- val request = reviewManager.requestReviewFlow()
- request.addOnCompleteListener { task: Task<ReviewInfo?> ->
- if (task.isSuccessful) {
- // We can get the ReviewInfo object
- val reviewInfo = task.result
- val flow = reviewManager.launchReviewFlow(this, reviewInfo)
- flow.addOnCompleteListener {}
- } else {
- // There was some problem, continue regardless of the result.
- // show native rate app dialog on error
- showRateAppFallbackDialog()
- }
- }
- }
- private fun showRateAppFallbackDialog() {
- val builder = MaterialAlertDialogBuilder(this)
- val inflater = this.getSystemService(LAYOUT_INFLATER_SERVICE) as LayoutInflater
- val rateAppView: View = inflater.inflate(R.layout.rate_app_layout, null, false)
- builder.setView(rateAppView)
- val save: MaterialButton = rateAppView.findViewById(R.id.save)
- val cancel: MaterialButton = rateAppView.findViewById(R.id.cancel)
- val dialog = builder.show()
- save.setOnClickListener {
- val uri = Uri.parse("market://details?id=" + this.application.packageName)
- val goToMarket = Intent(Intent.ACTION_VIEW, uri)
- // To count with Play market backstack, After pressing back button,
- // to taken back to our application, we need to add following flags to intent.
- goToMarket.addFlags(
- Intent.FLAG_ACTIVITY_NO_HISTORY or
- Intent.FLAG_ACTIVITY_NEW_DOCUMENT or
- Intent.FLAG_ACTIVITY_MULTIPLE_TASK
- )
- try {
- startActivity(goToMarket)
- } catch (e: ActivityNotFoundException) {
- startActivity(
- Intent(
- Intent.ACTION_VIEW,
- Uri.parse("http://play.google.com/store/apps/details?id=" + application.packageName)
- )
- )
- }
- dialog.dismiss()
- }
- cancel.setOnClickListener { dialog.dismiss() }
- }
- override fun onBackPressed() {
- if (binding.drawer.isDrawerOpen(GravityCompat.START)) {
- binding.drawer.closeDrawer(GravityCompat.START)
- } else {
- super.onBackPressed()
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement