package com.refactech.driibo.ui;
import com.refactech.driibo.R;
import com.refactech.driibo.type.dribble.Category;
import com.refactech.driibo.ui.fragment.BasePageListFragment;
import com.refactech.driibo.ui.fragment.DrawerFragment;
import com.refactech.driibo.ui.fragment.FollowingFragment;
import com.refactech.driibo.ui.fragment.LikeFragment;
import com.refactech.driibo.ui.fragment.ShotsFragment;
import android.app.ActionBar;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher;
public class MainActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private BasePageListFragment mContentFragment;
private Category mCategory;
private Menu mMenu;
private PullToRefreshAttacher mPullToRefreshAttacher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
findViews();
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
mDrawerLayout.setScrimColor(Color.argb(100, 0, 0, 0));
ActionBar actionBar = getActionBar();
actionBar.setIcon(R.drawable.ic_actionbar);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer,
R.string.drawer_open, R.string.drawer_close) {
public void onDrawerClosed(View view) {
mMenu.findItem(R.id.action_refresh).setVisible(true);
}
public void onDrawerOpened(View drawerView) {
mMenu.findItem(R.id.action_refresh).setVisible(false);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
PullToRefreshAttacher.Options options = new PullToRefreshAttacher.Options();
options.headerInAnimation = R.anim.pulldown_fade_in;
options.headerOutAnimation = R.anim.pulldown_fade_out;
options.refreshScrollDistance = 0.3f;
options.headerLayout = R.layout.pulldown_header;
mPullToRefreshAttacher = new PullToRefreshAttacher(this, options);
setCategory(Category.popular);
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.left_drawer, new DrawerFragment()).commit();
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
private void findViews() {
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
mMenu = menu;
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case R.id.action_refresh:
mContentFragment.loadFirstPageAndScrollToTop();
return true;
case R.id.action_settings:
startActivity(new Intent(this, PreferenceActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void setCategory(Category category) {
mDrawerLayout.closeDrawer(GravityCompat.START);
if (mCategory == category) {
return;
}
mPullToRefreshAttacher.setRefreshing(false);
mCategory = category;
if (category == Category.following) {
mContentFragment = FollowingFragment.newInstance();
} else if (category == Category.likes) {
mContentFragment = LikeFragment.newInstance();
} else {
mContentFragment = ShotsFragment.newInstance(category);
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, mContentFragment).commit();
}
public PullToRefreshAttacher getPullToRefreshAttacher() {
return mPullToRefreshAttacher;
}
}