diff --git a/Habitica/res/drawable-hdpi/star.png b/Habitica/res/drawable-hdpi/star.png new file mode 100644 index 000000000..07691492f Binary files /dev/null and b/Habitica/res/drawable-hdpi/star.png differ diff --git a/Habitica/res/drawable-mdpi/star.png b/Habitica/res/drawable-mdpi/star.png new file mode 100644 index 000000000..23af96a47 Binary files /dev/null and b/Habitica/res/drawable-mdpi/star.png differ diff --git a/Habitica/res/drawable-xhdpi/star.png b/Habitica/res/drawable-xhdpi/star.png new file mode 100644 index 000000000..dc432e650 Binary files /dev/null and b/Habitica/res/drawable-xhdpi/star.png differ diff --git a/Habitica/res/drawable-xxhdpi/star.png b/Habitica/res/drawable-xxhdpi/star.png new file mode 100644 index 000000000..d3f087bf7 Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/star.png differ diff --git a/Habitica/res/drawable-xxxhdpi/star.png b/Habitica/res/drawable-xxxhdpi/star.png new file mode 100644 index 000000000..ac8b6f5ca Binary files /dev/null and b/Habitica/res/drawable-xxxhdpi/star.png differ diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 89f2675df..b8575fe21 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1017,4 +1017,5 @@ Task list display Onboarding Tasks Complete to earn 100 Gold! + Delete... diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt index 396cf53d3..646512896 100755 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt @@ -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) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/AdventureGuideDrawerArrowDrawable.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/AdventureGuideDrawerArrowDrawable.kt new file mode 100644 index 000000000..380395c93 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/AdventureGuideDrawerArrowDrawable.kt @@ -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 + } +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/adventureGuide/AdventureGuideMenuBanner.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/adventureGuide/AdventureGuideMenuBanner.kt index 69072c0ac..9c2808305 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/adventureGuide/AdventureGuideMenuBanner.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/adventureGuide/AdventureGuideMenuBanner.kt @@ -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}" } } \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/AchievementListDeserializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/AchievementListDeserializer.kt index 5a6f35e1a..c6929d7f0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/AchievementListDeserializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/AchievementListDeserializer.kt @@ -14,7 +14,7 @@ class AchievementListDeserializer: JsonDeserializer> { 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