package com.hitherejoe.watchtower.ui.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import com.hitherejoe.watchtower.R;
import com.hitherejoe.watchtower.WatchTowerApplication;
import com.hitherejoe.watchtower.data.BusEvent;
import com.hitherejoe.watchtower.data.model.Beacon;
import com.hitherejoe.watchtower.ui.fragment.AlertsFragment;
import com.hitherejoe.watchtower.ui.fragment.PropertiesFragment;
import com.squareup.otto.Subscribe;
import butterknife.Bind;
import butterknife.ButterKnife;
public class DetailActivity extends BaseActivity {
@Bind(R.id.sliding_tabs)
TabLayout mTabLayout;
@Bind(R.id.toolbar)
Toolbar mToolbar;
@Bind(R.id.pager_beacon_detail)
ViewPager mBeaconDetailViewPager;
private static final String EXTRA_BEACON =
"com.hitherejoe.watchtower.ui.activity.DetailActivity.EXTRA_BEACON";
private Beacon mBeacon;
public static Intent getStartIntent(Context context, Beacon beacon) {
Intent intent = new Intent(context, DetailActivity.class);
intent.putExtra(EXTRA_BEACON, beacon);
return intent;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
ButterKnife.bind(this);
mBeacon = getIntent().getParcelableExtra(EXTRA_BEACON);
if (mBeacon == null) {
throw new IllegalArgumentException("DetailActivity requires a Beacon object!");
}
setupToolbar();
setupViewPager();
WatchTowerApplication.get(this).getComponent().eventBus().register(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
WatchTowerApplication.get(this).getComponent().eventBus().unregister(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.detail, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_edit:
Intent intent = PropertiesActivity.getStartIntent(
DetailActivity.this, mBeacon, PropertiesFragment.Mode.UPDATE);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Subscribe
public void onBeaconUpdated(BusEvent.BeaconUpdated event) {
mBeacon = event.beacon;
}
private void setupToolbar() {
setSupportActionBar(mToolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
private void setupViewPager() {
mBeaconDetailViewPager.setOffscreenPageLimit(2);
mBeaconDetailViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
String[] titles = getResources().getStringArray(R.array.detail_fragment_titles);
@Override
public Fragment getItem(int position) {
return position == 0
? PropertiesFragment.newInstance(mBeacon, PropertiesFragment.Mode.VIEW)
: AlertsFragment.newInstance(mBeacon);
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
@Override
public int getCount() {
return titles.length;
}
});
mTabLayout.setupWithViewPager(mBeaconDetailViewPager);
}
}