fix (lockscreen) add plugin back to Plugins list

This commit is contained in:
Justin Oros
2026-05-01 07:19:34 -07:00
parent ad280e6d5e
commit 0fa657544c
+67 -80
View File
@@ -142,7 +142,7 @@ def patch_settings_cpp(repo_dir):
path = find_first("SettingsActivity.cpp", repo_dir) path = find_first("SettingsActivity.cpp", repo_dir)
content = read_file(path) content = read_file(path)
if '"LockscreenPlugin.h"' in content and "lockscreenPinHash" in content and '"lockscreenMode") return "Lockscreen"' in content: if '"LockscreenPlugin.h"' in content and 'lockscreenPinHash' in content and '"lockscreenMode") return "Lockscreen"' in content:
print(" SettingsActivity.cpp already patched, skipping.") print(" SettingsActivity.cpp already patched, skipping.")
return return
@@ -166,62 +166,32 @@ def patch_settings_cpp(repo_dir):
changed = True changed = True
if 'pluginsSettings.clear()' not in content: if 'pluginsSettings.clear()' not in content:
content = content.replace( result = content.replace(
' systemSettings.clear();\n', ' systemSettings.clear();\n',
' systemSettings.clear();\n' ' systemSettings.clear();\n pluginsSettings.clear();\n'
' pluginsSettings.clear();\n'
' for (const auto& setting : getSettingsList()) {\n'
' if (setting.key && std::string(setting.key) == "lockscreenMode") {\n'
' pluginsSettings.push_back(setting);\n'
' }\n'
' }\n'
) )
if 'pluginsSettings.clear()' in result:
content = result
changed = True changed = True
elif 'pluginsSettings.push_back' not in content:
content = content.replace( lockscreen_push = (
' pluginsSettings.clear();\n', ' pluginsSettings.push_back(SettingInfo::Enum(\n'
' pluginsSettings.clear();\n' ' StrId::STR_NONE_OPT, &CrossPointSettings::lockscreenMode,\n'
' for (const auto& setting : getSettingsList()) {\n' ' {StrId::STR_NONE_OPT, StrId::STR_NONE_OPT},\n'
' if (setting.key && std::string(setting.key) == "lockscreenMode") {\n' ' "lockscreenMode", StrId::STR_NONE_OPT\n'
' pluginsSettings.push_back(setting);\n' ' ));\n'
' }\n'
' }\n'
)
changed = True
elif '"lockscreenMode") {\n pluginsSettings.push_back' not in content:
content = content.replace(
' for (const auto& setting : getSettingsList()) {\n'
' if (setting.key && std::string(setting.key) == "lockscreenMode") {\n'
' pluginsSettings.push_back(setting);\n'
' }\n'
' }\n'
'\n'
' for (const auto& setting : getSettingsList()) {',
' for (const auto& setting : getSettingsList()) {\n'
' if (setting.key && std::string(setting.key) == "lockscreenMode") {\n'
' pluginsSettings.push_back(setting);\n'
' }\n'
' }\n'
'\n'
' for (const auto& setting : getSettingsList()) {'
)
# If pluginsSettings.push_back exists from another plugin but not lockscreen,
# append after the existing population loop
if '"lockscreenMode") {\n pluginsSettings.push_back' not in content:
import re
content = re.sub(
r'( pluginsSettings\.clear\(\);(\n for.*?push_back.*?\n \}\n)*)',
lambda m: m.group(0) +
' for (const auto& setting : getSettingsList()) {\n'
' if (setting.key && std::string(setting.key) == "lockscreenMode") {\n'
' pluginsSettings.push_back(setting);\n'
' }\n'
' }\n',
content,
count=1,
flags=re.DOTALL
) )
if '"lockscreenMode", StrId::STR_NONE_OPT' not in content:
for anchor in [
' selectedCategoryIndex = 0;\n selectedSettingIndex = 0;',
' selectedCategoryIndex = 0;',
' currentSettings = &displaySettings;',
]:
if anchor in content:
content = content.replace(anchor, lockscreen_push + anchor, 1)
changed = True changed = True
break
if 'case 4:' not in content: if 'case 4:' not in content:
content = content.replace( content = content.replace(
@@ -271,31 +241,34 @@ def patch_settings_cpp(repo_dir):
) )
changed = True changed = True
elif '"lockscreenMode") return "Lockscreen"' not in content: elif '"lockscreenMode") return "Lockscreen"' not in content:
for s_decl in [ import re
' const auto& s = settings[index];\n', result = re.sub(
' const auto& s = settings[index];\n', r'( if \(selectedCategoryIndex == 4\) \{.*?)( \})',
]: lambda m: m.group(1) + ' if (s.key && std::string(s.key) == "lockscreenMode") return "Lockscreen";\n' + m.group(2),
if s_decl in content: content,
indent = s_decl[:len(s_decl) - len(s_decl.lstrip())] count=1,
content = content.replace( flags=re.DOTALL,
s_decl,
s_decl + indent + 'if (s.key && std::string(s.key) == "lockscreenMode") return "Lockscreen";\n',
1
) )
break if result != content:
content = result
changed = True changed = True
if 'LockscreenPlugin::modeName' not in content: if 'LockscreenPlugin::modeName' not in content:
content = content.replace( import re
' } else {\n' lockscreen_value = (
' valueText = I18N.get(setting.enumValues[value]);\n' ' if (setting.type == SettingType::ENUM &&\n'
' }', ' setting.key && std::string(setting.key) == "lockscreenMode") {\n'
' } else if (setting.key && std::string(setting.key) == "lockscreenMode") {\n' ' valueText = LockscreenPlugin::modeName(static_cast<LockscreenMode>(SETTINGS.lockscreenMode));\n'
' valueText = LockscreenPlugin::modeName(static_cast<LockscreenMode>(value));\n' ' } else '
' } else {\n'
' valueText = I18N.get(setting.enumValues[value]);\n'
' }'
) )
result = re.sub(
r'( if \(setting\.type == SettingType::(?:ACTION|TOGGLE|ENUM))',
lockscreen_value + r'\1',
content,
count=1,
)
if result != content:
content = result
changed = True changed = True
if 'lockscreenPinHash' not in content: if 'lockscreenPinHash' not in content:
@@ -328,6 +301,7 @@ def patch_settings_cpp(repo_dir):
else: else:
print(" SettingsActivity.cpp already patched, skipping.") print(" SettingsActivity.cpp already patched, skipping.")
def patch_web_server(repo_dir): def patch_web_server(repo_dir):
path = find_first("CrossPointWebServer.cpp", repo_dir) path = find_first("CrossPointWebServer.cpp", repo_dir)
content = read_file(path) content = read_file(path)
@@ -411,18 +385,31 @@ def patch_main_cpp(repo_dir):
' }\n' ' }\n'
) )
anchor = ' RECENT_BOOKS.loadFromFile();\n\n if (HalSystem::isRebootFromPanic())'
if anchor in content:
content = content.replace( content = content.replace(
' RECENT_BOOKS.loadFromFile();\n' anchor,
'\n' ' RECENT_BOOKS.loadFromFile();\n' + lockscreen_block + '\n if (HalSystem::isRebootFromPanic())'
' if (HalSystem::isRebootFromPanic())',
' RECENT_BOOKS.loadFromFile();\n'
+ lockscreen_block
+ '\n'
' if (HalSystem::isRebootFromPanic())'
) )
else:
idx = content.find('RECENT_BOOKS')
print(' DIAG main.cpp around RECENT_BOOKS:', repr(content[max(0,idx-50):idx+300]))
import re
m = re.search(r'RECENT_BOOKS\.loadFromFile\(\);.*?\n(\s*\n)*(\s*if)', content, re.DOTALL)
if m:
actual_anchor = content[m.start():m.end()]
content = content.replace(actual_anchor, ' RECENT_BOOKS.loadFromFile();\n' + lockscreen_block + '\n' + content[m.end()-len(m.group(2)):m.end()])
print(' main.cpp lockscreen block inserted via regex.')
else:
print(' WARNING: could not find RECENT_BOOKS anchor in main.cpp')
write_file(path, content) write_file(path, content)
print(" main.cpp patched.") has_block = "LockscreenActivity lockAct" in content
has_sleep = "enterDeepSleep" in content
if has_block:
idx2 = content.find("LockscreenActivity lockAct")
print(" DIAG lockscreen block context:", repr(content[max(0,idx2-200):idx2+50]))
print(f" main.cpp patched. lockscreen_block={has_block} enterDeepSleep={has_sleep}")
def patch_settings_html(repo_dir): def patch_settings_html(repo_dir):