Untitled
unknown
plain_text
a year ago
13 kB
10
Indexable
package com.example.alarmclock.fragment.addalaramfragmnet
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.NumberPicker
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders
import androidx.navigation.fragment.findNavController
import butterknife.ButterKnife
import com.example.alarmclock.utils.Alarm
import com.example.alarmclock.utils.AlarmDatabase
import com.example.alarmclock.viewmodel.CreateAlarmViewModel
import com.example.alarmclock.R
import com.example.alarmclock.databinding.BottomSheetDialogBinding
import com.example.alarmclock.databinding.DescBottomSheetBinding
import com.example.alarmclock.databinding.FragmentAddAlarmBinding
import com.example.alarmclock.databinding.RepeatBottomSheetBinding
import com.google.android.material.bottomsheet.BottomSheetDialog
import java.text.SimpleDateFormat
import java.util.*
class AddAlarmFragment : Fragment() {
    var recurring = false
    var monday = false
    var tuesday = false
    var wednesday = false
    var thursday = false
    var friday = false
    var saturday = false
    var sunday = false
    var isRun = false
    var count = 0
    private var desc: String? = null
    var vibration = false
    private lateinit var binding: FragmentAddAlarmBinding
    private var createAlarmViewModel: CreateAlarmViewModel? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        createAlarmViewModel = ViewModelProviders.of(this)[CreateAlarmViewModel::class.java]
    }
    @SuppressLint("SoonBlockedPrivateApi")
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentAddAlarmBinding.inflate(layoutInflater)
        hourPickerSetValue()
        minutePickerSetValue()
        setListeners()
        ButterKnife.bind(this, requireActivity())
        return binding.root
    }
    private fun setListeners() {
        binding.saveBtn.setOnClickListener {
            val alarmId = Random().nextInt(Int.MAX_VALUE)
            isRun = true
            // region ::Class
            val alarm = Alarm(
                alarmId,
                binding.numberPicker1.value,
                binding.numberPicker2.value,
                desc,
                System.currentTimeMillis(),
                started = true,
                recurring = recurring,
                monday = monday,
                tuesday = tuesday,
                wednesday = wednesday,
                thursday = thursday,
                friday = friday,
                saturday = saturday,
                sunday = sunday,
                isVibration = vibration
            )
            //endregion
            createAlarmViewModel?.insert(alarm)
            alarm.schedule(requireContext())
            findNavController().popBackStack()
        }
        binding.layout1.setOnClickListener {
            val bottomSheetDialog =
                BottomSheetDialog(requireContext(), R.style.BottomSheetDialogTheme)
            val bottomView = layoutInflater.inflate(R.layout.bottom_sheet_dialog, null, false)
            bottomSheetDialog.setContentView(bottomView)
            bottomSheetDialog.show()
            val bind = BottomSheetDialogBinding.bind(bottomView)
            bind.layout1.setOnClickListener {
                count++
                recurring = false
                setRepetitionValue(bind.text1.text.toString())
                bottomSheetDialog.dismiss()
            }
            bind.layout2.setOnClickListener {
                recurring = true
                count++
                monday = true
                tuesday = true
                wednesday = true
                thursday = true
                friday = true
                sunday = true
                saturday = true
                setRepetitionValue(bind.text2.text.toString())
                bottomSheetDialog.dismiss()
            }
            bind.layout3.setOnClickListener {
                recurring = true
                count++
                monday = true
                tuesday = true
                wednesday = true
                thursday = true
                friday = true
                setRepetitionValue(bind.text3.text.toString())
                bottomSheetDialog.dismiss()
            }
            bind.layout4.setOnClickListener {
                setRepetitionValue(bind.text4.text.toString())
                setSelectionType()
                bottomSheetDialog.dismiss()
            }
        }
        binding.closeBtn.setOnClickListener {
            requireActivity().onBackPressed()
        }
        binding.decsBtn.setOnClickListener {
            val bottomSheetDialog =
                BottomSheetDialog(requireContext(), R.style.BottomSheetDialogTheme)
            val bottomView = layoutInflater.inflate(R.layout.desc_bottom_sheet, null, false)
            bottomSheetDialog.setContentView(bottomView)
            bottomSheetDialog.show()
            val descBottomSheetBinding = DescBottomSheetBinding.bind(bottomView)
            setDescription(descBottomSheetBinding, bottomSheetDialog)
        }
        //region::Check
        binding.vibration.setOnCheckedChangeListener { p0, isChecked ->
            if (isChecked) {
                vibration = true
            } else {
                vibration
            }
        }
        binding.layout2.setOnClickListener {
            binding.vibration.isChecked = vibration
            if (vibration) {
                binding.vibration.isChecked = false
                vibration = false
            } else {
                binding.vibration.isChecked = true
                vibration = true
            }
        }
    }
    private fun setDescription(
        descBottomSheetBinding: DescBottomSheetBinding,
        bottomSheetDialog: BottomSheetDialog
    ) {
        descBottomSheetBinding.desc.setText(desc)
        descBottomSheetBinding.cancelButton.setOnClickListener {
            bottomSheetDialog.dismiss()
        }
        descBottomSheetBinding.positiveButton.setOnClickListener {
            binding.desc.text = descBottomSheetBinding.desc.text
            desc = descBottomSheetBinding.desc.text.toString()
            bottomSheetDialog.dismiss()
        }
    }
    private fun setSelectionType() {
        val bottomSheetDialog1 =
            BottomSheetDialog(requireContext(), R.style.BottomSheetDialogTheme)
        val bottomView1 = layoutInflater.inflate(R.layout.repeat_bottom_sheet, null, false)
        bottomSheetDialog1.setContentView(bottomView1)
        bottomSheetDialog1.show()
        val bind1 = RepeatBottomSheetBinding.bind(bottomView1)
        if (count > 0) {
            monday = false
            tuesday = false
            wednesday = false
            thursday = false
            friday = false
            sunday = false
            saturday = false
        }
        count = 0
        setMonday(bind1)
        setTuesday(bind1)
        setWednesday(bind1)
        setThursday(bind1)
        setFriday(bind1)
        setSaturday(bind1)
        setSunday(bind1)
        bind1.cancelButton.setOnClickListener {
            bottomSheetDialog1.dismiss()
        }
        bind1.positiveButton.setOnClickListener {
            bottomSheetDialog1.dismiss()
        }
    }
    private fun setSunday(bind1: RepeatBottomSheetBinding) {
        var check = sunday
        bind1.sunday.isChecked = sunday
        bind1.sunday.setOnClickListener {
            if (check) {
                recurring = false
                bind1.sunday.isChecked = false
                check = false
                sunday = false
            } else {
                recurring = true
                sunday = true
                check = true
                bind1.sunday.isChecked = true
            }
        }
    }
    private fun setSaturday(bind1: RepeatBottomSheetBinding) {
        var check = saturday
        bind1.saturday.isChecked = saturday
        bind1.saturday.setOnClickListener {
            if (check) {
                recurring = false
                bind1.saturday.isChecked = false
                check = false
                saturday = false
            } else {
                recurring = true
                saturday = true
                check = true
                bind1.saturday.isChecked = true
            }
        }
    }
    private fun setFriday(bind1: RepeatBottomSheetBinding) {
        var check = friday
        bind1.friday.isChecked = friday
        bind1.friday.setOnClickListener {
            if (check) {
                recurring = false
                bind1.friday.isChecked = false
                check = false
                friday = false
            } else {
                recurring = true
                friday = true
                check = true
                bind1.friday.isChecked = true
            }
        }
    }
    private fun setThursday(bind1: RepeatBottomSheetBinding) {
        var check = thursday
        bind1.thursday.isChecked = thursday
        bind1.thursday.setOnClickListener {
            if (check) {
                recurring = false
                bind1.thursday.isChecked = false
                check = false
                thursday = false
            } else {
                recurring = true
                thursday = true
                check = true
                bind1.thursday.isChecked = true
            }
        }
    }
    private fun setWednesday(bind1: RepeatBottomSheetBinding) {
        var check = wednesday
        bind1.wednesday.isChecked = wednesday
        bind1.wednesday.setOnClickListener {
            if (check) {
                recurring = false
                bind1.wednesday.isChecked = false
                check = false
                wednesday = false
            } else {
                recurring = true
                wednesday = true
                check = true
                bind1.wednesday.isChecked = true
            }
        }
    }
    private fun setTuesday(bind1: RepeatBottomSheetBinding) {
        var check = tuesday
        bind1.tuesday.isChecked = tuesday
        bind1.tuesday.setOnClickListener {
            if (check) {
                recurring = false
                bind1.tuesday.isChecked = false
                check = false
                tuesday = false
            } else {
                recurring = true
                tuesday = true
                check = true
                bind1.tuesday.isChecked = true
            }
        }
    }
    private fun setMonday(bind1: RepeatBottomSheetBinding) {
        var check = monday
        bind1.monday.isChecked = monday
        bind1.monday.setOnClickListener {
            if (check) {
                recurring = false
                bind1.monday.isChecked = false
                check = false
                monday = false
            } else {
                recurring = true
                monday = true
                check = true
                bind1.monday.isChecked = true
            }
        }
    }
    @SuppressLint("SimpleDateFormat")
    private fun minutePickerSetValue() {
        binding.numberPicker2.setOnLongPressUpdateInterval(100)
        binding.numberPicker2.wrapSelectorWheel = true
        binding.numberPicker2.descendantFocusability = NumberPicker.FOCUS_BLOCK_DESCENDANTS
        binding.numberPicker2.isSoundEffectsEnabled = true
        binding.numberPicker2.minValue = 0
        binding.numberPicker2.maxValue = 59
        binding.numberPicker2.setFormatter { p0 ->
            var value = ""
            value = if (p0 < 10) {
                "0$p0"
            } else {
                p0.toString()
            }
            value
        }
        val minute = SimpleDateFormat("mm").format(Date())
        binding.numberPicker2.value = minute.toInt()
    }
    @SuppressLint("SimpleDateFormat")
    private fun hourPickerSetValue() {
        binding.numberPicker1.descendantFocusability = NumberPicker.FOCUS_BLOCK_DESCENDANTS
        binding.numberPicker1.isSoundEffectsEnabled = true
        binding.numberPicker1.wrapSelectorWheel = true
        binding.numberPicker1.minValue = 0
        binding.numberPicker1.maxValue = 23
        binding.numberPicker1.setFormatter { p0 ->
            var value = ""
            value = if (p0 < 10) {
                "0$p0"
            } else {
                p0.toString()
            }
            value
        }
        val hour = SimpleDateFormat("HH").format(Date())
        binding.numberPicker1.value = hour.toInt()
    }
    private fun setRepetitionValue(value: String?) {
        binding.selectionType.text = value
    }
}
Editor is loading...
Leave a Comment