/* * Copyright 2011 Azwan Adli Abdullah * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.gh4a.fragment; import java.util.List; import org.eclipse.egit.github.core.RepositoryCommit; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.content.Loader; import android.support.v7.widget.RecyclerView; import com.gh4a.R; import com.gh4a.activities.CommitActivity; import com.gh4a.adapter.CommitAdapter; import com.gh4a.adapter.RootAdapter; import com.gh4a.loader.CommitCompareLoader; import com.gh4a.loader.LoaderResult; public class CommitCompareFragment extends ListDataBaseFragment<RepositoryCommit> implements RootAdapter.OnItemClickListener<RepositoryCommit> { public static CommitCompareFragment newInstance(String repoOwner, String repoName, String baseRef, String headRef) { return newInstance(repoOwner, repoName, -1, null, baseRef, null, headRef); } public static CommitCompareFragment newInstance(String repoOwner, String repoName, int pullRequestNumber, String baseRefLabel, String baseRef, String headRefLabel, String headRef) { Bundle args = new Bundle(); args.putString("owner", repoOwner); args.putString("repo", repoName); args.putString("base", baseRef); args.putString("base_label", baseRefLabel); args.putString("head", headRef); args.putString("head_label", headRefLabel); args.putInt("pr", pullRequestNumber); CommitCompareFragment f = new CommitCompareFragment(); f.setArguments(args); return f; } private static final int REQUEST_COMMIT = 2000; private String mRepoOwner; private String mRepoName; private String mBase; private String mBaseLabel; private String mHead; private String mHeadLabel; private int mPullRequestNumber; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle args = getArguments(); mRepoOwner = args.getString("owner"); mRepoName = args.getString("repo"); mBase = args.getString("base"); mBaseLabel = args.getString("base_label"); mHead = args.getString("head"); mHeadLabel = args.getString("head_label"); mPullRequestNumber = args.getInt("pr", -1); } @Override protected int getEmptyTextResId() { return R.string.no_commits_found; } @Override protected RootAdapter<RepositoryCommit, ? extends RecyclerView.ViewHolder> onCreateAdapter() { CommitAdapter adapter = new CommitAdapter(getActivity()); adapter.setOnItemClickListener(this); return adapter; } @Override public void onItemClick(RepositoryCommit commit) { Intent intent = CommitActivity.makeIntent(getActivity(), mRepoOwner, mRepoName, mPullRequestNumber, commit.getSha()); startActivityForResult(intent, REQUEST_COMMIT); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_COMMIT) { if (resultCode == Activity.RESULT_OK) { // comments were updated onRefresh(); } } else { super.onActivityResult(requestCode, resultCode, data); } } @Override public Loader<LoaderResult<List<RepositoryCommit>>> onCreateLoader() { return new CommitCompareLoader(getActivity(), mRepoOwner, mRepoName, mBaseLabel, mBase, mHeadLabel, mHead); } }