/*
* 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.activities;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.gh4a.BasePagerActivity;
import com.gh4a.Gh4Application;
import com.gh4a.R;
import com.gh4a.fragment.IssueMilestoneListFragment;
import com.gh4a.fragment.LoadingListFragmentBase;
public class IssueMilestoneListActivity extends BasePagerActivity implements
View.OnClickListener, LoadingListFragmentBase.OnRecyclerViewCreatedListener {
public static Intent makeIntent(Context context, String repoOwner, String repoName,
boolean fromPullRequest) {
return new Intent(context, IssueMilestoneListActivity.class)
.putExtra("owner", repoOwner)
.putExtra("repo", repoName)
.putExtra("from_pr", fromPullRequest);
}
private static final int REQUEST_EDIT_MILESTONE = 1000;
private static final int[] TITLES = new int[] {
R.string.open, R.string.closed
};
private static final int[][] HEADER_COLOR_ATTRS = new int[][] {
{ R.attr.colorIssueOpen, R.attr.colorIssueOpenDark },
{ R.attr.colorIssueClosed, R.attr.colorIssueClosedDark }
};
private String mRepoOwner;
private String mRepoName;
private boolean mParentIsPullRequest;
private FloatingActionButton mCreateFab;
private IssueMilestoneListFragment mOpenFragment;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Gh4Application.get().isAuthorized()) {
CoordinatorLayout rootLayout = getRootLayout();
mCreateFab = (FloatingActionButton)
getLayoutInflater().inflate(R.layout.add_fab, rootLayout, false);
mCreateFab.setOnClickListener(this);
rootLayout.addView(mCreateFab);
}
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(R.string.issue_milestones);
actionBar.setSubtitle(mRepoOwner + "/" + mRepoName);
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
protected int[] getTabTitleResIds() {
return TITLES;
}
@Override
protected Fragment makeFragment(int position) {
return IssueMilestoneListFragment.newInstance(mRepoOwner, mRepoName,
position == 1, mParentIsPullRequest);
}
@Override
protected void onFragmentInstantiated(Fragment f, int position) {
if (position == 0) {
mOpenFragment = (IssueMilestoneListFragment) f;
}
}
@Override
protected void onFragmentDestroyed(Fragment f) {
if (f == mOpenFragment) {
mOpenFragment = null;
}
}
@Override
protected void onInitExtras(Bundle extras) {
super.onInitExtras(extras);
mRepoOwner = extras.getString("owner");
mRepoName = extras.getString("repo");
mParentIsPullRequest = extras.getBoolean("from_pr", false);
}
@Override
public void onRecyclerViewCreated(Fragment fragment, RecyclerView recyclerView) {
if (fragment == mOpenFragment) {
recyclerView.setTag(R.id.FloatingActionButtonScrollEnabled, new Object());
}
}
@Override
protected void onPageMoved(int position, float fraction) {
super.onPageMoved(position, fraction);
if (mCreateFab != null) {
float openFraction = 1 - position - fraction;
ViewCompat.setScaleX(mCreateFab, openFraction);
ViewCompat.setScaleY(mCreateFab, openFraction);
mCreateFab.setVisibility(openFraction == 0 ? View.INVISIBLE : View.VISIBLE);
}
}
@Override
protected int[][] getTabHeaderColorAttrs() {
return HEADER_COLOR_ATTRS;
}
@Override
protected Intent navigateUp() {
return IssueListActivity.makeIntent(this, mRepoOwner, mRepoName, mParentIsPullRequest);
}
@Override
public void onClick(View view) {
startActivityForResult(IssueMilestoneEditActivity.makeCreateIntent(this,
mRepoOwner, mRepoName, mParentIsPullRequest), REQUEST_EDIT_MILESTONE);
}
@Override
protected void invalidateFragments() {
mOpenFragment = null;
super.invalidateFragments();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_EDIT_MILESTONE) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK);
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}