package de.apps4ics.mountainnavigation.pois;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;

import de.apps4ics.mountainnavigation.adapters.CheckboxImageAdapter;
import de.apps4ics.mountainnavigation.Features;
import de.apps4ics.mountainnavigation.MainActivity;
import de.apps4ics.mountainnavigation.R;
import de.apps4ics.mountainnavigation.handlers.PoiHandler;

/**
 * This file is part of MountainNavigation.
 *
 * MountainNavigation is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * MountainNavigation is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with MountainNavigation.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @copyright Copyright (c) 2016 Vinzenz Rosenkanz <vinzenz.rosenkranz@gmail.com>
 *
 * @author Vinzenz Rosenkranz <vinzenz.rosenkranz@gmail.com>
 */
public class AddBreakpointDialog extends DialogFragment {
    PoiHandler poiHandler;

    public AddBreakpointDialog(PoiHandler poiHandler){
        this.poiHandler = poiHandler;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final CheckboxImageAdapter adapter = new CheckboxImageAdapter(getActivity(), PoiHandler.getBreakPointOptions(), null, PoiHandler.getBreakPointOptionsImgs());
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(R.string.break_point_dialog_title)
                //.setIcon(res.getDrawable(R.drawable.break_point))
                .setPositiveButton(R.string.ok_button, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        int[] options = adapter.getCheckedItems();
                        int stone = 0;
                        int bench = 0;
                        int table = 0;
                        int roofed = 0;
                        for(int i=0; i<options.length; ++i){
                            switch(options[i]){
                                case 0:
                                    options[i] = Features.BREAK_STONE;
                                    stone = 1;
                                    break;
                                case 1:
                                    options[i] = Features.BREAK_BENCH;
                                    bench = 1;
                                    break;
                                case 2:
                                    options[i] = Features.BREAK_TABLE;
                                    table = 1;
                                    break;
                                case 3:
                                    options[i] = Features.BREAK_ROOFED;
                                    roofed = 1;
                                    break;
                            }
                        }
                        poiHandler.addPoi(new BreakPoint(0, stone, bench, table, roofed, null));
                    }
                })
                .setNegativeButton(R.string.cancel_button, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                })
                .setAdapter(adapter, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                });
        return builder.create();
    }
}
