Search in sources :

Example 76 with User

use of com.meisolsson.githubsdk.model.User in project gh4a by slapperwan.

the class EventAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(EventViewHolder holder, GitHubEvent event) {
    User actor = event.actor();
    AvatarHandler.assignAvatar(holder.ivGravatar, actor);
    holder.ivGravatar.setTag(actor);
    holder.tvActor.setText(ApiHelpers.getUserLogin(mContext, actor));
    StringUtils.applyBoldTagsAndSetText(holder.tvTitle, formatTitle(event));
    holder.tvCreatedAt.setText(StringUtils.formatRelativeTime(mContext, event.createdAt(), false));
    CharSequence content = formatDescription(event, holder.tvDesc.getTypefaceValue());
    holder.tvDesc.setText(content);
    holder.tvDesc.setVisibility(content != null ? View.VISIBLE : View.GONE);
}
Also used : User(com.meisolsson.githubsdk.model.User)

Example 77 with User

use of com.meisolsson.githubsdk.model.User in project gh4a by slapperwan.

the class EventAdapter method formatDescription.

private CharSequence formatDescription(GitHubEvent event, int typefaceValue) {
    GitHubEventType eventType = event.type();
    GitHubEvent.RepoIdentifier eventRepo = event.repo();
    if (hasInvalidPayload(event)) {
        return eventType.toString();
    }
    Resources res = mContext.getResources();
    switch(eventType) {
        case CommitCommentEvent:
            {
                CommitCommentPayload payload = (CommitCommentPayload) event.payload();
                GitComment comment = payload.comment();
                if (comment != null) {
                    return EmojiParser.parseToUnicode(comment.body());
                }
                break;
            }
        case CreateEvent:
            {
                CreatePayload payload = (CreatePayload) event.payload();
                if (payload.refType() == ReferenceType.Repository) {
                    return res.getString(R.string.event_create_repo_desc, eventRepo.repoWithUserName());
                }
                break;
            }
        case DownloadEvent:
            {
                DownloadPayload payload = (DownloadPayload) event.payload();
                if (payload.download() != null) {
                    return payload.download().name();
                }
                break;
            }
        case FollowEvent:
            {
                FollowPayload payload = (FollowPayload) event.payload();
                User target = payload.target();
                if (target != null) {
                    return res.getString(R.string.event_follow_desc, target.login(), target.publicRepos(), target.followers());
                }
                break;
            }
        case ForkEvent:
            {
                ForkPayload payload = (ForkPayload) event.payload();
                return res.getString(R.string.event_fork_desc, formatToRepoName(payload.forkee()));
            }
        case GollumEvent:
            {
                GollumPayload payload = (GollumPayload) event.payload();
                List<GitHubWikiPage> pages = payload.pages();
                if (pages != null && !pages.isEmpty()) {
                    return res.getString(R.string.event_gollum_desc, pages.get(0).pageName());
                }
                break;
            }
        case IssueCommentEvent:
            {
                IssueCommentPayload payload = (IssueCommentPayload) event.payload();
                if (payload != null && payload.comment() != null) {
                    return EmojiParser.parseToUnicode(payload.comment().body());
                }
                break;
            }
        case IssuesEvent:
            {
                IssuesPayload payload = (IssuesPayload) event.payload();
                return payload.issue().title();
            }
        case PublicEvent:
            return null;
        case PullRequestEvent:
            {
                PullRequestPayload payload = (PullRequestPayload) event.payload();
                PullRequest pullRequest = payload.pullRequest();
                if (!StringUtils.isBlank(pullRequest.title())) {
                    return res.getString(R.string.event_pull_request_desc, pullRequest.title(), pullRequest.commits(), pullRequest.additions(), pullRequest.deletions());
                }
                break;
            }
        case PullRequestReviewCommentEvent:
            {
                PullRequestReviewCommentPayload payload = (PullRequestReviewCommentPayload) event.payload();
                ReviewComment comment = payload.comment();
                if (comment != null) {
                    return EmojiParser.parseToUnicode(comment.body());
                }
                break;
            }
        case PushEvent:
            {
                PushPayload payload = (PushPayload) event.payload();
                List<GitCommit> commits = payload.commits();
                if (commits != null && !commits.isEmpty()) {
                    SpannableStringBuilder ssb = new SpannableStringBuilder();
                    float density = mContext.getResources().getDisplayMetrics().density;
                    int bottomMargin = Math.round(2 * /* dp */
                    density);
                    int count = payload.size();
                    int maxLines = mContext.getResources().getInteger(R.integer.event_description_max_lines);
                    int max = Math.min(count > maxLines ? maxLines - 1 : count, commits.size());
                    for (int i = 0; i < max; i++) {
                        GitCommit commit = commits.get(i);
                        if (i != 0) {
                            ssb.append("\n");
                        }
                        int lastLength = ssb.length();
                        String sha = commit.sha().substring(0, 7);
                        ssb.append(sha);
                        ssb.setSpan(new TextAppearanceSpan(mContext, R.style.small_highlighted_sha), ssb.length() - sha.length(), ssb.length(), 0);
                        ssb.append(" ");
                        ssb.append(getFirstLine(EmojiParser.parseToUnicode(commit.message())));
                        ssb.setSpan(new EllipsizeLineSpan(i == (count - 1) ? 0 : bottomMargin), lastLength, ssb.length(), 0);
                    }
                    if (count > maxLines) {
                        String text = res.getString(R.string.event_push_desc, count - max);
                        ssb.append("\n");
                        ssb.append(text);
                        ssb.setSpan(new CustomTypefaceSpan(typefaceValue, Typeface.ITALIC), ssb.length() - text.length(), ssb.length(), 0);
                    }
                    return ssb;
                } else if (eventRepo == null) {
                    return mContext.getString(R.string.deleted);
                }
                break;
            }
        case ReleaseEvent:
            {
                ReleasePayload payload = (ReleasePayload) event.payload();
                Release release = payload.release();
                if (release != null) {
                    if (!TextUtils.isEmpty(release.name())) {
                        return release.name();
                    }
                    return release.tagName();
                }
                break;
            }
        case TeamAddEvent:
            {
                TeamAddPayload payload = (TeamAddPayload) event.payload();
                Team team = payload.team();
                if (team != null) {
                    return res.getString(R.string.event_team_add_desc, team.name(), team.membersCount(), team.reposCount());
                }
                break;
            }
    }
    return null;
}
Also used : ForkPayload(com.meisolsson.githubsdk.model.payload.ForkPayload) GollumPayload(com.meisolsson.githubsdk.model.payload.GollumPayload) ReleasePayload(com.meisolsson.githubsdk.model.payload.ReleasePayload) FollowPayload(com.meisolsson.githubsdk.model.payload.FollowPayload) User(com.meisolsson.githubsdk.model.User) TextAppearanceSpan(android.text.style.TextAppearanceSpan) GitCommit(com.meisolsson.githubsdk.model.git.GitCommit) PullRequest(com.meisolsson.githubsdk.model.PullRequest) GitHubEventType(com.meisolsson.githubsdk.model.GitHubEventType) IssueCommentPayload(com.meisolsson.githubsdk.model.payload.IssueCommentPayload) EllipsizeLineSpan(com.gh4a.widget.EllipsizeLineSpan) PullRequestPayload(com.meisolsson.githubsdk.model.payload.PullRequestPayload) TeamAddPayload(com.meisolsson.githubsdk.model.payload.TeamAddPayload) List(java.util.List) Team(com.meisolsson.githubsdk.model.Team) GitComment(com.meisolsson.githubsdk.model.git.GitComment) Release(com.meisolsson.githubsdk.model.Release) PushPayload(com.meisolsson.githubsdk.model.payload.PushPayload) CustomTypefaceSpan(com.gh4a.widget.CustomTypefaceSpan) ReviewComment(com.meisolsson.githubsdk.model.ReviewComment) IssuesPayload(com.meisolsson.githubsdk.model.payload.IssuesPayload) GitHubEvent(com.meisolsson.githubsdk.model.GitHubEvent) PullRequestReviewCommentPayload(com.meisolsson.githubsdk.model.payload.PullRequestReviewCommentPayload) CommitCommentPayload(com.meisolsson.githubsdk.model.payload.CommitCommentPayload) CreatePayload(com.meisolsson.githubsdk.model.payload.CreatePayload) Resources(android.content.res.Resources) DownloadPayload(com.meisolsson.githubsdk.model.payload.DownloadPayload) SpannableStringBuilder(android.text.SpannableStringBuilder)

