function getBtDevice() {
    var connectedDevices = [];

    for (var i = 0; i < btManager.devices.length; ++i) {
        var device = btManager.devices[i];
        if (device.connected) {
            connectedDevices.push(device);
        }
    }

    if (btManager.bluetoothBlocked) {
        return i18n("Disabled");
    } else if (!btManager.bluetoothOperational) {
        if (!btManager.adapters.length) {
            return i18n("Unavailable");
        } else {
            return i18n("Offline");
        }
    } else if (connectedDevices.length >= 1) {
        return i18n(connectedDevices[0].name)
    } else {
        return i18n("Not Connected");
    }
}

function toggleBluetooth()
{
    var enable = !btManager.bluetoothOperational;
    btManager.bluetoothBlocked = !enable;

    for (var i = 0; i < btManager.adapters.length; ++i) {
        var adapter = btManager.adapters[i];
        adapter.powered = enable;
    }
}

function checkInhibition() {
    var inhibited = false;

    if (!NotificationManager.Server.valid) {
        return false;
    }
    console.log("pass")
    var inhibitedUntil = notificationSettings.notificationsInhibitedUntil;
    if (!isNaN(inhibitedUntil.getTime())) {
        inhibited |= (Date.now() < inhibitedUntil.getTime());
    }

    if (notificationSettings.notificationsInhibitedByApplication) {
        inhibited |= true;
    }

    if (notificationSettings.inhibitNotificationsWhenScreensMirrored) {
        inhibited |= notificationSettings.screensMirrored;
    }
    return inhibited;
}

function toggleDnd() {
    if (Funcs.checkInhibition()) {
        notificationSettings.notificationsInhibitedUntil = undefined;
        notificationSettings.revokeApplicationInhibitions();

        // overrules current mirrored screen setup, updates again when screen configuration
        notificationSettings.screensMirrored = false;
        notificationSettings.save();

        return;
    }

    var d = new Date();
    d.setYear(d.getFullYear()+1)

    notificationSettings.notificationsInhibitedUntil = d
    notificationSettings.save()
}

function revokeInhibitions() {
    notificationSettings.notificationsInhibitedUntil = undefined;
    notificationSettings.revokeApplicationInhibitions();
    // overrules current mirrored screen setup, updates again when screen configuration changes
    notificationSettings.screensMirrored = false;

    notificationSettings.save();
}

function toggleRedshiftInhibition() {
    if (!monitor.available) {
        return;
    }
    switch (inhibitor.state) {
    case Redshift.Inhibitor.Inhibiting:
    case Redshift.Inhibitor.Inhibited:
        inhibitor.uninhibit();
        break;
    case Redshift.Inhibitor.Uninhibiting:
    case Redshift.Inhibitor.Uninhibited:
        inhibitor.inhibit();
        break;
    }
}

function volumePercent(volume) {
    return volume / PulseAudio.NormalVolume * 100
}

function boundVolume(volume) {
    return Math.max(PulseAudio.MinimalVolume, Math.min(volume, PulseAudio.NormalVolume));
}

function changeVolumeByPercent(volumeObject, deltaPercent) {
    const oldVolume = volumeObject.volume;
    const oldPercent = volumePercent(oldVolume);
    const targetPercent = oldPercent + deltaPercent;
    const newVolume = boundVolume(Math.round(PulseAudio.NormalVolume * (targetPercent/100)));
    const newPercent = volumePercent(newVolume);
    volumeObject.muted = newPercent == 0;
    volumeObject.volume = newVolume;
    return newPercent;
}
function volIconName(volume, muted, prefix) {
    console.log(volume, muted, prefix)
    if (!prefix) {
        prefix = "audio-volume";
    }
    var icon = null;
    var percent = volume / PulseAudio.NormalVolume
    if (percent <= 0.0 || muted) {
        icon = prefix + "-muted";
    } else if (percent <= 0.25) {
        icon = prefix + "-low";
    } else if (percent <= 0.75) {
        icon = prefix + "-medium";
    } else {
        icon = prefix + "-high";
    }
    return icon;
}
function sumarDia(a) {
        var fechaActual = new Date();
        fechaActual.setDate(fechaActual.getDate() + a);
        var fechaFormateada = Qt.formatDateTime(fechaActual, "dddd");
        console.log("Fecha con un día añadido:", fechaFormateada);
        return fechaFormateada
    }
