package com.linroid.sky31radio.ui; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuItem; import android.view.ViewGroup; import com.astuetz.PagerSlidingTabStrip; import com.avos.avoscloud.feedback.FeedbackAgent; import com.linroid.sky31radio.R; import com.linroid.sky31radio.model.Album; import com.linroid.sky31radio.model.Anchor; import com.linroid.sky31radio.module.HomeModule; import com.linroid.sky31radio.ui.adapter.AlbumAdapter; import com.linroid.sky31radio.ui.adapter.AnchorAdapter; import com.linroid.sky31radio.ui.adapter.HomePagerAdapter; import com.linroid.sky31radio.ui.base.InjectableActivity; import com.linroid.sky31radio.ui.fragment.ProgramListFragment; import com.linroid.sky31radio.utils.RadioUtils; import com.linroid.sky31radio.view.SlidingUpPanelLayout; import com.linroid.sky31radio.view.TitleSwitcher; import java.util.Arrays; import java.util.List; import butterknife.InjectView; import timber.log.Timber; /** * Created by linroid on 1/14/15. */ public class HomeActivity extends InjectableActivity implements AlbumAdapter.OnAlbumSelectedListener, AnchorAdapter.OnAnchorSelectedListener{ public static final String TAG_ANCHOR = "anchor"; public static final String TAG_ALBUM = "album"; public static final String STATE_PAGER_CURRENT_ITEM = "pager_current_item"; public static final int DEFAULT_PAGER_CURRENT_ITEM = 2; @InjectView(R.id.tab_strip) PagerSlidingTabStrip tabStrip; @InjectView(R.id.view_pager) ViewPager viewPager; @InjectView(R.id.home_container) ViewGroup homeContainer; @InjectView(R.id.sliding_layout) SlidingUpPanelLayout slidingUpPanelLayout; HomePagerAdapter pagerAdapter; TitleSwitcher titleSwitcher; boolean detail = false; // int layer = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); slidingUpPanelLayout.setSlidingEnabled(false); setUpPager(); int currentItem = DEFAULT_PAGER_CURRENT_ITEM; if(savedInstanceState!=null){ currentItem = savedInstanceState.getInt(STATE_PAGER_CURRENT_ITEM); } viewPager.setCurrentItem(currentItem); titleSwitcher = new TitleSwitcher(this); titleSwitcher.setToolbar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); FeedbackAgent agent = new FeedbackAgent(this); agent.sync(); } @Override protected int provideContentViewId() { return R.layout.activity_home; } private void setUpPager() { pagerAdapter = new HomePagerAdapter(this, getSupportFragmentManager()); viewPager.setAdapter(pagerAdapter); tabStrip.setViewPager(viewPager); // ViewPagerObserver vpo = new ViewPagerObserver(viewPager); // vpo.addObservableView(titleIndicator); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(STATE_PAGER_CURRENT_ITEM, viewPager.getCurrentItem()); } @Override public List<Object> getModules() { return Arrays.<Object>asList(new HomeModule(this)); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.action_settings: openSettingsActivity(); break; case android.R.id.home: case R.id.home: onBackPressed(); return true; case R.id.action_exit: onExit(); return true; case R.id.action_search: navigateToSearch(); return true; } return super.onOptionsItemSelected(item); } private void navigateToSearch() { Intent intent = new Intent(this, SearchActivity.class); startActivity(intent); overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); } private void onExit() { RadioUtils.stop(this); finish(); } private void openSettingsActivity() { Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent); // overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_top); } @Override public void onAlbumSelected(Album album) { Timber.d("onAlbumSelected: %s", album.getName()); if(detail){ super.onBackPressed(); } detail = true; ViewCompat.setElevation(homeContainer, 0); getSupportActionBar().setDisplayHomeAsUpEnabled(true); titleSwitcher.switchForward(album.getName()); // Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_ALBUM); // if(fragment!=null){ // getSupportFragmentManager().beginTransaction() // .remove(fragment) // .commit(); // } getSupportFragmentManager().beginTransaction() .add(R.id.home_container, ProgramListFragment.newInstance(album), TAG_ALBUM) .addToBackStack(album.getName()) .setCustomAnimations(android.R.anim.fade_out, android.R.anim.fade_out) .commit(); } @Override public void onAnchorSelected(Anchor anchor) { Timber.d("onAnchorSelected: %s", anchor.getNickname()); if(detail){ super.onBackPressed(); } detail = true; getSupportActionBar().setDisplayHomeAsUpEnabled(true); ViewCompat.setElevation(homeContainer, 0); titleSwitcher.switchForward(anchor.getNickname()); // Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_ANCHOR); // if(fragment!=null){ // getSupportFragmentManager().beginTransaction() // .remove(fragment) // .commit(); // } getSupportFragmentManager() .beginTransaction() .add(R.id.home_container, ProgramListFragment.newInstance(anchor), TAG_ANCHOR) .addToBackStack(anchor.getNickname()) .setCustomAnimations(android.R.anim.fade_out, android.R.anim.fade_out) .commit(); } @Override public void onBackPressed() { if(slidingUpPanelLayout.isPanelExpanded()){ slidingUpPanelLayout.collapsePanel(); return; }else if(detail){ restoreActionBar(); } super.onBackPressed(); } private void restoreActionBar(){ detail = false; getSupportActionBar().setDisplayHomeAsUpEnabled(false); titleSwitcher.switchBack(getTitle()); ViewCompat.setElevation(homeContainer, getSupportActionBar().getElevation()); } @Override public void setTitle(CharSequence title) { if(toolbar!=null && titleSwitcher!=null){ titleSwitcher.setCurrentTitle(title); }else{ super.setTitle(title); } } @Override public void setTitle(int titleId) { setTitle(getText(titleId)); } }