|
|
|
@ -1,23 +1,16 @@
|
|
|
|
|
package bou.amine.apps.readerforselfossv2.android
|
|
|
|
|
|
|
|
|
|
import android.content.Intent
|
|
|
|
|
import android.graphics.Color
|
|
|
|
|
import android.graphics.drawable.Drawable
|
|
|
|
|
import android.graphics.drawable.GradientDrawable
|
|
|
|
|
import android.net.Uri
|
|
|
|
|
import android.os.Bundle
|
|
|
|
|
import android.view.Menu
|
|
|
|
|
import android.view.MenuItem
|
|
|
|
|
import android.view.View
|
|
|
|
|
import android.widget.ImageView
|
|
|
|
|
import android.widget.Toast
|
|
|
|
|
import androidx.activity.result.contract.ActivityResultContracts
|
|
|
|
|
import androidx.appcompat.app.ActionBarDrawerToggle
|
|
|
|
|
import androidx.appcompat.app.AlertDialog
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
|
|
import androidx.appcompat.widget.SearchView
|
|
|
|
|
import androidx.core.view.doOnNextLayout
|
|
|
|
|
import androidx.drawerlayout.widget.DrawerLayout
|
|
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
|
|
import androidx.recyclerview.widget.*
|
|
|
|
|
import androidx.work.Constraints
|
|
|
|
@ -30,33 +23,16 @@ import bou.amine.apps.readerforselfossv2.android.adapters.ItemsAdapter
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.android.background.LoadingWorker
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.android.databinding.ActivityHomeBinding
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.android.fragments.FilterSheetFragment
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.android.settings.SettingsActivity
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.android.utils.bottombar.maybeShow
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.android.utils.bottombar.removeBadge
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.model.SelfossModel
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.repository.Repository
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.service.AppSettingsService
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.utils.ItemType
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.utils.getHtmlDecoded
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.utils.getIcon
|
|
|
|
|
import bou.amine.apps.readerforselfossv2.utils.longHash
|
|
|
|
|
import com.ashokvarma.bottomnavigation.BottomNavigationBar
|
|
|
|
|
import com.ashokvarma.bottomnavigation.BottomNavigationItem
|
|
|
|
|
import com.ashokvarma.bottomnavigation.TextBadgeItem
|
|
|
|
|
import com.bumptech.glide.Glide
|
|
|
|
|
import com.bumptech.glide.request.RequestOptions
|
|
|
|
|
import com.mikepenz.aboutlibraries.LibsBuilder
|
|
|
|
|
import com.mikepenz.materialdrawer.holder.BadgeStyle
|
|
|
|
|
import com.mikepenz.materialdrawer.holder.ColorHolder
|
|
|
|
|
import com.mikepenz.materialdrawer.holder.StringHolder
|
|
|
|
|
import com.mikepenz.materialdrawer.model.DividerDrawerItem
|
|
|
|
|
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem
|
|
|
|
|
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem
|
|
|
|
|
import com.mikepenz.materialdrawer.model.interfaces.*
|
|
|
|
|
import com.mikepenz.materialdrawer.util.AbstractDrawerImageLoader
|
|
|
|
|
import com.mikepenz.materialdrawer.util.DrawerImageLoader
|
|
|
|
|
import com.mikepenz.materialdrawer.util.addStickyFooterItem
|
|
|
|
|
import com.mikepenz.materialdrawer.util.updateBadge
|
|
|
|
|
import kotlinx.coroutines.CoroutineScope
|
|
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
@ -71,11 +47,6 @@ import java.util.concurrent.TimeUnit
|
|
|
|
|
|
|
|
|
|
class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAware {
|
|
|
|
|
|
|
|
|
|
private val DRAWER_ID_TAGS = 100101L
|
|
|
|
|
private val DRAWER_ID_HIDDEN_TAGS = 101100L
|
|
|
|
|
private val DRAWER_ID_SOURCES = 100110L
|
|
|
|
|
private val DRAWER_ID_FILTERS = 100111L
|
|
|
|
|
|
|
|
|
|
private var items: ArrayList<SelfossModel.Item> = ArrayList()
|
|
|
|
|
|
|
|
|
|
private var elementsShown: ItemType = ItemType.UNREAD
|
|
|
|
@ -122,14 +93,8 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
|
|
|
|
|
setContentView(view)
|
|
|
|
|
|
|
|
|
|
setSupportActionBar(binding.toolBar)
|
|
|
|
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
|
|
|
|
supportActionBar?.setHomeButtonEnabled(true)
|
|
|
|
|
val mDrawerToggle = ActionBarDrawerToggle(this, binding.drawerContainer, binding.toolBar, R.string.material_drawer_open, R.string.material_drawer_close)
|
|
|
|
|
binding.drawerContainer.addDrawerListener(mDrawerToggle)
|
|
|
|
|
mDrawerToggle.syncState()
|
|
|
|
|
|
|
|
|
|
handleBottomBar()
|
|
|
|
|
initDrawer()
|
|
|
|
|
|
|
|
|
|
handleSwipeRefreshLayout()
|
|
|
|
|
|
|
|
|
@ -150,7 +115,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
|
|
|
|
|
binding.swipeRefreshLayout.setOnRefreshListener {
|
|
|
|
|
repository.offlineOverride = false
|
|
|
|
|
lastFetchDone = false
|
|
|
|
|
handleDrawerItems()
|
|
|
|
|
CoroutineScope(Dispatchers.Main).launch {
|
|
|
|
|
getElementsAccordingToTab()
|
|
|
|
|
binding.swipeRefreshLayout.isRefreshing = false
|
|
|
|
@ -198,7 +162,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
|
|
|
|
|
(it.key to it.value)
|
|
|
|
|
}
|
|
|
|
|
}.toMap()
|
|
|
|
|
reloadTagsBadges()
|
|
|
|
|
|
|
|
|
|
// Just load everythin
|
|
|
|
|
if (items.size <= 0) {
|
|
|
|
@ -296,8 +259,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
|
|
|
|
|
override fun onResume() {
|
|
|
|
|
super.onResume()
|
|
|
|
|
|
|
|
|
|
handleDrawerItems()
|
|
|
|
|
|
|
|
|
|
reloadLayoutManager()
|
|
|
|
|
|
|
|
|
|
if (appSettingsService.isInfiniteLoadingEnabled()) {
|
|
|
|
@ -338,248 +299,44 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun initDrawer() {
|
|
|
|
|
DrawerImageLoader.init(object : AbstractDrawerImageLoader() {
|
|
|
|
|
override fun set(imageView: ImageView, uri: Uri, placeholder: Drawable, tag: String?) {
|
|
|
|
|
Glide.with(this@HomeActivity)
|
|
|
|
|
.asBitmap()
|
|
|
|
|
.load(uri)
|
|
|
|
|
.apply(RequestOptions()
|
|
|
|
|
.placeholder(R.mipmap.ic_launcher)
|
|
|
|
|
.fallback(R.mipmap.ic_launcher)
|
|
|
|
|
.fitCenter())
|
|
|
|
|
.into(imageView)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun cancel(imageView: ImageView) {
|
|
|
|
|
Glide.with(this@HomeActivity).clear(imageView)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
val drawerListener = object : DrawerLayout.DrawerListener {
|
|
|
|
|
override fun onDrawerSlide(drawerView: View, slideOffset: Float) {
|
|
|
|
|
// We do nothing
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onDrawerOpened(drawerView: View) {
|
|
|
|
|
binding.bottomBar.hide()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onDrawerClosed(drawerView: View) {
|
|
|
|
|
binding.bottomBar.show()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onDrawerStateChanged(newState: Int) {
|
|
|
|
|
// We do nothing
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
binding.drawerContainer.addDrawerListener(drawerListener)
|
|
|
|
|
|
|
|
|
|
// Sticky items
|
|
|
|
|
addStickyPrimaryItem(R.string.drawer_report_bug, R.drawable.ic_bug_report_black_24dp) { _, _, _ ->
|
|
|
|
|
val browserIntent =
|
|
|
|
|
Intent(Intent.ACTION_VIEW, Uri.parse(AppSettingsService.trackerUrl))
|
|
|
|
|
startActivity(browserIntent)
|
|
|
|
|
false
|
|
|
|
|
}
|
|
|
|
|
addStickyPrimaryItem(R.string.title_activity_settings, R.drawable.ic_settings_black_24dp) { _, _, _ ->
|
|
|
|
|
settingsLauncher.launch(Intent(this, SettingsActivity::class.java))
|
|
|
|
|
false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun addStickyPrimaryItem(name: Int, icon: Int, clickListener: ((v: View?, item: IDrawerItem<*>, position: Int) -> Boolean)?) {
|
|
|
|
|
binding.mainDrawer.addStickyFooterItem(
|
|
|
|
|
PrimaryDrawerItem().apply {
|
|
|
|
|
nameRes = name
|
|
|
|
|
iconRes = icon
|
|
|
|
|
isIconTinted = true
|
|
|
|
|
onDrawerItemClickListener = clickListener
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun handleDrawerItems() {
|
|
|
|
|
tagsBadge = emptyMap()
|
|
|
|
|
binding.mainDrawer.itemAdapter.add(
|
|
|
|
|
PrimaryDrawerItem().apply {
|
|
|
|
|
nameRes = R.string.drawer_loading
|
|
|
|
|
isSelectable = false
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
CoroutineScope(Dispatchers.IO).launch {
|
|
|
|
|
val tags = repository.getTags()
|
|
|
|
|
val sources = repository.getSources()
|
|
|
|
|
runOnUiThread {
|
|
|
|
|
handleDrawerData(tags, sources)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun handleDrawerData(tags: List<SelfossModel.Tag>, sources: List<SelfossModel.Source>) {
|
|
|
|
|
binding.mainDrawer.itemAdapter.clear()
|
|
|
|
|
|
|
|
|
|
// Filters title with clear action
|
|
|
|
|
secondaryItem(withDivider = false, R.string.drawer_item_filters, DRAWER_ID_FILTERS, R.string.drawer_action_clear) { _,_,_ ->
|
|
|
|
|
repository.sourceFilter = null
|
|
|
|
|
repository.tagFilter = null
|
|
|
|
|
binding.mainDrawer.setSelectionAtPosition(-1)
|
|
|
|
|
getElementsAccordingToTab()
|
|
|
|
|
fetchOnEmptyList()
|
|
|
|
|
false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Hidden tags
|
|
|
|
|
if (tags.isNotEmpty() && appSettingsService.getHiddenTags().isNotEmpty()) {
|
|
|
|
|
secondaryItem(
|
|
|
|
|
withDivider = true,
|
|
|
|
|
R.string.drawer_item_hidden_tags,
|
|
|
|
|
DRAWER_ID_HIDDEN_TAGS
|
|
|
|
|
)
|
|
|
|
|
handleHiddenTags(tags)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Tags
|
|
|
|
|
secondaryItem(withDivider = true, R.string.drawer_item_tags, DRAWER_ID_TAGS)
|
|
|
|
|
if (tags.isEmpty()) {
|
|
|
|
|
binding.mainDrawer.itemAdapter.add(
|
|
|
|
|
SecondaryDrawerItem()
|
|
|
|
|
.apply { nameRes = R.string.drawer_error_loading_tags; isSelectable = false }
|
|
|
|
|
)
|
|
|
|
|
} else {
|
|
|
|
|
handleTags(tags)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Sources
|
|
|
|
|
secondaryItem(withDivider = true, R.string.drawer_item_sources, DRAWER_ID_SOURCES, R.string.drawer_action_edit) { v, _, _ ->
|
|
|
|
|
startActivity(Intent(v!!.context, SourcesActivity::class.java))
|
|
|
|
|
false
|
|
|
|
|
}
|
|
|
|
|
if (sources.isEmpty()) {
|
|
|
|
|
binding.mainDrawer.itemAdapter.add(
|
|
|
|
|
SecondaryDrawerItem().apply {
|
|
|
|
|
nameRes = R.string.drawer_error_loading_sources
|
|
|
|
|
isSelectable = false
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
} else {
|
|
|
|
|
handleSources(sources)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// About action
|
|
|
|
|
binding.mainDrawer.itemAdapter.add(
|
|
|
|
|
DividerDrawerItem(),
|
|
|
|
|
PrimaryDrawerItem().apply {
|
|
|
|
|
nameRes = R.string.action_about
|
|
|
|
|
isSelectable = false
|
|
|
|
|
iconRes = R.drawable.ic_info_outline_white_24dp
|
|
|
|
|
isIconTinted = true
|
|
|
|
|
onDrawerItemClickListener = { _,_,_ ->
|
|
|
|
|
LibsBuilder()
|
|
|
|
|
.withAboutIconShown(true)
|
|
|
|
|
.withAboutVersionShown(true)
|
|
|
|
|
.start(this@HomeActivity)
|
|
|
|
|
false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun secondaryItem(withDivider: Boolean, name: Int, id: Long, badgeId: Int? = null, clickListener: ((v: View?, item: IDrawerItem<*>, position: Int) -> Boolean)? = null) {
|
|
|
|
|
if (withDivider) {
|
|
|
|
|
binding.mainDrawer.itemAdapter.add(DividerDrawerItem())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
binding.mainDrawer.itemAdapter.add(
|
|
|
|
|
SecondaryDrawerItem().apply {
|
|
|
|
|
nameRes = name
|
|
|
|
|
identifier = id
|
|
|
|
|
isSelectable = false
|
|
|
|
|
if (badgeId != null) {
|
|
|
|
|
badgeRes = badgeId
|
|
|
|
|
}
|
|
|
|
|
onDrawerItemClickListener = clickListener
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun createDrawerItem(it: SelfossModel.Tag) {
|
|
|
|
|
val gd = GradientDrawable()
|
|
|
|
|
val gdColor = try {
|
|
|
|
|
Color.parseColor(it.color)
|
|
|
|
|
} catch (e: IllegalArgumentException) {
|
|
|
|
|
e.sendSilentlyWithAcraWithName("color issue " + it.color)
|
|
|
|
|
resources.getColor(R.color.colorPrimary)
|
|
|
|
|
}
|
|
|
|
|
gd.setColor(gdColor)
|
|
|
|
|
gd.shape = GradientDrawable.RECTANGLE
|
|
|
|
|
gd.setSize(30, 30)
|
|
|
|
|
gd.cornerRadius = 30F
|
|
|
|
|
|
|
|
|
|
val drawerItem = PrimaryDrawerItem()
|
|
|
|
|
.apply {
|
|
|
|
|
nameText = it.tag.getHtmlDecoded()
|
|
|
|
|
identifier = it.tag.longHash()
|
|
|
|
|
iconDrawable = gd
|
|
|
|
|
badgeStyle = BadgeStyle().apply {
|
|
|
|
|
textColor = ColorHolder.fromColor(Color.WHITE)
|
|
|
|
|
color = ColorHolder.fromColor(resources.getColor(R.color.colorAccent))
|
|
|
|
|
}
|
|
|
|
|
onDrawerItemClickListener = { _, _, _ ->
|
|
|
|
|
repository.tagFilter = it
|
|
|
|
|
repository.sourceFilter = null
|
|
|
|
|
getElementsAccordingToTab()
|
|
|
|
|
fetchOnEmptyList()
|
|
|
|
|
false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (it.unread > 0) {
|
|
|
|
|
drawerItem.badgeText = it.unread.toString()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
binding.mainDrawer.itemAdapter.add(drawerItem)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun handleTags(tags: List<SelfossModel.Tag>) {
|
|
|
|
|
val filteredTags = tags
|
|
|
|
|
.filterNot { appSettingsService.getHiddenTags().contains(it.tag) }
|
|
|
|
|
.sortedBy { it.tag }
|
|
|
|
|
createTagItems(filteredTags)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun handleHiddenTags(tags: List<SelfossModel.Tag>) {
|
|
|
|
|
val filteredHiddenTags: List<SelfossModel.Tag> =
|
|
|
|
|
tags.filter { appSettingsService.getHiddenTags().contains(it.tag) }
|
|
|
|
|
createTagItems(filteredHiddenTags)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun createTagItems(tags: List<SelfossModel.Tag>) {
|
|
|
|
|
tagsBadge = tags.associate {
|
|
|
|
|
createDrawerItem(it)
|
|
|
|
|
|
|
|
|
|
(it.tag.longHash() to it.unread)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun handleSources(sources: List<SelfossModel.Source>) {
|
|
|
|
|
for (source in sources) {
|
|
|
|
|
val item = PrimaryDrawerItem().apply {
|
|
|
|
|
nameText = source.title.getHtmlDecoded()
|
|
|
|
|
identifier = source.id.toLong()
|
|
|
|
|
iconUrl = source.getIcon(repository.baseUrl)
|
|
|
|
|
onDrawerItemClickListener = { _,_,_ ->
|
|
|
|
|
repository.sourceFilter = source
|
|
|
|
|
repository.tagFilter = null
|
|
|
|
|
getElementsAccordingToTab()
|
|
|
|
|
fetchOnEmptyList()
|
|
|
|
|
false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
binding.mainDrawer.itemAdapter.add(item)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// TODO CLEAN
|
|
|
|
|
// private fun initDrawer() {
|
|
|
|
|
// // TODO add to menu
|
|
|
|
|
// addStickyPrimaryItem(R.string.drawer_report_bug, R.drawable.ic_bug_report_black_24dp) { _, _, _ ->
|
|
|
|
|
// val browserIntent =
|
|
|
|
|
// Intent(Intent.ACTION_VIEW, Uri.parse(AppSettingsService.trackerUrl))
|
|
|
|
|
// startActivity(browserIntent)
|
|
|
|
|
// false
|
|
|
|
|
// }
|
|
|
|
|
// addStickyPrimaryItem(R.string.title_activity_settings, R.drawable.ic_settings_black_24dp) { _, _, _ ->
|
|
|
|
|
// settingsLauncher.launch(Intent(this, SettingsActivity::class.java))
|
|
|
|
|
// false
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// private fun addStickyPrimaryItem(name: Int, icon: Int, clickListener: ((v: View?, item: IDrawerItem<*>, position: Int) -> Boolean)?) {
|
|
|
|
|
// // TODO CLEAN
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// private fun handleDrawerData(tags: List<SelfossModel.Tag>, sources: List<SelfossModel.Source>) {
|
|
|
|
|
// // TODO add to menu
|
|
|
|
|
// binding.mainDrawer.itemAdapter.add(
|
|
|
|
|
// DividerDrawerItem(),
|
|
|
|
|
// PrimaryDrawerItem().apply {
|
|
|
|
|
// nameRes = R.string.action_about
|
|
|
|
|
// isSelectable = false
|
|
|
|
|
// iconRes = R.drawable.ic_info_outline_white_24dp
|
|
|
|
|
// isIconTinted = true
|
|
|
|
|
// onDrawerItemClickListener = { _,_,_ ->
|
|
|
|
|
// LibsBuilder()
|
|
|
|
|
// .withAboutIconShown(true)
|
|
|
|
|
// .withAboutVersionShown(true)
|
|
|
|
|
// .start(this@HomeActivity)
|
|
|
|
|
// false
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// )
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
private fun reloadLayoutManager() {
|
|
|
|
|
val currentManager = binding.recyclerView.layoutManager
|
|
|
|
@ -784,13 +541,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun reloadTagsBadges() {
|
|
|
|
|
tagsBadge.forEach {
|
|
|
|
|
binding.mainDrawer.updateBadge(it.key, StringHolder(it.value.toString()))
|
|
|
|
|
}
|
|
|
|
|
binding.mainDrawer.resetDrawerContent()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun calculateNoOfColumns(): Int {
|
|
|
|
|
val displayMetrics = resources.displayMetrics
|
|
|
|
|
val dpWidth = displayMetrics.widthPixels / displayMetrics.density
|
|
|
|
@ -880,8 +630,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
|
|
|
|
|
).show()
|
|
|
|
|
tabNewBadge.removeBadge()
|
|
|
|
|
|
|
|
|
|
handleDrawerItems()
|
|
|
|
|
|
|
|
|
|
getElementsAccordingToTab()
|
|
|
|
|
} else {
|
|
|
|
|
Toast.makeText(
|
|
|
|
|