diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index e0eda724b..9b09f8eac 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -127,14 +127,25 @@ android:value=".ui.activities.MainActivity" /> + + + + android:orientation="vertical" + app:layout_collapseMode="parallax"> + android:maxLines="2" + android:textColor="@color/textColorDark" /> + android:maxLines="3" + android:textColor="@color/textColorDark" /> - - - - - - - - - - - - - - + android:layout_marginBottom="10dp" + android:layout_gravity="right" + android:layout_marginTop="10dp" + android:orientation="horizontal"> + android:gravity="center" + android:id="@+id/gem_prize_layout"> - - + tools:text="15" + android:textColor="@color/textColorDark" /> + + + + + + + diff --git a/Habitica/res/layout/activity_challenge_overview.xml b/Habitica/res/layout/activity_challenge_overview.xml new file mode 100644 index 000000000..57214e51a --- /dev/null +++ b/Habitica/res/layout/activity_challenge_overview.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Habitica/res/values/styles.habitica.xml b/Habitica/res/values/styles.habitica.xml index e7fa2faae..a5f386cd6 100644 --- a/Habitica/res/values/styles.habitica.xml +++ b/Habitica/res/values/styles.habitica.xml @@ -49,4 +49,11 @@ + + \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java index 5396a0f51..237f70ead 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java @@ -8,6 +8,7 @@ import com.habitrpg.android.habitica.modules.AppModule; import com.habitrpg.android.habitica.receivers.LocalNotificationActionReceiver; import com.habitrpg.android.habitica.ui.activities.AboutActivity; import com.habitrpg.android.habitica.ui.activities.ChallengeDetailActivity; +import com.habitrpg.android.habitica.ui.activities.ChallengeOverviewActivity; import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity; import com.habitrpg.android.habitica.ui.activities.FullProfileActivity; import com.habitrpg.android.habitica.ui.activities.GroupFormActivity; @@ -199,4 +200,6 @@ public interface AppComponent { void inject(ChallengeTaskRecyclerViewFragment challengeTaskRecyclerViewFragment); void inject(ChallengeDetailActivity challengeDetailActivity); + + void inject(ChallengeOverviewActivity challengeOverviewActivity); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java index e35ec1cbb..e9803c675 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java @@ -86,14 +86,13 @@ public class ChallengeDetailActivity extends BaseActivity { @BindView(R.id.challenge_description) TextView challengeDescription; - - @BindView(R.id.memberCountTextView) + @BindView(R.id.challenge_member_count) TextView memberCountTextView; @BindView(R.id.gem_prize_layout) LinearLayout gem_prize_layout; - @BindView(R.id.gemPrizeTextView) + @BindView(R.id.gem_amount) TextView gemPrizeTextView; private Challenge challenge; @@ -125,4 +124,15 @@ public class ChallengeDetailActivity extends BaseActivity { } } + + @Override + public boolean onSupportNavigateUp() { + finish(); + return true; + } + + @Override + public void onBackPressed() { + finish(); + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeOverviewActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeOverviewActivity.java new file mode 100644 index 000000000..4f52f6033 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeOverviewActivity.java @@ -0,0 +1,79 @@ +package com.habitrpg.android.habitica.ui.activities; + +import android.os.Bundle; +import android.support.design.widget.TabLayout; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.widget.Toolbar; +import android.view.View; + +import com.habitrpg.android.habitica.APIHelper; +import com.habitrpg.android.habitica.HabiticaApplication; +import com.habitrpg.android.habitica.R; +import com.habitrpg.android.habitica.components.AppComponent; +import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel; +import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengesOverviewFragment; + +import javax.inject.Inject; + +import butterknife.BindView; + +public class ChallengeOverviewActivity extends BaseActivity { + + @BindView(R.id.detail_tabs) + TabLayout detail_tabs; + + @BindView(R.id.toolbar) + Toolbar toolbar; + + @BindView(R.id.avatar_with_bars) + View avatar_with_bars; + + @Inject + public APIHelper apiHelper; + + + @Override + protected int getLayoutResId() { + return R.layout.activity_challenge_overview; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setupToolbar(toolbar); + + getSupportActionBar().setTitle(R.string.challenges); + + ChallengesOverviewFragment fragment = new ChallengesOverviewFragment(); + fragment.setTabLayout(detail_tabs); + fragment.setUser(HabiticaApplication.User); + + AvatarWithBarsViewModel avatarInHeader = new AvatarWithBarsViewModel(this, avatar_with_bars); + avatarInHeader.updateData(HabiticaApplication.User); + + if (getSupportFragmentManager().getFragments() == null) { + getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, fragment).commitAllowingStateLoss(); + } else { + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out, android.R.anim.fade_in, android.R.anim.fade_out); + transaction.replace(R.id.fragment_container, fragment).addToBackStack(null).commitAllowingStateLoss(); + } + } + + @Override + protected void injectActivity(AppComponent component) { + component.inject(this); + } + + @Override + public boolean onSupportNavigateUp() { + finish(); + return true; + } + + @Override + public void onBackPressed() { + finish(); + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java index a5ad319db..ab4abc2f3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java @@ -1,12 +1,5 @@ package com.habitrpg.android.habitica.ui.fragments; -import com.habitrpg.android.habitica.APIHelper; -import com.habitrpg.android.habitica.helpers.SoundManager; -import com.habitrpg.android.habitica.ui.activities.MainActivity; -import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; -import com.raizlabs.android.dbflow.sql.builder.Condition; -import com.raizlabs.android.dbflow.sql.language.Select; - import android.content.Context; import android.os.Bundle; import android.support.design.widget.TabLayout; @@ -15,6 +8,13 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; +import com.habitrpg.android.habitica.APIHelper; +import com.habitrpg.android.habitica.helpers.SoundManager; +import com.habitrpg.android.habitica.ui.activities.MainActivity; +import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser; +import com.raizlabs.android.dbflow.sql.builder.Condition; +import com.raizlabs.android.dbflow.sql.language.Select; + import javax.inject.Inject; public abstract class BaseMainFragment extends BaseFragment { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java index 40cef9447..a2e7c6645 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java @@ -15,6 +15,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.habitrpg.android.habitica.APIHelper; +import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.commands.OpenFullProfileCommand; @@ -111,15 +112,14 @@ public class ChallengesOverviewFragment extends BaseMainFragment { @Subscribe public void onEvent(ShowChallengeTasksCommand cmd){ - View dialogLayout = activity.getLayoutInflater().inflate(R.layout.dialog_challenge_detail, null); + View dialogLayout = HabiticaApplication.currentActivity.getLayoutInflater().inflate(R.layout.dialog_challenge_detail, null); Challenge challenge = new Select().from(Challenge.class).where(Condition.column("id").is(cmd.challengeId)).querySingle(); ChallegeDetailDialogHolder challegeDetailDialogHolder = new ChallegeDetailDialogHolder(dialogLayout, activity); - AlertDialog.Builder builder = new AlertDialog.Builder(activity) - .setView(dialogLayout) - ; + AlertDialog.Builder builder = new AlertDialog.Builder(HabiticaApplication.currentActivity) + .setView(dialogLayout); challegeDetailDialogHolder.bind(builder.show(), apiHelper, user, challenge); } @@ -201,10 +201,11 @@ public class ChallengesOverviewFragment extends BaseMainFragment { Bundle bundle = new Bundle(); bundle.putString(ChallengeDetailActivity.CHALLENGE_ID, challenge.id); - Intent intent = new Intent(activity, ChallengeDetailActivity.class); + Intent intent = new Intent(HabiticaApplication.currentActivity, ChallengeDetailActivity.class); intent.putExtras(bundle); - intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + //intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent); + this.dialog.dismiss(); } @OnClick(R.id.challenge_join_btn) @@ -216,7 +217,7 @@ public class ChallengesOverviewFragment extends BaseMainFragment { challenge.async().save(); userChallengesFragment.addItem(challenge); - dialog.hide(); + this.dialog.dismiss(); }, throwable -> { }); } @@ -246,6 +247,8 @@ public class ChallengesOverviewFragment extends BaseMainFragment { } } + + @Override public String customTitle() { return getString(R.string.challenges); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java index 5982114c4..67eab91bf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java @@ -2,6 +2,7 @@ package com.habitrpg.android.habitica.ui.menu; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.ui.activities.AboutActivity; +import com.habitrpg.android.habitica.ui.activities.ChallengeOverviewActivity; import com.habitrpg.android.habitica.ui.activities.GemPurchaseActivity; import com.habitrpg.android.habitica.ui.activities.MainActivity; import com.habitrpg.android.habitica.ui.activities.PrefsActivity; @@ -133,7 +134,7 @@ public class MainDrawerBuilder { break; } case SIDEBAR_CHALLENGES: { - fragment = new ChallengesOverviewFragment(); + newActivityClass = ChallengeOverviewActivity.class; break; } case SIDEBAR_SHOPS: {