package net.bradmont.openmpd;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import android.app.Activity;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.ListFragment;
import android.support.v4.view.ViewPager;
import android.support.v4.view.PagerAdapter;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View.OnClickListener;
import android.widget.Toast;
import net.bradmont.openmpd.fragments.*;
import net.bradmont.openmpd.views.*;
public class BaseActivity extends ActionBarActivity {
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
private SlidingTabLayout mSlidingTabLayout;
private int mTitleRes;
private static BaseActivity instance = null;
final static ExecutorService workExecutor = Executors.newSingleThreadExecutor();
protected ProgressDialog waitDialog = null;
public BaseActivity(int titleRes) {
mTitleRes = titleRes;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
instance = this;
setTitle(mTitleRes);
setContentView(R.layout.viewpager);
mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new HomePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs);
mSlidingTabLayout.setViewPager(mPager);
getSupportActionBar().setElevation(0);
Intent intent = getIntent();
if (intent.getBooleanExtra("net.bradmont.openmpd.notifications", false) == true){
mPager.setCurrentItem(2);
}
}
private class HomeTabListener implements ActionBar.TabListener {
public HomeTabListener(){}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
return;
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
mPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
}
private class HomePagerAdapter extends FragmentPagerAdapter {
private Fragment mAnalyticsFragment = null;
private Fragment mContactsFragment = null;
private Fragment mNotificationsFragment = null;
public HomePagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
if (mAnalyticsFragment == null){
mAnalyticsFragment = new AnalyticsFragment();
}
return mAnalyticsFragment;
case 1:
if (mContactsFragment == null){
mContactsFragment = new ContactListFragment();
}
return mContactsFragment;
case 2:
if (mNotificationsFragment == null){
mNotificationsFragment = new NotificationsFragment();
}
return mNotificationsFragment;
}
return null;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position){
switch(position){
case 0:
return getResources().getString(R.string.analytics);
case 1:
return getResources().getString(R.string.contacts);
case 2:
return getResources().getString(R.string.notifications);
}
return null;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
return true;
/*case R.id.github:
Util.goToGitHub(this);
return true;*/
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
public void onClick(View view){
// retrieve the fragment in R.id.content_frame (the visible main fragment)
((OnClickListener) getSupportFragmentManager().findFragmentById(R.id.content_frame)).onClick(view);
}
public void queueTask(Runnable r){
// r.run(); // for debugging thread crashes
workExecutor.submit(r);
}
class MyMessagePasser implements Runnable{
public String message;
public Activity activity;
public void run() {
//Crouton.showText(activity, message, Style.ALERT);
Toast.makeText(activity, message, 1000).show();
}
}
public void userMessage(int resourceId){
userMessage(getResources().getString(resourceId));
}
public void userMessage(String message){
MyMessagePasser m = new MyMessagePasser();
m.activity = this;
m.message = message;
runOnUiThread(m);
}
public void showWaitDialog(final int title_id, final int body_id){
final Context context = this;
runOnUiThread(new Runnable(){
@Override
public void run(){
waitDialog = new ProgressDialog(context);
waitDialog.setTitle(R.string.checking_login);
waitDialog.setMessage("Please Wait");
waitDialog.show();
}
});
}
public void dismissWaitDialog(){
runOnUiThread(new Runnable(){
@Override
public void run(){
waitDialog.dismiss();
}
});
}
public static BaseActivity getInstance(){
return instance;
}
}