diff --git a/Habitica/res/layout/activity_group_form.xml b/Habitica/res/layout/activity_group_form.xml index cf19b7a57..f708ed0de 100644 --- a/Habitica/res/layout/activity_group_form.xml +++ b/Habitica/res/layout/activity_group_form.xml @@ -4,14 +4,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" - android:background="@color/window_background"> + android:background="?attr/colorContentBackground"> + android:paddingTop="30dp"> - \ No newline at end of file diff --git a/Habitica/res/menu/menu_challenge_details.xml b/Habitica/res/menu/menu_challenge_details.xml index 8dc0d1443..33ad438bb 100644 --- a/Habitica/res/menu/menu_challenge_details.xml +++ b/Habitica/res/menu/menu_challenge_details.xml @@ -4,7 +4,13 @@ tools:context="com.habitrpg.android.habitica.TaskActivity"> + android:title="@string/action_edit" + app:showAsAction="never" /> + diff --git a/Habitica/res/menu/menu_create_refresh.xml b/Habitica/res/menu/menu_create_refresh.xml new file mode 100644 index 000000000..4a5396631 --- /dev/null +++ b/Habitica/res/menu/menu_create_refresh.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index dc0cff539..8940bd5ff 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1116,4 +1116,9 @@ Fortify Potion Return all tasks to neutral value (yellow color), and restore all lost Health This will take effect immediately after buying! + Create Guild + You can create a Guild on the Habitica website. To create a Guild: log in then tap the “Create” button on the “My Guilds” screen. + Open Website + End Challenge + You can end a Challenge on the Habitica website. To end a Challenge: log in then tap the “End Challenge” button on the right of the Challenge screen. diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.kt index 459ced1d3..90d54a914 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.kt @@ -1,20 +1,22 @@ package com.habitrpg.android.habitica.ui.fragments.social import android.content.Context +import android.content.Intent import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup +import android.view.* import android.widget.TextView +import androidx.core.net.toUri import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.ChallengeRepository import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.databinding.FragmentGuildsOverviewBinding +import com.habitrpg.android.habitica.extensions.addCloseButton import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.social.Group import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment +import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.realm.RealmResults import java.util.* import javax.inject.Inject @@ -61,6 +63,39 @@ class GuildsOverviewFragment : BaseMainFragment() super.onDestroy() } + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + inflater.inflate(R.menu.menu_create_refresh, menu) + super.onCreateOptionsMenu(menu, inflater) + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.menu_refresh -> { + onRefresh() + return true + } + R.id.menu_create_item -> { + showCreationDialog() + return true + } + } + return super.onOptionsItemSelected(item) + } + + private fun showCreationDialog() { + val context = context ?: return + val dialog = HabiticaAlertDialog(context) + dialog.setTitle(R.string.create_guild) + dialog.setMessage(R.string.create_guild_description) + dialog.addButton(R.string.open_website, true, false) { _, _ -> + val uriUrl = "https://habitica.com/groups/myGuilds".toUri() + val launchBrowser = Intent(Intent.ACTION_VIEW, uriUrl) + startActivity(launchBrowser) + } + dialog.addCloseButton() + dialog.show() + } + override fun injectFragment(component: UserComponent) { component.inject(this) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt index 3aeb14094..9824e3d27 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt @@ -11,11 +11,13 @@ import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.ChallengeRepository import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.databinding.FragmentChallengeDetailBinding +import com.habitrpg.android.habitica.extensions.addCloseButton import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.members.Member @@ -140,29 +142,50 @@ class ChallengeDetailFragment: BaseMainFragment( inflater.inflate(R.menu.menu_challenge_details, menu) val editMenuItem = menu.findItem(R.id.action_edit) editMenuItem?.isVisible = isCreator + val endChallengeMenuItem = menu.findItem(R.id.action_end_challenge) + endChallengeMenuItem?.isVisible = isCreator } override fun onOptionsItemSelected(item: MenuItem): Boolean { - if (item.itemId == R.id.action_edit) { - val intent = Intent(getActivity(), ChallengeFormActivity::class.java) - val bundle = Bundle() - bundle.putString(ChallengeFormActivity.CHALLENGE_ID_KEY, challengeID) - intent.putExtras(bundle) - startActivity(intent) - return true - } - else if (item.itemId == R.id.action_share) { - val shareGuildIntent = Intent().apply { - action = Intent.ACTION_SEND - putExtra(Intent.EXTRA_TEXT, "${context?.getString(R.string.base_url)}/challenges/$challengeID") - type = "text/plain" + when (item.itemId) { + R.id.action_edit -> { + val intent = Intent(getActivity(), ChallengeFormActivity::class.java) + val bundle = Bundle() + bundle.putString(ChallengeFormActivity.CHALLENGE_ID_KEY, challengeID) + intent.putExtras(bundle) + startActivity(intent) + return true + } + R.id.action_share -> { + val shareGuildIntent = Intent().apply { + action = Intent.ACTION_SEND + putExtra(Intent.EXTRA_TEXT, "${context?.getString(R.string.base_url)}/challenges/$challengeID") + type = "text/plain" + } + startActivity(Intent.createChooser(shareGuildIntent, context?.getString(R.string.share_challenge_with))) + } + R.id.action_end_challenge -> { + showEndChallengeDialog() } - startActivity(Intent.createChooser(shareGuildIntent, context?.getString(R.string.share_challenge_with))) } return super.onOptionsItemSelected(item) } + private fun showEndChallengeDialog() { + val context = context ?: return + val dialog = HabiticaAlertDialog(context) + dialog.setTitle(R.string.action_end_challenge) + dialog.setMessage(R.string.end_challenge_description) + dialog.addButton(R.string.open_website, true, false) { _, _ -> + val uriUrl = "https://habitica.com/challenges/${challengeID}".toUri() + val launchBrowser = Intent(Intent.ACTION_VIEW, uriUrl) + startActivity(launchBrowser) + } + dialog.addCloseButton() + dialog.show() + } + private fun refresh() { challengeID?.let {id -> challengeRepository.retrieveChallenge(id)