package com.iven.lfflfeedreader.mainact;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ContextThemeWrapper;
import com.iven.lfflfeedreader.R;
import com.iven.lfflfeedreader.domparser.RSSFeed;
import com.iven.lfflfeedreader.utils.Preferences;
@SuppressLint("InlinedApi")
public class ArticleActivity extends AppCompatActivity {
//feed
RSSFeed feed;
//position
int pos;
//ContextThemeWrapper
ContextThemeWrapper themewrapper;
//context
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//apply preferences
//apply activity's theme if dark theme is enabled
themewrapper = new ContextThemeWrapper(getBaseContext(), this.getTheme());
Preferences.applyTheme(themewrapper, getBaseContext());
//set the navbar tint if the preference is enabled
Preferences.applyNavTint(this, getBaseContext(), R.color.accent_color);
//set LightStatusBar
Preferences.applyLightIcons(this);
//set the immersive mode (only for >= KitKat) if the preference is enabled
Preferences.applyImmersiveMode(this);
//set the view
setContentView(R.layout.article_activity);
//get the feed using intents
feed = (RSSFeed) getIntent().getExtras().get("feed");
pos = getIntent().getExtras().getInt("pos");
//get the context
context = getBaseContext();
//initialize ViewPager and the adapter
ViewPager pager;
PagerAdapter mPagerAdapter;
//set the viewpager that allows to swipe through articles
mPagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(mPagerAdapter);
pager.setCurrentItem(pos);
pager.setClipToPadding(false);
}
//(only for >= KitKat)
//fix Immersive mode navigation becomes sticky after minimise-restore
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
Preferences.applyImmersiveMode(this);
}
}
//viewpager custom adapter, use FragmentStatePagerAdapter to handle a large number of items
private class MyPagerAdapter extends FragmentStatePagerAdapter {
MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
ArticleFragment frag = new ArticleFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("feed", feed);
bundle.putInt("pos", position);
frag.setArguments(bundle);
return frag;
}
@Override
public int getCount() {
return feed.getItemCount();
}
}
}