Newer
Older
music / app / src / main / java / com / lukas / music / ui / fragments / InstrumentListFragment.kt
/*
 * Copyright (C) 2022 Lukas Eisenhauer
 *
 * This program 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.
 *
 * This program 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 this program.  If not, see <https://www.gnu.org/licenses/>.
 */

package com.lukas.music.ui.fragments

import android.app.AlertDialog
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.lukas.music.databinding.FragmentInstrumentListBinding
import com.lukas.music.instruments.Instrument
import com.lukas.music.instruments.MonoInstrument
import com.lukas.music.instruments.PolyInstrument
import com.lukas.music.ui.adapters.InstrumentAdapter
import com.lukas.music.util.makeMoveCallback

class InstrumentListFragment : Fragment() {
    lateinit var binding: FragmentInstrumentListBinding

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentInstrumentListBinding.inflate(inflater)
        binding.recyclerView.adapter = InstrumentAdapter(this)
        binding.recyclerView.layoutManager = LinearLayoutManager(context)
        val helper = ItemTouchHelper(makeMoveCallback(Instrument.instruments))
        helper.attachToRecyclerView(binding.recyclerView)

        val builder = AlertDialog.Builder(binding.root.context)
        builder.setTitle("Instrument type:")
            .setItems(
                arrayOf("mono", "poly")
            ) { _, index ->
                when (index) {
                    0 -> Instrument.instruments += MonoInstrument("New mono Instrument")
                    1 -> Instrument.instruments += PolyInstrument("New poly Instrument")
                }
                (binding.recyclerView.adapter as RecyclerView.Adapter).notifyItemInserted(
                    Instrument.instruments.size - 1
                )
            }
        builder.create()
        binding.addInstrumentButton.setOnClickListener {
            builder.show()
        }
        return binding.root
    }
}