From a5cee4fbbe2f78c09a91a1d53337bd927ae7a43d Mon Sep 17 00:00:00 2001 From: Negue Date: Fri, 23 Dec 2016 19:36:44 +0100 Subject: [PATCH] ChallengeOverviewActivity / working back navigation \o/ / redesign DetailActivity --- Habitica/AndroidManifest.xml | 13 +- .../res/drawable-hdpi/participants_light.png | Bin 0 -> 882 bytes .../res/drawable-mdpi/participants_light.png | Bin 0 -> 572 bytes .../res/drawable-xhdpi/participants_light.png | Bin 0 -> 1116 bytes .../drawable-xxhdpi/participants_light.png | Bin 0 -> 1767 bytes .../res/layout/activity_challenge_detail.xml | 122 +++++++----------- .../layout/activity_challenge_overview.xml | 98 ++++++++++++++ Habitica/res/values/styles.habitica.xml | 7 + .../habitica/components/AppComponent.java | 3 + .../activities/ChallengeDetailActivity.java | 16 ++- .../activities/ChallengeOverviewActivity.java | 79 ++++++++++++ .../ui/fragments/BaseMainFragment.java | 14 +- .../ChallengesOverviewFragment.java | 17 ++- .../habitica/ui/menu/MainDrawerBuilder.java | 3 +- 14 files changed, 281 insertions(+), 91 deletions(-) create mode 100644 Habitica/res/drawable-hdpi/participants_light.png create mode 100644 Habitica/res/drawable-mdpi/participants_light.png create mode 100644 Habitica/res/drawable-xhdpi/participants_light.png create mode 100644 Habitica/res/drawable-xxhdpi/participants_light.png create mode 100644 Habitica/res/layout/activity_challenge_overview.xml create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeOverviewActivity.java 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" /> + + + Px&EJ;K`RA>e5mdk1tK@f)Lc)^YL7&Ul77cq(pF)qAr1;J%D27;h2;v4t|!6#5$ zC_+pZrJ3*(x5yn}3#_*A2 zoDn%%8DYZ-lzqS^CBEqovG`Oa>DcLk}@P)Px$_DMuRR9Fe^mAgv=K@i68M10_*un`0yHVTSprJ$gNZNO4Hv9h4BBBxG{7u-sY|dnpi;`*wKIZk!>}2lt;(1Qo2HXbR2HXZp zHsF_dF`Xa?Iw)BI)2j3Yz2p1-yYgeJx(8wysoe%+kyEqys|*!H;x)NVHL=Q*MhQoU z5#~4;5u+aY%RqgW18q4=ndddzvOJa<^0SI_#A7%%`1gh#HSf$ol|ClbtGFSW48cr- zE`=nqL0!#o*Vu>JH*}iZt@f++(LAkf8ye6gLrd(&@Heq#uqhRjTeh!kt!n9`xztHDBn0lU=j0laSW+o zd^_`WK7XLd@!!rzqdSkReiYb0#bb@jl7$ne2qYeNyTrk5wsmdmRMw4$j@c)qJ{R0| zaY~nqQ&OXnuSV`7#VvAIEB@B_oi&-9{m$mypJ(RX^Cs7vJ!AWPUiG=p;m%Vp3&`x2y(*K~T=1+dFXb!&rGX$qBlJH!O~>Pp`4Q z)e^RN$@CxcN!1sVOV}gM-v~Qe#LhBhX2~Y`x6c1&PTOi(d2mnLIwtQp(W1>h4HW<}mAmR?4}Z zr<=?r%yOoxkrh6%R_Vv{-rLDIy9n$uf`@dJEWRtl?iiNnu@vAl_*UhrISG!hC ziF4NFny_d25vl8imS!s!G>B}CtnOt}`JZkVc;;5N$bwEL^-cb)BAx0#w+Hx0m1^V6 gfGAm0#QTB%!|#0Sbmp>V1B(j=Pgg&ebxsLQ06ZlJRR910 literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xxhdpi/participants_light.png b/Habitica/res/drawable-xxhdpi/participants_light.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1b6c591e0336732e41d77efff4a4103b48342e GIT binary patch literal 1767 zcmb`I`#;kQ1IH(E*dF9E=6ZS(hES=7PAbhbrd%ePhC{hdrHSMcPKU!Lk2^7JJDb~L zBidP|=Ad&*xusdm@<_fen=aT)IGw-YoY(99`MiJl`~jalpEDjBU?VUH1kymCM*4j- z;qR!ae(S=>z?a{oMD+7;1GT;~nFoPXsc7U$>;ET)Vj%&n-PvvBvB5>n?^?RWxHhra z^4iUk^!AdHn!TSLf)H~T+d9|Yil0YB)lHu7*k>8G;~#QZx3bYW#CDq5(4fVb>C3DA zb4|Xt=*qbCL}N<81ef&EFRe-^ zzAWMSp!9uQX`_-5-+MRkR1GHw!1L>gjxG(Vp2R#3EypQBWB6INT~m<{g%gXhHE9l1 znbBd+wX9E1mtL;g`@xs-7?%hH@ZXiX?h@oJab12oY}#@~8`VFmcLZCRM{%jN0m>u1{?lD=5vqz(%?nkq@S;MX@JtYgA1 z3~wUZNBEg~$<91I4NBkkP?xso#57ZgQs;dC?BfW0CY+7{Qm=D_86?YR(CSlak*r&P zNY5FyqH_BJCk_L4(S|8avrSl(9FSE zWiiQhfi)R$QEzxl`$)C<(pnYy#|yqquW|cT8BjGm_{H;UX{*)es8`iT87sakg>Ex! z{_>$?`l;4t&$vBJX5)Twe6@6Y+@*zdr;It1N}SxdK6!+vziCT=5{d?Y@0B}67sbO~ zaN9+Zve$UFe+M49Tt)8c-StiZU3a}dfbnf5lSFgRBKGbLFOV`GQVU_M^J!w6=tD`uo4PhdhTo z9x|ZJrlPqyy=--HfE#NE^H?|dU*kcp?BiIlH>K3Rpyf@r#r?Xd4S)5|$HO<=)Hk{? zM-Q~Vh4c^0m5~DK0o%p);fL8axCVyp%*dX2^Bz{beO71f4MP_q^ps-*!uRpzHQR}) z(-SkXtgsjrSbZd|1UT@gD{*@~>7 z+F(U8(aL(fE(hWNs4~@oDLHKgK^2t>bXHI+;rFF`v=0ViA0_*|#D&stD5k9Ev3z)G zhC+axOYPd%&A6vJ8e=(Ra*z*ZyN12R}2g^%jg8!Iiz~S)6Z-Bv{eraf}dd%AI9H{#j=h zav9~nLB_v0dWb&OG21~lmu>3yC+JG%9p>5vMzl!g!y$^i>^$bFMJUP!hK^OFY4boD z6hofY55*Pxw_G6KpQxav@AAgHIaogMxPSv>;tO)54_y4kC~;qCRJcV`BC@2$p2!pI zLq-{_uwsY+!23?zt>^VSwiWj!%`a5dJ>oV=pM5=MK-Y9=#F(8*lC;Qyb#`f~4a{^N zIG@uTg#uCO)(HmT#)wiEChN1R7Xt1~GGdkF-(&$NMS=VqW2WgZN*C-yV@9Uo9f zlbMtd@L2DU;4!ZwoIbxAk)p)hb{sKc;cWH6Dakr&w$_Tu`5?@n?gX$sM+PlB9Gb&+ zVvAdRUcP^xAL*S!n``Ozgv*A4atr)1ffnRkp(KuE11l#DcYx`$#(>q=AJDh@2jdnM z-9Az(N58;>(8u)&hcKZs&z@E1WFrjQHAK^2^|#-&4C59M1mixZt}v>3Y|xI&wjR6l z6A1ip$#X{Z;>jJpWI9=ut{^_#d4Zj@ULh5!*cPzx-x;v*Ta46XzNdM|PwJJK|0++n bYo9(DaZEHjM1pyLdoB>#{S30zEiC&lc(z)S literal 0 HcmV?d00001 diff --git a/Habitica/res/layout/activity_challenge_detail.xml b/Habitica/res/layout/activity_challenge_detail.xml index 0140eff9d..200c41bb4 100644 --- a/Habitica/res/layout/activity_challenge_detail.xml +++ b/Habitica/res/layout/activity_challenge_detail.xml @@ -48,32 +48,34 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" + android:layout_marginBottom="15dp" + android:layout_marginLeft="26dp" + android:layout_marginStart="26dp" + android:layout_marginRight="23dp" + android:layout_marginEnd="23dp" + android:layout_marginTop="?attr/actionBarSize" android:adjustViewBounds="true" android:fitsSystemWindows="true" android:focusable="true" - android:layout_marginTop="?attr/actionBarSize" - android:layout_marginStart="15dp" - android:layout_marginLeft="15dp" - android:layout_marginEnd="15dp" - android:layout_marginRight="15dp" - android:layout_marginBottom="15dp" android:focusableInTouchMode="true" - app:layout_collapseMode="parallax" - android:orientation="vertical"> + 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: {