content: package com.alium.orin.preferences;
  
  import android.annotation.SuppressLint;
  import android.app.Dialog;
  import android.content.Context;
  import android.content.DialogInterface;
  import android.os.Bundle;
  import android.support.annotation.NonNull;
  import android.support.v4.app.DialogFragment;
  import android.support.v4.view.PagerAdapter;
  import android.support.v4.view.ViewPager;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.ImageView;
  import android.widget.TextView;
  
  import com.afollestad.materialdialogs.DialogAction;
  import com.afollestad.materialdialogs.MaterialDialog;
  import com.alium.orin.util.PreferenceUtil;
  import com.heinrichreimersoftware.materialintro.view.InkPageIndicator;
  import com.alium.orin.R;
  import com.alium.orin.ui.fragments.player.NowPlayingScreen;
  import com.alium.orin.util.ViewUtil;
  
  import butterknife.ButterKnife;
  
  /**
   * @author Karim Abou Zeid (kabouzeid)
   */
  public class NowPlayingScreenPreferenceDialog extends DialogFragment implements MaterialDialog.SingleButtonCallback, ViewPager.OnPageChangeListener {
      public static final String TAG = NowPlayingScreenPreferenceDialog.class.getSimpleName();
  
      private DialogAction whichButtonClicked;
      private int viewPagerPosition;
  
      public static NowPlayingScreenPreferenceDialog newInstance() {
          return new NowPlayingScreenPreferenceDialog();
      }
  
      @NonNull
      @Override
      public Dialog onCreateDialog(Bundle savedInstanceState) {
          @SuppressLint("InflateParams") View view = LayoutInflater.from(getContext()).inflate(R.layout.preference_dialog_now_playing_screen, null);
          ViewPager viewPager = ButterKnife.findById(view, R.id.now_playing_screen_view_pager);
          viewPager.setAdapter(new NowPlayingScreenAdapter(getContext()));
          viewPager.addOnPageChangeListener(this);
          viewPager.setPageMargin((int) ViewUtil.convertDpToPixel(32, getResources()));
          viewPager.setCurrentItem(PreferenceUtil.getInstance(getContext()).getNowPlayingScreen().ordinal());
  
          InkPageIndicator pageIndicator = ButterKnife.findById(view, R.id.page_indicator);
          pageIndicator.setViewPager(viewPager);
  
          return new MaterialDialog.Builder(getContext())
                  .title(R.string.pref_title_now_playing_screen_appearance)
                  .positiveText(android.R.string.ok)
                  .negativeText(android.R.string.cancel)
                  .onAny(this)
                  .customView(view, false)
                  .build();
      }
  
      @Override
      public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
          whichButtonClicked = which;
      }
  
      @Override
      public void onDismiss(DialogInterface dialog) {
          super.onDismiss(dialog);
          if (whichButtonClicked == DialogAction.POSITIVE) {
              PreferenceUtil.getInstance(getContext()).setNowPlayingScreen(NowPlayingScreen.values()[viewPagerPosition]);
          }
      }
  
      @Override
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
  
      }
  
      @Override
      public void onPageSelected(int position) {
          this.viewPagerPosition = position;
      }
  
      @Override
      public void onPageScrollStateChanged(int state) {
  
      }
  
      private static class NowPlayingScreenAdapter extends PagerAdapter {
  
          private Context context;
  
          public NowPlayingScreenAdapter(Context context) {
              this.context = context;
          }
  
          @Override
          public Object instantiateItem(ViewGroup collection, int position) {
              NowPlayingScreen nowPlayingScreen = NowPlayingScreen.values()[position];
  
              LayoutInflater inflater = LayoutInflater.from(context);
              ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.preference_now_playing_screen_item, collection, false);
              collection.addView(layout);
  
              ImageView image = ButterKnife.findById(layout, R.id.image);
              TextView title = ButterKnife.findById(layout, R.id.title);
              image.setImageResource(nowPlayingScreen.drawableResId);
              title.setText(nowPlayingScreen.titleRes);
  
              return layout;
          }
  
          @Override
          public void destroyItem(ViewGroup collection, int position, Object view) {
              collection.removeView((View) view);
          }
  
          @Override
          public int getCount() {
              return NowPlayingScreen.values().length;
          }
  
          @Override
          public boolean isViewFromObject(View view, Object object) {
              return view == object;
          }
  
          @Override
          public CharSequence getPageTitle(int position) {
              return context.getString(NowPlayingScreen.values()[position].titleRes);
          }
      }
  }