Show Participating-Label right after join (w/o reload) + Emoji / Markdown in Challenge Name / Description + change Challenge-Dialog to "joined" mode without closing

This commit is contained in:
Negue 2017-01-02 22:38:36 +01:00
parent 98554a7a8b
commit 44d2486e8d
9 changed files with 71 additions and 42 deletions

View file

@ -61,7 +61,7 @@
android:orientation="vertical"
app:layout_collapseMode="parallax">
<TextView
<net.pherth.android.emoji_library.EmojiTextView
android:id="@+id/challenge_name"
style="@style/Headline"
android:layout_width="match_parent"
@ -69,7 +69,7 @@
android:maxLines="2"
android:textColor="@color/textColorDark" />
<TextView
<net.pherth.android.emoji_library.EmojiTextView
android:id="@+id/challenge_description"
style="@style/Body2"
android:layout_width="match_parent"

View file

@ -63,16 +63,16 @@
android:orientation="vertical">
<TextView
<net.pherth.android.emoji_library.EmojiTextView
android:id="@+id/challenge_name"
style="@style/ChallengeName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="2"
tools:text="Example Challenge Name" />
tools:text="Example Challenge Name"/>
<TextView
android:id="@+id/challenge_description"
android:id="@+id/challenge_group_name"
style="@style/ChallengeByGroup"
android:layout_width="match_parent"
android:layout_height="20dp"

View file

@ -76,7 +76,7 @@
android:scrollbars="vertical">
<TextView
<net.pherth.android.emoji_library.EmojiTextView
android:id="@+id/challenge_name"
style="@style/Title2"
android:layout_width="wrap_content"
@ -84,7 +84,7 @@
android:layout_marginTop="9dp"
tools:text="Read a book by or about a person in your field of study" />
<TextView
<net.pherth.android.emoji_library.EmojiTextView
android:id="@+id/challenge_description"
style="@style/Body2"
android:layout_width="wrap_content"

View file

@ -14,8 +14,12 @@ 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.fragments.social.challenges.ChallengeTasksFragment;
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
import net.pherth.android.emoji_library.EmojiParser;
import net.pherth.android.emoji_library.EmojiTextView;
import javax.inject.Inject;
import butterknife.BindView;
@ -81,10 +85,10 @@ public class ChallengeDetailActivity extends BaseActivity {
public static class ChallengeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.challenge_name)
TextView challengeName;
EmojiTextView challengeName;
@BindView(R.id.challenge_description)
TextView challengeDescription;
EmojiTextView challengeDescription;
@BindView(R.id.challenge_member_count)
TextView memberCountTextView;
@ -106,8 +110,8 @@ public class ChallengeDetailActivity extends BaseActivity {
public void bind(Challenge challenge) {
this.challenge = challenge;
challengeName.setText(challenge.name);
challengeDescription.setText(challenge.description);
challengeName.setText(EmojiParser.parseEmojis(challenge.name));
challengeDescription.setText(MarkdownParser.parseMarkdown(challenge.description));
memberCountTextView.setText(challenge.memberCount + "");

View file

@ -11,7 +11,6 @@ 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.BaseFragment;
import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengesOverviewFragment;
import javax.inject.Inject;

View file

@ -21,6 +21,9 @@ import com.habitrpg.android.habitica.events.commands.OpenFullProfileCommand;
import com.habitrpg.android.habitica.events.commands.ShowChallengeTasksCommand;
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
import net.pherth.android.emoji_library.EmojiParser;
import net.pherth.android.emoji_library.EmojiTextView;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
@ -68,16 +71,35 @@ public class ChallengesListViewAdapter extends RecyclerView.Adapter<ChallengesLi
return challenges.size();
}
public void addChallange(Challenge challenge) {
public void addChallenge(Challenge challenge) {
challenges.add(challenge);
notifyDataSetChanged();
}
public void replaceChallenge(Challenge challenge) {
int index = challenges.indexOf(challenge);
if(index == -1){
for (int i = 0; i < challenges.size(); i++) {
if(challenges.get(i).id.equals(challenge.id)){
index = i;
break;
}
}
}
if(index != -1) {
challenges.set(index, challenge);
notifyItemChanged(index);
}
}
public static class ChallengeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.challenge_name)
TextView challengeName;
EmojiTextView challengeName;
@BindView(R.id.challenge_description)
@BindView(R.id.challenge_group_name)
TextView challengeDescription;
@BindView(R.id.challenge_task_summary)
@ -118,11 +140,9 @@ public class ChallengesListViewAdapter extends RecyclerView.Adapter<ChallengesLi
public void bind(Challenge challenge) {
this.challenge = challenge;
challengeName.setText(challenge.name);
challengeName.setText(EmojiParser.parseEmojis(challenge.name.trim()));
challengeDescription.setText(challenge.groupName);
officialChallengeLayout.setVisibility(challenge.official ? View.VISIBLE : View.GONE);
boolean userIdExists = challenge.user_id != null && !challenge.user_id.isEmpty();
@ -153,13 +173,6 @@ public class ChallengesListViewAdapter extends RecyclerView.Adapter<ChallengesLi
//gem_prize_layout.setVisibility(View.VISIBLE);
gemPrizeTextView.setText(challenge.prize + "");
}
/*if (leaveButton != null && joinButton != null) {
leaveButton.setVisibility(userIdExists ? View.VISIBLE : View.INVISIBLE);
joinButton.setVisibility(userIdExists ? View.INVISIBLE : View.VISIBLE);
}*/
}
private String getLabelByTypeAndCount(String type, int count) {

View file

@ -14,10 +14,7 @@ import com.habitrpg.android.habitica.components.AppComponent;
import com.habitrpg.android.habitica.ui.adapter.social.ChallengesListViewAdapter;
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction;
import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener;
import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.language.BaseModelQueriable;
import com.raizlabs.android.dbflow.sql.language.Select;
import com.raizlabs.android.dbflow.sql.language.Where;
@ -152,6 +149,10 @@ public class ChallengeListFragment extends BaseMainFragment implements View.OnCl
}
public void addItem(Challenge challenge) {
challengeAdapter.addChallange(challenge);
challengeAdapter.addChallenge(challenge);
}
public void updateItem(Challenge challenge) {
challengeAdapter.replaceChallenge(challenge);
}
}

