diff --git a/app/src/main/java/com/fastaccess/ui/adapter/NotificationsAdapter.java b/app/src/main/java/com/fastaccess/ui/adapter/NotificationsAdapter.java index 270ff5b4..dc06bd8b 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/NotificationsAdapter.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/NotificationsAdapter.java @@ -9,7 +9,6 @@ import com.fastaccess.R; import com.fastaccess.data.dao.GroupedNotificationModel; import com.fastaccess.ui.adapter.viewholder.NotificationsHeaderViewHolder; import com.fastaccess.ui.adapter.viewholder.NotificationsViewHolder; -import com.fastaccess.ui.widgets.FontTextView; import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; @@ -46,9 +45,10 @@ public class NotificationsAdapter extends BaseRecyclerAdapter { private final int patchAdditionColor; private final int patchDeletionColor; private final int patchRefColor; - private String pathText; private OnToggleView onToggleView; + private ViewGroup viewGroup; @Override public void onClick(View v) { if (v.getId() != R.id.open) { int position = getAdapterPosition(); onToggleView.onToggle(position, !onToggleView.isCollapsed(position)); - onToggle(onToggleView.isCollapsed(position)); + onToggle(onToggleView.isCollapsed(position), true); } else { super.onClick(v); } } - private void onToggle(boolean expanded) { - if (!expanded) { - patch.setText("....."); - name.setMaxLines(2); - toggle.setRotation(0.0f); - } else { - name.setMaxLines(5); - setPatchText(pathText); - toggle.setRotation(180f); - } - } - - private CommitFilesViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter, + private CommitFilesViewHolder(@NonNull View itemView, @NonNull ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter, @NonNull OnToggleView onToggleView) { super(itemView, adapter); + this.viewGroup = viewGroup; open.setOnClickListener(this); this.onToggleView = onToggleView; patchAdditionColor = ViewHelper.getPatchAdditionColor(itemView.getContext()); @@ -76,7 +67,7 @@ public class CommitFilesViewHolder extends BaseViewHolder { public static CommitFilesViewHolder newInstance(ViewGroup viewGroup, BaseRecyclerAdapter adapter, @NonNull OnToggleView onToggleView) { - return new CommitFilesViewHolder(getView(viewGroup, R.layout.commit_file_row_item), adapter, onToggleView); + return new CommitFilesViewHolder(getView(viewGroup, R.layout.commit_file_row_item), viewGroup, adapter, onToggleView); } @Override public void bind(@NonNull CommitFileModel commit) { @@ -98,10 +89,25 @@ public class CommitFilesViewHolder extends BaseViewHolder { .append(statusText) .append("\n") .bold(String.valueOf(commit.getStatus()))); - onToggle(onToggleView.isCollapsed(getAdapterPosition())); + onToggle(onToggleView.isCollapsed(getAdapterPosition()), false); } private void setPatchText(@NonNull String text) { patch.setText(DiffLineSpan.getSpannable(text, patchAdditionColor, patchDeletionColor, patchRefColor)); } + + private void onToggle(boolean expanded, boolean animate) { + if (animate) { + TransitionManager.beginDelayedTransition(viewGroup, new ChangeBounds()); + } + if (!expanded) { + patch.setText(""); + name.setMaxLines(2); + toggle.setRotation(0.0f); + } else { + name.setMaxLines(5); + setPatchText(pathText); + toggle.setRotation(180f); + } + } } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java index d65f7651..d459539c 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java @@ -92,21 +92,31 @@ public class FeedsViewHolder extends BaseViewHolder { .append(in) .append(" "); } else { - spannableBuilder.bold(itemView.getResources().getString(type - .getType()).toLowerCase()) - .append(" "); if (eventsModel.getPayload() != null) { PayloadModel payloadModel = eventsModel.getPayload(); if (payloadModel.getTarget() != null) { - spannableBuilder.append(payloadModel.getTarget().getLogin()) + spannableBuilder + .bold(payloadModel.getTarget().getLogin()) + .append(" ") + .append(in) .append(" "); } else if (payloadModel.getTeam() != null) { - spannableBuilder.append(payloadModel.getTeam().getName()) + spannableBuilder + .bold(payloadModel.getTeam().getName()) + .append(" ") + .append(in) .append(" "); } else if (payloadModel.getMember() != null) { - spannableBuilder.append(payloadModel.getMember().getName()) + spannableBuilder + .bold(payloadModel.getMember().getLogin()) + .append(" ") + .append(in) .append(" "); + } else { + spannableBuilder.bold(itemView.getResources().getString(type.getType()).toLowerCase()).append(" "); } + } else { + spannableBuilder.bold(itemView.getResources().getString(type.getType()).toLowerCase()).append(" "); } } } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GroupedReviewsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GroupedReviewsViewHolder.java index 72d0f94e..11fa947e 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GroupedReviewsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GroupedReviewsViewHolder.java @@ -2,6 +2,8 @@ package com.fastaccess.ui.adapter.viewholder; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.transition.ChangeBounds; +import android.support.transition.TransitionManager; import android.view.View; import android.view.ViewGroup; @@ -34,6 +36,7 @@ public class GroupedReviewsViewHolder extends BaseViewHolder impl @BindView(R.id.name) FontTextView name; @BindView(R.id.toggle) ForegroundImageView toggle; @BindView(R.id.patch) FontTextView patch; + @BindView(R.id.minimized) View minimized; private final int patchAdditionColor; private final int patchDeletionColor; private final int patchRefColor; @@ -41,19 +44,21 @@ public class GroupedReviewsViewHolder extends BaseViewHolder impl private ReactionsCallback reactionsCallback; private String pathText; private PullRequestTimelineMvp.ReviewCommentCallback reviewCommentCallback; + private ViewGroup viewGroup; @Override public void onClick(View v) { int position = getAdapterPosition(); onToggleView.onToggle(position, !onToggleView.isCollapsed(position)); - onToggle(onToggleView.isCollapsed(position)); + onToggle(onToggleView.isCollapsed(position), true); } - private GroupedReviewsViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter, + private GroupedReviewsViewHolder(@NonNull View itemView, ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter, @NonNull OnToggleView onToggleView, @NonNull ReactionsCallback reactionsCallback, @NonNull PullRequestTimelineMvp.ReviewCommentCallback reviewCommentCallback) { super(itemView, adapter); this.onToggleView = onToggleView; + this.viewGroup = viewGroup; this.reactionsCallback = reactionsCallback; this.reviewCommentCallback = reviewCommentCallback; patchAdditionColor = ViewHelper.getPatchAdditionColor(itemView.getContext()); @@ -67,7 +72,7 @@ public class GroupedReviewsViewHolder extends BaseViewHolder impl @NonNull OnToggleView onToggleView, @NonNull ReactionsCallback reactionsCallback, @NonNull PullRequestTimelineMvp.ReviewCommentCallback reviewCommentCallback) { - return new GroupedReviewsViewHolder(getView(viewGroup, R.layout.grouped_review_timeline_row_item), adapter, + return new GroupedReviewsViewHolder(getView(viewGroup, R.layout.grouped_review_timeline_row_item), viewGroup, adapter, onToggleView, reactionsCallback, reviewCommentCallback); } @@ -84,7 +89,7 @@ public class GroupedReviewsViewHolder extends BaseViewHolder impl nestedRecyclerView.setAdapter(new ReviewCommentsAdapter(groupedReviewModel.getComments(), this, onToggleView, reactionsCallback)); nestedRecyclerView.addDivider(); } - onToggle(onToggleView.isCollapsed(getAdapterPosition())); + onToggle(onToggleView.isCollapsed(getAdapterPosition()), false); } @Override public void onItemClick(int position, View v, ReviewCommentModel item) { @@ -99,12 +104,17 @@ public class GroupedReviewsViewHolder extends BaseViewHolder impl } } - private void onToggle(boolean expanded) { + private void onToggle(boolean expanded, boolean animate) { + if (animate) { + TransitionManager.beginDelayedTransition(viewGroup, new ChangeBounds()); + } if (!expanded) { - patch.setText("....."); + minimized.setVisibility(View.GONE); + patch.setText(""); name.setMaxLines(2); toggle.setRotation(0.0f); } else { + minimized.setVisibility(View.VISIBLE); name.setMaxLines(5); setPatchText(pathText); toggle.setRotation(180f); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java index f8ea751b..b8a4a092 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java @@ -2,6 +2,8 @@ package com.fastaccess.ui.adapter.viewholder; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.transition.ChangeBounds; +import android.support.transition.TransitionManager; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @@ -50,11 +52,13 @@ public class IssueDetailsViewHolder extends BaseViewHolder { @BindView(R.id.reactionsText) TextView reactionsText; private OnToggleView onToggleView; private ReactionsCallback reactionsCallback; + private ViewGroup viewGroup; - private IssueDetailsViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter, + private IssueDetailsViewHolder(@NonNull View itemView, @NonNull ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter, @NonNull OnToggleView onToggleView, @NonNull ReactionsCallback reactionsCallback) { super(itemView, adapter); this.onToggleView = onToggleView; + this.viewGroup = viewGroup; this.reactionsCallback = reactionsCallback; itemView.setOnClickListener(null); itemView.setOnLongClickListener(null); @@ -76,7 +80,8 @@ public class IssueDetailsViewHolder extends BaseViewHolder { public static IssueDetailsViewHolder newInstance(@NonNull ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter, @NonNull OnToggleView onToggleView, @NonNull ReactionsCallback reactionsCallback) { - return new IssueDetailsViewHolder(getView(viewGroup, R.layout.issue_detail_header_row_item), adapter, onToggleView, reactionsCallback); + return new IssueDetailsViewHolder(getView(viewGroup, R.layout.issue_detail_header_row_item), viewGroup, + adapter, onToggleView, reactionsCallback); } @Override public void bind(@NonNull TimelineModel timelineModel) { @@ -85,7 +90,7 @@ public class IssueDetailsViewHolder extends BaseViewHolder { } else if (timelineModel.getPullRequest() != null) { bind(timelineModel.getPullRequest()); } - if (onToggleView != null) onToggle(onToggleView.isCollapsed(getAdapterPosition())); + if (onToggleView != null) onToggle(onToggleView.isCollapsed(getAdapterPosition()), false); } @Override public void onClick(View v) { @@ -93,7 +98,7 @@ public class IssueDetailsViewHolder extends BaseViewHolder { if (onToggleView != null) { int position = getAdapterPosition(); onToggleView.onToggle(position, !onToggleView.isCollapsed(position)); - onToggle(onToggleView.isCollapsed(position)); + onToggle(onToggleView.isCollapsed(position), true); } } else { addReactionCount(v); @@ -251,7 +256,10 @@ public class IssueDetailsViewHolder extends BaseViewHolder { } } - private void onToggle(boolean expanded) { + private void onToggle(boolean expanded, boolean animate) { + if (animate) { + TransitionManager.beginDelayedTransition(viewGroup, new ChangeBounds()); + } toggle.setRotation(!expanded ? 0.0F : 180F); commentOptions.setVisibility(!expanded ? View.GONE : View.VISIBLE); if (!InputHelper.isEmpty(reactionsText)) { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java index 6577ebdb..dff70f65 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java @@ -2,6 +2,8 @@ package com.fastaccess.ui.adapter.viewholder; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.transition.ChangeBounds; +import android.support.transition.TransitionManager; import android.support.v7.widget.AppCompatImageView; import android.view.View; import android.view.ViewGroup; @@ -49,13 +51,14 @@ public class ReviewCommentsViewHolder extends BaseViewHolder @BindView(R.id.reactionsText) FontTextView reactionsText; private OnToggleView onToggleView; private ReactionsCallback reactionsCallback; + private ViewGroup viewGroup; @Override public void onClick(View v) { if (v.getId() == R.id.toggle || v.getId() == R.id.toggleHolder) { if (onToggleView != null) { int position = getAdapterPosition(); onToggleView.onToggle(position, !onToggleView.isCollapsed(position)); - onToggle(onToggleView.isCollapsed(position)); + onToggle(onToggleView.isCollapsed(position), true); } } else { addReactionCount(v); @@ -63,10 +66,11 @@ public class ReviewCommentsViewHolder extends BaseViewHolder } } - private ReviewCommentsViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter, + private ReviewCommentsViewHolder(@NonNull View itemView, ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter, @NonNull OnToggleView onToggleView, @NonNull ReactionsCallback reactionsCallback) { super(itemView, adapter); this.onToggleView = onToggleView; + this.viewGroup = viewGroup; this.reactionsCallback = reactionsCallback; itemView.setOnClickListener(null); itemView.setOnLongClickListener(null); @@ -88,7 +92,8 @@ public class ReviewCommentsViewHolder extends BaseViewHolder public static ReviewCommentsViewHolder newInstance(ViewGroup viewGroup, BaseRecyclerAdapter adapter, @NonNull OnToggleView onToggleView, @NonNull ReactionsCallback reactionsCallback) { - return new ReviewCommentsViewHolder(getView(viewGroup, R.layout.review_comments_row_item), adapter, onToggleView, reactionsCallback); + return new ReviewCommentsViewHolder(getView(viewGroup, R.layout.review_comments_row_item), + viewGroup, adapter, onToggleView, reactionsCallback); } @Override public void bind(@NonNull ReviewCommentModel commentModel) { @@ -104,7 +109,7 @@ public class ReviewCommentsViewHolder extends BaseViewHolder ReactionsModel reaction = commentModel.getReactions(); appendEmojies(reaction); } - if (onToggleView != null) onToggle(onToggleView.isCollapsed(getAdapterPosition())); + if (onToggleView != null) onToggle(onToggleView.isCollapsed(getAdapterPosition()), false); } private void addReactionCount(View v) { @@ -211,7 +216,10 @@ public class ReviewCommentsViewHolder extends BaseViewHolder } } - private void onToggle(boolean expanded) { + private void onToggle(boolean expanded, boolean animate) { + if (animate) { + TransitionManager.beginDelayedTransition(viewGroup, new ChangeBounds()); + } toggle.setRotation(!expanded ? 0.0F : 180F); commentOptions.setVisibility(!expanded ? View.GONE : View.VISIBLE); if (!InputHelper.isEmpty(reactionsText)) { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java index 5ebf03e4..7887f3e5 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java @@ -2,6 +2,8 @@ package com.fastaccess.ui.adapter.viewholder; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.transition.ChangeBounds; +import android.support.transition.TransitionManager; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @@ -50,13 +52,14 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { private OnToggleView onToggleView; private boolean showEmojies; private ReactionsCallback reactionsCallback; + private ViewGroup viewGroup; @Override public void onClick(View v) { if (v.getId() == R.id.toggle || v.getId() == R.id.toggleHolder) { if (onToggleView != null) { int position = getAdapterPosition(); onToggleView.onToggle(position, !onToggleView.isCollapsed(position)); - onToggle(onToggleView.isCollapsed(position)); + onToggle(onToggleView.isCollapsed(position), true); } } else { addReactionCount(v); @@ -64,10 +67,10 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { } } - private TimelineCommentsViewHolder(@NonNull View itemView, @Nullable IssuePullsTimelineAdapter adapter, - @NonNull OnToggleView onToggleView, - boolean showEmojies, @NonNull ReactionsCallback reactionsCallback) { + private TimelineCommentsViewHolder(@NonNull View itemView, @NonNull ViewGroup viewGroup, @Nullable IssuePullsTimelineAdapter adapter, + @NonNull OnToggleView onToggleView, boolean showEmojies, @NonNull ReactionsCallback reactionsCallback) { super(itemView, adapter); + this.viewGroup = viewGroup; this.onToggleView = onToggleView; this.showEmojies = showEmojies; this.reactionsCallback = reactionsCallback; @@ -92,7 +95,7 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { public static TimelineCommentsViewHolder newInstance(@NonNull ViewGroup viewGroup, @Nullable IssuePullsTimelineAdapter adapter, @NonNull OnToggleView onToggleView, boolean showEmojies, @NonNull ReactionsCallback reactionsCallback) { - return new TimelineCommentsViewHolder(getView(viewGroup, R.layout.comments_row_item), adapter, + return new TimelineCommentsViewHolder(getView(viewGroup, R.layout.comments_row_item), viewGroup, adapter, onToggleView, showEmojies, reactionsCallback); } @@ -121,7 +124,7 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { } } emojiesList.setVisibility(showEmojies ? View.VISIBLE : View.GONE); - if (onToggleView != null) onToggle(onToggleView.isCollapsed(getAdapterPosition())); + if (onToggleView != null) onToggle(onToggleView.isCollapsed(getAdapterPosition()), false); } private void addReactionCount(View v) { @@ -231,7 +234,10 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { } } - private void onToggle(boolean expanded) { + private void onToggle(boolean expanded, boolean animate) { + if (animate) { + TransitionManager.beginDelayedTransition(viewGroup, new ChangeBounds()); + } toggle.setRotation(!expanded ? 0.0F : 180F); commentOptions.setVisibility(!expanded ? View.GONE : View.VISIBLE); if (!InputHelper.isEmpty(reactionsText)) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsFragment.java b/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsFragment.java index d85a77c3..32aa6a48 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsFragment.java @@ -86,7 +86,7 @@ public class AllNotificationsFragment extends BaseFragment + android:layout_marginEnd="@dimen/spacing_xs_large" + android:orientation="vertical"> @@ -43,6 +45,8 @@ android:layout_weight="1" android:ellipsize="end" android:maxLines="2" + android:paddingTop="@dimen/spacing_normal" + android:paddingBottom="@dimen/spacing_normal" android:textColor="?android:textColorPrimary" tools:text="When one acquires"/> @@ -52,34 +56,42 @@ android:layout_height="wrap_content" android:layout_gravity="top" android:background="?selectableItemBackgroundBorderless" - android:padding="@dimen/spacing_normal" + android:paddingTop="@dimen/spacing_normal" + android:paddingBottom="@dimen/spacing_normal" android:src="@drawable/ic_arrow_drop_down"/> - - - + android:visibility="gone"> + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/wrap_menu_option.xml b/app/src/main/res/menu/wrap_menu_option.xml index df8b33aa..ba0dd6b2 100644 --- a/app/src/main/res/menu/wrap_menu_option.xml +++ b/app/src/main/res/menu/wrap_menu_option.xml @@ -5,7 +5,7 @@ \ No newline at end of file