From 0ccdc60921073b571bb09ff71bfdacedea0916bd Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 3 Jul 2023 02:40:26 +0200 Subject: [PATCH] Support remote and playlist files in archive --- .../main/archive/helpers/archive_browser.h | 3 ++ .../main/archive/helpers/archive_files.c | 26 +++++++++++++++--- .../main/archive/helpers/archive_files.h | 3 ++ .../archive/scenes/archive_scene_browser.c | 6 ++++ .../main/archive/views/archive_browser_view.c | 3 ++ assets/icons/Archive/ir_scope_10px.png | Bin 0 -> 169 bytes assets/icons/Archive/subplaylist_10px.png | Bin 0 -> 5001 bytes firmware/targets/f7/api_symbols.csv | 2 ++ 8 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 assets/icons/Archive/ir_scope_10px.png create mode 100644 assets/icons/Archive/subplaylist_10px.png diff --git a/applications/main/archive/helpers/archive_browser.h b/applications/main/archive/helpers/archive_browser.h index c2d4c59f8..1b39e9c72 100644 --- a/applications/main/archive/helpers/archive_browser.h +++ b/applications/main/archive/helpers/archive_browser.h @@ -27,6 +27,9 @@ static const char* known_ext[] = { [ArchiveFileTypeSubGhz] = ".sub", [ArchiveFileTypeLFRFID] = ".rfid", [ArchiveFileTypeInfrared] = ".ir", + [ArchiveFileTypeSubghzPlaylist] = ".txt", + [ArchiveFileTypeSubghzRemote] = ".txt", + [ArchiveFileTypeInfraredRemote] = ".txt", [ArchiveFileTypeBadKb] = ".txt", [ArchiveFileTypeU2f] = "?", [ArchiveFileTypeApplication] = ".fap", diff --git a/applications/main/archive/helpers/archive_files.c b/applications/main/archive/helpers/archive_files.c index f4c97fe47..cabb8f899 100644 --- a/applications/main/archive/helpers/archive_files.c +++ b/applications/main/archive/helpers/archive_files.c @@ -1,6 +1,9 @@ #include "archive_files.h" #include "archive_apps.h" #include "archive_browser.h" +#include +#include +#include #define TAG "Archive" @@ -16,11 +19,26 @@ void archive_set_file_type(ArchiveFile_t* file, const char* path, bool is_folder for(size_t i = 0; i < COUNT_OF(known_ext); i++) { if((known_ext[i][0] == '?') || (known_ext[i][0] == '*')) continue; if(furi_string_search(file->path, known_ext[i], 0) != FURI_STRING_FAILURE) { - if(i == ArchiveFileTypeBadKb) { - if(furi_string_search(file->path, archive_get_default_path(ArchiveTabBadKb)) == - 0) { + // Check for .txt containing folder + if(strcmp(known_ext[i], ".txt") == 0) { + const char* path = NULL; + switch(i) { + case ArchiveFileTypeSubghzPlaylist: + path = PLAYLIST_FOLDER; + break; + case ArchiveFileTypeSubghzRemote: + path = SUBREM_APP_FOLDER; + break; + case ArchiveFileTypeInfraredRemote: + path = IR_REMOTE_PATH; + break; + case ArchiveFileTypeBadKb: + path = archive_get_default_path(ArchiveTabBadKb); + break; + } + if(path != NULL && furi_string_search(file->path, path) == 0) { file->type = i; - return; // *.txt file is a BadKB script only if it is in BadKB folder + return; } } else { file->type = i; diff --git a/applications/main/archive/helpers/archive_files.h b/applications/main/archive/helpers/archive_files.h index ff74121d7..eccf731c5 100644 --- a/applications/main/archive/helpers/archive_files.h +++ b/applications/main/archive/helpers/archive_files.h @@ -15,6 +15,9 @@ typedef enum { ArchiveFileTypeSubGhz, ArchiveFileTypeLFRFID, ArchiveFileTypeInfrared, + ArchiveFileTypeSubghzPlaylist, + ArchiveFileTypeSubghzRemote, + ArchiveFileTypeInfraredRemote, ArchiveFileTypeBadKb, ArchiveFileTypeU2f, ArchiveFileTypeApplication, diff --git a/applications/main/archive/scenes/archive_scene_browser.c b/applications/main/archive/scenes/archive_scene_browser.c index c09b3705a..aa95737b5 100644 --- a/applications/main/archive/scenes/archive_scene_browser.c +++ b/applications/main/archive/scenes/archive_scene_browser.c @@ -23,6 +23,12 @@ const char* archive_get_flipper_app_name(ArchiveFileTypeEnum file_type) { return "RFID"; case ArchiveFileTypeInfrared: return "Infrared"; + case ArchiveFileTypeSubghzPlaylist: + return EXT_PATH("apps/Sub-Ghz/subghz_playlist.fap"); + case ArchiveFileTypeSubghzRemote: + return EXT_PATH("apps/Sub-Ghz/subghz_remote.fap"); + case ArchiveFileTypeInfraredRemote: + return EXT_PATH("apps/Tools/ir_remote.fap"); case ArchiveFileTypeBadKb: return "Bad KB"; case ArchiveFileTypeU2f: diff --git a/applications/main/archive/views/archive_browser_view.c b/applications/main/archive/views/archive_browser_view.c index f3a586cee..e0caa9494 100644 --- a/applications/main/archive/views/archive_browser_view.c +++ b/applications/main/archive/views/archive_browser_view.c @@ -29,6 +29,9 @@ static const Icon* ArchiveItemIcons[] = { [ArchiveFileTypeSubGhz] = &I_sub1_10px, [ArchiveFileTypeLFRFID] = &I_125_10px, [ArchiveFileTypeInfrared] = &I_ir_10px, + [ArchiveFileTypeSubghzPlaylist] = &I_subplaylist_10px, + [ArchiveFileTypeSubghzRemote] = &I_subrem_10px, + [ArchiveFileTypeInfraredRemote] = &I_ir_scope_10px, [ArchiveFileTypeBadKb] = &I_badkb_10px, [ArchiveFileTypeU2f] = &I_u2f_10px, [ArchiveFileTypeApplication] = &I_Apps_10px, diff --git a/assets/icons/Archive/ir_scope_10px.png b/assets/icons/Archive/ir_scope_10px.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d7eaba0e2c1b18ed85bb9ec348ecbfb63a6575 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V6Od#Ihk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!Gcbs$f-s|Jkje+3pq;0SV~9p@X|E$6g969lAODvNCJJxz;NQg8 z`;6IJfzu^AD}H}xN$}#DrmMn?wY|KxYc03`d0F11Iahh@4*6-C`yFp}^IHK;V(@hJ Kb6Mw<&;$VC0WZS< literal 0 HcmV?d00001 diff --git a/assets/icons/Archive/subplaylist_10px.png b/assets/icons/Archive/subplaylist_10px.png new file mode 100644 index 0000000000000000000000000000000000000000..3d3f1d27f64f9cf8361fbd4201db0700db307a5d GIT binary patch literal 5001 zcmeHLeQ?v}85eQJhm)`bx`u6ms17$mGFh@DOR{DM5<4Vba0tO|Qno9TrB{g-+j49r zcG7FFp=_ljv-qJ zK|gZ0{;|8*XG?nD=lMO)^Lu~KE1e#%sjkQ}f6I&@NS3$KQwxv!xq0Sv_`i|-%OQAp zz1?50)e3Pm5>;g-2vDsp0#J}pWCTf^3)TE!_7QaEt)aUfOb6Nh+~Agvvj#uu+`@!T zd5;Ka!JO0Y#WS|g{(c_!bWzcqtbP0Xy85`c2D>d+2loEs*6zm+Ed9=F;jWiA4CS}; zS+Bp{)!(`DxkJQXGmc$ZlfUfK?3*4*YA$Fgc&l(B+gP%v5j%q~Z~DXYPt0w9M?Trp zuk>wmfTldJMiOY@GdSyjGi@A~=vJkr1Dl^55G`^$2Q)~()o z?~JFa4)5@~H($C`c<}DLTlM?+gWN|SUM!lqHXrS=R&TJ@UK-w9);aI%PyB1(%7x2U z=A(VbmmlB*kL*4#7vN8c#DAs{O=kN1*)Tex`Edjl;`B5SVhavmRkcl+~o zC+^Rjx&DYv?q&w25A^O1MJ_CwePGwVIos#1=+;UvRrC}uINWSK_}y#0Fa50g#N5Xo zKU((f;!y8~-OHT5yp{InuK%R#jiL{*H&_4e*fT@#Xl+GnntJ$r^uT=OQ-)>dYta zy54s2-(9aR&d9uw=4yICJ@L@i5=8m1sLhm@mv;GU#~v7Ji^m^Shqoz%L#Azm(SzLn zw9^QZ9a5me>V3<3Q4LuINeuvNA{2qrLlEbZL_`pqfQAM@gA#UGuD){Ef+~{BQfK!O zzK9z%DwXX~u&TYu_;iQxe;F{(r~MGd1mrVvnDG?&E!=h4ypLJ^-Y1s{%$umJhM z6G8;HSqVH8!pD2WwDML6GLq08Jz{>?sCX@isVz|vl(&MgRxlny5>x(>mT1r@M-p)m z1R-b|gHdf0LRNTvH7O6Bf(9iNF}xtz6D%W*s;0&o)kw;GLV~Gjqp`%j+4{f~1Oy#HW(s1%V-LlmswV5+sbJXaWlm9E}0e z&dIEUwaIq-I6!YWrU_vY=zuVURe@k~fV7ho!C#iZ@GBv(N)vQWZ4AqCHpb2{97(Yw zWgB?+foKd0S;w>yRw`M|7>8~(s78IN1Y8!%K-Sldhjl{c1-%0xwlNON;-EX6K+RoElF+uS}GVzqP8uhDc&}GqcLG=_;U_RK^lAsAGIOt6AHrj7v zc{{@sOff->hl5Efa@!YK>rIS0VR)#ZN+qVL(Kcf!+1aZ=bMh*A8B~mxMp2_Vc|lAT zEE;7>My3!gIjP)1JzsjsQz$W2*5X1Glr}(qU6xXP??h`xyALHPs~s(@Q^JxOk1d{< zK)ey?tN59;<6ok(n9vITt1huo2sZ$@KaXq(pIfiY(T)HsV6;p!7(vkh;{=hyYymqf zi828wlAD{$GcWn3ofTx}S zMlysg^HqLE8vm;dfud7ECdKa*T~l;Tih)TPPpNB)u1PU4DdQ=1{m^YS-~a(BI-U)Xl}=`e&ryyexNp0XdU{SVrp&jSDe literal 0 HcmV?d00001 diff --git a/firmware/targets/f7/api_symbols.csv b/firmware/targets/f7/api_symbols.csv index daa9a7448..b7b141ced 100644 --- a/firmware/targets/f7/api_symbols.csv +++ b/firmware/targets/f7/api_symbols.csv @@ -3456,6 +3456,7 @@ Variable,+,I_iButtonDolphinVerySuccess_108x52,Icon, Variable,+,I_iButtonKey_49x44,Icon, Variable,+,I_ibutt_10px,Icon, Variable,+,I_ir_10px,Icon, +Variable,+,I_ir_scope_10px,Icon, Variable,+,I_keyboard_10px,Icon, Variable,+,I_loading_10px,Icon, Variable,+,I_music_10px,Icon, @@ -3464,6 +3465,7 @@ Variable,+,I_passport_bad_46x49,Icon, Variable,+,I_passport_happy_46x49,Icon, Variable,+,I_passport_okay_46x49,Icon, Variable,+,I_sub1_10px,Icon, +Variable,+,I_subplaylist_10px,Icon, Variable,+,I_subrem_10px,Icon, Variable,+,I_u2f_10px,Icon, Variable,+,I_unknown_10px,Icon,