package com.mareksebera.simpledilbert.favorites; import android.os.Bundle; import android.support.v4.view.MenuItemCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.mareksebera.simpledilbert.R; import com.mareksebera.simpledilbert.core.DilbertFragmentInterface; import com.mareksebera.simpledilbert.preferences.DilbertPreferences; import com.mareksebera.simpledilbert.utilities.ActionBarUtility; import java.util.Random; public final class DilbertFavoritedActivity extends AppCompatActivity implements DilbertFragmentInterface { public static final String INTENT_OFFLINE = "intent_extra_offline_mode"; private ViewPager viewPager; private final Random random = new Random(); private DilbertFavoritedFragmentAdapter adapter; public static final int MENU_RANDOM = 1; private final ViewPager.OnPageChangeListener pageChangedListener = new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { setTitle(adapter.getPageTitle(position)); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }; @Override protected void onCreate(Bundle savedInstance) { DilbertPreferences preferences = new DilbertPreferences(this); if (preferences.isForceLandscape()) setRequestedOrientation(preferences.getLandscapeOrientation()); setTheme(preferences.isDarkLayoutEnabled() ? R.style.AppThemeDark : R.style.AppThemeLight); super.onCreate(savedInstance); setContentView(R.layout.activity_dilbert_fragments); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } boolean isOfflineMode = getIntent().getBooleanExtra(INTENT_OFFLINE, false); viewPager = (ViewPager) findViewById(R.id.view_pager); adapter = new DilbertFavoritedFragmentAdapter( getSupportFragmentManager(), isOfflineMode ? preferences.getCachedDates() : preferences.getFavoritedItems()); if (adapter.getCount() == 0) { Toast.makeText(this, R.string.toast_no_favorites, Toast.LENGTH_LONG) .show(); finish(); } viewPager.addOnPageChangeListener(pageChangedListener); viewPager.setAdapter(adapter); viewPager.setCurrentItem(adapter.getCount()); if (preferences.isToolbarsHidden()) ActionBarUtility.toggleActionBar(this, viewPager); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItemCompat.setShowAsAction( menu.add(0, MENU_RANDOM, 1, R.string.menu_random).setIcon(R.drawable.ic_menu_shuffle), MenuItemCompat.SHOW_AS_ACTION_IF_ROOM ); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_RANDOM: viewPager.setCurrentItem(random.nextInt(adapter.getCount())); return true; case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } } // Compat helper method public void toggleActionBar() { ActionBarUtility.toggleActionBar(this, viewPager); } }