View file

@ -48,7 +48,7 @@ public class ChallengeTaskRecyclerViewFragment extends BaseFragment {
fragment.user = user;
fragment.classType = classType;
if(tasks.size() != 0){
if(tasks.size() != 0 && fragment.recyclerAdapter != null){
fragment.recyclerAdapter.setTasks(tasks);
}

View file

@ -26,11 +26,15 @@ import com.habitrpg.android.habitica.events.commands.OpenFullProfileCommand;
import com.habitrpg.android.habitica.events.commands.ShowChallengeTasksCommand;
import com.habitrpg.android.habitica.ui.activities.ChallengeDetailActivity;
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.language.Select;
import net.pherth.android.emoji_library.EmojiParser;
import net.pherth.android.emoji_library.EmojiTextView;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@ -183,10 +187,10 @@ public class ChallengesOverviewFragment extends BaseMainFragment {
Button leaveButton;
@BindView(R.id.challenge_name)
TextView challengeName;
EmojiTextView challengeName;
@BindView(R.id.challenge_description)
TextView challengeDescription;
EmojiTextView challengeDescription;
@BindView(R.id.challenge_leader)
TextView challengeLeader;
@ -216,22 +220,28 @@ public class ChallengesOverviewFragment extends BaseMainFragment {
this.user = user;
this.challenge = challenge;
if (challenge.user_id == null || challenge.user_id.isEmpty()) {
notJoinedHeader.setVisibility(View.VISIBLE);
joinButton.setVisibility(View.VISIBLE);
} else {
joinedHeader.setVisibility(View.VISIBLE);
leaveButton.setVisibility(View.VISIBLE);
}
changeViewsByChallenge(challenge);
}
challengeName.setText(challenge.name);
challengeDescription.setText(challenge.description);
public void changeViewsByChallenge(Challenge challenge){
setJoined(challenge.user_id != null && !challenge.user_id.isEmpty());
challengeName.setText(EmojiParser.parseEmojis(challenge.name));
challengeDescription.setText( MarkdownParser.parseMarkdown(challenge.description));
challengeLeader.setText(challenge.leaderName);
gem_amount.setText(challenge.prize + "");
member_count.setText(challenge.memberCount + "");
}
public void setJoined(boolean joined){
joinedHeader.setVisibility(joined ? View.VISIBLE : View.GONE);
leaveButton.setVisibility(joined ? View.VISIBLE : View.GONE);
notJoinedHeader.setVisibility(joined ? View.GONE : View.VISIBLE);
joinButton.setVisibility(joined ? View.GONE : View.VISIBLE);
}
@OnClick(R.id.challenge_leader)
public void openLeaderProfile() {
EventBus.getDefault().post(new OpenFullProfileCommand(challenge.leaderId));
@ -258,7 +268,9 @@ public class ChallengesOverviewFragment extends BaseMainFragment {
challenge.async().save();
userChallengesFragment.addItem(challenge);
this.dialog.dismiss();
availableChallengesFragment.updateItem(challenge);
changeViewsByChallenge(challenge);
}, throwable -> {
});
}