Example 78 with User

use of com.meisolsson.githubsdk.model.User in project gh4a by slapperwan.

the class GistAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(ViewHolder holder, Gist gist) {
    User user = gist.owner();
    boolean isSelf = user != null && TextUtils.equals(user.login(), mOwnerLogin);
    if (isSelf) {
        holder.tvCreator.setVisibility(View.GONE);
    } else {
        holder.tvCreator.setText(ApiHelpers.getUserLogin(mContext, user));
        holder.tvCreator.setVisibility(View.VISIBLE);
    }
    holder.tvTimestamp.setText(StringUtils.formatRelativeTime(mContext, gist.createdAt(), false));
    holder.tvTitle.setText(TextUtils.isEmpty(gist.description()) ? mContext.getString(R.string.gist_no_description) : gist.description());
    holder.tvSha.setText(gist.id());
    holder.tvFiles.setText(String.valueOf(gist.files().size()));
    holder.tvPrivate.setVisibility(gist.isPublic() ? View.GONE : View.VISIBLE);
}
Also used : User(com.meisolsson.githubsdk.model.User)

Example 79 with User

use of com.meisolsson.githubsdk.model.User in project gh4a by slapperwan.

the class NewsFeedFactory method onItemSelected.

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    User selectedOrganization = position != 0 ? mUserScopes.get(position - 1) : null;
    boolean isSameUser = selectedOrganization == null || mSelectedOrganization == null ? selectedOrganization == mSelectedOrganization : selectedOrganization.equals(mSelectedOrganization);
    if (!isSameUser) {
        mSelectedOrganization = selectedOrganization;
        mActivity.invalidateFragments();
    }
}
Also used : User(com.meisolsson.githubsdk.model.User)

Example 80 with User

use of com.meisolsson.githubsdk.model.User in project gh4a by slapperwan.

the class CommitAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(ViewHolder holder, Commit commit) {
    User author = commit.author();
    if (author != null && !TextUtils.isEmpty(author.login())) {
        AvatarHandler.assignAvatar(holder.ivGravatar, author);
    } else {
        GitUser commitAuthor = commit.commit().author();
        String userName = commitAuthor != null ? commitAuthor.name() : null;
        String email = commitAuthor != null ? commitAuthor.email() : null;
        holder.ivGravatar.setImageDrawable(new AvatarHandler.DefaultAvatarDrawable(userName, email));
    }
    holder.ivGravatar.setTag(commit);
    String message = commit.commit().message();
    int pos = message.indexOf('\n');
    if (pos > 0) {
        message = message.substring(0, pos);
    }
    message = EmojiParser.parseToUnicode(message);
    holder.tvDesc.setText(message);
    holder.tvSha.setText(commit.sha().substring(0, 10));
    holder.ivDescriptionIndicator.setVisibility(pos > 0 ? View.VISIBLE : View.GONE);
    int comments = commit.commit().commentCount();
    if (comments > 0) {
        holder.tvComments.setText(String.valueOf(comments));
        holder.tvComments.setVisibility(View.VISIBLE);
    } else {
        holder.tvComments.setVisibility(View.GONE);
    }
    holder.tvExtra.setText(ApiHelpers.getAuthorName(mContext, commit));
    holder.tvTimestamp.setText(StringUtils.formatRelativeTime(mContext, commit.commit().author().date(), false));
}
Also used : GitUser(com.meisolsson.githubsdk.model.git.GitUser) User(com.meisolsson.githubsdk.model.User) AvatarHandler(com.gh4a.utils.AvatarHandler) GitUser(com.meisolsson.githubsdk.model.git.GitUser)

Aggregations

User (com.meisolsson.githubsdk.model.User)97 Repository (com.meisolsson.githubsdk.model.Repository)15 View (android.view.View)14 Intent (android.content.Intent)13 TextView (android.widget.TextView)11 ImageView (android.widget.ImageView)10 ArrayList (java.util.ArrayList)10 Test (org.junit.Test)10 Label (com.meisolsson.githubsdk.model.Label)9 Milestone (com.meisolsson.githubsdk.model.Milestone)8 Bundle (android.os.Bundle)7 ApiHelpers (com.gh4a.utils.ApiHelpers)7 GitHubEvent (com.meisolsson.githubsdk.model.GitHubEvent)7 UserService (com.meisolsson.githubsdk.service.users.UserService)7 SmallTest (androidx.test.filters.SmallTest)6 List (java.util.List)6 ViewGroup (android.view.ViewGroup)5 AvatarHandler (com.gh4a.utils.AvatarHandler)5 UiUtils (com.gh4a.utils.UiUtils)5 Issue (com.meisolsson.githubsdk.model.Issue)5