From 18b484e21077edc0c3d477b38fec70acb421e32f Mon Sep 17 00:00:00 2001 From: Kosh Date: Mon, 1 May 2017 02:24:36 +0800 Subject: [PATCH] this commit fixes #329 and improves labels design. --- app/src/main/AndroidManifest.xml | 23 ++++++++------- .../fastaccess/data/dao/TimelineModel.java | 29 +++++++++---------- .../data/dao/model/AbstractPullRequest.java | 12 +++++--- .../data/service/UserRestService.java | 5 ++-- .../ui/widgets/SpannableBuilder.java | 8 +++++ .../other_layouts/layout/avatar_layout.xml | 4 +-- 6 files changed, 46 insertions(+), 35 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c5081041..fd29657b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -81,10 +81,10 @@ + android:parentActivityName=".ui.modules.repos.RepoPagerActivity"> + android:value=".ui.modules.repos.RepoPagerActivity"/> + android:parentActivityName=".ui.modules.repos.RepoPagerActivity"> + android:value=".ui.modules.repos.RepoPagerActivity"/> + android:parentActivityName=".ui.modules.repos.RepoPagerActivity"> + android:value=".ui.modules.repos.RepoPagerActivity"/> + android:parentActivityName=".ui.modules.repos.RepoPagerActivity"> + android:value=".ui.modules.repos.RepoPagerActivity"/> + + android:parentActivityName=".ui.modules.repos.RepoPagerActivity"> + android:value=".ui.modules.repos.RepoPagerActivity"/> + - diff --git a/app/src/main/java/com/fastaccess/data/dao/TimelineModel.java b/app/src/main/java/com/fastaccess/data/dao/TimelineModel.java index 90df1c5a..053c3f89 100644 --- a/app/src/main/java/com/fastaccess/data/dao/TimelineModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/TimelineModel.java @@ -13,7 +13,6 @@ import com.fastaccess.data.dao.model.Issue; import com.fastaccess.data.dao.model.IssueEvent; import com.fastaccess.data.dao.model.PullRequest; import com.fastaccess.data.dao.types.IssueEventType; -import com.fastaccess.helper.InputHelper; import com.fastaccess.helper.ParseDateFormat; import com.fastaccess.ui.widgets.LabelSpan; import com.fastaccess.ui.widgets.SpannableBuilder; @@ -163,8 +162,7 @@ import lombok.Setter; for (List issueEvents : issueEventMap.values()) { IssueEvent toAdd = null; SpannableBuilder spannableBuilder = SpannableBuilder.builder(); - for (int i = 0; i < issueEvents.size(); i++) { - IssueEvent issueEventModel = issueEvents.get(i); + for (IssueEvent issueEventModel : issueEvents) { if (issueEventModel != null) { IssueEventType event = issueEventModel.getEvent(); if (event != null) { @@ -177,14 +175,13 @@ import lombok.Setter; if (event == IssueEventType.labeled || event == IssueEventType.unlabeled) { LabelModel labelModel = issueEventModel.getLabel(); int color = Color.parseColor("#" + labelModel.getColor()); - spannableBuilder - .append(" ") - .append(InputHelper.SPACE + labelModel.getName() + InputHelper.SPACE, new LabelSpan(color)) + spannableBuilder.append(" ") + .append(" " + labelModel.getName() + " ", new LabelSpan(color)) .append(" "); } else if (event == IssueEventType.assigned || event == IssueEventType.unassigned) { - spannableBuilder - .append(" ") - .bold(issueEventModel.getAssignee() != null ? issueEventModel.getAssignee().getLogin() : ""); + spannableBuilder.append(" ") + .bold(issueEventModel.getAssignee() != null ? issueEventModel.getAssignee().getLogin() : "", + new LabelSpan(Color.TRANSPARENT)); } } else { models.add(new TimelineModel(issueEventModel)); @@ -197,19 +194,19 @@ import lombok.Setter; if (toAdd != null) { SpannableBuilder builder = SpannableBuilder.builder(); if (toAdd.getAssignee() != null && toAdd.getAssigner() != null) { - builder.bold(toAdd.getAssigner().getLogin()); + builder.bold(toAdd.getAssigner().getLogin(), new LabelSpan(Color.TRANSPARENT)); } else { if (toAdd.getActor() != null) { - builder.bold(toAdd.getActor().getLogin()); + builder.bold(toAdd.getActor().getLogin(), new LabelSpan(Color.TRANSPARENT)); } } builder.append(" ") - .append(toAdd.getEvent().name().replaceAll("_", " ")); - toAdd.setLabels(SpannableBuilder.builder().append(builder) + .append(toAdd.getEvent().name().replaceAll("_", " "), new LabelSpan(Color.TRANSPARENT)); + toAdd.setLabels(SpannableBuilder.builder() + .append(builder) + .append(spannableBuilder) .append(" ") - .append(ParseDateFormat.getTimeAgo(toAdd.getCreatedAt())) - .append("\n") - .append(spannableBuilder)); + .append(ParseDateFormat.getTimeAgo(toAdd.getCreatedAt()), new LabelSpan(Color.TRANSPARENT))); models.add(new TimelineModel(toAdd)); } } diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractPullRequest.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractPullRequest.java index b58fef1d..da53aa3a 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractPullRequest.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractPullRequest.java @@ -185,10 +185,12 @@ import static com.fastaccess.data.dao.model.PullRequest.UPDATED_AT; SpannableBuilder builder = SpannableBuilder.builder(); if (showRepoName) { PullsIssuesParser parser = PullsIssuesParser.getForPullRequest(pullRequest.getHtmlUrl()); - if (parser != null) builder.bold(parser.getLogin()) - .append("/") - .bold(parser.getRepoId()) - .append(" "); + if (parser != null) { + builder.bold(parser.getLogin()) + .append("/") + .bold(parser.getRepoId()) + .append(" "); + } } else { builder.bold("#" + pullRequest.getNumber()) .append(" ") @@ -198,6 +200,8 @@ import static com.fastaccess.data.dao.model.PullRequest.UPDATED_AT; return builder .bold(status.toLowerCase()) .append(" ") + .bold(pullRequest.getHead() != null ? pullRequest.getHead().getRef() : "") + .append(" ") .append(ParseDateFormat.getTimeAgo(pullRequest.getState() == IssueState.closed ? pullRequest.getClosedAt() : pullRequest.getCreatedAt())); } diff --git a/app/src/main/java/com/fastaccess/data/service/UserRestService.java b/app/src/main/java/com/fastaccess/data/service/UserRestService.java index 5f285323..8c9f85d0 100644 --- a/app/src/main/java/com/fastaccess/data/service/UserRestService.java +++ b/app/src/main/java/com/fastaccess/data/service/UserRestService.java @@ -29,10 +29,11 @@ public interface UserRestService { @GET("users/{username}/received_events") Observable> getReceivedEvents(@NonNull @Path("username") String userName, @Query("page") int page); - @GET("users/{username}/repos?sort=pushed&direction=desc") + @GET("users/{username}/repos?affiliation=owner,collaborator&sort=pushed&direction=desc") Observable> getRepos(@Path("username") @NonNull String username, @Query("page") int page); - @GET("/user/repos?sort=pushed&direction=desc") Observable> getRepos(@Query("page") int page); + @GET("/user/repos?affiliation=owner,collaborator&sort=pushed&direction=desc") + Observable> getRepos(@Query("page") int page); @GET("users/{username}/starred") Observable> getStarred(@Path("username") @NonNull String username, @Query("page") int page); diff --git a/app/src/main/java/com/fastaccess/ui/widgets/SpannableBuilder.java b/app/src/main/java/com/fastaccess/ui/widgets/SpannableBuilder.java index 7b35b258..a53b1f0e 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/SpannableBuilder.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/SpannableBuilder.java @@ -64,6 +64,14 @@ public class SpannableBuilder extends SpannableStringBuilder { return this; } + public SpannableBuilder bold(CharSequence text, final Object span) { + if (!InputHelper.isEmpty(text)) { + text = SpannableBuilder.builder().bold(text); + append(text, span); + } + return this; + } + public SpannableBuilder bold(final CharSequence text) { if (!InputHelper.isEmpty(text)) return append(text, new StyleSpan(BOLD)); return this; diff --git a/app/src/main/res/layouts/other_layouts/layout/avatar_layout.xml b/app/src/main/res/layouts/other_layouts/layout/avatar_layout.xml index f11459b9..92d2dc0e 100644 --- a/app/src/main/res/layouts/other_layouts/layout/avatar_layout.xml +++ b/app/src/main/res/layouts/other_layouts/layout/avatar_layout.xml @@ -1,13 +1,13 @@ + xmlns:app="http://schemas.android.com/apk/res-auto">