package tv.emby.embyatv.ui;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.Spinner;
import mediabrowser.apiinteraction.Response;
import mediabrowser.model.entities.DisplayPreferences;
import tv.emby.embyatv.R;
import tv.emby.embyatv.TvApp;
import tv.emby.embyatv.util.Utils;
/**
* Created by Eric on 8/23/2015.
*/
public class DisplayPrefsPopup {
final int WIDTH = Utils.convertDpToPixel(TvApp.getApplication(), 350);
final int HEIGHT = Utils.convertDpToPixel(TvApp.getApplication(), 310);
PopupWindow mPopup;
Activity mActivity;
View mAnchor;
DisplayPreferences mPrefs;
Spinner mImageSize;
Spinner mImageType;
Spinner mInitialView;
View mDefaultViewLayout;
Boolean mChanged = false;
public DisplayPrefsPopup(Activity activity, View anchor, boolean allowViewDefault, final Response<Boolean> response) {
mActivity = activity;
LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.display_prefs, null);
mPopup = new PopupWindow(layout, WIDTH, HEIGHT);
mPopup.setFocusable(true);
mPopup.setOutsideTouchable(true);
mPopup.setBackgroundDrawable(new BitmapDrawable()); // necessary for popup to dismiss
mPopup.setAnimationStyle(R.style.PopupSlideInRight);
mAnchor = anchor;
mImageSize = (Spinner) layout.findViewById(R.id.posterSize);
ArrayAdapter<String> displaySizes = new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_item);
{
displaySizes.add("Auto");
displaySizes.add("Small");
displaySizes.add("Medium");
displaySizes.add("Large");
}
mImageSize.setAdapter(displaySizes);
mImageSize.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mPrefs.getCustomPrefs().put("PosterSize", Integer.toString(position));
mChanged = true;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
mImageType = (Spinner) layout.findViewById(R.id.imageType);
ArrayAdapter<String> imageTypes = new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_item);
{
imageTypes.add("Default");
imageTypes.add("Thumb");
imageTypes.add("Banner");
}
mImageType.setAdapter(imageTypes);
mImageType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mPrefs.getCustomPrefs().put("ImageType", Integer.toString(position));
mChanged = true;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
mInitialView = (Spinner) layout.findViewById(R.id.initialView);
if (allowViewDefault) {
ArrayAdapter<String> viewTypes = new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_item);
{
viewTypes.add("Smart Screen");
viewTypes.add("Grid View");
}
mInitialView.setAdapter(viewTypes);
mInitialView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mPrefs.getCustomPrefs().put("DefaultView", Integer.toString(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
} else {
mInitialView.setVisibility(View.GONE);
layout.findViewById(R.id.defaultViewLbl).setVisibility(View.GONE);
}
Button done = (Button) layout.findViewById(R.id.btnDone);
done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
response.onResponse(mChanged);
dismiss();
}
});
mDefaultViewLayout = layout.findViewById(R.id.defaultViewLayout);
}
public boolean isShowing() {
return (mPopup != null && mPopup.isShowing());
}
public void show(DisplayPreferences prefs, String collectionType) {
mPrefs = prefs;
mChanged = false;
if (collectionType == null) collectionType = "";
mImageSize.setSelection(Integer.parseInt(Utils.NullCoalesce(prefs.getCustomPrefs().get("PosterSize"), "0")));
mImageType.setSelection(Integer.parseInt(Utils.NullCoalesce(prefs.getCustomPrefs().get("ImageType"), "0")));
switch (collectionType) {
case "movies":
case "tvshows":
case "music":
mDefaultViewLayout.setVisibility(View.VISIBLE);
mInitialView.setSelection(Integer.parseInt(Utils.NullCoalesce(prefs.getCustomPrefs().get("DefaultView"), "0")));
break;
default:
mDefaultViewLayout.setVisibility(View.GONE);
}
mPopup.showAtLocation(mAnchor, Gravity.TOP | Gravity.CENTER_HORIZONTAL, mAnchor.getRight() - 40, mAnchor.getTop());
}
public void dismiss() {
if (mPopup != null && mPopup.isShowing()) {
mPopup.dismiss();
}
}
}