mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
Add adventure guide iindicator to drawer icon
This commit is contained in:
parent
7d60b338e4
commit
56d6a8995b
10 changed files with 58 additions and 6 deletions
BIN
Habitica/res/drawable-hdpi/star.png
Normal file
BIN
Habitica/res/drawable-hdpi/star.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 347 B |
BIN
Habitica/res/drawable-mdpi/star.png
Normal file
BIN
Habitica/res/drawable-mdpi/star.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 220 B |
BIN
Habitica/res/drawable-xhdpi/star.png
Normal file
BIN
Habitica/res/drawable-xhdpi/star.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 402 B |
BIN
Habitica/res/drawable-xxhdpi/star.png
Normal file
BIN
Habitica/res/drawable-xxhdpi/star.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 618 B |
BIN
Habitica/res/drawable-xxxhdpi/star.png
Normal file
BIN
Habitica/res/drawable-xxxhdpi/star.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 816 B |
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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}"
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue