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