package com.gh4a.fragment; import android.content.Intent; import android.support.v4.content.Loader; import android.view.View; import android.widget.TextView; import com.gh4a.Gh4Application; import com.gh4a.R; import com.gh4a.activities.EditIssueCommentActivity; import com.gh4a.activities.PullRequestActivity; import com.gh4a.loader.IssueCommentListLoader; import com.gh4a.loader.IssueEventHolder; import com.gh4a.loader.LoaderResult; import com.gh4a.utils.ApiHelpers; import com.gh4a.utils.IntentUtils; import org.eclipse.egit.github.core.Comment; import org.eclipse.egit.github.core.Issue; import org.eclipse.egit.github.core.RepositoryId; import org.eclipse.egit.github.core.service.IssueService; import java.util.List; public class IssueFragment extends IssueFragmentBase { public static IssueFragment newInstance(String repoOwner, String repoName, Issue issue, boolean isCollaborator, IntentUtils.InitialCommentMarker initialComment) { IssueFragment f = new IssueFragment(); f.setArguments(buildArgs(repoOwner, repoName, issue, isCollaborator, initialComment)); return f; } public void updateState(Issue issue) { mIssue.setState(issue.getState()); assignHighlightColor(); reloadEvents(false); } @Override protected void bindSpecialViews(View headerView) { TextView tvPull = (TextView) headerView.findViewById(R.id.tv_pull); if (mIssue.getPullRequest() != null && mIssue.getPullRequest().getDiffUrl() != null) { tvPull.setVisibility(View.VISIBLE); tvPull.setOnClickListener(this); } else { tvPull.setVisibility(View.GONE); } } @Override protected void assignHighlightColor() { if (ApiHelpers.IssueState.CLOSED.equals(mIssue.getState())) { setHighlightColors(R.attr.colorIssueClosed, R.attr.colorIssueClosedDark); } else { setHighlightColors(R.attr.colorIssueOpen, R.attr.colorIssueOpenDark); } } @Override public void onClick(View v) { if (v.getId() == R.id.tv_pull) { startActivity(PullRequestActivity.makeIntent(getActivity(), mRepoOwner, mRepoName, mIssue.getNumber())); } else { super.onClick(v); } } @Override public Loader<LoaderResult<List<IssueEventHolder>>> onCreateLoader() { return new IssueCommentListLoader(getActivity(), mRepoOwner, mRepoName, mIssue.getNumber()); } @Override public void editComment(IssueEventHolder item) { Intent intent = EditIssueCommentActivity.makeIntent(getActivity(), mRepoOwner, mRepoName, mIssue.getNumber(), item.comment); startActivityForResult(intent, REQUEST_EDIT); } @Override protected void deleteCommentInBackground(RepositoryId repoId, Comment comment) throws Exception { Gh4Application app = Gh4Application.get(); IssueService issueService = (IssueService) app.getService(Gh4Application.ISSUE_SERVICE); issueService.deleteComment(repoId, comment.getId()); } @Override public int getCommentEditorHintResId() { return R.string.issue_comment_hint; } }