/* * Copyright 2012 GitHub Inc. * * 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.github.mobile.ui.repo; import android.content.res.Resources; import android.os.Bundle; import android.support.v4.app.Fragment; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.github.mobile.R.string; import com.github.mobile.ui.FragmentPagerAdapter; import com.github.mobile.ui.code.RepositoryCodeFragment; import com.github.mobile.ui.commit.CommitListFragment; import com.github.mobile.ui.issue.IssuesFragment; /** * Adapter to view a repository's various pages */ public class RepositoryPagerAdapter extends FragmentPagerAdapter { /** * Index of code page */ public static final int ITEM_CODE = 1; /** * Index of commits page */ public static final int ITEM_COMMITS = 2; private final Resources resources; private final boolean hasIssues; private RepositoryCodeFragment codeFragment; private CommitListFragment commitsFragment; /** * Create repository pager adapter * * @param activity * @param hasIssues */ public RepositoryPagerAdapter(SherlockFragmentActivity activity, boolean hasIssues) { super(activity); resources = activity.getResources(); this.hasIssues = hasIssues; } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return resources.getString(string.tab_news); case 1: return resources.getString(string.tab_code); case 2: return resources.getString(string.tab_commits); case 3: return resources.getString(string.tab_issues); default: return null; } } @Override public Fragment getItem(int position) { switch (position) { case 0: return new RepositoryNewsFragment(); case 1: codeFragment = new RepositoryCodeFragment(); return codeFragment; case 2: commitsFragment = new CommitListFragment(); return commitsFragment; case 3: return new IssuesFragment(); default: return null; } } @Override public int getCount() { return hasIssues ? 4 : 3; } /** * Pass back button pressed event down to fragments * * @return true if handled, false otherwise */ public boolean onBackPressed() { return codeFragment != null && codeFragment.onBackPressed(); } /** * Deliver dialog result to fragment at given position * * @param position * @param requestCode * @param resultCode * @param arguments * @return this adapter */ public RepositoryPagerAdapter onDialogResult(int position, int requestCode, int resultCode, Bundle arguments) { if (position == ITEM_CODE && codeFragment != null) codeFragment.onDialogResult(requestCode, resultCode, arguments); else if (position == ITEM_COMMITS && commitsFragment != null) commitsFragment.onDialogResult(requestCode, resultCode, arguments); return this; } }