Add adventure guide iindicator to drawer icon

This commit is contained in:
Phillip Thelen 2020-06-05 16:55:54 +02:00
parent 7d60b338e4
commit 56d6a8995b
10 changed files with 58 additions and 6 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 B

View file

@ -1017,4 +1017,5 @@
<string name="task_display">Task list display</string>
<string name="onboarding_tasks">Onboarding Tasks</string>
<string name="complete_for_gold">Complete to earn 100 Gold!</string>
<string name="delete_checklist_entry">Delete...</string>
</resources>

View file

@ -56,6 +56,7 @@ import com.habitrpg.android.habitica.ui.TutorialView
import com.habitrpg.android.habitica.ui.fragments.NavigationDrawerFragment
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
import com.habitrpg.android.habitica.ui.viewmodels.NotificationsViewModel
import com.habitrpg.android.habitica.ui.views.AdventureGuideDrawerArrowDrawable
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.SnackbarDisplayType
@ -81,6 +82,8 @@ import java.util.*
import javax.inject.Inject
open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
private lateinit var drawerIcon: AdventureGuideDrawerArrowDrawable
@Inject
internal lateinit var apiClient: ApiClient
@Inject
@ -191,10 +194,9 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
findViewById(R.id.drawer_layout), /* DrawerLayout object */
R.string.navigation_drawer_open, /* "open drawer" description */
R.string.navigation_drawer_close /* "close drawer" description */
) {
}
) {}
drawerIcon = AdventureGuideDrawerArrowDrawable(supportActionBar?.themedContext)
drawerToggle?.drawerArrowDrawable = drawerIcon
// Set the drawer toggle as the DrawerListener
drawerToggle?.let { drawerLayout.addDrawerListener(it) }
@ -359,6 +361,8 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
userRepository.updateUser(user, "party.quest.completed", "").subscribe(Consumer {}, RxErrorHandler.handleEmptyError())
})
}
drawerIcon.setEnabled(user?.hasCompletedOnboarding == false)
}
}

View file

@ -0,0 +1,47 @@
package com.habitrpg.android.habitica.ui.views
import android.content.Context
import android.graphics.*
import androidx.appcompat.graphics.drawable.DrawerArrowDrawable
import androidx.core.content.ContextCompat
import com.habitrpg.android.habitica.R
class AdventureGuideDrawerArrowDrawable(context: Context?) : DrawerArrowDrawable(context) {
private val backgroundPaint: Paint = Paint()
private val icon: Bitmap = BitmapFactory.decodeResource(context?.resources, R.drawable.star)
private var enabled = true
override fun draw(canvas: Canvas) {
super.draw(canvas)
if (!enabled) {
return
}
val bounds = bounds
val x = bounds.width() - HALF_SIZE
val y = 10f
canvas.drawCircle(x, y, SIZE, backgroundPaint)
canvas.drawBitmap(icon, x - 16, y - 16, null)
}
fun setEnabled(enabled: Boolean) {
if (this.enabled != enabled) {
this.enabled = enabled
invalidateSelf()
}
}
fun isEnabled(): Boolean {
return enabled
}
companion object {
// Fraction of the drawable's intrinsic size we want the badge to be.
private const val SIZE = 24f
private const val HALF_SIZE = SIZE / 2
}
init {
context?.let { backgroundPaint.color = ContextCompat.getColor(it, R.color.yellow_10) }
backgroundPaint.isAntiAlias = true
}
}

View file

@ -24,7 +24,7 @@ class AdventureGuideMenuBanner @JvmOverloads constructor(
val achievements = user.onboardingAchievements
val completed = achievements.count { it.earned }
binding.progressBar.max = achievements.size
binding.progressBar.progress = completed / achievements.size
binding.progressBar.progress = completed
binding.countView.text = "${completed} / ${achievements.size}"
}
}

View file

@ -14,7 +14,7 @@ class AchievementListDeserializer: JsonDeserializer<List<Achievement>> {
for (categoryEntry in json?.asJsonObject?.entrySet() ?: emptySet()) {
val categoryIdentifier = categoryEntry.key
for (entry in categoryEntry.value.asJsonObject.getAsJsonObject("achievements").entrySet()) {
var obj = entry.value.asJsonObject
val obj = entry.value.asJsonObject
val achievement = Achievement()
achievement.key = entry.key
achievement.category = categoryIdentifier