commit 12/02/2026
This commit is contained in:
155
src/database/table/Table_Adzan.kt
Normal file
155
src/database/table/Table_Adzan.kt
Normal file
@@ -0,0 +1,155 @@
|
||||
package database.table
|
||||
|
||||
import com.batoulapps.adhan.CalculationMethod
|
||||
import com.batoulapps.adhan.CalculationParameters
|
||||
import com.batoulapps.adhan.Coordinates
|
||||
import com.batoulapps.adhan.Madhab
|
||||
import com.batoulapps.adhan.PrayerTimes
|
||||
import com.batoulapps.adhan.data.DateComponents
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.TimeZone
|
||||
|
||||
/**
|
||||
* Class for calculating prayer times (Adzan) based on latitude, longitude, and time zone.
|
||||
* @param latitude The latitude of the location. Default is Monas, Jakarta (latitude: -6.1751).
|
||||
* @param longitude The longitude of the location. Default is Monas, Jakarta (longitude: 106.8272).
|
||||
* @param timezone The time zone for formatting prayer times. Default is "Asia/Jakarta".
|
||||
*/
|
||||
@Suppress("unused")
|
||||
class Table_Adzan(val latitude: Double = -6.1751, val longitude: Double = 106.8272, val timezone : TimeZone = TimeZone.getTimeZone("Asia/Jakarta")) {
|
||||
|
||||
var coordinate: Coordinates = Coordinates(latitude, longitude)
|
||||
val params : CalculationParameters = CalculationMethod.OTHER.parameters
|
||||
val timeformatter = SimpleDateFormat("HH:mm")
|
||||
val dateformatter = SimpleDateFormat("dd/MM/yyyy")
|
||||
|
||||
var fajar_enable = false
|
||||
var dzuhur_enable = false
|
||||
var ashar_enable = false
|
||||
var maghrib_enable = false
|
||||
var isya_enable = false
|
||||
|
||||
var fajar_sound = ""
|
||||
var dzuhur_sound = ""
|
||||
var ashar_sound = ""
|
||||
var maghrib_sound = ""
|
||||
var isya_sound = ""
|
||||
|
||||
init{
|
||||
// sumber chatgpt Kemenag
|
||||
params.fajrAngle = 20.0
|
||||
params.ishaAngle = 18.0
|
||||
params.madhab = Madhab.SHAFI
|
||||
timeformatter.timeZone = timezone
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the time zone used for formatting prayer times.
|
||||
* @param timezone The new AdzanTimeZone.
|
||||
*/
|
||||
fun ChangeTimezone(timezone: AdzanTimeZone) {
|
||||
ChangeTimeZone(timezone.toTimeZoneString())
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the time zone used for formatting prayer times.
|
||||
* @param timezoneString The new time zone string (e.g., "Asia/Jakarta").
|
||||
*/
|
||||
fun ChangeTimeZone(timezoneString: String) {
|
||||
timeformatter.timeZone = TimeZone.getTimeZone(timezoneString)
|
||||
}
|
||||
|
||||
/**
|
||||
* Set prayer time adjustments in minutes.
|
||||
* @param fajrMinute Adjustment for Fajr prayer time in minutes.
|
||||
* @param dhuhrMinute Adjustment for Dhuhr prayer time in minutes.
|
||||
* @param asrMinute Adjustment for Asr prayer time in minutes.
|
||||
* @param maghribMinute Adjustment for Maghrib prayer time in minutes.
|
||||
* @param ishaMinute Adjustment for Isha prayer time in minutes.
|
||||
*/
|
||||
fun SetPrayerAdjustment(fajrMinute: Int = 0, dhuhrMinute: Int = 0, asrMinute: Int = 0,maghribMinute: Int = 0, ishaMinute: Int = 0) {
|
||||
params.adjustments.fajr = fajrMinute
|
||||
params.adjustments.dhuhr = dhuhrMinute
|
||||
params.adjustments.asr = asrMinute
|
||||
params.adjustments.maghrib = maghribMinute
|
||||
params.adjustments.isha = ishaMinute
|
||||
}
|
||||
/**
|
||||
* Change the coordinates used for Adzan calculations.
|
||||
* @param lat The new latitude.
|
||||
* @param long The new longitude.
|
||||
*/
|
||||
fun ChangeCoordinate(lat: Double, long: Double) {
|
||||
coordinate = Coordinates(lat, long)
|
||||
}
|
||||
|
||||
fun ChangeLatitude(lat: Double) {
|
||||
coordinate = Coordinates(lat, coordinate.longitude)
|
||||
}
|
||||
|
||||
fun ChangeLongitude(long: Double) {
|
||||
coordinate = Coordinates(coordinate.latitude, long)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get prayer times for a specific date string in the format "dd/MM/yyyy".
|
||||
* @param date_string The date string for which to get prayer times.
|
||||
* @return An AdzanPrayerTime object containing the prayer times, or null if the date string is invalid.
|
||||
*/
|
||||
fun GetPrayerTimes(date_string: String) : AdzanPrayerTime?{
|
||||
try{
|
||||
val date = dateformatter.parse(date_string)
|
||||
return GetPrayerTimes(date)
|
||||
} catch (e: Exception){
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get prayer times for a specific date.
|
||||
* @param date The date for which to get prayer times.
|
||||
* @return An AdzanPrayerTime object containing the prayer times.
|
||||
*/
|
||||
fun GetPrayerTimes(date: Date) : AdzanPrayerTime{
|
||||
val prayer = PrayerTimes(coordinate, DateComponents.from(date), params)
|
||||
return AdzanPrayerTime(
|
||||
dateformatter.format(date),
|
||||
timeformatter.format(prayer.fajr),
|
||||
timeformatter.format(prayer.dhuhr),
|
||||
timeformatter.format(prayer.asr),
|
||||
timeformatter.format(prayer.maghrib),
|
||||
timeformatter.format(prayer.isha)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get prayer times for the current date.
|
||||
* @return An AdzanPrayerTime object containing the prayer times for today.
|
||||
*/
|
||||
fun GetTodayPrayerTimes() : AdzanPrayerTime{
|
||||
return GetPrayerTimes(Date())
|
||||
}
|
||||
|
||||
/**
|
||||
* Get prayer times for all days in a specific month and year.
|
||||
* @param month The month (1-12) for which to get prayer times.
|
||||
* @param year The year for which to get prayer times.
|
||||
* @return A list of AdzanPrayerTime objects for each day in the specified month and year.
|
||||
*/
|
||||
fun GetMonthlyPrayerTimes(month: Int, year: Int) : List<AdzanPrayerTime>{
|
||||
val prayerTimesList = mutableListOf<AdzanPrayerTime>()
|
||||
val calendar = java.util.Calendar.getInstance()
|
||||
calendar.set(year, month - 1, 1) // Month is 0-based in Calendar
|
||||
val daysInMonth = calendar.getActualMaximum(java.util.Calendar.DAY_OF_MONTH)
|
||||
|
||||
for (day in 1..daysInMonth) {
|
||||
calendar.set(year, month - 1, day)
|
||||
val date = calendar.time
|
||||
val prayerTimes = GetPrayerTimes(date)
|
||||
prayerTimesList.add(prayerTimes)
|
||||
}
|
||||
|
||||
return prayerTimesList
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user