package net.pocketmine.forum;
import java.util.ArrayList;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.astuetz.PagerSlidingTabStrip;
import net.pocketmine.forum.PluginsActivity.Plugin;
import net.pocketmine.server.R;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
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.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.LinearLayout;
public class CategoryActivity extends SherlockFragmentActivity {
int cat;
PagerSlidingTabStrip tabs;
ViewPager pager;
PluginsTabs adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_category);
cat = getIntent().getIntExtra("category", -1);
if (cat == -1) {
Log.e("CategoryActivity",
"Finishing activity, because no category given.");
finish();
return;
}
String catName = getIntent().getStringExtra("title");
if (catName != null) {
getSupportActionBar().setTitle(catName);
}
ActionBar bar = getSupportActionBar();
bar.setDisplayShowHomeEnabled(true);
bar.setDisplayHomeAsUpEnabled(true);
Drawable colorDrawable = new ColorDrawable(PluginsActivity.color);
Drawable bottomDrawable = getResources().getDrawable(
R.drawable.actionbar_bottom);
LayerDrawable ld = new LayerDrawable(new Drawable[] { colorDrawable,
bottomDrawable });
bar.setBackgroundDrawable(ld);
tabs = (PagerSlidingTabStrip) findViewById(R.id.plugins_tabs);
pager = (ViewPager) findViewById(R.id.plugins_pager);
adapter = new PluginsTabs(getSupportFragmentManager());
pager.setAdapter(adapter);
tabs.setViewPager(pager);
tabs.setIndicatorColor(PluginsActivity.color);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getSupportMenuInflater().inflate(R.menu.category, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
public class PluginsTabs extends FragmentPagerAdapter {
public String[] tabs = { "Featured", "Best Plugins", "Top Plugins",
"Top New Plugins", "Recently updated" };
public PluginsTabs(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return createFragment(0);
} else if (position == 1) {
return createFragment(1);
} else if (position == 2) {
return createFragment(2);
} else if (position == 3) {
return createFragment(3);
} else if (position == 4) {
return createFragment(4);
}
return new ListFragment();
}
private ListFragment createFragment(int id) {
ListFragment fragment = new ListFragment();
Bundle args = new Bundle();
args.putInt("cat", cat);
args.putInt("tab", id);
fragment.setArguments(args);
return fragment;
}
@Override
public CharSequence getPageTitle(int position) {
return tabs[position];
}
@Override
public int getCount() {
return tabs.length;
}
}
public static class ListFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
int id = getArguments().getInt("tab", 0);
int cat = getArguments().getInt("cat", 0);
ArrayList<Plugin> plugins = null;
if (id == 0) {
plugins = PluginsActivity.featuredPlugins;
} else if (id == 1) {
plugins = PluginsActivity.bestRated;
} else if (id == 2) {
plugins = PluginsActivity.topPlugins;
} else if (id == 3) {
plugins = PluginsActivity.topNewPlugins;
} else if (id == 4) {
plugins = PluginsActivity.recentlyUpdated;
}
if (plugins == null) {
return new LinearLayout(getActivity()); // whatever
}
ArrayList<Plugin> categorizedPlugins = new ArrayList<PluginsActivity.Plugin>();
for (Plugin p : plugins) {
if (p.category == cat) {
categorizedPlugins.add(p);
}
}
View v = inflater.inflate(R.layout.activity_plugins_list,
container, false);
GridView grid = (GridView) v.findViewById(R.id.plugins_list);
grid.setSelector(new ColorDrawable(Color.TRANSPARENT));
grid.setAdapter(new GridAdapter(getActivity(), categorizedPlugins));
return v;
}
}
}