diff --git a/Habitica/res/drawable-hdpi/avatar_border.png b/Habitica/res/drawable-hdpi/avatar_border.png
new file mode 100644
index 000000000..ec93c25a1
Binary files /dev/null and b/Habitica/res/drawable-hdpi/avatar_border.png differ
diff --git a/Habitica/res/drawable-mdpi/avatar_border.png b/Habitica/res/drawable-mdpi/avatar_border.png
new file mode 100644
index 000000000..a93bb2302
Binary files /dev/null and b/Habitica/res/drawable-mdpi/avatar_border.png differ
diff --git a/Habitica/res/drawable-xhdpi/avatar_border.png b/Habitica/res/drawable-xhdpi/avatar_border.png
new file mode 100644
index 000000000..6859d0aef
Binary files /dev/null and b/Habitica/res/drawable-xhdpi/avatar_border.png differ
diff --git a/Habitica/res/drawable-xxhdpi/avatar_border.png b/Habitica/res/drawable-xxhdpi/avatar_border.png
new file mode 100644
index 000000000..7c87ea264
Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/avatar_border.png differ
diff --git a/Habitica/res/drawable-xxxhdpi/avatar_border.png b/Habitica/res/drawable-xxxhdpi/avatar_border.png
new file mode 100644
index 000000000..5879226a5
Binary files /dev/null and b/Habitica/res/drawable-xxxhdpi/avatar_border.png differ
diff --git a/Habitica/res/drawable/alert_dialog_background.xml b/Habitica/res/drawable/alert_dialog_background.xml
new file mode 100644
index 000000000..53d10b0e0
--- /dev/null
+++ b/Habitica/res/drawable/alert_dialog_background.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/drawable/alert_dialog_button_divider.xml b/Habitica/res/drawable/alert_dialog_button_divider.xml
new file mode 100644
index 000000000..3dd18f44f
--- /dev/null
+++ b/Habitica/res/drawable/alert_dialog_button_divider.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/drawable/button_background_primary.xml b/Habitica/res/drawable/button_background_primary.xml
new file mode 100644
index 000000000..609b534a1
--- /dev/null
+++ b/Habitica/res/drawable/button_background_primary.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/dialog_habitica_base.xml b/Habitica/res/layout/dialog_habitica_base.xml
index d33b4ea8e..59cca1e63 100644
--- a/Habitica/res/layout/dialog_habitica_base.xml
+++ b/Habitica/res/layout/dialog_habitica_base.xml
@@ -2,46 +2,68 @@
-
+
+
+
+
+
+
+
+
-
-
-
\ No newline at end of file
+ tools:visibility="visible"
+ android:textSize="16sp"
+ android:textAllCaps="false"/>
+
diff --git a/Habitica/res/layout/dialog_levelup.xml b/Habitica/res/layout/dialog_levelup.xml
index f7b8ff269..4e9d03ca1 100644
--- a/Habitica/res/layout/dialog_levelup.xml
+++ b/Habitica/res/layout/dialog_levelup.xml
@@ -1,25 +1,30 @@
-
+ android:orientation="vertical" android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal">
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values-w360dp/styles.xml b/Habitica/res/values-w360dp/styles.xml
new file mode 100644
index 000000000..e19efefad
--- /dev/null
+++ b/Habitica/res/values-w360dp/styles.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/dimens.xml b/Habitica/res/values/dimens.xml
index 9696b8b79..5e79fc2b0 100644
--- a/Habitica/res/values/dimens.xml
+++ b/Habitica/res/values/dimens.xml
@@ -139,4 +139,5 @@
8dp
4dp
38dp
+ 16sp
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index dc3800b18..1bca7f485 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -139,7 +139,7 @@
You Reached Level %1$d!
By accomplishing your real life goals, you leveled up and are now fully healed!
- Huzzah!
+ Onwards!
Don\'t despair!
You lost a Level, your Gold, and a piece of Equipment, but you can get them all back with hard work! Good luck—you\'ll do great.
diff --git a/Habitica/res/values/styles.habitica.xml b/Habitica/res/values/styles.habitica.xml
index e8b9bec53..eba9a313e 100644
--- a/Habitica/res/values/styles.habitica.xml
+++ b/Habitica/res/values/styles.habitica.xml
@@ -12,15 +12,16 @@
-
@@ -28,27 +29,37 @@
+
+
@@ -65,9 +76,10 @@
@@ -105,7 +117,7 @@
diff --git a/Habitica/res/values/styles.xml b/Habitica/res/values/styles.xml
index 0c907f177..d88284ada 100644
--- a/Habitica/res/values/styles.xml
+++ b/Habitica/res/values/styles.xml
@@ -16,9 +16,9 @@
- true
- - @color/brand
- - @color/brand_50
- - @color/brand
+ - @color/brand
+ - @color/brand_50
+ - @color/brand_400
- @color/brand_200
- @color/brand_500
- @color/brand_400
@@ -196,6 +196,12 @@
#99edecee
+
+
\ No newline at end of file
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 96a4c0216..382172df4 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
@@ -58,6 +58,7 @@ import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
import com.habitrpg.android.habitica.ui.helpers.KeyboardUtil
import com.habitrpg.android.habitica.ui.helpers.bindOptionalView
import com.habitrpg.android.habitica.ui.helpers.bindView
+import com.habitrpg.android.habitica.ui.views.HabiticaAlertDialog
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
@@ -181,7 +182,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
val themeID = sharedPreferences.getInt("theme", R.style.AppTheme_NoActionBar)
setTheme(themeID)
sharedPreferences.edit {
- this.putInt("theme", R.style.AppTheme_NoActionBar_Blue)
+ this.putInt("theme", R.style.AppTheme_NoActionBar)
}
super.onCreate(savedInstanceState)
@@ -269,6 +270,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
override fun injectActivity(component: AppComponent?) {
component?.inject(this)
+ component?.inject(this)
}
override fun onResume() {
@@ -305,6 +307,22 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
launchTrace?.stop()
launchTrace = null
+
+ val customView = layoutInflater.inflate(R.layout.dialog_levelup, null)
+ if (customView != null) {
+ val dialogAvatarView = customView.findViewById(R.id.avatarView)
+ user?.let { dialogAvatarView.setAvatar(it) }
+ }
+
+ val alert = HabiticaAlertDialog(this)
+ alert.setTitle(getString(R.string.levelup_header, 5))
+ alert.setAdditionalContentView(customView)
+ alert.addButton(R.string.levelup_button, true) { dialog -> dialog.dismiss() }
+ alert.addButton(R.string.share, false) {
+
+ }
+
+ alert.show()
}
override fun onPause() {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernDetailFragment.kt
index 71b578e93..9d4b8307e 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernDetailFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernDetailFragment.kt
@@ -4,14 +4,14 @@ import android.content.Context
import android.content.Intent
import android.graphics.PorterDuff
import android.os.Bundle
-import androidx.core.content.ContextCompat
-import androidx.appcompat.app.AlertDialog
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.TextView
+import androidx.appcompat.app.AlertDialog
+import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.AppComponent
@@ -19,8 +19,8 @@ import com.habitrpg.android.habitica.data.InventoryRepository
import com.habitrpg.android.habitica.data.SocialRepository
import com.habitrpg.android.habitica.data.UserRepository
import com.habitrpg.android.habitica.extensions.notNull
-import com.habitrpg.android.habitica.helpers.MainNavigationController
import com.habitrpg.android.habitica.helpers.AppConfigManager
+import com.habitrpg.android.habitica.helpers.MainNavigationController
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.models.inventory.QuestContent
import com.habitrpg.android.habitica.models.members.PlayerTier
@@ -180,8 +180,7 @@ class TavernDetailFragment : BaseFragment() {
val alert = HabiticaAlertDialog(context)
val bossName = quest.boss?.name ?: ""
alert.setTitle(R.string.world_boss_description_title)
- alert.setTitleBackgroundColor(quest.colors?.lightColor ?: 0)
- alert.setSubtitle(context.getString(R.string.world_boss_description_subtitle, bossName))
+ //alert.setSubtitle(context.getString(R.string.world_boss_description_subtitle, bossName))
alert.setAdditionalContentView(R.layout.world_boss_description_view)
val descriptionView = alert.getContentView()
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaAlertDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaAlertDialog.kt
index cf9e78bc4..c02dfc8e5 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaAlertDialog.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaAlertDialog.kt
@@ -1,29 +1,38 @@
package com.habitrpg.android.habitica.ui.views
import android.content.Context
-import androidx.core.content.ContextCompat
-import androidx.appcompat.app.AlertDialog
+import android.graphics.drawable.ColorDrawable
import android.view.LayoutInflater
import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
import android.widget.LinearLayout
import android.widget.TextView
+import androidx.appcompat.app.AlertDialog
+import androidx.core.content.ContextCompat
import com.habitrpg.android.habitica.R
+import com.habitrpg.android.habitica.extensions.dpToPx
+import com.habitrpg.android.habitica.extensions.getThemeColor
import com.habitrpg.android.habitica.extensions.layoutInflater
+import com.habitrpg.android.habitica.extensions.setScaledPadding
+import java.lang.ref.WeakReference
open class HabiticaAlertDialog(context: Context) : AlertDialog(context) {
private val view: LinearLayout = LayoutInflater.from(context).inflate(R.layout.dialog_habitica_base, null) as LinearLayout
private var titleTextView: TextView
- private var subtitleTextView: TextView
private var messageTextView: TextView
+ private var contentView: ViewGroup
+ private var buttonsWrapper: LinearLayout
private var additionalContentView: View? = null
init {
setView(view)
titleTextView = view.findViewById(R.id.titleTextView)
- subtitleTextView = view.findViewById(R.id.subtitleTextView)
messageTextView = view.findViewById(R.id.messageTextView)
+ contentView = view.findViewById(R.id.content_view)
+ buttonsWrapper = view.findViewById(R.id.buttons_wrapper)
}
override fun setTitle(title: CharSequence?) {
@@ -34,27 +43,6 @@ open class HabiticaAlertDialog(context: Context) : AlertDialog(context) {
setTitle(context.getString(titleId))
}
- fun setTitleBackground(colorId: Int) {
- titleTextView.setBackgroundColor(ContextCompat.getColor(context, colorId))
- }
-
- fun setTitleBackgroundColor(color: Int) {
- titleTextView.setBackgroundColor(color)
- }
-
- fun setSubtitle(subtitle: CharSequence?) {
- if (subtitle != null) {
- subtitleTextView.visibility = View.VISIBLE
- } else {
- subtitleTextView.visibility = View.GONE
- }
- subtitleTextView.text = subtitle
- }
-
- fun setSubtitle(subtitleId: Int) {
- setSubtitle(context.getString(subtitleId))
- }
-
override fun setMessage(message: CharSequence?) {
if (message != null) {
messageTextView.visibility = View.VISIBLE
@@ -73,15 +61,39 @@ open class HabiticaAlertDialog(context: Context) : AlertDialog(context) {
setAdditionalContentView(inflater.inflate(layoutResID, view, false))
}
- fun setAdditionalContentView(view: View?, index: Int = -1) {
+ fun setAdditionalContentView(view: View?) {
this.view.removeView(additionalContentView)
additionalContentView = view
- if (index >= 0) {
- this.view.addView(view, index)
- } else {
- this.view.addView(view)
- }
+ this.contentView.addView(view)
+ val layoutParams = view?.layoutParams
+ layoutParams?.width = ViewGroup.LayoutParams.WRAP_CONTENT
+ layoutParams?.height = ViewGroup.LayoutParams.WRAP_CONTENT
+ view?.layoutParams = layoutParams
+ contentView.forceLayout()
}
+
+
fun getContentView(): View? = additionalContentView
+
+ fun addButton(stringRes: Int, isPrimary: Boolean, function: (HabiticaAlertDialog) -> Unit) {
+ val button = Button(context)
+ button.text = context.getString(stringRes)
+ button.transformationMethod = null
+ button.textSize = context.resources.getDimension(R.dimen.button_text_size)
+ if (isPrimary) {
+ button.background = context.getDrawable(R.drawable.button_background_primary)
+ button.setTextColor(context.getThemeColor(R.attr.textColorPrimaryDark))
+ } else {
+ button.background = ColorDrawable(ContextCompat.getColor(context, R.color.transparent))
+ button.setTextColor(ContextCompat.getColor(context, R.color.brand_400))
+ }
+ val weakThis = WeakReference(this)
+ button.setOnClickListener { weakThis.get()?.let { it1 -> function(it1) } }
+ val layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 38.dpToPx(context))
+ button.setScaledPadding(context, 26, 0, 26, 0)
+ button.minWidth = 147.dpToPx(context)
+ button.layoutParams = layoutParams
+ buttonsWrapper.addView(button)
+ }
}
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt
index 761e0a38d..c0f1e472d 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt
@@ -223,14 +223,13 @@ class QuestProgressView : LinearLayout {
private fun showActiveStrikeAlert(key: String) {
val alert = HabiticaAlertDialog(context)
alert.setTitle(context.getString(R.string.strike_active_title, getLocationName(key)))
- alert.setTitleBackground(R.color.orange_10)
- alert.setSubtitle(context.getString(R.string.strike_active_subtitle, getNpcName(key)))
+// alert.setSubtitle(context.getString(R.string.strike_active_subtitle, getNpcName(key)))
alert.setMessage(context.getString(R.string.strike_active_description, getLongNPCName(key), quest?.boss?.name ?: "", getLocationName(key)))
val npcBannerView = NPCBannerView(context, null)
npcBannerView.shopSpriteSuffix = quest?.key ?: ""
npcBannerView.identifier = key
- alert.setAdditionalContentView(npcBannerView, 1)
+ alert.setAdditionalContentView(npcBannerView)
alert.setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.close)) { dialog, _ ->
dialog.dismiss()
@@ -241,9 +240,8 @@ class QuestProgressView : LinearLayout {
private fun showPendingStrikeAlert() {
val alert = HabiticaAlertDialog(context)
alert.setTitle(R.string.pending_strike_title)
- alert.setTitleBackground(R.color.orange_10)
- alert.setSubtitle(R.string.pending_strike_subtitle)
- alert.setMessage(R.string.pending_strike_description)
+// alert.setSubtitle(R.string.pending_strike_subtitle)
+ //alert.setMessage(R.string.pending_strike_description)
alert.setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.close)) { dialog, _ ->
dialog.dismiss()
}
@@ -253,9 +251,8 @@ class QuestProgressView : LinearLayout {
private fun showStrikeDescriptionAlert() {
val alert = HabiticaAlertDialog(context)
alert.setTitle(R.string.strike_description_title)
- alert.setTitleBackground(R.color.orange_10)
- alert.setSubtitle(R.string.strike_description_subtitle)
- alert.setMessage(R.string.strike_description_description)
+// alert.setSubtitle(R.string.strike_description_subtitle)
+ //alert.setMessage(R.string.strike_description_description)
alert.setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.close)) { dialog, _ ->
dialog.dismiss()
}