Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.rifki.kotlin.mygithubfinal.view.activity
- import android.content.ContentResolver
- import android.content.ContentValues
- import android.net.Uri
- import androidx.appcompat.app.AppCompatActivity
- import android.os.Bundle
- import android.util.Log
- import android.view.Menu
- import android.view.MenuItem
- import androidx.appcompat.app.ActionBar
- import androidx.core.content.ContextCompat
- import androidx.lifecycle.Observer
- import androidx.lifecycle.ViewModelProvider
- import com.bumptech.glide.Glide
- import com.bumptech.glide.request.RequestOptions
- import com.google.android.material.snackbar.Snackbar
- import com.rifki.kotlin.mygithubfinal.R
- import com.rifki.kotlin.mygithubfinal.adapter.SectionsPagerAdapter
- import com.rifki.kotlin.mygithubfinal.db.DatabaseContract
- import com.rifki.kotlin.mygithubfinal.db.DatabaseContract.FavouriteColumns.Companion.CONTENT_URI
- import com.rifki.kotlin.mygithubfinal.db.FavouriteHelper
- import com.rifki.kotlin.mygithubfinal.helper.MappingHelper
- import com.rifki.kotlin.mygithubfinal.model.GithubUser
- import com.rifki.kotlin.mygithubfinal.view.fragment.FollowersFragment
- import com.rifki.kotlin.mygithubfinal.view.fragment.FollowingFragment
- import com.rifki.kotlin.mygithubfinal.viewModel.DetailViewModel
- import kotlinx.android.synthetic.main.activity_detail.*
- class DetailActivity : AppCompatActivity() {
- private lateinit var detailViewModel: DetailViewModel
- private lateinit var username: String
- private var isFavourite = false
- private lateinit var uriWithId : Uri
- private var menuItem: Menu? = null
- companion object {
- const val EXTRA_STATE = "extra_state"
- internal val TAG = DetailActivity::class.java.simpleName
- }
- private fun setActionBarTitle(username: String) {
- if (supportActionBar != null) {
- (supportActionBar as ActionBar).title = username
- }
- }
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_detail)
- val detailGithubUser = intent.getParcelableExtra(EXTRA_STATE) as GithubUser
- Glide.with(this)
- .load(detailGithubUser.avatar)
- .apply(RequestOptions()
- .placeholder(R.drawable.ic_baseline_account_circle_24)
- .error(R.drawable.ic_baseline_account_circle_24))
- .into(image_avatar)
- tv_username.text = detailGithubUser.username
- detailViewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(DetailViewModel::class.java)
- detailViewModel.setDetailGithubUser(detailGithubUser.username)
- detailViewModel.getDetailGithubUsers().observe(this, Observer { githubUser ->
- if(githubUser != null) {
- tv_name.text = githubUser.name
- tv_repo.text = githubUser.repository.toString()
- tv_company.text = githubUser.company
- tv_bio.text = githubUser.bio
- tv_location.text = githubUser.location
- }
- })
- val sectionsPagerAdapter = SectionsPagerAdapter(this, supportFragmentManager)
- sectionsPagerAdapter.setData(detailGithubUser.username)
- view_pager.adapter = sectionsPagerAdapter
- tabs_follow.setupWithViewPager(view_pager)
- supportActionBar?.elevation = 0f
- val bundle = Bundle()
- val followersFragment = FollowersFragment()
- bundle.putString(FollowersFragment.EXTRA_FOLLOWERS, detailGithubUser.username)
- followersFragment.arguments = bundle
- val followingFragment = FollowingFragment()
- bundle.putString(FollowingFragment.EXTRA_FOLLOWING, detailGithubUser.username)
- followingFragment.arguments = bundle
- setActionBarTitle(detailGithubUser.username)
- favouriteCheck()
- }
- private fun favouriteCheck(){
- val githubUser = intent.getParcelableExtra(EXTRA_STATE) as GithubUser
- uriWithId = Uri.parse(CONTENT_URI.toString() + "/" + githubUser.username)
- val cursor = contentResolver.query(uriWithId, null, null, null, null)
- Log.d(TAG, "UriWithId : ${uriWithId.toString()}")
- Log.d(TAG,"Cursor : $cursor")
- /*if(cursor != null){
- isFavourite = true
- } else isFavourite */
- /*val favourite = MappingHelper.mapCursorToArrayList(
- cursor?.apply {
- while (moveToNext()){
- getString(getColumnIndexOrThrow(DatabaseContract.FavouriteColumns.USERNAME))
- }
- }
- )
- if (favourite.isNotEmpty()) isFavourite = true
- Log.d(TAG, "Favorite : ${favourite.toString()}")
- Log.d(TAG,"Cursor : ${cursor.toString()}")*/
- /*val dataGitObject = MappingHelper.mapCursorToArrayList(cursor)
- for (data in dataGitObject) {
- if (githubUser.username == data.username) {
- isFavourite = true
- Log.d(TAG, "this User Favorite")
- }
- }*/
- }
- private fun insertFavouriteUser(){
- val githubUser = intent.getParcelableExtra(EXTRA_STATE) as GithubUser
- val values = ContentValues().apply {
- put(DatabaseContract.FavouriteColumns.USERNAME, githubUser.username)
- put(DatabaseContract.FavouriteColumns.AVATAR, githubUser.avatar)
- put(DatabaseContract.FavouriteColumns.URL, githubUser.url)
- }
- contentResolver.insert(CONTENT_URI, values)
- showSnackbarMessage("${githubUser.username} Favourite")
- }
- private fun deleteFavouriteUser(){
- val githubUser = intent.getParcelableExtra(EXTRA_STATE) as GithubUser
- contentResolver.delete(uriWithId, null, null)
- showSnackbarMessage("${githubUser.username} Favourite Delete")
- }
- private fun setFavouriteIcon(){
- if (isFavourite){
- menuItem?.getItem(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_favorite_24)
- } else {
- menuItem?.getItem(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_favorite_border_24)
- }
- }
- override fun onCreateOptionsMenu(menu: Menu): Boolean {
- menuInflater.inflate(R.menu.options_menu_detail, menu)
- menuItem = menu
- setFavouriteIcon()
- return true
- }
- override fun onOptionsItemSelected(item: MenuItem): Boolean {
- return when (item.itemId) {
- R.id.favorite -> {
- if (isFavourite) deleteFavouriteUser() else insertFavouriteUser()
- isFavourite = !isFavourite
- setFavouriteIcon()
- true
- }
- else -> super.onOptionsItemSelected(item)
- }
- }
- private fun showSnackbarMessage(message: String) {
- Snackbar.make(view_pager, message, Snackbar.LENGTH_SHORT).show()
- }
- }
Add Comment
Please, Sign In to add comment