true
Activity Ended: */*
false
*
*
true
App Task Started: *
false
*
true
Automagic Startup
true
true
Bluetooth Device Connected: All devices
false
true
true
Bluetooth Device Disconnected: All devices
false
true
true
Display State: Off
true
false
true
General Broadcast: on cyanogenmod.platform.intent.action.PROFILE_SELECTED
true
cyanogenmod.platform.intent.action.PROFILE_SELECTED
name = getString('name');
lastName = getString('lastName');
false
true
Global Variable Date/Time: global_SmartUnlock_lockTime
false
global_SmartUnlock_lockTime
false
1478261364994
1478261364994
false
false
true
Global Variable Date/Time: global_SmartUnlock_timedUnlock
false
global_SmartUnlock_timedUnlock
true
1410803400000
1478047500000
false
false
true
Global Variable: global_SmartUnlock_manual
true
global_SmartUnlock_manual
true
Notification on Statusbar Selected: All IDs
true
false
BUILTIN
LOCKED
false
false
false
#ff00ff00
500
500
false
#ffff0000
true
DEFAULT
DEFAULT
PRIVATE
false
false
false
true
{global_SmartUnlock_NotificationID}
true
Power Source: Connected
true
true
true
true
true
true
Power Source: Disconnected
true
false
true
true
true
true
Shortcut: Lock device
true
Lock device
true
Shortcut: SmartUnlock configure
true
SmartUnlock configure
true
Shortcut: Toggle manual unlock
true
Toggle manual unlock
true
Shutdown
true
true
User Present
true
true
WiFi Connected: All SSIDs
true
true
true
WiFi Disconnected: All SSIDs
true
true
true
App Task Running: {trustedPkg} (most recent)
{trustedPkg}
true
true
Bluetooth Device Connected: Any device
true
00:0E:9F:D8:F4:2A
BMW 72232
ANY
true
Bluetooth Enabled
true
Confirm Dialog: Add “{app}“ ({pkg}) as trusted App?
SmartUnlock: {menuTitle}
Add “{app}“ ({pkg}) as trusted App?
No
Yes
NO
false
60000
true
false
Confirm Dialog: Add “{bluetooth_name}“ as trusted device?
SmartUnlock: {menuTitle}
Add “{bluetooth_name}“ ({bluetooth_address}) as trusted Bluetooth device?
No
Yes
NO
false
60000
true
true
Confirm Dialog: Remove WiFi “{WiFiName}“ ({ssid}) from trusted connections?
SmartUnlock: {menuTitle}
Remove WiFi “{WiFiName}“ ({ssid}) from trusted connections?
No
Yes
NO
false
60000
true
true
Confirm Dialog: Remove “{app}“ ({pkg}) from list of trusted Apps?
SmartUnlock: {menuTitle}
Remove “{app}“ ({pkg}) from list of trusted Apps?
No
Yes
NO
false
60000
true
false
Confirm Dialog: Remove “{bluetooth_name}“ from trusted Bluetooth devices?
SmartUnlock: {menuTitle}
Remove “{bluetooth_name}“ ({bluetooth_address}) as trusted Bluetooth device?
No
Yes
IGNORE
false
60000
true
false
Confirm remove location
SmartUnlock trusted location
Remove “{locationName}“ from trusted locations?
No
Yes
NO
false
60000
true
true
Expression: (indexApps != null) AND (index == indexApps)
(indexApps != null)
AND (index == indexApps)
true
Expression: (indexBluetooth != null) AND (index == indexBluetooth)
(indexBluetooth != null)
AND (index == indexBluetooth)
true
Expression: (indexLocation != null) AND (index == indexLocation)
(indexLocation != null)
AND (index == indexLocation)
true
Expression: (indexLockType != null) AND (index == indexLockType)
(indexLockType != null)
AND (index == indexLockType)
true
Expression: (indexSettings != null) AND (index == indexSettings)
(indexSettings != null)
AND (index == indexSettings)
true
Expression: (indexTimed != null) AND (index == indexTimed)
(indexTimed != null)
AND (index == indexTimed)
true
Expression: (indexWiFi != null) AND (index == indexWiFi)
(indexWiFi != null)
AND (index == indexWiFi)
true
Expression: (locationName != null) AND (locationDetails != null)
(locationName != null) AND (locationDetails != null)
true
Expression: (packages == null) OR (packages == '')
(packages == null) OR (packages == '')
true
Expression: (value != locationName)
(value != locationName)
true
Expression: (value != null) AND (value != '')
(value != null) AND (value != '')
true
Expression: address != null
address != null
true
Expression: app_name != null
app_name != null
true
Expression: battery_plugged != null
battery_plugged != null
true
Expression: bt_index < length(connected_devices_addresses)
bt_index < length(connected_devices_addresses)
false
Expression: cancelTimedUnlock
convertNull(cancelTimedUnlock, false)
true
Expression: convertNull(global_SmartUnlock_locked, false)
convertNull(global_SmartUnlock_locked, false)
true
Expression: convertNull(global_SmartUnlock_locked, true)
convertNull(global_SmartUnlock_locked, true)
true
Expression: convertNull(global_SmartUnlock_manual, false)
convertNull(global_SmartUnlock_manual, false)
false
Expression: exists location?
getMapValue(global_SmartUnlock_trustedLocations, value) != null
true
Expression: getMapValue(global_SmartUnlock_trustedApps, pkg) != null
getMapValue(global_SmartUnlock_trustedApps, pkg) != null
true
Expression: getMapValue(global_SmartUnlock_trustedBluetooth, bluetooth_address) == null
getMapValue(global_SmartUnlock_trustedBluetooth, bluetooth_address) == null
true
Expression: getMapValue(global_SmartUnlock_trustedWiFi, ssid) != null
getMapValue(global_SmartUnlock_trustedWiFi, ssid) != null
true
Expression: global_SmartUnlock_initAtUnlock
global_SmartUnlock_initAtUnlock
true
Expression: global_SmartUnlock_lockType != lastLockType
global_SmartUnlock_lockType != lastLockType
true
Expression: global_SmartUnlock_lockType != name
global_SmartUnlock_lockType != name
true
Expression: global_SmartUnlock_showOnScreenNotification == 2
global_SmartUnlock_showOnScreenNotification == 2
true
Expression: index < length(list)
index < length(list)
true
Expression: index == 0
index == 0
true
Expression: index == 1
index == 1
true
Expression: index == 2
index == 2
true
Expression: index == 3
index == 3
true
Expression: isEmpty(AppMap)
isEmpty(AppMap)
true
Expression: isEmpty(global_SmartUnlock_trustedStates)
isEmpty(global_SmartUnlock_trustedStates)
false
Expression: menu selected
(operation != "cancel")
AND
(index < length(menuItems)-1)
false
Expression: near trusted location?
for (key in getMapKeys(global_SmartUnlock_trustedLocations)) {
tmpLoc = getMapValue(global_SmartUnlock_trustedLocations, key);
loc = newLocation(getMapValue(tmpLoc, 'latitude'), getMapValue(tmpLoc, 'longitude'));
if (distance(loc, location) < 500) {
nearLocation = key;
}
}
nearLocation != null
true
Expression: notification_id == global_SmartUnlock_notificationID
notification_id == global_SmartUnlock_notificationID
true
Expression: operation != "cancel"
operation != "cancel"
true
Expression: pkg == null
pkg == null
true
Expression: pkgIndex < length(trustedPkgs)
pkgIndex < length(trustedPkgs)
false
Expression: show notifications
global_SmartUnlock_showOnScreenNotification != 0
false
Expression: SmartUnlock Apps enabled?
getMapValue(global_SmartUnlock_trustOptions, 'App') AND NOT isEmpty(global_SmartUnlock_trustedApps)
false
Expression: SmartUnlock Bluetooth enabled?
getMapValue(global_SmartUnlock_trustOptions, 'Bluetooth') AND NOT isEmpty(global_SmartUnlock_trustedBluetooth)
false
Expression: SmartUnlock location enabled?
getMapValue(global_SmartUnlock_trustOptions, 'Location')
false
Expression: SmartUnlock Power enabled?
getMapValue(global_SmartUnlock_trustOptions, 'AC charging') OR
getMapValue(global_SmartUnlock_trustOptions, 'USB') OR
getMapValue(global_SmartUnlock_trustOptions, 'Wireless charging')
false
Expression: SmartUnlock Timed enabled?
global_SmartUnlock_timedUnlock != null
false
Expression: SmartUnlock WiFi enabled?
getMapValue(global_SmartUnlock_trustOptions, 'WiFi') AND NOT isEmpty(global_SmartUnlock_trustedWiFi)
true
Expression: ssid != null
ssid != null
false
Expression: trustDetail changed
(getMapValue(global_SmartUnlock_trustedStates, trustedState) != null)
AND
(getMapValue(global_SmartUnlock_trustedStates, trustedState) != trustDetail)
false
Expression: trustDetail trusted
containsElement(
split(
getMapValue(
global_SmartUnlock_trustedStates,
trustedState),
','),
trustDetail)
false
Expression: trusted device connected
// Prepare containsElement
trustDetail = getElement(list, index);
index = index + 1;
// Expression result
containsElement(
connected_devices_addresses, trustDetail);
false
Expression: trusted state active
containsElement(
getMapKeys(
global_SmartUnlock_trustedStates),
trustedState)
true
Expression: trustedPkg == null
trustedPkg == null
true
Expression: trustedState != null
trustedState != null
false
Expression: valid location details
NOT isEmpty(locationDetails) AND (locationName != null)
true
Flow Enabled: SmartUnlock_Trigger_App
SmartUnlock_Trigger_App
true
Flow Enabled: SmartUnlock_Trigger_Bluetooth
SmartUnlock_Trigger_Bluetooth
true
Flow Enabled: SmartUnlock_Trigger_Manual
SmartUnlock_Trigger_Manual
true
Flow Enabled: SmartUnlock_Trigger_Timeout
SmartUnlock_Trigger_Timeout
true
Flow Enabled: SmartUnlock_Trigger_WiFi
SmartUnlock_Trigger_WiFi
true
Flow Enabled: {triggerName}
{triggerName}
true
Keyguard Locked
true
Power Source Connected
true
true
true
true
true
Screen On
true
WiFi Connected: All SSIDs
true
true
WiFi State: Enabled
false
true
false
false
false
Delete location trigger template
{export_path}
false
false
Delete unused location trigger
{triggerName}
true
false
Disable all location triggers
false
SmartUnlock_Trigger_Location_*
false
Disable flow SmartUnlock_Trigger_App
false
SmartUnlock_Trigger_App
false
Disable flow SmartUnlock_Trigger_Bluetooth
false
SmartUnlock_Trigger_Bluetooth
false
Disable flow SmartUnlock_Trigger_Power
false
SmartUnlock_Trigger_Power
false
Disable flow SmartUnlock_Trigger_Timed
false
SmartUnlock_Trigger_Timed
false
Disable flow SmartUnlock_Trigger_WiFi
false
SmartUnlock_Trigger_WiFi
false
Enable flow SmartUnlock_Trigger_App
true
SmartUnlock_Trigger_App
false
Enable flow SmartUnlock_Trigger_Bluetooth
true
SmartUnlock_Trigger_Bluetooth
false
Enable flow SmartUnlock_Trigger_Power
true
SmartUnlock_Trigger_Power
false
Enable flow SmartUnlock_Trigger_Timed
true
SmartUnlock_Trigger_Timed
false
Enable flow SmartUnlock_Trigger_WiFi
true
SmartUnlock_Trigger_WiFi
false
Enable flow {triggerName}
true
{triggerName}
true
Execute Command: pm list packages -e in
pm list packages -e
300000
packages
error
exit_code
true
Execute Flows: SmartUnlock_addState
SmartUnlock_addState
false
true
false
true
Execute Flows: SmartUnlock_checkNotification
SmartUnlock_checkNotification
false
true
false
true
Execute Flows: SmartUnlock_checkTrigger
SmartUnlock_checkTrigger
false
true
false
true
Execute Flows: SmartUnlock_checkTrustedState
SmartUnlock_checkTrustedState
false
true
true
true
Execute Flows: SmartUnlock_cloneLocationTrigger
SmartUnlock_cloneLocationTrigger
false
true
false
true
Execute Flows: SmartUnlock_configure
SmartUnlock_configure
false
false
false
true
Execute Flows: SmartUnlock_configureApps
SmartUnlock_configureApps
false
true
false
true
Execute Flows: SmartUnlock_configureBluetooth
SmartUnlock_configureBluetooth
false
true
false
true
Execute Flows: SmartUnlock_configureLocation
SmartUnlock_configureLocation
false
true
false
true
Execute Flows: SmartUnlock_configureLocationEdit
SmartUnlock_configureLocationEdit
false
true
false
true
Execute Flows: SmartUnlock_configureOptions
SmartUnlock_configureOptions
false
true
true
true
Execute Flows: SmartUnlock_configureTimedUnlock
SmartUnlock_configureTimedUnlock
false
true
true
true
Execute Flows: SmartUnlock_configureUnlockedLockType
SmartUnlock_configureUnlockedLockType
false
true
true
true
Execute Flows: SmartUnlock_configureWiFi
SmartUnlock_configureWiFi
false
true
false
true
Execute Flows: SmartUnlock_initLocation
SmartUnlock_initLocation
false
true
true
true
Execute Flows: SmartUnlock_initSmartUnlock
SmartUnlock_initSmartUnlock
false
true
true
true
Execute Flows: SmartUnlock_lockDevice
SmartUnlock_lockDevice
false
true
false
true
Execute Flows: SmartUnlock_removeState
SmartUnlock_removeState
false
true
false
true
Execute Flows: SmartUnlock_selectApp
SmartUnlock_selectApp
false
true
true
true
Execute Flows: SmartUnlock_startTimeout
SmartUnlock_startTimeout
false
false
false
true
Execute Flows: SmartUnlock_stopTimeout
SmartUnlock_stopTimeout
false
true
false
true
Execute Flows: SmartUnlock_toggleManual
SmartUnlock_toggleManual
false
false
true
true
Execute Flows: SmartUnlock_Trigger_App
SmartUnlock_Trigger_App
false
false
false
true
Execute Flows: SmartUnlock_Trigger_Bluetooth
SmartUnlock_Trigger_Bluetooth
false
false
false
true
Execute Flows: SmartUnlock_Trigger_Manual
SmartUnlock_Trigger_Manual
false
false
true
true
Execute Flows: SmartUnlock_Trigger_WiFi
SmartUnlock_Trigger_WiFi
false
true
false
true
Execute Flows: SmartUnlock_unlockDevice
SmartUnlock_unlockDevice
false
true
false
true
Execute Flows: SmartUnlock_updateLock
SmartUnlock_updateLock
false
true
false
true
Execute Flows: {triggerName}
{triggerName}
false
true
false
false
Export location trigger template
SmartUnlock_Trigger_Location_#location#
flow_SmartUnlock_template.xml
false
Export SmartUnlock flows
*SmartUnlock*
SmartUnlock_Trigger_Location_*
SmartUnlock.xml
true
HTTP Request: GET https://maps.googleapis.com/maps/api/geocode/xml?latlng={location,locationformat,decimal} store in locationXML
https://maps.googleapis.com/maps/api/geocode/xml?latlng={location,locationformat,decimal}
true
false
GET
X_WWW_FORM_URLENCODED
text/plain
Lastname=XYZ,Firstname=ABC
10000
false
true
locationXML
/storage/emulated/0/Download/file.bin
true
false
Import location trigger template
{export_path}
true
true
Init Variable Location: last known location into location
location
false
network
false
500
true
60000
true
Init Variable Location: new location into location using Balanced Power/Accuracy, min. 250m, Timeout 30s
location
true
gms.balanced_power_accuracy
true
250
true
30000
false
Input Dialog single choice: {menuTitle} {menuItems}
SmartUnlock: {menuTitle}
SINGLE_CHOICE_MENU
{menuItems,listformat,comma}
false
60000
false
false
false
false
Input Dialog: Enter friendly name for device {bluetooth_name}
SmartUnlock: Add trusted Bluetooth device
TEXT
Enter friendly name for device {bluetooth_name}
{bluetooth_name}
false
60000
false
false
false
false
Input Dialog: enter friendly name for WiFi {ssid}
SmartUnlock: Add trusted WiFi
TEXT
Enter friendly name for WiFi {ssid}
{ssid}
false
60000
false
false
false
true
Input Dialog: Latitude of “{locationName}“ Number Enter latitude of location:
Latitude of “{locationName}“
NUMBER
Enter latitude of location:
{latitude}
false
60000
false
false
false
true
Input Dialog: Location “{locationName}“ Text Enter new name of location:
Location “{locationName}“
TEXT
Enter new name of location:
{locationName}
false
60000
false
false
false
true
Input Dialog: Longitude of “{locationName}“ Number Enter longitude of location:
Longitude of “{locationName}“
NUMBER
Enter longitude of location:
{longitude}
false
60000
false
false
false
true
Input Dialog: Radius of “{locationName}“ Number Enter radius of location:
Radius of “{locationName}“
NUMBER
Enter radius of location:
{radius}
false
60000
false
false
false
true
Input Dialog: Select App Single Choice Menu {allApps}
Select App
SINGLE_CHOICE_MENU
{allApps}
false
60000
false
false
false
true
Input Dialog: SmartUnlock: new location Text Enter name for new trusted location
SmartUnlock: new location
TEXT
Enter name for new trusted location
{locationName}
false
60000
false
false
false
true
Input Dialog: SmartUnlock: {menuTitle} Multi Choice {availableOptions,listformat,comma}
SmartUnlock: {menuTitle}
MULTI_CHOICE
{availableOptions,listformat,comma}
{selectedOptions,listformat,comma}
false
60000
No
false
false
false
false
Input Dialog: timeout in minutes
SmartUnlock: timeout in minutes
NUMBER
Enter minutes before device locks itself
{global_SmartUnlock_timeout}
false
60000
false
false
false
false
Input Dialog: unlock until time
SmartUnlock: Timed unlock until
TIME
Select target time for lock
{time,dateformat,HH:mm}
false
60000
false
false
false
false
Load location trigger template into variable
{export_path}
utf-8
triggerSource
true
Lock Device
false
Notification on Screen: "{app}“ is already trusted App
true
SmartUnlock:{"\r\n"}“{app}“ ({pkg}) is already trusted App
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: Bluetooth not enabled
true
SmartUnlock:{"\r\n"}Bluetooth is not enabled
200
250
false
1
true
false
TOP_LEFT
0
0
true
Notification on Screen: Building App list, please wait...
true
Building App list, please wait...
200
250
false
1
false
false
TOP_LEFT
0
0
false
Notification on Screen: CM profile change
true
CM profile change:{"\r\n"}{lastName}->{name}
200
250
false
1
false
false
TOP_LEFT
0
0
false
Notification on Screen: getting current location
true
SmartUnlock: getting current location
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: location removed
true
SmartUnlock:{"\r\n"}“{locationName}“ removed from trusted locations
200
250
false
1
false
false
TOP_LEFT
0
0
false
Notification on Screen: location with name exists
true
SmartUnlock:{"\r\n"}A location with name “{locationName}“ already exists
200
250
false
1
true
false
TOP_LEFT
0
0
true
Notification on Screen: Lock disabled by{"\r\n"}{trustDetails} (long)
true
Lock disabled by{"\r\n"}{trustDetails}
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: near trusted location
true
SmartUnlock:{"\r\n"}The new location is less than 500m from trusted location “{nearLocation}“
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: new location added
true
SmartUnlock: New trusted location “{locationName}“ added
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: No App selected
true
SmartUnlock:{"\r\n"}No new trusted App selected locationID
200
250
false
1
false
false
TOP_LEFT
0
0
false
Notification on Screen: No Bluetooth device connected
true
SmartUnlock:{"\r\n"}No Bluetooth device connected
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: no precise location
true
SmartUnlock: could not get a precise location
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: No WiFi connected
true
SmartUnlock:{"\r\n"}No WiFi is connected
200
250
false
1
true
false
TOP_LEFT
0
0
true
Notification on Screen: SmartUnlock:{"\r\n"}Cannot access list of installed apps{"\r\n"}{error} (long)
true
SmartUnlock:{"\r\n"}Cannot access list of installed apps{"\r\n"}{error}
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: timeout in minutes
true
SmartUnlock:{"\r\n"}Lock timeout is set to {global_SmartUnlock_timeout} minutes
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: WiFi not enabled
true
SmartUnlock:{"\r\n"}WiFi is not enabled
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: WiFi “{ssid}“ added
true
SmartUnlock:{"\r\n"}WiFi “{ssid}“ added to trusted WiFi connections
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: {notifyText}
true
SmartUnlock:{"\r\n"}{notifyText}
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: “{app}“ was added to trusted Apps
true
SmartUnlock:{"\r\n"}“{app}“ ({pkg}) was added as trusted App
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: “{app}“ was removed from trusted Apps
true
SmartUnlock:{"\r\n"}“{app}“ ({pkg}) was removed as trusted App
200
250
false
1
false
false
TOP_LEFT
0
0
false
Notification on Screen: “{bluetooth_name}“ added as trusted device
true
SmartUnlock:{"\r\n"}“{bluetooth_name}“ ({bluetooth_address}) added as trusted device
200
250
false
1
false
false
TOP_LEFT
0
0
false
Notification on Screen: “{bluetooth_name}“ removed from trusted devices
true
SmartUnlock:{"\r\n"}“{bluetooth_name}“ ({bluetooth_address}) was removed from trusted Bluetooth devices
200
250
false
1
false
false
TOP_LEFT
0
0
false
Notification on Screen: “{ssid}“ already trusted
true
SmartUnlock:{"\r\n"}“{ssid}“ is already a trusted WiFi connection
200
250
false
1
true
false
TOP_LEFT
0
0
false
Notification on Screen: “{WiFiName}“ removed
true
SmartUnlock:{"\r\n"}“{WiFiName}“ ({ssid}) removed from trusted WiFi connections
200
250
false
1
true
false
TOP_LEFT
0
0
true
Notification on Statusbar: CM profile mismatch Notification
BUILTIN
NOTIFICATION
CM profile mismatch
SmartLock: {global_SmartUnlock_lockType}, actual: {name}
false
false
false
#ff00ff00
500
500
false
false
#ffff0000
false
false
false
1
DEFAULT
DEFAULT
PUBLIC
false
false
false
0
100
false
false
true
Notification on Statusbar: Device is locked (tap to unlock) Locked ID {global_SmartUnlock_notificationID}
BUILTIN
LOCKED
Device is locked (tap to unlock)
Lock enabled
false
false
false
#ff00ff00
500
500
false
false
#ffff0000
true
true
true
{global_SmartUnlock_notificationID}
DEFAULT
HIGH
PUBLIC
false
false
false
0
100
false
false
true
Notification on Statusbar: Device is unlocked (tap to lock) Locked ID {global_SmartUnlock_notificationID}
BUILTIN
LOCKED
Device is unlocked (tap to lock)
Auto-locking {global_SmartUnlock_timeout} {timeoutUnit} after screen off
false
false
false
#ff00ff00
500
500
false
false
#ffff0000
true
true
true
{global_SmartUnlock_notificationID}
DEFAULT
HIGH
PUBLIC
false
false
false
0
100
false
false
Execute Flows: SmartUnlock_toggleManual
Execute Flows: SmartUnlock_configure
true
Notification on Statusbar: Device is unlocked (tap to lock) Unlocked ID {global_SmartUnlock_notificationID}
BUILTIN
UNLOCKED
Device is unlocked (tap to lock)
Lock disabled by {trustedStates}
false
false
false
#ff00ff00
500
500
true
false
#ffff0000
true
true
true
{global_SmartUnlock_notificationID}
DEFAULT
HIGH
PUBLIC
true
{trustDetails}
false
false
0
100
false
false
Execute Flows: SmartUnlock_toggleManual
Execute Flows: SmartUnlock_configure
true
Open URL in Browser: http://maps.google.com/maps?q={location,locationformat,decimal}
http://maps.google.com/maps?q={location,locationformat,decimal}
false
false
Script: add App
false
Script: add Bluetooth device
false
Script: add location
false
Script: add trustDetail to notifyText
false
Script: add trusted state
false
Script: add WiFi connection
true
Script: app = getElement(AppList, index); pkg = getMapValue(AppMap, app)
true
Script: app = null; pkg = null;
true
Script: bluetooth_address = getElement(connected_devices_addresses, bt_index); bluetooth_name = getElement(connected_devices_names, bt_index); bt_index = bt_index + 1;
true
Script: bt_index = 0
false
Script: calculate time until
false
Script: calculate timed unlock
false
Script: calculate timeout
false
Script: extract locationName from response
false
Script: get current trustDetail
false
Script: get power source
true
Script: global_SmartUnlock_initAtUnlock = true; global_SmartUnlock_trustedStates = newMap(); global_SmartUnlock_manual = false;
true
Script: global_SmartUnlock_locked = false
true
Script: global_SmartUnlock_locked = true
true
Script: global_SmartUnlock_manual = not global_SmartUnlock_manual
true
Script: global_SmartUnlock_manualAtInit = true
false
Script: init insecure/disabled lock settings
false
Script: init secure lock settings
true
Script: lastLockType = global_SmartUnlock_lockType
true
Script: latitude = value
true
Script: longitude = value
false
Script: prepare App loop
false
Script: prepare app menu
false
Script: prepare App remove confirmation
false
Script: prepare avail. states menu
false
Script: prepare Bluetooth loop
false
Script: prepare Bluetooth menu
false
Script: prepare Bluetooth remove confirmation
false
Script: prepare location edit
false
Script: prepare location edit menu
false
Script: prepare location loop
false
Script: prepare location menu
false
Script: prepare notification
false
Script: prepare options menu
false
Script: prepare settings menu
false
Script: Prepare timed unlock menu
false
Script: prepare WiFi menu
false
Script: prepare WiFi remove confirmation
false
Script: process list of Apps
false
Script: process location loop
false
Script: process location trigger template
false
Script: process trust options
true
Script: radius = value
false
Script: remove App
false
Script: remove Bluetooth device
false
Script: remove location
false
Script: Remove trusted state
false
Script: remove WiFi connection
true
Script: removeVariable('global_SmartUnlock_timedUnlock')
false
Script: reset trusted states
false
Script: save new latitude/longitude/radius
false
Script: save new location name
false
Script: save new timeout
false
Script: save timed unlock
false
Script: SmartUnlock init global vars
true
Script: time = value
false
Script: toggle show notifications
false
Script: toggle unlocked lock type
true
Script: trustDetail = null
true
Script: trustDetail = ssid
true
Script: trustDetail = trustedPkg
true
Script: trustedPkg = getElement(trustedPkgs, pkgIndex); pkgIndex = pkgIndex + 1;
true
Script: trustedState = 'App running'
true
Script: trustedState = 'Bluetooth'
true
Script: trustedState = 'Charging'
true
Script: trustedState = 'Location'
true
Script: trustedState = 'Manual'
true
Script: trustedState = 'Timed'
true
Script: trustedState = 'WiFi'
true
Set CyanogenMod Profile: {global_SmartUnlock_lockType}
{global_SmartUnlock_lockType}
true
Set Flow State: Disable SmartUnlock_Trigger_Timeout,SmartUnlock_Trigger_Location_#location#
false
SmartUnlock_Trigger_Timeout,SmartUnlock_Trigger_Location_#location#
true
Set Flow State: Enable SmartUnlock_*,Shortcut: SmartUnlock_*
true
SmartUnlock_*,Shortcut: SmartUnlock_*
SmartUnlock_Trigger_Timeout,SmartUnlock_Trigger_Location_#location#
true
Set Flow State: Enable SmartUnlock_Trigger_Timeout
true
SmartUnlock_Trigger_Timeout
true
Set System Setting: Secure lock_screen_allow_private_notifications to {privateNotifications}
SECURE
lock_screen_allow_private_notifications
{privateNotifications}
true
true
Set System Setting: Secure status_bar_locked_on_secure_keyguard to {1 - statusBar}
SECURE
status_bar_locked_on_secure_keyguard
{1 - statusBar}
true
true
Set System Setting: System power_menu_lockscreen to {powerMenu}
SYSTEM
power_menu_lockscreen
{powerMenu}
true
true
Sleep: {global_SmartUnlock_gracePeriod} (allow device sleep)
{global_SmartUnlock_gracePeriod}
false
false
false
Write location trigger template back to file
{export_path}
{triggerSource}
false
Shortcut: SmartUnlock_configure
SmartUnlock
true
PARALLEL
Shortcut: SmartUnlock configure
Execute Flows: SmartUnlock_configure
Shortcut: SmartUnlock_lockDevice
SmartUnlock
true
PARALLEL
Shortcut: Lock device
Execute Flows: SmartUnlock_lockDevice
Shortcut: SmartUnlock_toggleManual
SmartUnlock
true
PARALLEL
Shortcut: Toggle manual unlock
Execute Flows: SmartUnlock_toggleManual
SmartUnlock_addState
SmartUnlock
true
PARALLEL
Expression: trustedState != null
Screen On
Notification on Screen: {notifyText}
Execute Flows: SmartUnlock_checkTrustedState
Expression: trusted state active
Expression: trustDetail trusted
Script: add trusted state
Expression: show notifications
Script: add trustDetail to notifyText
SmartUnlock_checkNotification
SmartUnlock
true
PARALLEL
120
Expression: global_SmartUnlock_showOnScreenNotification == 2
Notification on Screen: Lock disabled by{"\r\n"}{trustDetails} (long)
Expression: isEmpty(global_SmartUnlock_trustedStates)
Expression: convertNull(global_SmartUnlock_locked, false)
Notification on Statusbar: Device is unlocked (tap to lock) Unlocked ID {global_SmartUnlock_notificationID}
Notification on Statusbar: Device is locked (tap to unlock) Locked ID {global_SmartUnlock_notificationID}
Notification on Statusbar: Device is unlocked (tap to lock) Locked ID {global_SmartUnlock_notificationID}
Script: prepare notification
SmartUnlock_checkTrigger
SmartUnlock
true
STOP
600
Disable flow SmartUnlock_Trigger_Bluetooth
Disable flow SmartUnlock_Trigger_WiFi
Disable flow SmartUnlock_Trigger_App
Disable flow SmartUnlock_Trigger_Power
Enable flow SmartUnlock_Trigger_Bluetooth
Enable flow SmartUnlock_Trigger_WiFi
Enable flow SmartUnlock_Trigger_App
Enable flow SmartUnlock_Trigger_Power
Enable flow SmartUnlock_Trigger_Timed
Expression: index < length(list)
Expression: SmartUnlock Bluetooth enabled?
Expression: SmartUnlock Apps enabled?
Expression: SmartUnlock Timed enabled?
Expression: SmartUnlock location enabled?
Disable flow SmartUnlock_Trigger_Timed
Expression: SmartUnlock WiFi enabled?
Expression: SmartUnlock Power enabled?
Enable flow {triggerName}
Disable all location triggers
Script: prepare location loop
Script: process location loop
SmartUnlock_checkTrustedState
SmartUnlock
true
PARALLEL
Screen On
Expression: isEmpty(global_SmartUnlock_trustedStates)
Execute Flows: SmartUnlock_checkNotification
Execute Flows: SmartUnlock_startTimeout
SmartUnlock_cloneLocationTrigger
SmartUnlock
true
PARALLEL
Delete location trigger template
Import location trigger template
Write location trigger template back to file
Expression: valid location details
Load location trigger template into variable
Export location trigger template
Script: process location trigger template
SmartUnlock_configure
SmartUnlock
true
PARALLEL
Expression: menu selected
Input Dialog single choice: {menuTitle} {menuItems}
Expression: (indexWiFi != null) AND (index == indexWiFi)
Execute Flows: SmartUnlock_configureWiFi
Execute Flows: SmartUnlock_configureLocation
Expression: (indexLocation != null) AND (index == indexLocation)
Expression: (indexBluetooth != null) AND (index == indexBluetooth)
Execute Flows: SmartUnlock_configureBluetooth
Execute Flows: SmartUnlock_configureApps
Expression: (indexApps != null) AND (index == indexApps)
Execute Flows: SmartUnlock_configureTimedUnlock
Expression: (indexTimed != null) AND (index == indexTimed)
Expression: (indexSettings != null) AND (index == indexSettings)
Expression: (indexLockType != null) AND (index == indexLockType)
Execute Flows: SmartUnlock_configureOptions
Execute Flows: SmartUnlock_configureUnlockedLockType
Script: prepare settings menu
SmartUnlock_configureApps
SmartUnlock
true
PARALLEL
Expression: getMapValue(global_SmartUnlock_trustedApps, pkg) != null
Expression: index == 0
Input Dialog single choice: {menuTitle} {menuItems}
Expression: menu selected
Notification on Screen: “{app}“ was added to trusted Apps
Notification on Screen: “{app}“ was removed from trusted Apps
Script: add App
Notification on Screen: "{app}“ is already trusted App
Script: prepare app menu
Confirm Dialog: Add “{app}“ ({pkg}) as trusted App?
Execute Flows: SmartUnlock_selectApp
Execute Flows: SmartUnlock_checkTrigger
Execute Flows: SmartUnlock_checkTrigger
Notification on Screen: No App selected
Expression: pkg == null
Expression: trustDetail trusted
Confirm Dialog: Remove “{app}“ ({pkg}) from list of trusted Apps?
Execute Flows: SmartUnlock_removeState
Script: prepare App remove confirmation
Script: remove App
SmartUnlock_configureBluetooth
SmartUnlock
true
PARALLEL
Expression: menu selected
Script: prepare Bluetooth menu
Bluetooth Enabled
Bluetooth Device Connected: Any device
Script: bt_index = 0
Expression: bt_index < length(connected_devices_addresses)
Notification on Screen: No Bluetooth device connected
Notification on Screen: Bluetooth not enabled
Input Dialog single choice: {menuTitle} {menuItems}
Script: bluetooth_address = getElement(connected_devices_addresses, bt_index); bluetooth_name = getElement(connected_devices_names, bt_index); bt_index = bt_index + 1;
Input Dialog: Enter friendly name for device {bluetooth_name}
Expression: operation != "cancel"
Script: add Bluetooth device
Execute Flows: SmartUnlock_checkTrigger
Execute Flows: SmartUnlock_Trigger_Bluetooth
Notification on Screen: “{bluetooth_name}“ added as trusted device
Expression: getMapValue(global_SmartUnlock_trustedBluetooth, bluetooth_address) == null
Notification on Screen: “{bluetooth_name}“ removed from trusted devices
Execute Flows: SmartUnlock_checkTrigger
Confirm Dialog: Remove “{bluetooth_name}“ from trusted Bluetooth devices?
Expression: index == 0
Script: remove Bluetooth device
Script: prepare Bluetooth remove confirmation
Expression: trustDetail trusted
Execute Flows: SmartUnlock_removeState
Confirm Dialog: Add “{bluetooth_name}“ as trusted device?
SmartUnlock_configureLocation
SmartUnlock
true
PARALLEL
Input Dialog single choice: {menuTitle} {menuItems}
Script: prepare location edit
Execute Flows: SmartUnlock_configureLocationEdit
Expression: (value != null) AND (value != '')
Expression: operation != "cancel"
Expression: exists location?
Init Variable Location: new location into location using Balanced Power/Accuracy, min. 250m, Timeout 30s
Notification on Screen: location with name exists
HTTP Request: GET https://maps.googleapis.com/maps/api/geocode/xml?latlng={location,locationformat,decimal} store in locationXML
Init Variable Location: last known location into location
Expression: menu selected
Script: prepare location menu
Input Dialog: SmartUnlock: new location Text Enter name for new trusted location
Script: extract locationName from response
Execute Flows: SmartUnlock_checkTrigger
Notification on Screen: near trusted location
Notification on Screen: no precise location
Expression: index == 0
Notification on Screen: getting current location
Expression: near trusted location?
Script: add location
Notification on Screen: new location added
Execute Flows: SmartUnlock_initLocation
Execute Flows: SmartUnlock_cloneLocationTrigger
SmartUnlock_configureLocationEdit
SmartUnlock
true
PARALLEL
Expression: index == 2
Input Dialog: Location “{locationName}“ Text Enter new name of location:
Expression: menu selected
Expression: (locationName != null) AND (locationDetails != null)
Script: remove location
Notification on Screen: location removed
Expression: operation != "cancel"
Expression: index == 0
Execute Flows: SmartUnlock_cloneLocationTrigger
Expression: operation != "cancel"
Confirm remove location
Input Dialog single choice: {menuTitle} {menuItems}
Delete unused location trigger
Expression: (value != null) AND (value != '')
Execute Flows: SmartUnlock_initLocation
Execute Flows: SmartUnlock_checkTrigger
Script: remove location
Script: save new location name
Expression: index == 3
Delete unused location trigger
Expression: (value != locationName)
Open URL in Browser: http://maps.google.com/maps?q={location,locationformat,decimal}
Expression: operation != "cancel"
Expression: (value != null) AND (value != '')
Expression: index == 1
Script: latitude = value
Expression: (value != null) AND (value != '')
Script: longitude = value
Input Dialog: Radius of “{locationName}“ Number Enter radius of location:
Expression: operation != "cancel"
Expression: (value != null) AND (value != '')
Script: radius = value
Script: save new latitude/longitude/radius
Input Dialog: Latitude of “{locationName}“ Number Enter latitude of location:
Input Dialog: Longitude of “{locationName}“ Number Enter longitude of location:
Script: prepare location edit menu
SmartUnlock_configureOptions
SmartUnlock
true
PARALLEL
Expression: operation != "cancel"
Expression: index == 0
Input Dialog: timeout in minutes
Input Dialog single choice: {menuTitle} {menuItems}
Execute Flows: SmartUnlock_checkNotification
Notification on Screen: {notifyText}
Script: save new timeout
Notification on Screen: {notifyText}
Script: process trust options
Execute Flows: SmartUnlock_initSmartUnlock
Expression: menu selected
Expression: operation != "cancel"
Script: toggle show notifications
Input Dialog: SmartUnlock: {menuTitle} Multi Choice {availableOptions,listformat,comma}
Script: prepare options menu
Script: prepare avail. states menu
Expression: index == 1
Expression: index == 2
SmartUnlock_configureTimedUnlock
SmartUnlock
true
PARALLEL
Expression: menu selected
Execute Flows: SmartUnlock_removeState
Script: removeVariable('global_SmartUnlock_timedUnlock')
Input Dialog single choice: {menuTitle} {menuItems}
Script: calculate time until
Expression: operation != "cancel"
Expression: index < length(list)
Script: Prepare timed unlock menu
Expression: cancelTimedUnlock
Script: trustedState = 'Timed'
Execute Flows: SmartUnlock_checkTrigger
Script: time = value
Input Dialog: unlock until time
Script: calculate timed unlock
Script: save timed unlock
Execute Flows: SmartUnlock_addState
SmartUnlock_configureTimeout
SmartUnlock
true
PARALLEL
Input Dialog: timeout in minutes
Expression: operation != "cancel"
Script: save new timeout
Notification on Screen: timeout in minutes
SmartUnlock_configureUnlockedLockType
SmartUnlock
true
PARALLEL
Notification on Screen: {notifyText}
Execute Flows: SmartUnlock_updateLock
Script: toggle unlocked lock type
SmartUnlock_configureWiFi
SmartUnlock
true
PARALLEL
Input Dialog single choice: {menuTitle} {menuItems}
Expression: menu selected
Expression: index == 0
Script: prepare WiFi menu
WiFi State: Enabled
WiFi Connected: All SSIDs
Expression: operation != "cancel"
Expression: (value != null) AND (value != '')
Notification on Screen: “{ssid}“ already trusted
Notification on Screen: WiFi not enabled
Expression: getMapValue(global_SmartUnlock_trustedWiFi, ssid) != null
Script: add WiFi connection
Notification on Screen: WiFi “{ssid}“ added
Notification on Screen: No WiFi connected
Execute Flows: SmartUnlock_initSmartUnlock
Input Dialog: enter friendly name for WiFi {ssid}
Execute Flows: SmartUnlock_checkTrigger
Notification on Screen: “{WiFiName}“ removed
Execute Flows: SmartUnlock_removeState
Expression: trustDetail trusted
Confirm Dialog: Remove WiFi “{WiFiName}“ ({ssid}) from trusted connections?
Script: remove WiFi connection
Script: prepare WiFi remove confirmation
SmartUnlock_exportFlows
SmartUnlock
true
PARALLEL
Export SmartUnlock flows
SmartUnlock_initLocation
SmartUnlock
true
PARALLEL
Flow Enabled: {triggerName}
Script: process location loop
Expression: index < length(list)
Script: trustedState = 'Location'
Execute Flows: SmartUnlock_removeState
Script: prepare location loop
Execute Flows: {triggerName}
Expression: trusted state active
SmartUnlock_initSmartUnlock
SmartUnlock
true
PARALLEL
Execute Flows: SmartUnlock_Trigger_Manual
Flow Enabled: SmartUnlock_Trigger_WiFi
Execute Flows: SmartUnlock_Trigger_WiFi
Execute Flows: SmartUnlock_Trigger_Bluetooth
Flow Enabled: SmartUnlock_Trigger_Bluetooth
Flow Enabled: SmartUnlock_Trigger_App
Execute Flows: SmartUnlock_Trigger_App
Flow Enabled: SmartUnlock_Trigger_Manual
Execute Flows: SmartUnlock_checkTrigger
Set Flow State: Enable SmartUnlock_*,Shortcut: SmartUnlock_*
Execute Flows: SmartUnlock_initLocation
Script: reset trusted states
Execute Flows: SmartUnlock_updateLock
Execute Flows: SmartUnlock_checkNotification
Script: SmartUnlock init global vars
SmartUnlock_lockDevice
SmartUnlock
true
PARALLEL
Script: global_SmartUnlock_locked = true
Execute Flows: SmartUnlock_updateLock
Execute Flows: SmartUnlock_checkNotification
Script: global_SmartUnlock_initAtUnlock = true; global_SmartUnlock_trustedStates = newMap(); global_SmartUnlock_manual = false;
Lock Device
SmartUnlock_removeState
SmartUnlock
true
PARALLEL
Screen On
Expression: show notifications
Notification on Screen: {notifyText}
Expression: trusted state active
Script: Remove trusted state
Script: add trustDetail to notifyText
Execute Flows: SmartUnlock_checkTrustedState
SmartUnlock_selectApp
SmartUnlock
true
PARALLEL
Execute Command: pm list packages -e in
Expression: operation != "cancel"
Script: app = getElement(AppList, index); pkg = getMapValue(AppMap, app)
Script: app = null; pkg = null;
Expression: (packages == null) OR (packages == '')
Expression: isEmpty(AppMap)
Notification on Screen: SmartUnlock:{"\r\n"}Cannot access list of installed apps{"\r\n"}{error} (long)
Script: process list of Apps
Notification on Screen: Building App list, please wait...
Input Dialog: Select App Single Choice Menu {allApps}
SmartUnlock_startTimeout
SmartUnlock
true
PARALLEL
Script: calculate timeout
Set Flow State: Enable SmartUnlock_Trigger_Timeout
SmartUnlock_stopTimeout
SmartUnlock
true
PARALLEL
Flow Enabled: SmartUnlock_Trigger_Timeout
Set Flow State: Disable SmartUnlock_Trigger_Timeout,SmartUnlock_Trigger_Location_#location#
SmartUnlock_toggleManual
SmartUnlock
true
PARALLEL
Script: global_SmartUnlock_manual = not global_SmartUnlock_manual
SmartUnlock_Trigger_App
SmartUnlock
false
SKIP
300
App Task Started: *
Activity Ended: */*
Expression: app_name != null
Sleep: {global_SmartUnlock_gracePeriod} (allow device sleep)
App Task Running: {trustedPkg} (most recent)
Expression: index == 0
Execute Flows: SmartUnlock_removeState
Execute Flows: SmartUnlock_addState
Expression: index == 0
Script: trustedState = 'App running'
App Task Running: {trustedPkg} (most recent)
Script: trustDetail = trustedPkg
Script: trustedPkg = getElement(trustedPkgs, pkgIndex); pkgIndex = pkgIndex + 1;
Expression: pkgIndex < length(trustedPkgs)
Script: trustDetail = trustedPkg
Expression: trustedPkg == null
Script: prepare App loop
SmartUnlock_Trigger_Bluetooth
SmartUnlock
false
PARALLEL
1000
Bluetooth Device Disconnected: All devices
Bluetooth Device Connected: All devices
Sleep: {global_SmartUnlock_gracePeriod} (allow device sleep)
Expression: address != null
Expression: index < length(list)
Script: trustedState = 'Bluetooth'
Script: prepare Bluetooth loop
Execute Flows: SmartUnlock_addState
Execute Flows: SmartUnlock_removeState
Execute Flows: SmartUnlock_removeState
Expression: trustDetail trusted
Expression: trusted device connected
Expression: trustDetail trusted
Bluetooth Device Connected: Any device
SmartUnlock_Trigger_CMProfileChange
SmartUnlock
true
PARALLEL
General Broadcast: on cyanogenmod.platform.intent.action.PROFILE_SELECTED
Expression: global_SmartUnlock_lockType != name
Notification on Screen: CM profile change
Notification on Statusbar: CM profile mismatch Notification
SmartUnlock_Trigger_DisplayOff
SmartUnlock
true
PARALLEL
Display State: Off
Execute Flows: SmartUnlock_startTimeout
SmartUnlock_Trigger_Manual
SmartUnlock
true
PARALLEL
Global Variable: global_SmartUnlock_manual
Execute Flows: SmartUnlock_removeState
Expression: convertNull(global_SmartUnlock_manual, false)
Script: trustedState = 'Manual'
Execute Flows: SmartUnlock_addState
SmartUnlock_Trigger_Notification
SmartUnlock
true
PARALLEL
Notification on Statusbar Selected: All IDs
Expression: notification_id == global_SmartUnlock_notificationID
Execute Flows: SmartUnlock_lockDevice
Expression: convertNull(global_SmartUnlock_locked, false)
Script: global_SmartUnlock_manualAtInit = true
SmartUnlock_Trigger_Power
SmartUnlock
true
SKIP
Power Source: Disconnected
Power Source: Connected
Sleep: {global_SmartUnlock_gracePeriod} (allow device sleep)
Script: trustedState = 'Charging'
Power Source Connected
Script: get power source
Expression: trustDetail changed
Execute Flows: SmartUnlock_addState
Script: trustDetail = null
Execute Flows: SmartUnlock_removeState
Execute Flows: SmartUnlock_removeState
Script: get current trustDetail
Expression: battery_plugged != null
SmartUnlock_Trigger_Shutdown
SmartUnlock
true
PARALLEL
Shutdown
Script: global_SmartUnlock_locked = true
Execute Flows: SmartUnlock_updateLock
SmartUnlock_Trigger_Startup
SmartUnlock
true
PARALLEL
Automagic Startup
Script: global_SmartUnlock_locked = true
Execute Flows: SmartUnlock_updateLock
Keyguard Locked
Lock Device
Execute Flows: SmartUnlock_initSmartUnlock
SmartUnlock_Trigger_Timed
SmartUnlock
false
PARALLEL
Global Variable Date/Time: global_SmartUnlock_timedUnlock
Script: trustedState = 'Timed'
Execute Flows: SmartUnlock_removeState
Script: removeVariable('global_SmartUnlock_timedUnlock')
Disable flow SmartUnlock_Trigger_Timed
SmartUnlock_Trigger_Timeout
SmartUnlock
false
PARALLEL
Global Variable Date/Time: global_SmartUnlock_lockTime
Expression: isEmpty(global_SmartUnlock_trustedStates)
Execute Flows: SmartUnlock_lockDevice
SmartUnlock_Trigger_UserPresent
SmartUnlock
true
PARALLEL
User Present
Execute Flows: SmartUnlock_stopTimeout
Execute Flows: SmartUnlock_unlockDevice
Expression: global_SmartUnlock_initAtUnlock
Expression: convertNull(global_SmartUnlock_locked, true)
Execute Flows: SmartUnlock_initSmartUnlock
Execute Flows: SmartUnlock_updateLock
SmartUnlock_Trigger_WiFi
SmartUnlock
true
STOP
WiFi Disconnected: All SSIDs
WiFi Connected: All SSIDs
Sleep: {global_SmartUnlock_gracePeriod} (allow device sleep)
Expression: getMapValue(global_SmartUnlock_trustedWiFi, ssid) != null
Script: trustDetail = ssid
Execute Flows: SmartUnlock_addState
Execute Flows: SmartUnlock_removeState
Script: trustedState = 'WiFi'
WiFi Connected: All SSIDs
Expression: ssid != null
SmartUnlock_unlockDevice
SmartUnlock
true
PARALLEL
Script: global_SmartUnlock_locked = false
Execute Flows: SmartUnlock_checkNotification
Execute Flows: SmartUnlock_updateLock
SmartUnlock_updateLock
SmartUnlock
true
PARALLEL
Script: lastLockType = global_SmartUnlock_lockType
Expression: convertNull(global_SmartUnlock_locked, true)
Set CyanogenMod Profile: {global_SmartUnlock_lockType}
Expression: global_SmartUnlock_lockType != lastLockType
Set System Setting: System power_menu_lockscreen to {powerMenu}
Set System Setting: Secure status_bar_locked_on_secure_keyguard to {1 - statusBar}
Script: init secure lock settings
Script: init insecure/disabled lock settings
Set System Setting: Secure lock_screen_allow_private_notifications to {privateNotifications}