v1.0.23: functional Files tab, background service persistence, startup indexer, curved icon
- FilesScreen: per-file context menu (Open, Share, Rename, Delete), rename dialog, delete confirmation, FileProvider-based open/share intents, Snackbar error feedback - FilesViewModel: FileAction sealed class + SharedFlow; openFile, shareFile, deleteFile, renameFile with DB cleanup; resolveFile handles SAF primary: URIs - FileWatchService: stopWithTask=false keeps watcher alive after app swipe-away; catchupScan on startup detects changes missed while service was not running; SyncFileStateDao injected; FileObserver used for real-path SAF URIs - BootReceiver: handles MY_PACKAGE_REPLACED to restart service after app update - file_paths.xml: added external-path so FileProvider can serve /storage/emulated/0 files - ic_launcher_foreground: three curved stroke-based arrows (quadratic bezier, round caps) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,83 +6,90 @@
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
|
||||
<!-- Soft ambient glow underneath everything -->
|
||||
<!-- Subtle inner glow -->
|
||||
<path
|
||||
android:pathData="M54,54m-36,0a36,36 0 1,0 72,0a36,36 0 1,0 -72,0"
|
||||
android:fillColor="#18FF6B6B"/>
|
||||
android:pathData="M54,54m-30,0a30,30 0 1,0 60,0a30,30 0 1,0 -60,0"
|
||||
android:fillColor="#0AFFFFFF"/>
|
||||
|
||||
<!-- ═══ Arrow 1: pointing RIGHT (top) — electric coral ═══ -->
|
||||
<!-- Shaft with rounded left cap -->
|
||||
<path android:pathData="M27,31 Q22,31 22,36 Q22,41 27,41 L64,41 L64,31 Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<!-- ═══ Arrow 1: curving RIGHT (top) — coral gradient ═══ -->
|
||||
<!-- Curved shaft via quadratic bezier: left→ dips up → right -->
|
||||
<path
|
||||
android:pathData="M28,40 Q54,22 80,36"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeWidth="7"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round">
|
||||
<aapt:attr name="android:strokeColor">
|
||||
<gradient android:type="linear"
|
||||
android:startX="22" android:startY="36"
|
||||
android:endX="64" android:endY="36"
|
||||
android:startX="28" android:startY="36"
|
||||
android:endX="80" android:endY="36"
|
||||
android:startColor="#FF6B6B"
|
||||
android:endColor="#FF9F6B"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<!-- Arrowhead -->
|
||||
<path android:pathData="M63,27 L63,45 L86,36 Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:type="linear"
|
||||
android:startX="63" android:startY="36"
|
||||
android:endX="86" android:endY="36"
|
||||
android:startColor="#FF9F6B"
|
||||
android:endColor="#FFB347"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
|
||||
<!-- ═══ Arrow 2: pointing LEFT (middle) — cool white/silver ═══ -->
|
||||
<!-- Shaft with rounded right cap -->
|
||||
<path android:pathData="M44,50 L81,50 Q86,50 86,55 Q86,60 81,60 L44,60 Z">
|
||||
<!-- Arrowhead at (80,36) pointing right/slightly-down -->
|
||||
<path android:pathData="M76,28 L72,44 L88,38 Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:type="linear"
|
||||
android:startX="44" android:startY="55"
|
||||
android:endX="86" android:endY="55"
|
||||
android:startColor="#B0B8D0"
|
||||
android:endColor="#E8EDF5"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<!-- Arrowhead -->
|
||||
<path android:pathData="M45,46 L45,64 L22,55 Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:type="linear"
|
||||
android:startX="45" android:startY="55"
|
||||
android:endX="22" android:endY="55"
|
||||
android:startColor="#B0B8D0"
|
||||
android:endColor="#8892A8"/>
|
||||
android:startX="72" android:startY="36"
|
||||
android:endX="88" android:endY="36"
|
||||
android:startColor="#FFB347"
|
||||
android:endColor="#FF8C42"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
|
||||
<!-- ═══ Arrow 3: pointing RIGHT (bottom) — electric teal ═══ -->
|
||||
<!-- Shaft with rounded left cap -->
|
||||
<path android:pathData="M27,69 Q22,69 22,74 Q22,79 27,79 L64,79 L64,69 Z">
|
||||
<!-- ═══ Arrow 2: curving LEFT (middle) — silver/white ═══ -->
|
||||
<!-- Curved shaft: right→ dips down → left -->
|
||||
<path
|
||||
android:pathData="M80,56 Q54,74 28,60"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeWidth="7"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round">
|
||||
<aapt:attr name="android:strokeColor">
|
||||
<gradient android:type="linear"
|
||||
android:startX="80" android:startY="60"
|
||||
android:endX="28" android:endY="60"
|
||||
android:startColor="#D0D8EE"
|
||||
android:endColor="#8892AA"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<!-- Arrowhead at (28,60) pointing left/slightly-down -->
|
||||
<path android:pathData="M32,52 L36,68 L20,62 Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:type="linear"
|
||||
android:startX="22" android:startY="74"
|
||||
android:endX="64" android:endY="74"
|
||||
android:startX="36" android:startY="60"
|
||||
android:endX="20" android:endY="60"
|
||||
android:startColor="#D0D8EE"
|
||||
android:endColor="#8892AA"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
|
||||
<!-- ═══ Arrow 3: curving RIGHT (bottom) — teal gradient ═══ -->
|
||||
<!-- Curved shaft: left→ dips up → right -->
|
||||
<path
|
||||
android:pathData="M28,74 Q54,58 80,72"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeWidth="7"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round">
|
||||
<aapt:attr name="android:strokeColor">
|
||||
<gradient android:type="linear"
|
||||
android:startX="28" android:startY="72"
|
||||
android:endX="80" android:endY="72"
|
||||
android:startColor="#4DD0E1"
|
||||
android:endColor="#26C6DA"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<!-- Arrowhead -->
|
||||
<path android:pathData="M63,65 L63,83 L86,74 Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:type="linear"
|
||||
android:startX="63" android:startY="74"
|
||||
android:endX="86" android:endY="74"
|
||||
android:startColor="#26C6DA"
|
||||
android:endColor="#00BCD4"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
|
||||
<!-- Small glow dots at arrowhead tips for sparkle -->
|
||||
<path android:pathData="M86,36m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0"
|
||||
android:fillColor="#FFFFB347"/>
|
||||
<path android:pathData="M22,55m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0"
|
||||
android:fillColor="#FF8892A8"/>
|
||||
<path android:pathData="M86,74m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0"
|
||||
android:fillColor="#FF00BCD4"/>
|
||||
<!-- Arrowhead at (80,72) pointing right/slightly-up -->
|
||||
<path android:pathData="M76,64 L72,80 L88,74 Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient android:type="linear"
|
||||
android:startX="72" android:startY="72"
|
||||
android:endX="88" android:endY="72"
|
||||
android:startColor="#00BCD4"
|
||||
android:endColor="#00ACC1"/>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
|
||||
</vector>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<paths>
|
||||
<external-path name="external_storage" path="." />
|
||||
<external-files-path name="external_files" path="." />
|
||||
<files-path name="internal_files" path="." />
|
||||
</paths>
|
||||
|
||||
Reference in New Issue
Block a user