289 lines
7.4 KiB
Lua
289 lines
7.4 KiB
Lua
-- settings.lua - Settings app functionality
|
|
-- Handles toggles, navigation, and system settings
|
|
|
|
local settings_doc = nil
|
|
|
|
-- Settings state
|
|
local settings_state = {
|
|
wifi = true,
|
|
wifi_network = "MosisNetwork",
|
|
bluetooth = false,
|
|
airplane_mode = false,
|
|
location = true,
|
|
location_mode = "High accuracy",
|
|
brightness = 80,
|
|
auto_brightness = true,
|
|
dark_mode = true,
|
|
font_size = "Default",
|
|
sleep_timeout = "5 minutes",
|
|
sound_volume = 70,
|
|
ring_volume = 80,
|
|
vibration = true,
|
|
dnd = false,
|
|
battery_percent = 85,
|
|
battery_status = "Not charging",
|
|
storage_used = 32,
|
|
storage_total = 128
|
|
}
|
|
|
|
-- Initialize settings
|
|
function initSettings(doc)
|
|
print("[Settings] Initializing...")
|
|
settings_doc = doc
|
|
updateAllToggles()
|
|
updateAllSubtitles()
|
|
end
|
|
|
|
-- Update all toggle states
|
|
function updateAllToggles()
|
|
updateToggle("wifi", settings_state.wifi)
|
|
updateToggle("bluetooth", settings_state.bluetooth)
|
|
updateToggle("airplane", settings_state.airplane_mode)
|
|
updateToggle("location", settings_state.location)
|
|
end
|
|
|
|
-- Update a single toggle
|
|
function updateToggle(name, state)
|
|
if not settings_doc then return end
|
|
|
|
local toggle = settings_doc:GetElementById("toggle-" .. name)
|
|
if toggle then
|
|
if state then
|
|
toggle:SetClass("active", true)
|
|
else
|
|
toggle:SetClass("active", false)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Update all subtitles
|
|
function updateAllSubtitles()
|
|
if not settings_doc then return end
|
|
|
|
-- WiFi
|
|
local wifi_sub = settings_doc:GetElementById("subtitle-wifi")
|
|
if wifi_sub then
|
|
if settings_state.wifi then
|
|
wifi_sub.inner_rml = "Connected to " .. settings_state.wifi_network
|
|
else
|
|
wifi_sub.inner_rml = "Off"
|
|
end
|
|
end
|
|
|
|
-- Bluetooth
|
|
local bt_sub = settings_doc:GetElementById("subtitle-bluetooth")
|
|
if bt_sub then
|
|
bt_sub.inner_rml = settings_state.bluetooth and "On" or "Off"
|
|
end
|
|
|
|
-- Battery
|
|
local bat_sub = settings_doc:GetElementById("subtitle-battery")
|
|
if bat_sub then
|
|
bat_sub.inner_rml = settings_state.battery_percent .. "% - " .. settings_state.battery_status
|
|
end
|
|
|
|
-- Storage
|
|
local storage_sub = settings_doc:GetElementById("subtitle-storage")
|
|
if storage_sub then
|
|
storage_sub.inner_rml = settings_state.storage_used .. " GB of " .. settings_state.storage_total .. " GB used"
|
|
end
|
|
|
|
-- Location
|
|
local loc_sub = settings_doc:GetElementById("subtitle-location")
|
|
if loc_sub then
|
|
if settings_state.location then
|
|
loc_sub.inner_rml = "On - " .. settings_state.location_mode
|
|
else
|
|
loc_sub.inner_rml = "Off"
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Toggle WiFi
|
|
function toggleWifi()
|
|
settings_state.wifi = not settings_state.wifi
|
|
print("[Settings] WiFi: " .. tostring(settings_state.wifi))
|
|
|
|
updateToggle("wifi", settings_state.wifi)
|
|
updateAllSubtitles()
|
|
|
|
if showToast then
|
|
showToast(settings_state.wifi and "WiFi enabled" or "WiFi disabled")
|
|
end
|
|
end
|
|
|
|
-- Toggle Bluetooth
|
|
function toggleBluetooth()
|
|
settings_state.bluetooth = not settings_state.bluetooth
|
|
print("[Settings] Bluetooth: " .. tostring(settings_state.bluetooth))
|
|
|
|
updateToggle("bluetooth", settings_state.bluetooth)
|
|
updateAllSubtitles()
|
|
|
|
if showToast then
|
|
showToast(settings_state.bluetooth and "Bluetooth enabled" or "Bluetooth disabled")
|
|
end
|
|
end
|
|
|
|
-- Toggle Airplane Mode
|
|
function toggleAirplaneMode()
|
|
settings_state.airplane_mode = not settings_state.airplane_mode
|
|
print("[Settings] Airplane mode: " .. tostring(settings_state.airplane_mode))
|
|
|
|
if settings_state.airplane_mode then
|
|
-- Disable wireless when airplane mode is on
|
|
settings_state.wifi = false
|
|
settings_state.bluetooth = false
|
|
updateToggle("wifi", false)
|
|
updateToggle("bluetooth", false)
|
|
end
|
|
|
|
updateToggle("airplane", settings_state.airplane_mode)
|
|
updateAllSubtitles()
|
|
|
|
if showToast then
|
|
showToast(settings_state.airplane_mode and "Airplane mode on" or "Airplane mode off")
|
|
end
|
|
end
|
|
|
|
-- Toggle Location
|
|
function toggleLocation()
|
|
settings_state.location = not settings_state.location
|
|
print("[Settings] Location: " .. tostring(settings_state.location))
|
|
|
|
updateToggle("location", settings_state.location)
|
|
updateAllSubtitles()
|
|
|
|
if showToast then
|
|
showToast(settings_state.location and "Location enabled" or "Location disabled")
|
|
end
|
|
end
|
|
|
|
-- Open WiFi settings
|
|
function openWifiSettings()
|
|
print("[Settings] Opening WiFi settings...")
|
|
if navigateTo then
|
|
navigateTo("wifi_settings")
|
|
else
|
|
if showToast then
|
|
showToast("WiFi settings")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Open Bluetooth settings
|
|
function openBluetoothSettings()
|
|
print("[Settings] Opening Bluetooth settings...")
|
|
if showToast then
|
|
showToast("Bluetooth settings")
|
|
end
|
|
end
|
|
|
|
-- Open Display settings
|
|
function openDisplaySettings()
|
|
print("[Settings] Opening Display settings...")
|
|
if navigateTo then
|
|
navigateTo("display_settings")
|
|
else
|
|
if showToast then
|
|
showToast("Display settings")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Open Sound settings
|
|
function openSoundSettings()
|
|
print("[Settings] Opening Sound settings...")
|
|
if showToast then
|
|
showToast("Sound settings")
|
|
end
|
|
end
|
|
|
|
-- Open Notifications settings
|
|
function openNotificationsSettings()
|
|
print("[Settings] Opening Notifications settings...")
|
|
if showToast then
|
|
showToast("Notification settings")
|
|
end
|
|
end
|
|
|
|
-- Open Battery settings
|
|
function openBatterySettings()
|
|
print("[Settings] Opening Battery settings...")
|
|
if showToast then
|
|
showToast("Battery: " .. settings_state.battery_percent .. "%")
|
|
end
|
|
end
|
|
|
|
-- Open Storage settings
|
|
function openStorageSettings()
|
|
print("[Settings] Opening Storage settings...")
|
|
if showToast then
|
|
local used_percent = math.floor(settings_state.storage_used / settings_state.storage_total * 100)
|
|
showToast("Storage: " .. used_percent .. "% used")
|
|
end
|
|
end
|
|
|
|
-- Open Lock Screen settings
|
|
function openLockScreenSettings()
|
|
print("[Settings] Opening Lock Screen settings...")
|
|
if showToast then
|
|
showToast("Lock screen settings")
|
|
end
|
|
end
|
|
|
|
-- Open Privacy settings
|
|
function openPrivacySettings()
|
|
print("[Settings] Opening Privacy settings...")
|
|
if showToast then
|
|
showToast("Privacy settings")
|
|
end
|
|
end
|
|
|
|
-- Open Location settings
|
|
function openLocationSettings()
|
|
print("[Settings] Opening Location settings...")
|
|
if showToast then
|
|
showToast("Location settings")
|
|
end
|
|
end
|
|
|
|
-- Open About Phone
|
|
function openAboutPhone()
|
|
print("[Settings] Opening About Phone...")
|
|
if navigateTo then
|
|
navigateTo("about_phone")
|
|
else
|
|
if showToast then
|
|
showToast("Mosis Virtual Phone v1.0")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Open User Profile
|
|
function openUserProfile()
|
|
print("[Settings] Opening User Profile...")
|
|
if showToast then
|
|
showToast("User profile")
|
|
end
|
|
end
|
|
|
|
-- Search settings
|
|
function searchSettings(query)
|
|
print("[Settings] Searching: " .. query)
|
|
-- TODO: Implement settings search
|
|
end
|
|
|
|
-- Get setting value
|
|
function getSetting(key)
|
|
return settings_state[key]
|
|
end
|
|
|
|
-- Set setting value
|
|
function setSetting(key, value)
|
|
settings_state[key] = value
|
|
print("[Settings] Set " .. key .. " = " .. tostring(value))
|
|
updateAllToggles()
|
|
updateAllSubtitles()
|
|
end
|