package com.alienpants.leafpicrevived.settings;

import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

import androidx.appcompat.app.AlertDialog;
import androidx.cardview.widget.CardView;

import com.alienpants.leafpicrevived.R;
import com.alienpants.leafpicrevived.util.StaticMapProvider;
import com.orhanobut.hawk.Hawk;

import org.horaapps.liz.ThemedActivity;

/**
 * Created by dnld on 12/9/16.
 */

public class MapProviderSetting extends ThemedSetting {

    public MapProviderSetting(ThemedActivity activity) {
        super(activity);
    }

    public void choseProvider() {
        final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity(), getActivity().getDialogStyle());
        View dialogLayout = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_map_provider, null);
        TextView dialogTitle = dialogLayout.findViewById(R.id.title);
        ((CardView) dialogLayout.findViewById(R.id.dialog_chose_provider_title)).setCardBackgroundColor(getActivity().getCardBackgroundColor());
        dialogTitle.setBackgroundColor(getActivity().getPrimaryColor());

        final RadioGroup mapProvider = dialogLayout.findViewById(R.id.radio_group_maps_provider);
        RadioButton radioGoogleMaps = dialogLayout.findViewById(R.id.radio_google_maps);
        RadioButton radioMapBoxStreets = dialogLayout.findViewById(R.id.radio_mapb_streets);
        RadioButton radioMapBoxDark = dialogLayout.findViewById(R.id.radio_mapb_dark);
        RadioButton radioMapBoxLight = dialogLayout.findViewById(R.id.radio_mapb_light);
        RadioButton radioTyler = dialogLayout.findViewById(R.id.radio_osm_tyler);

        getActivity().themeRadioButton(radioGoogleMaps);
        getActivity().themeRadioButton(radioMapBoxStreets);
        getActivity().themeRadioButton(radioMapBoxDark);
        getActivity().themeRadioButton(radioMapBoxLight);
        getActivity().themeRadioButton(radioTyler);

        ((TextView) dialogLayout.findViewById(R.id.header_proprietary_maps)).setTextColor(getActivity().getTextColor());
        ((TextView) dialogLayout.findViewById(R.id.header_free_maps)).setTextColor(getActivity().getTextColor());
        switch (StaticMapProvider.fromValue(Hawk.get(getActivity().getString(R.string.preference_map_provider),
                StaticMapProvider.GOOGLE_MAPS.getValue()))) {
            case GOOGLE_MAPS:
            default:
                radioGoogleMaps.setChecked(true);
                break;
            case MAP_BOX:
                radioMapBoxStreets.setChecked(true);
                break;
            case MAP_BOX_DARK:
                radioMapBoxDark.setChecked(true);
                break;
            case MAP_BOX_LIGHT:
                radioMapBoxLight.setChecked(true);
                break;
            case TYLER:
                radioTyler.setChecked(true);
                break;
        }

        dialogBuilder.setNegativeButton(getActivity().getString(R.string.cancel).toUpperCase(), null);
        dialogBuilder.setPositiveButton(getActivity().getString(R.string.ok_action).toUpperCase(), new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch (mapProvider.getCheckedRadioButtonId()) {
                    case R.id.radio_google_maps:
                    default:
                        Hawk.put(getActivity().getString(R.string.preference_map_provider), StaticMapProvider.GOOGLE_MAPS.getValue());
                        break;
                    case R.id.radio_mapb_streets:
                        Hawk.put(getActivity().getString(R.string.preference_map_provider), StaticMapProvider.MAP_BOX.getValue());
                        break;
                    case R.id.radio_osm_tyler:
                        Hawk.put(getActivity().getString(R.string.preference_map_provider), StaticMapProvider.TYLER.getValue());
                        break;
                    case R.id.radio_mapb_dark:
                        Hawk.put(getActivity().getString(R.string.preference_map_provider), StaticMapProvider.MAP_BOX_DARK.getValue());
                        break;
                    case R.id.radio_mapb_light:
                        Hawk.put(getActivity().getString(R.string.preference_map_provider), StaticMapProvider.MAP_BOX_LIGHT.getValue());
                        break;
                }
            }
        });
        dialogBuilder.setView(dialogLayout);
        dialogBuilder.show();
    }
}