OpenMiInk/apkpatch/MoanNote.toml
Hellings 1e953b8132 ok
2026-10-16 13:05:27 -04:00

70 lines
5.2 KiB
TOML

[manifest]
packagePrefix = "rip.crit.ms"
[resources]
overlay = "patches/moannotes/res"
assetOverlay = "patches/moannotes/assets"
[resources.translation]
backend = "argos"
source = "zh"
target = "en"
[generatedSmali]
sourceDir = "moannotes-native/build/smali/rip/crit/ms/moannotes/nativebridge"
# NOTE: the stock toolbar icons and menus are intentionally left untouched.
# All patch UI lives outside it: one external FAB on the window decor opens
# the ToolsSheet bottom docker (layers / ink / snap / KRA export).
[[smaliPatches]]
targetFile = "com/moan/notes/LaunchActivity.smali"
search = " invoke-virtual {p0, p1}, Lg/b/c/e;->setContentView(I)V\n\n const p1, 0x7f0802a7"
replace = " invoke-virtual {p0, p1}, Lg/b/c/e;->setContentView(I)V\n\n invoke-static {p0}, Lrip/crit/ms/moannotes/FeatureRegistry;->install(Landroid/app/Activity;)V\n\n const p1, 0x7f0802a7"
[[smaliPatches]]
targetFile = "rip/crit/ms/moannotes/FeatureRegistry.smali"
injectFile = "patches/moannotes/smali/rip/crit/ms/moannotes/FeatureRegistry.smali"
[[smaliPatches]]
targetFile = "rip/crit/ms/moannotes/BackgroundCatalogPatch.smali"
injectFile = "patches/moannotes/smali/rip/crit/ms/moannotes/BackgroundCatalogPatch.smali"
[[smaliPatches]]
targetFile = "rip/crit/ms/moannotes/SnapToLineTouchListener.smali"
injectFile = "patches/moannotes/smali/rip/crit/ms/moannotes/SnapToLineTouchListener.smali"
[[smaliPatches]]
targetFile = "rip/crit/ms/moannotes/SnapToLineToggle.smali"
injectFile = "patches/moannotes/smali/rip/crit/ms/moannotes/SnapToLineToggle.smali"
[[smaliPatches]]
targetFile = "h/f/b/m5/l.smali"
search = " invoke-virtual {v1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z\n\n :cond_0"
replace = " invoke-virtual {v1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z\n\n sget-object v0, Lh/f/b/m5/l;->a:Ljava/util/ArrayList;\n\n invoke-static {v0}, Lrip/crit/ms/moannotes/BackgroundCatalogPatch;->appendCollegeRuled(Ljava/util/ArrayList;)V\n\n :cond_0"
[[smaliPatches]]
targetFile = "h/f/b/m5/j.smali"
search = " iget p2, p2, Lh/f/b/m5/l;->c:I\n\n invoke-virtual {p1, p2}, Landroid/widget/ImageView;->setImageResource(I)V"
replace = " iget-object v1, p2, Lh/f/b/m5/l;->d:Ljava/lang/String;\n\n iget p2, p2, Lh/f/b/m5/l;->c:I\n\n iget-object v0, p0, Lh/f/b/m5/j;->h:Landroid/content/Context;\n\n invoke-static {v0, v1, p2}, Lrip/crit/ms/moannotes/BackgroundCatalogPatch;->previewResource(Landroid/content/Context;Ljava/lang/String;I)I\n\n move-result p2\n\n invoke-virtual {p1, p2}, Landroid/widget/ImageView;->setImageResource(I)V"
# The stock page loader clamps a negative mEditLayerID but never an
# over-large one, so any layer-count shrink (delete) crashes note open with
# IndexOutOfBounds in u5/b/j. Upper-clamp here: corrupted notes open again.
[[smaliPatches]]
targetFile = "h/f/b/u5/b/j.smali"
search = " invoke-static {v2, v1}, Lcom/moan/notes/hand/data/config/LayerConfigData;->sSaveLayerConfigData(Landroid/content/Context;Lcom/moan/notes/hand/data/config/LayerConfigData;)I\n\n :cond_1e\n iget-object v1, v0, Lh/f/b/u5/a/b;->a:Ljava/util/ArrayList;"
replace = " invoke-static {v2, v1}, Lcom/moan/notes/hand/data/config/LayerConfigData;->sSaveLayerConfigData(Landroid/content/Context;Lcom/moan/notes/hand/data/config/LayerConfigData;)I\n\n :cond_1e\n iget-object v1, v0, Lh/f/b/u5/a/b;->a:Ljava/util/ArrayList;\n\n invoke-virtual {v1}, Ljava/util/ArrayList;->size()I\n\n move-result v1\n\n iget-object v2, v0, Lh/f/b/u5/a/b;->i:Lcom/moan/notes/hand/data/config/LayerConfigData;\n\n iget v2, v2, Lcom/moan/notes/hand/data/config/LayerConfigData;->mEditLayerID:I\n\n if-ge v2, v1, :layer_clamp_ok\n\n add-int/lit8 v1, v1, -0x1\n\n if-gez v1, :layer_clamp_store\n\n const/4 v1, 0x0\n\n :layer_clamp_store\n iget-object v2, v0, Lh/f/b/u5/a/b;->i:Lcom/moan/notes/hand/data/config/LayerConfigData;\n\n iput v1, v2, Lcom/moan/notes/hand/data/config/LayerConfigData;->mEditLayerID:I\n\n move v2, v1\n\n :layer_clamp_ok\n iget-object v1, v0, Lh/f/b/u5/a/b;->a:Ljava/util/ArrayList;"
[[smaliPatches]]
targetFile = "com/moan/notes/NoteActivity.smali"
search = " invoke-virtual {p1, v0}, Lcom/moan/notes/hand/view/HandwriteView;->setObserver(Lcom/moan/notes/hand/view/HWViewStatus$IStatusReporter;)V\n\n :cond_0\n return-void"
replace = " invoke-virtual {p1, v0}, Lcom/moan/notes/hand/view/HandwriteView;->setObserver(Lcom/moan/notes/hand/view/HWViewStatus$IStatusReporter;)V\n\n invoke-static {p0}, Lrip/crit/ms/moannotes/FeatureRegistry;->installNote(Landroid/app/Activity;)V\n\n :cond_0\n return-void"
# Rotation goes through onConfigurationChanged -> setContentView, which swaps
# the HandwriteView without rerunning init. Reinstall there so the snap
# listener follows the new view (FAB lives on the decor and survives).
[[smaliPatches]]
targetFile = "com/moan/notes/NoteActivity.smali"
search = " invoke-virtual {p0}, Lcom/moan/notes/NoteActivity;->D()V\n\n invoke-virtual {p0}, Lcom/moan/notes/NoteActivity;->R()V"
replace = " invoke-virtual {p0}, Lcom/moan/notes/NoteActivity;->D()V\n\n invoke-virtual {p0}, Lcom/moan/notes/NoteActivity;->R()V\n\n invoke-static {p0}, Lrip/crit/ms/moannotes/FeatureRegistry;->installNote(Landroid/app/Activity;)V"