diff --git a/Habitica/res/drawable-hdpi/ic_add_white_18dp.png b/Habitica/res/drawable-hdpi/ic_add_white_18dp.png
new file mode 100644
index 000000000..16b21f16e
Binary files /dev/null and b/Habitica/res/drawable-hdpi/ic_add_white_18dp.png differ
diff --git a/Habitica/res/drawable-mdpi/ic_add_white_18dp.png b/Habitica/res/drawable-mdpi/ic_add_white_18dp.png
new file mode 100644
index 000000000..fab78228e
Binary files /dev/null and b/Habitica/res/drawable-mdpi/ic_add_white_18dp.png differ
diff --git a/Habitica/res/drawable-xhdpi/ic_add_white_18dp.png b/Habitica/res/drawable-xhdpi/ic_add_white_18dp.png
new file mode 100644
index 000000000..9999b9890
Binary files /dev/null and b/Habitica/res/drawable-xhdpi/ic_add_white_18dp.png differ
diff --git a/Habitica/res/drawable-xxhdpi/ic_add_white_18dp.png b/Habitica/res/drawable-xxhdpi/ic_add_white_18dp.png
new file mode 100644
index 000000000..8186da98f
Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/ic_add_white_18dp.png differ
diff --git a/Habitica/res/drawable-xxxhdpi/ic_add_white_18dp.png b/Habitica/res/drawable-xxxhdpi/ic_add_white_18dp.png
new file mode 100644
index 000000000..3a15191cc
Binary files /dev/null and b/Habitica/res/drawable-xxxhdpi/ic_add_white_18dp.png differ
diff --git a/Habitica/res/drawable/challenge_gem_add_button.xml b/Habitica/res/drawable/challenge_gem_add_button.xml
index bc8d2cca9..eb49786cb 100644
--- a/Habitica/res/drawable/challenge_gem_add_button.xml
+++ b/Habitica/res/drawable/challenge_gem_add_button.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/Habitica/res/drawable/challenge_gem_add_button_disabled.xml b/Habitica/res/drawable/challenge_gem_add_button_disabled.xml
index 5cee4da70..cf15c21f7 100644
--- a/Habitica/res/drawable/challenge_gem_add_button_disabled.xml
+++ b/Habitica/res/drawable/challenge_gem_add_button_disabled.xml
@@ -2,7 +2,7 @@
-
\ No newline at end of file
diff --git a/Habitica/res/drawable/challenge_gem_add_button_enabled.xml b/Habitica/res/drawable/challenge_gem_add_button_enabled.xml
index 0ece5a328..1c28c6c3d 100644
--- a/Habitica/res/drawable/challenge_gem_add_button_enabled.xml
+++ b/Habitica/res/drawable/challenge_gem_add_button_enabled.xml
@@ -2,7 +2,7 @@
-
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.kt
index 4f2046ddb..7dbf8d7b0 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.kt
@@ -142,7 +142,7 @@ class ChallengeListFragment : BaseFragment(), androidx.swiperefreshlayout.widget
}, RxErrorHandler.handleEmptyError()))
}
- private fun retrieveChallengesPage(forced: Boolean = false) {
+ internal fun retrieveChallengesPage(forced: Boolean = false) {
if ((!forced && swipeRefreshLayout?.isRefreshing == true) || loadedAllData) {
return
}
@@ -157,20 +157,7 @@ class ChallengeListFragment : BaseFragment(), androidx.swiperefreshlayout.widget
}, RxErrorHandler.handleEmptyError()))
}
- override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
- inflater?.inflate(R.menu.menu_list_challenges, menu)
-
- @Suppress("Deprecation")
- val badgeLayout = MenuItemCompat.getActionView(menu?.findItem(R.id.action_search)) as? RelativeLayout
- if (badgeLayout != null) {
- val filterCountTextView = badgeLayout.findViewById(R.id.badge_textview)
- filterCountTextView.text = null
- filterCountTextView.visibility = View.GONE
- badgeLayout.setOnClickListener { showFilterDialog() }
- }
- }
-
- private fun showFilterDialog() {
+ internal fun showFilterDialog() {
activity.notNull {
ChallengeFilterDialogHolder.showDialog(it,
challenges ?: emptyList(),
@@ -186,30 +173,4 @@ class ChallengeListFragment : BaseFragment(), androidx.swiperefreshlayout.widget
filterOptions = challengeFilterOptions
challengeAdapter?.filter(challengeFilterOptions)
}
-
- @Suppress("ReturnCount")
- override fun onOptionsItemSelected(item: MenuItem?): Boolean {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- val id = item?.itemId
-
- when (id) {
- R.id.action_create_challenge -> {
- val intent = Intent(getActivity(), ChallengeFormActivity::class.java)
- startActivity(intent)
- return true
- }
- R.id.action_reload -> {
- retrieveChallengesPage()
- return true
- }
- R.id.action_search -> {
- showFilterDialog()
- return true
- }
- }
-
- return super.onOptionsItemSelected(item)
- }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.kt
index 288b44a7b..f7972d51c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.kt
@@ -1,18 +1,23 @@
package com.habitrpg.android.habitica.ui.fragments.social.challenges
+import android.content.Intent
import android.os.Bundle
+import android.view.*
+import android.widget.RelativeLayout
+import android.widget.TextView
+import androidx.core.view.MenuItemCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentStatePagerAdapter
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.AppComponent
import com.habitrpg.android.habitica.data.ChallengeRepository
+import com.habitrpg.android.habitica.extensions.notNull
+import com.habitrpg.android.habitica.ui.activities.ChallengeFormActivity
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
import com.habitrpg.android.habitica.ui.helpers.bindView
import com.habitrpg.android.habitica.ui.helpers.resetViews
+import com.habitrpg.android.habitica.utils.Action1
import javax.inject.Inject
@@ -55,6 +60,54 @@ class ChallengesOverviewFragment : BaseMainFragment() {
component.inject(this)
}
+
+ override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
+ inflater?.inflate(R.menu.menu_list_challenges, menu)
+
+ @Suppress("Deprecation")
+ val badgeLayout = MenuItemCompat.getActionView(menu?.findItem(R.id.action_search)) as? RelativeLayout
+ if (badgeLayout != null) {
+ val filterCountTextView = badgeLayout.findViewById(R.id.badge_textview)
+ filterCountTextView.text = null
+ filterCountTextView.visibility = View.GONE
+ badgeLayout.setOnClickListener { getActiveFragment()?.showFilterDialog() }
+ }
+ }
+
+ @Suppress("ReturnCount")
+ override fun onOptionsItemSelected(item: MenuItem?): Boolean {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ val id = item?.itemId
+
+ when (id) {
+ R.id.action_create_challenge -> {
+ val intent = Intent(getActivity(), ChallengeFormActivity::class.java)
+ startActivity(intent)
+ return true
+ }
+ R.id.action_reload -> {
+ getActiveFragment()?.retrieveChallengesPage()
+ return true
+ }
+ R.id.action_search -> {
+ getActiveFragment()?.showFilterDialog()
+ return true
+ }
+ }
+
+ return super.onOptionsItemSelected(item)
+ }
+
+ private fun getActiveFragment(): ChallengeListFragment? {
+ return if (viewPager?.currentItem == 0) {
+ userChallengesFragment
+ } else {
+ availableChallengesFragment
+ }
+ }
+
private fun setViewPagerAdapter() {
val fragmentManager = childFragmentManager