@startuml actor User participant "Application Settings" as appstgs participant "Bluetooth Window" as btwndw participant "Service Bluetooth" as srvbt participant "Bluetooth Worker" as btwrkr participant "Service DB" as srvdb == Change Bluetooth status flow == User ->appstgs : Tries to open Bluetooth Window activate appstgs appstgs -> btwndw : Create Bluetooth Window activate btwndw deactivate appstgs btwndw -> srvbt : BluetoothMessage::RequestBluetoothStatus activate srvbt deactivate btwndw srvbt -> appstgs : BluetoothMessage::ResponseBluetoothStatus activate appstgs deactivate srvbt appstgs ->o btwndw : Recreate Bluetooth Window with new bluetoothStatus deactivate appstgs User -> btwndw : Changes bluetoothState activate btwndw btwndw -> srvbt : BluetoothMessage::SetBluetoothStatus deactivate btwndw activate srvbt srvbt -> srvbt : Cache received new value of bluetoothStatus srvbt ->o srvdb : Settings::setValue(bluetoothState) srvbt ->o srvdb : Settings::setValue(deviceVisibility) srvbt -> btwrkr : Pass cached Bluetooth settings activate btwrkr btwrkr ->o btwrkr : Reload Bluetooth settings deactivate btwrkr srvbt -> appstgs : BluetoothMessage::ResponseBluetoothStatus activate appstgs deactivate srvbt appstgs ->o btwndw : Recreate Bluetooth Window with new bluetoothStatus deactivate appstgs deactivate btwndw @enduml