Newer
Older
music / app / src / main / java / com / lukas / music / ui / fragments / EditEnvelopeFragment.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.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import com.lukas.music.databinding.FragmentEditEnvelopeBinding
import com.lukas.music.instruments.Envelope
import com.lukas.music.util.smartSetup

class EditEnvelopeFragment(private val envelope: Envelope) : DialogFragment() {
    lateinit var binding: FragmentEditEnvelopeBinding

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentEditEnvelopeBinding.inflate(inflater)
        binding.attackSeek.smartSetup(5, 200, envelope::attack) {
            binding.attackText.text = "Attack: $it ms"
        }
        binding.delaySeek.smartSetup(5, 200, envelope::delay) {
            binding.delayText.text = "Delay: $it ms"
        }
        binding.sustainSeek.smartSetup(0, 100, envelope::sustain) {
            binding.sustainText.text = "Sustain: $it%"
        }
        binding.releaseSeek.smartSetup(5, 200, envelope::release) {
            binding.releaseText.text = "Release: $it ms"
        }
        binding.closeButton.setOnClickListener {
            dismiss()
        }
        return binding.root
    }

    override fun onStart() {
        super.onStart()
        dialog?.window?.setLayout(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
        )
    }
}