package net.udrunk;
import java.util.ArrayList;
import java.util.Observable;
import net.udrunk.model.Model;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.MotionEvent;
import android.view.animation.Animation;
import android.widget.ImageButton;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.googlecode.androidannotations.annotations.AfterViews;
import com.googlecode.androidannotations.annotations.EActivity;
import com.googlecode.androidannotations.annotations.Touch;
import com.googlecode.androidannotations.annotations.Trace;
import com.googlecode.androidannotations.annotations.UiThread;
import com.googlecode.androidannotations.annotations.ViewById;
import com.googlecode.androidannotations.annotations.res.AnimationRes;
import com.viewpagerindicator.TitlePageIndicator;
@EActivity(R.layout.main)
public class UdrunkActivity extends CommonActivity {
@ViewById
public ViewPager viewPager;
@ViewById
public TitlePageIndicator titleIndicator;
@ViewById(R.id.btn_share)
public ImageButton shareButton;
private MyFragmentPagerAdapter mMyFragmentPagerAdapter;
@AnimationRes(R.anim.share_button_anim)
public Animation shareAnim;
private static ArrayList<Fragment> fragmentList;
@Trace
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Trace
@AfterViews
public void afterViews() {
if (fragmentList == null) {
Fragment fragment;
fragmentList = new ArrayList<Fragment>();
fragment = new UserFragment_();
fragmentList.add(fragment);
fragment = new TimelineFragment_();
fragmentList.add(fragment);
fragment = new PlacesFragment_();
fragmentList.add(fragment);
}
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(
getSupportFragmentManager());
viewPager.setAdapter(mMyFragmentPagerAdapter);
viewPager.setCurrentItem(1);
// Bind the title indicator to the adapter
titleIndicator.setViewPager(viewPager);
titleIndicator.setTextColor(Color.BLACK);
titleIndicator.setSelectedColor(Color.BLACK);
titleIndicator.setOnPageChangeListener(onPageChangeListener);
}
@Trace
@Override
protected void onResume() {
super.onResume();
model.retrieveCheckins();
model.deletePlacesIfNecessary();
if(viewPager.getCurrentItem() == 2)
{
model.retrievePlaces();
}
updateProgress();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
updateProgress();
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.logout_menu_item:
model.logout();
Intent intent = new Intent(this, LoginActivity_.class);
startActivity(intent);
finish();
return true;
}
return (super.onOptionsItemSelected(item));
}
@Touch(R.id.btn_share)
void shareTouched(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
shareButton.startAnimation(shareAnim);
break;
case MotionEvent.ACTION_UP:
Intent intent = new Intent(this, ShareActivity_.class);
startActivity(intent);
break;
default:
break;
}
}
@UiThread
void updateProgress() {
if (menu != null) {
MenuItem refreshItem = menu.findItem(R.id.refresh_item_menu);
if (refreshItem != null) {
if (model.checkinsLoading)
refreshItem.setActionView(R.layout.refresh_menuitem);
else
refreshItem.setActionView(null);
}
}
}
protected class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
return fragmentList.get(index);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
Resources res = UdrunkActivity.this.getResources();
String[] titles = res.getStringArray(R.array.viewpager_titles);
return titles[position];
}
}
protected ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int pageSelected) {
if (pageSelected == 2) {
model.retrievePlaces();
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
};
@Override
public void update(Observable observable, Object data) {
if (data.equals(Model.CHECKINS_UPDATING)) {
updateProgress();
}
if (data.equals(Model.CHECKINS_UPDATED)) {
updateProgress();
}
}
}