package com.example.tabnav_test;




import static android.app.PendingIntent.getActivity;
import static android.provider.Settings.System.getString;
import static androidx.activity.result.ActivityResultCallerKt.registerForActivityResult;
import static androidx.core.content.ContextCompat.startActivities;
import static androidx.core.content.ContextCompat.startActivity;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;

import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.RingtoneManager;
import android.net.Uri;

import android.os.Bundle;
import android.os.Environment;

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;

import androidx.activity.result.contract.ActivityResultContract;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.recyclerview.widget.RecyclerView;

import com.example.tabnav_test.m_conf_maschine_adapter.ViewHolder;

public class m_conf_maschine_adapter extends RecyclerView.Adapter<ViewHolder>
{

// GetContent creates an ActivityResultLauncher<String> to allow you to pass
// in the mime type you'd like to allow the user to select



    public m_conf_maschine_adapter(String[] localDataSet)
    {


        // .. Attach the interface
        this.localDataSet = localDataSet;
    }


    String text;
    private String[] localDataSet;
    Context context;
    ViewGroup par;
    log_fav spinnerops;
    static final String RROJ_NR = "0";
    Basic_funct bsf;




    @NonNull
    @Override
    public m_conf_maschine_adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
    {

        context = parent.getContext();
        par = parent;
        View view = LayoutInflater.from(context).inflate(R.layout.m_conf_masch_list_layout, parent, false);




        // spinnerops =new log_fav(context);
        ///bsf=new Basic_funct();

        return new ViewHolder(view);

    }
    
    
    
    @Override
    public void onBindViewHolder(@NonNull m_conf_maschine_adapter.ViewHolder holder, int position)
    {
  
        
        m_database_ops mdo = new m_database_ops(context);

        int posi = position;
        Uri img_uri = null;
        ;
        String[] datasplit = localDataSet[posi].split(",");



        holder.m_name.setText("[" + datasplit[3] + "] " + datasplit[4]);
        holder.m_category.setText(datasplit[5]);
        holder.m_counter.setText(datasplit[6]);

        if(datasplit[8].contains("NULL")==true)
        {
            holder.m_view_pic.setImageResource(R.drawable.ic_baseline_agriculture_24);
        }
        else
        {
            String[] path = datasplit[8].split(":");
           // Log.d("BASI", Environment.getExternalStorageDirectory() + "/" + path[1]);


            try {
                Bitmap bMap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/" + path[1]);

                Bitmap bMapScaled = Bitmap.createScaledBitmap(bMap, 300, 200, true);
                holder.m_view_pic.setImageBitmap(bMapScaled);
            } catch (Exception e) {
                holder.m_view_pic.setImageResource(R.drawable.ic_baseline_agriculture_24);
            }

        }

        holder.delet_button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {

                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
                alertDialogBuilder.setTitle("Bestätige:");
                alertDialogBuilder.setMessage("Element aus der Datenbank entfernen?");
                alertDialogBuilder.setPositiveButton("Ja", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        int response = mdo.delet_id(datasplit[0]);
                        Toast.makeText(context.getApplicationContext(), String.valueOf(response), Toast.LENGTH_SHORT).show();
                        localDataSet = mdo.get_maschinen(RROJ_NR);
                        notifyItemRemoved(posi);
                        notifyItemRangeChanged(posi, localDataSet.length);

                    }
                });

                alertDialogBuilder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(context, "Aktion abgebrochen!", Toast.LENGTH_SHORT).show();
                    }
                });

                alertDialogBuilder.show();
            }
        });

        holder.update_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view)
            {

                LayoutInflater li = LayoutInflater.from(context);
                View promptsView = li.inflate(R.layout.m_add_maschine_dialog, null);

                EditText name = promptsView.findViewById(R.id.m_name);
                EditText nr = promptsView.findViewById(R.id.m_nr);
                Spinner category = promptsView.findViewById(R.id.m_category);
                EditText note = promptsView.findViewById(R.id.m_note);
                EditText counter = promptsView.findViewById(R.id.m_counter);
                ImageButton add_image = promptsView.findViewById(R.id.imageButton13);

               // m_pic = promptsView.findViewById(R.id.imageView);

                //m_database_ops mdo = new m_database_ops(getApplicationContext());

               // imgUri = null;


                add_image.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View view)
                    {


                        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                        intent.addCategory(Intent.CATEGORY_OPENABLE);
                        intent.setType("image/*");


                        ((Activity) context).startActivityForResult(intent, 2);

                    }
                });

               AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
                alertDialogBuilder.setView(promptsView);
                alertDialogBuilder.setTitle("Maschine $ndern");

                alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {



                        //(ID TEXT,PROJ_NR TEXT,DATE TEXT,TIME TEXT,NR TEXT,NAME TEXT,CATEGORY TEXT,COUNTER TEXT,NOTE TEXT,PIC_SRC TEXT,ONOFF_FLAG TEXT)");

                        dialogInterface.cancel();

                    }
                });

                alertDialogBuilder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.cancel();
                    }
                });

                // create alert dialog
               AlertDialog alertDialog = alertDialogBuilder.create();
                // show it
                alertDialog.show();



            }
        });
    }




    @Override
    public int getItemCount() {
        return localDataSet.length;

    }



    public class ViewHolder extends RecyclerView.ViewHolder
    {

        private final TextView m_name;
        private final TextView m_category;
        private final TextView m_counter;

        private final ImageButton delet_button;
        private final ImageButton update_button;

        private final Switch switch_onoff;

        private final ImageView m_view_pic;


        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            m_name = (TextView) itemView.findViewById(R.id.textView37);
            m_category = (TextView) itemView.findViewById(R.id.textView27);
            m_counter = (TextView) itemView.findViewById(R.id.textView35);

            m_view_pic = (ImageView) itemView.findViewById(R.id.m_imageView);

            switch_onoff = (Switch) itemView.findViewById(R.id.switch1);

            delet_button = (ImageButton) itemView.findViewById(R.id.imageButton5);
            update_button = (ImageButton) itemView.findViewById(R.id.imageButton6);

        }
    }



}








