package moe.feng.nhentai.ui;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TabLayout;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.ShareActionProvider;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import com.google.gson.Gson;
import moe.feng.nhentai.R;
import moe.feng.nhentai.api.common.NHentaiUrl;
import moe.feng.nhentai.dao.FavoriteCategoriesManager;
import moe.feng.nhentai.model.Category;
import moe.feng.nhentai.ui.common.AbsActivity;
import moe.feng.nhentai.ui.fragment.PageListFragment;
public class CategoryActivity extends AbsActivity {
private FavoriteCategoriesManager mFCM;
private ShareActionProvider mShareActionProvider;
private ViewPager mPager;
private Category category;
private boolean isFavorite = false;
private static final String EXTRA_CATEGORY_JSON = "category_json";
public static final String TAG = CategoryActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
category = new Gson().fromJson(intent.getStringExtra(EXTRA_CATEGORY_JSON), Category.class);
setContentView(R.layout.activity_search_result);
mFCM = FavoriteCategoriesManager.getInstance(getApplicationContext());
isFavorite = mFCM.contains(category);
mActionBar.setDisplayHomeAsUpEnabled(true);
String title = "";
switch (category.type) {
case Category.Type.ARTIST:
title += getString(R.string.tag_type_artists);
break;
case Category.Type.CHARACTER:
title += getString(R.string.tag_type_characters);
break;
case Category.Type.GROUP:
title += getString(R.string.tag_type_group);
break;
case Category.Type.PARODY:
title += getString(R.string.tag_type_parodies);
break;
case Category.Type.TAG:
title += getString(R.string.tag_type_tag);
break;
case Category.Type.LANGUAGE:
title += getString(R.string.tag_type_language);
break;
}
title += category.name;
mActionBar.setTitle(title);
setUpShareAction();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mActionBar.setElevation(getResources().getDimension(R.dimen.appbar_elevation));
}
supportInvalidateOptionsMenu();
}
@Override
public void onBackPressed(){
mPager.setAdapter(null);
super.onBackPressed();
}
@Override
protected void setUpViews() {
ViewCompat.setElevation($(R.id.appbar_container), getResources().getDimensionPixelSize(R.dimen.appbar_elevation));
mPager = $(R.id.pager);
TabLayout mTabLayout = $(R.id.tab_layout);
mPager.setAdapter(new PagerAdapter(getFragmentManager()));
mTabLayout.setupWithViewPager(mPager);
}
private void setUpShareAction() {
String title = "";
if (getSupportActionBar() != null && !TextUtils.isEmpty(getSupportActionBar().getTitle())) {
title = getSupportActionBar().getTitle().toString().replace(":", "");
}
String sendingText = String.format(getString(R.string.action_share_send_category),
title,
NHentaiUrl.getCategoryUrl(category, false)
);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_TEXT, sendingText);
intent.setType("text/plain");
if (mShareActionProvider != null) {
mShareActionProvider.setShareHistoryFileName("custom_share_history.xml");
mShareActionProvider.setShareIntent(intent);
}
Log.d("Me", "onPrepareOptionsMenu: Hey its not me 3");
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
getMenuInflater().inflate(R.menu.menu_category, menu);
Log.d("Me", "onPrepareOptionsMenu: Hey its not me 1");
MenuItem mFavItem = menu.findItem(R.id.action_favorite);
mFavItem.setIcon(isFavorite ? R.drawable.ic_favorite_white_24dp : R.drawable.ic_favorite_outline_white_24dp);
mFavItem.setTitle(isFavorite ? R.string.action_favorite_true : R.string.action_favorite_false);
MenuItem mShareItem = menu.findItem(R.id.action_share);
mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(mShareItem);
setUpShareAction();
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
Log.d("Me", "onPrepareOptionsMenu: Hey its not me 2");
if (id == R.id.action_favorite) {
if (isFavorite) {
mFCM.remove(mFCM.find(category));
} else {
mFCM.add(category);
}
mFCM.save();
isFavorite = !isFavorite;
Snackbar.make(
mPager,
isFavorite ? R.string.favorite_categories_add_finished : R.string.favorite_categories_remove_finished,
Snackbar.LENGTH_LONG
).show();
supportInvalidateOptionsMenu();
return true;
}
return super.onOptionsItemSelected(item);
}
public static void launch(AppCompatActivity activity, Category category) {
Intent intent = new Intent(activity, CategoryActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(EXTRA_CATEGORY_JSON, category.toJSONString());
activity.startActivity(intent);
}
private class PagerAdapter extends FragmentPagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PageListFragment.newInstance(NHentaiUrl.getCategoryUrl(category, position == 1));
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
return getResources().getStringArray(R.array.category_tabs_title) [position];
}
}
}