From 85dee95fc7d8cc350d8510455810e7761431f746 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 20:01:12 +1100 Subject: [PATCH 01/23] add file and folder type loading --- .../Search/FolderLinks/FolderLink.cs | 2 ++ .../Search/FolderLinks/QuickFolderAccess.cs | 22 +++++++++++++++++-- .../Search/ResultManager.cs | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/FolderLink.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/FolderLink.cs index 43ecdad97..02ad837d3 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/FolderLink.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/FolderLink.cs @@ -9,6 +9,8 @@ namespace Flow.Launcher.Plugin.Explorer.Search.FolderLinks { public string Path { get; set; } + public ResultType Type { get; set; } = ResultType.Folder; + [JsonIgnore] public string Nickname { diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/QuickFolderAccess.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/QuickFolderAccess.cs index 6f0020ac9..84e036c94 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/QuickFolderAccess.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/QuickFolderAccess.cs @@ -23,14 +23,32 @@ namespace Flow.Launcher.Plugin.Explorer.Search.FolderLinks var queriedFolderLinks = folderLinks.Where(x => x.Nickname.StartsWith(search, StringComparison.OrdinalIgnoreCase)); - return queriedFolderLinks.Select(item => + return queriedFolderLinks + .Where(x => x.Type == ResultType.Folder) + .Select(item => resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query)) + .OrderBy(x => x.Title) + .Concat( + queriedFolderLinks + .Where(x => x.Type == ResultType.File) + .Select(item => + resultManager.CreateFileResult(item.Path, query)) + .OrderBy(x => x.Title)) .ToList(); } internal List FolderListAll(Query query, List folderLinks) => folderLinks - .Select(item => resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query)) + .Where(x => x.Type == ResultType.Folder) + .Select(item => + resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query)) + .OrderBy(x => x.Title) + .Concat( + folderLinks + .Where(x => x.Type == ResultType.File) + .Select(item => + resultManager.CreateFileResult(item.Path, query)) + .OrderBy(x => x.Title)) .ToList(); } } diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs index 6a336c59a..24eb99724 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs @@ -140,7 +140,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search public bool ShowIndexState { get; set; } } - internal enum ResultType + public enum ResultType { Volume, Folder, From cab7f94c6b3d2737c66fc35a1cd6812e311f0135 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 20:21:12 +1100 Subject: [PATCH 02/23] context menu selection for adding to quick access --- .../ContextMenu.cs | 32 ++++++++++++++++++ .../Images/quickaccess.png | Bin 0 -> 43865 bytes .../Languages/en.xaml | 3 ++ .../Search/Constants.cs | 1 + 4 files changed, 36 insertions(+) create mode 100644 Plugins/Flow.Launcher.Plugin.Explorer/Images/quickaccess.png diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs index c9a0b7303..b5d756d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs @@ -50,6 +50,38 @@ namespace Flow.Launcher.Plugin.Explorer var icoPath = (record.Type == ResultType.File) ? Constants.FileImagePath : Constants.FolderImagePath; var fileOrFolder = (record.Type == ResultType.File) ? "file" : "folder"; + + if (!Settings.QuickFolderAccessLinks.Any(x => x.Path == record.FullPath)) + { + contextMenus.Add(new Result + { + Title = Context.API.GetTranslation("plugin_explorer_add_to_quickaccess"), + SubTitle = $"Add the current {fileOrFolder} to Quick Access", + Action = (context) => + { + try + { + Settings.QuickFolderAccessLinks.Add(new FolderLink { Path = record.FullPath, Type = record.Type }); + + Context.API.ShowMsg(Context.API.GetTranslation("plugin_explorer_addfilefoldersuccess"), + string.Format( + Context.API.GetTranslation("plugin_explorer_addfilefoldersuccess_detail"), + fileOrFolder), + Constants.ExplorerIconImageFullPath); + return true; + } + catch (Exception e) + { + var message = "Fail to add to Quick Access"; + LogException(message, e); + Context.API.ShowMsg(message); + return false; + } + }, + IcoPath = Constants.QuickAccessImagePath + }); + } + contextMenus.Add(new Result { Title = Context.API.GetTranslation("plugin_explorer_copypath"), diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Images/quickaccess.png b/Plugins/Flow.Launcher.Plugin.Explorer/Images/quickaccess.png new file mode 100644 index 0000000000000000000000000000000000000000..470a6782fe75737cac9f5c24481f6feccd231d84 GIT binary patch literal 43865 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�aNB67T+ zOGOjdV&)weU7e_wKMnL8L_aO#Xr)cGPLr4OHD=Zr-T_;}eI~giv?V;$+F?!z`hH8U zLp5`7lh)8`GAv~5+S##k5of#TYg)=BbjH^eUX>{K=PbI{=E#ulY9DLbn#5q!=`&%( zUTeY(7Y+C5N0k9~L#4`I=n2<;Mt(%gSD(ovjaZqxuO$7CmEYwv3v?mslR>!$LSsgg zn0dD&xlIli`G?1tPxink2cLaCzFc1TC|TW3H#HjkOU9nk&ks}5Qd}r@jI5VJ*ushE zzPnIClYH7vsL1NE0+23MJ{WEmc=@j8b zGOKfz&Ao?SjjCLg(fZn!12{E0kqvbmThY3VT>W9ct>F)JLd?Pfa|IgDL|Ub>GPjB! zs?%-q&o&CMFf(XJVk#f?25fllf3VKXdAc5J;r|GKNXScRG(-$}v6z}hblHCp>bXC9 zdyN)>nKtN(yL#jZLR;?#?|g(6a`a6Y-G>ohdR0zKcYd&Cn3wED zQKvU)^lRie0_V@vO)|UQ@MyA-JDS3 zId`VwH~MmoXnVf+`Ks#kzlT9ffq}C8R@Gd^#T|I?#@(qSn%|C~3ys$URr|;Ib_C=I z&3Z(x0h;KDXEiU!fgvOub*_4dWy7C|N%rrYy5b#;!7!fF`9tM_d$g>14w}i^MuKLe zVZ!DiTC(}3Ln3lLMLpUPh1mf5ePc?07KD|}dMB6=KczY0b~c6w5#p}^o}0`Bn19!W zAb5V(ZP|b(f`_>%J^RGiOTPBLV7y&(e^{$8QX*;heP5(`OO+N7^NiWaLA zcC=ZB27`cKp4!h&vk^#*DU{c0!V`u7kzs|iT7=K7YsT(-0r!Rkl^Gg;afl{r+J7D! zVTa^&8qY_(I;(4X_h`L~u7g1bZ*QUT1zACJfo3ISX8qj9`K)@*bMBqQ*H6n%MQ3jA z@2eBqH_@Np8Wj|zM#X!E#eUNasV5&xVplA_(Sfff!K!bHO=leB?_DO!XFJa+#f)&UL06@jL09}0n#5$fbnsz^L zS=v{c@M5yyhYWvsf2$O89}AK4u;)Uh#uLZiE!-Gvq%Y?pEjc+=V%Mx2R#TqX>F_;! zA6=`wK^^Z}5;)fE?6HrSmy|0Y#95T0iOXB za3vBN)SygCG79rDJ53iHlq(umNKO!A3Fsk7xso6>Fb{^&JSaJyg9(*1x**F z2XMT}S)Wlej<#6(Y@h{SRclT*jC0ZRUC1pz zAgeRKquU{Xj_?<)lq|-FP}K|tr%Q|K1n083PPXpzGrx6V=g^euczifVFFTTu0W!&U z_JdBP**3R42Z@nIT^d()3*^7zoz%wlZAIHU#*s_OGG;?$-7}_nn{xb}u&k{%d2!&$ zQFf-4gQ(aZF_IG0jV`(k?!pPkliStvVzx2TxAVKRxKrmjuk=v| zmcN~$;@+IBxiRbgII4JbuDTUS#?y=^38{PfGFebKbu&4F8OOsYz>W~o?ry*TBOAqz z4{g_=-&V3O{^skH!#TjO_f2=k@I8XA|1PSbFF*4jq;eqOjHxOpc;qrnv5@x}}-|1S`J|g&eWX z`?yev#f)S%7s!M1WCtw_5a^@+F9V_hB>utscVif1plU}QZoaf^6CH1eOQ6707{Xdc zq9M^3JPJ!+&2f6)YKOsdMW(i${-eb^Y0IFZrcu6Apt$PA4&mGDwfRM(vpM5t+Oa=n zcKk|)J_kngYOMp2)Yz;QE@Tx2fnHUfzw5UikpKmckS{?YX3!!T)JAx23rQ0HuaaQS zRlmTQAFpr>qtV*OX-+%a;Hzxozrgd9j@R1>3&ngA)$I8EbHP|kmDLZ!({;g|{rWD( zxc;1iEL9v!oBJ(SJuA7D9ce@um~CKwE(pUL0c1QZsB}|?e)?MovrxYZ`Hk0{-GHIP z^3;+sIZiy8Qmx$f(-%4*n>o*!SO_m7j18Fz8**lzk-XmFeZJ<> z+}5Vvi@acXpDu}}8&dEBzlGhA3LAe$$#>=`7su8-hMOps! z#zt{evC`^axaYXiVe4;mcM^IeGo)P@; zeUtbE)9RE=o7jdrWv1EkWAxX`VKdt<=MNgr2P`Pb zY2=s)6x%M1x8P8*RyoWOEj3Y^?{-C;a@QH2S z{cEEuRR2nLd%*re)cJ)pSL?4}8 zp=*tUPgQ(T97f|g#rpQ`6r7sm9<0B%*i=Ba?0@zybV+Izw0apn;XOm!gPL}4b=+6~ z3Ov^WX%IOBh2wjnc7XqeW+52lhsqni$!VOm+kzR;1B8%S?EpO2;9YV;5ncsxfrBC` zZv7MLCIBH+FGH~g(ItYa8~cC< z4}C%DoDiywWezPyXnog^ZJdB((a+i-VgY@U{b^90n9hO zg#tOxo1OB#)nhJ??drFfJ0)jco2x`v=K{d|3h>P#u~?`#oVEjuATS9JagW4ubWxy# z?|<&_lPqmIn;s59p(Z*}xh3fHYsFc3muMxH^zikRq-W1iTVea;P%S>Gh@&fOef&4l zOvkuE*j}7~ID@TfJZyXY&zV1dbSX>Lu62r{M@YUlLWVR+_)iaCke8c-i{e6~ zfx7x%HR7Np0FRtzyCTTE0Ou@j(I(K8N1bb#n!AXzwoN^K0_gPlASDd%_~E)oIUthK zn>kKI5p?xvR=@NK-o)_h7qxB!kK7okB*p*iZrVKlM6kglY|vuRUB-VJLMCu6QTW#T zdNI-can0js5+!e%&#x{3YR2p-NDuM)e!tO_PEq&KqG9*dqK1XRVF>5d*tfRb7GB$H zy1znyTqu=$JLyc@Ld}}T9bKs6zK^6aIURBlMLQ2OHZV z4-nN;cm!P5v!V)rU-M+hv%!~nzd6u>7$@(Mf{ z*ga^MI|fL>P>+{u(ZIpOxxlC;Vh8AWz5ss@SU5NduLHEJi8OzObKlclZ>*6j{lk;(@_@S80E%~uk*h3ff|N5 z{l21XQLM2ywSIQ%ahiX!{R2?ox-Fy;(R|uB@prMd!3}L=lOdkR0g9fZZ&HbGTv>VL zyV2nla?HZq;CI8$-1A7`*!x_SR;nND@!k|rH-qC9%C>P!!1`v3Rj8UW=?aq;mZI<5 z+it|idwd6*y(<3qTXPpYz<2}fY<1@?B;?HtiaKGfiwHKun${_-xHF%dok>Ccwe54X z5>{Xi9m?U^*s^V~Qfs~p_%vujKk!*6b^TD_qq0zAC|sl2Gx_&pn7xU`$fMky9OYk; zsHQm;-T+vGwZqT02m16)tYv%fwFHF&w)E;4&s$R)b5F#a1-0$Fq75`QpOdxLUG;#^ znuXkF(`e2Gu{&W{L0O?quDb+QQ=}r$GpFsLc7qKd_AY4quDj!Hv0jck{MV@{gPk53 ze#5{U7B8%du}K+<5(?6DBL*g9autlgF3f$Hl)!{p<$E-Goeen4{uQy{1$LUPo{1o>1iSG?# zDnlWs{vLNLr+*2RF%yLvF9i-J|12St)95I!dvbVnPa8O7)UHV%ni|MO7m*&j-$N`c zz8=1dIun|Ci@e{eCelp!n+&zq%r%rraV~&Vhy6MUo&Qxx8}D>~extICC0T)J2kCLg zO0ZnnDhp}L2OVK3U|s*fge-lLS|o4-r~Aqiwspfq`7p9Jy#-;v&ftS&6qY-$&?kD( zl^0su^20H6$NQeBArGc zjaHRGPc<8!A{5D-*>v}1nyp1(&B5>!VVR}O*n+T-s5Alt`DS7})_cG%DZ=viz{8+`VkKy#9bm`o@)!9-Wj0yD>Z#B4 zU8#I%a!yRT?a@~^jx4EC6{6z2^Wp9Ihb})?dlcskNNzrsesNEhL}nZ1D@Rqpqp|S|3V`gQ_ad?s$3J`FUz=<-i2!?t!c89` zlPo`DzBP~ILhV%kR9ffqZg0>AImT|k+l-l=UqlnJf#nQ?O6yh>;dPlvC->m?Mn=<` zl183xBnr;J%tJ+RlMEgC3 zqJbw@!ra3Nx}b(}`eV?exJw*>Hg-zaZmX;OPEP4uXQQ69fUhiy6kE*MTy!b?i~D3{ z5xjdD``tizsj~BU$IQXZARmPV&pRwCZm6ArByYa&b2Ecmq7#MC3e&Dncf3_x`D| z+ie*01FpE8k)hwIU>VCO3#1aY;d^m=TKFrC;$>no^cOWi2<(ii%!`EKEdd8fMVpiT ztlt3Q@5FeY~8QH z!B10tS{%e|8X<0q|NiAMv{&(Q(y3y$2Wj7Oo9byK3j~Ip)`_VcIlt#qOyYDj@D=_WK{m@iS8rH1p#8APsIC z%Eg~Y)E`k=ohh;Cvb~Brvvk|$gCGKMgZalu#`4w;_p)%F5-M#5D735O2cjFm{=`vi z;x(}^UgEytG#zn6L74eBH+?RA48guAN`?kf6rofx`zh|zt!QT9#-m6I+Wh5I3;mLx z$mlR^q0#TO4lSMd&evqe%X7$S=o&CqinF%W$aAt&=;)v0fo)H5J9iLi4X9by|BTvp zY)w;V6N(J4#a;d#!~i2Y^6$TEy$eL zGE*PO^ObP&w`e4Z2_WAKSr#BnLJjb~-Xv-QKjkcUOi5WvrEmMWiC|$bYC`l(W-9Qh zIx#Kd2NP-bK}3YWX?yi=w%+Gl zCL)9mHMx&(Zs+*5wc+tfUsraF)~H6gHw)m(*)<``S_xEdxHNa)Dxx(C9{6AT-7z~4B#Me#kVMGyZTLCP)- z%D?6|4*w6oK<7ZU`(*CMcdjJPub2m1?Cl1}Umew2lO-$w%ORWuJ|8{ub?-i?SBGjU zCfMI~;u;tRO|=aJ@|6*%cgNW*azjq{O4ts!N`lR_3>4y?n~$86V!wOjN{?AsX@-2xg&!^vTq;AdH>nbe|RxtiNs9cOW$wVyO~t;}(9 z?-Fs9_nYf)ZH^O-cOyQ|)`b{lGY zq=2(19{-bM@-tF*x~StEb+ZjP?ZzOTCZ3~jDkTRh2bY6Huhz?n_Y-NSx>5^A;i04#hikZDlrqQG0F)U$Pf^Y#zs?8N)+L3_QIQg>OXcw+Pt6C-s0?+EpELw{&nd4 zMbqrs>a1x9Kn(IGQAQ+H1VzmcM)$@|ubvz%9LP1fx)>5!d1^3gXz=$S!DyH4RV0vz z^36qT;oXHSA0=1jW0>L8Z7IlFdTVA$f_7TK*9_O@JV1H@ zLJ%1YZBKqWqg5#7zf#0)E;*O4K8Frm`ic|8he-vPP(vyw2#<9hNl*u6X8rh1H^_EE|t$tOY04 zm~2T0G6L>8@7t86hTW$B?cYuzGb8-B^0+*(M!@ZNrSJ(H3Y!VHaBTA@7Ss4sWGhF% zeZw3206ms!gk&v%4S_~RmQFu}4dDIuNBeym`;8RR|6`S;Ql5C;M8JTc|0yBVnLpE@ zSv-Uos!|Pyo4O!&KV4aD)KzO&HBo`^J1RsaAVKgGjRSMzfd zWEfT7Ki6#?G-U*&zm~7QC3ug@tmu+OSMDk6(>((C&m~|*F`<%JXDjz_kVT9}{(`-Y zwCWW;KRjCa$X4eScPI2U@MR+(G6|ZmRpu1@1PzxSOS65_Wnw#wFs?TzoJh)dXuaz> zreD7~L#TsQTW2u4Ienht_8S`I;A_hp*fQQ_TAF1o?X^tJC{I4H_7iMxetE|ayHPG( zv%KAwfa|E)RGURVkA{;+5r9ilZTy>Hvz0_s9RB;lId9YReA_>GS~52H3^0c?4%NjhvFbXM9l}|) zu}UsGBN(X$X5jH>UR|2DHHW5zf@)Z#-NawNKmA&hZBa zwwC0bp*78RF#E)xfXxsWu~CMyFnw;{$vu$@h#p6)C5AZ1_I!@X_8f*Nr=8TasS9h# zs7Y{Ix=nbmc#v`cP-XzP=m~!g%)_HEJuo^R;y${#NAn<$^1nsW>96v(P-injv|$$= zvz*_SB#Bei*_Bn!4%;l{1%Ya1vM}ZPu*rtyc!DpQrEjF=DW(M%haIIxZ7$jc5ip%h zaOJ`tuI`@0nZ*`X2PfFSa|`$1ejRTe+{g0p2;FLMAFIrVQRFXI4M58Gv)KgG?QLvt z?cm&{OSt&VbGUHv3W)MyoRbhRAOSHTA>iEAXR)|=1y|qqaS#}Hj`nf){(am&yoY}1 zpr6AopUKuQ=eo~p%cr(^=s`oD2PX~rzz_H3o&4P8Z@$!1t*`4SbtlLso744Vu2rqK z5cF!kv?xOHnGlAavFam+1f0Ei8H;o0aOdlf~V zr4GP#em5`x3cO6+a5yZ7y{)s(V`~Dmk?;y@&uuhOxV@`~MY&>#iJ=^waA9`~&s~}0 z+?g$G&jK!-*}|EvfYrcQt|AD8`-c&4-|BI6)Pn;spG|RQx`nO96oCm7njj|N@NkL4 zgCiggIOtb6><6s0xzg@6+uup`veXGUcYNuxy~}^kT-e2XE?>sQ3uh6R1Kz%N4cCA7 zH5?w?LmCEf1b~P*Bm^QPLOFd`PSnZFF#-g1s~)T46CCheynW*uW?NsxV(%=T|JD!T znfJaQv+W%WAf(iTnGh0#hYpDYh7_?g-NNF+Gq|#Q4z~{ODNr1pI;>JcpB z2tpi|M4vfJ&xoGf*p~8(Ggk?%=#ts|$@$IcZfL_r>mpRXqkf2p%s6x5BK9s{E?t5% z*Qs=qq+m9`4HvDWlJ*|Q+vVd1%yjTt0Kk0*j>8hbHG0CI1M~0>Gyv+jAC6PkgJ=hO zK%z>1qL!F-=3NnhIrPdCG-|fK$z{Fw>H;5n-!9(s%nlaY6Rb{vgF|3>IH14Jc=PBO zDGu1$nqzxs3%j(1XTS9<&Rqm30r&3a^wa}s0`z@u))pr$kig3&c8L*(goBfP9H%7? zCTGxXZ5x8+izfH!u~uR|lo3=Y>%i z5j!i%n1D-9ZJtJ(GY!(s#>uk7N#En__8hzC&tp29Vdy%v#JE}N)4E#kiC>xET9Q+k zfvJOCyYGd9`zosPQ`3deTB z1lyBc4iaYzXx3Z$_Wl{-$9BIj0BRi-G>NFCJ84v0Fcjfzx_r&-E}&f z;>^X1xbpl0+yi&+0MjXOd>j#v2cYW^x8x+`HZ5_x|xe#qr&n@-2x30we0N(+)X8AVkg|y$pen zm@;D!DG~yU1390!&lH8xrrb_WIJ$cWU---~;rbtZ4ljP{dvWIcMKA%W>yVg{V*aqj zFm#B04@N@l2b@g<<|*MW6OO~Q?rNd(Y7FvYk(ax!#%kE7K9Iy=G6**z@w&SC%7+g8T&vB?bU^2MmCjj(IuULq8NXtN3K#`MLb8IHYMo9cg<{=CT#1k+L&`+HwL{LiN z8%Sj`^sq|;_HVz1-}%M=9WQ+BleqfAE9g@P3XEY$;24qm9>Xwz;}VH`@X#ZzI-JD- z!ZwcPJE%l+g%5@40ZPNQDsE`t^H&ZyM?Jl*Op*S?O_OPL{`u|5eRHRPLwkr{!qv=1O8aV#bf zCIlo$Ov~jlUjNc-*gm_9D_75Bb-*}YF2Q{SpR8~+93yorq}T(Tkh%fgkiaJg2)93j zc=1`#%bx%yQ)d<$6@WlEvopo_eCoY;=E50#^>=UM+82K}6Lye1jYe8Q zQEp2R7!1#fmLX3S)eM;&Gbm060Kl>zu8|zZg(PJk{EF^6^}b15F;jlCMmCcBm$+F*Zot<1Paa@NRWw|c#;{M z4@MD7AkRUjHkRM_uD^lh(J`KX<)fHPr-*%)LMg4lk8AC)J$VT(chqp>S=IF-N#(YU}w%w^~5a8j8fP1ve+IvX;rH$#J=g=u^U(y$iVf zE$_kgFMPfU`VyqF0$So%DOGn-VeLDMK$(+Gyo3Pm`@A}mw*VjFDZ(RfL0tZgA0NQ{ zHm80_?%)zTNyi2z527-9bI{1HyKL8G;$Lh}@TdRybNKcToWu3k2Yl(bU&Cs(0tFxt zA;`DsbU%T9;wb+O`HgX2{=wL3Bb+kH!wXn$22g8IOJ%y z)qvP9!D*F!4MPHAkHkIDb>M?r=>O5*1s~n5q})eexr{&Yy)WYa&46G3#oxfey|<8( zct;Xv(;Rs@j5r}CT|>`B3@pSQm2p8BUB;N840WP)GC)yu8wTqx6AQ~O#7}^nJ;6A> zdk0_pte2TnNUI*{ z?|%-@>~7=tf9n?B`ua6YCiy#RK_#~^4w7Xt2B05OW;>(Uu~-R^10xgmX`kmXK zk@QqK8HOYSlk*|wIpUPRQ?J2E{m~I_eBlcij!w|8j?pbw=ub}2EteRUM@Y*RVp?KY zMWkVc)b$t+_L08wIY69~TCD|SqL_F(D`iRCvxZtadwOBh)+CL_aad4Q4g_0UmTd{p zt_&u|ay8)Kqyq@pS)9Sn-r1%d8?+jKtuHRwCWf$H%0`F-WXb0`o?;j<@Qx25NXxid zbt#D-05ubaAaM3hquM_2CBwzt8GhpXp2ajw@%z8=CXR252Vbx#kt@>8M=2v@^*C3F zM1|7zoIHuR%#4FGZBUp%9fpd${i?(K@_R5r0f;yFMrNv(!RgwJpF!)v(mE#QvLa z87+x9$!~bVz%UFrTrH7O!p`0vwsv+Jl5fjt9&I%6Hk5 z0Pb-&baCm{I{j$-2Nm@e9g0cS}qa7BqKfNc=tTr`5F~x0*t9J z0cnx|SphI~Cm@25kP{7@ktSxJna~O4Jd}wmF_5MK7hnD`hGB(tyaa|N`fiD#TV-xN zBn-UDn`xMVnDBjn_D|s>AGm@q{pLPi|9rM9qxd422+TQhj-(!of&`-^Fv;^EQjl^qAUMevi3{=Mu_sagNlYQHt!3MPb#McdxVHl8x6Qn*Ob|+a2y7>l%8`moOE5zhNu2D3=f)XwRHN?_7{-h6P0+1GQ z8u7b)dgo$LhA!b`NLcJ$#MaKj%tMc^8%kY=^|0TDe_C*V6`00dme zkoHsGm%&nf&!^K#B9(~%m@wZC`0+pXEM}7l{@^#?#Lx|($plG|zgUx5f<`HyfxKrt z1bLniQoxY(lch;)|B&r`00U)}TGi?poLT`wD)vH_I9qc(`^v|`!xCNJgZr$eaX%m- z0;vO#fHdG^KmG&w=#Ts$e*d%g@WxlZoY&R?aANdY1twrt>pVd}tHNxyjmYqPmo>sn zLIg%i5uAXSWXXEtqWv<50S`UW5Yd0}x4|ce5~W#~y*I(D{T7NN+C5$8SGK|0YsU<{ zd%!dR$3Q?;d77w}|Air~h7Ns9*xKI0h3B5fbZh!>Vpn)LS9rj?b@f3)fb%;}L)yRn zRE`2uct@3U!W~Y0%f4(16zsLjM*FWR-S#{2b zWoEojDIq1bdIO>)PMk!-<^Y>0%!8zNiGU=l0$H0NV=jG4hyY?_L;zbCFJt?{`5Z7a zMDQ?xhy3w|)a8#jKL4=~;*b8+pTXDupvRl9zM9)3hln!BoD_L|p1?zr;H50RQ+@$; zj>ZHaX+LtBI0!;BBarYZW)Pyq5HK|MUZp<-u?ito+E{gEk-7;d2m6T2V+_Z~NW&8S zYKb^>NJ9tidT{CyyAG-EvQMNtLHGOr6m}3Nfa-u3cZLBgCaB;pPhg^*${PmkQ}60| zCvtuSLov?`3g{V*z6A_mwHnY55j5Sxg{xPwwY`mZ1`i-|{W1>JOxe&hPcB2BmjS^y zzo3F)@$g3u7&ut8UE;i@bl`+R)hbe%3$ee|5)Q~DBpYj(01ik|>}bmMo_qPD zNU=jqD-3Z!pO#3m1G*k(u3pBU{P+GmZoeJy+V6hO1W*Dnh^fIWG>L4gM*>)=xL&s= zb5JBiXG=%He*#lN(ii~-m;-{?_!Qg#`$JinEy$!0f^5+7pR`6!mm?vUh_ORDJ_foK zc(p|Amf(H~>U*R(APzlvh)6O1zwEtfjAdDJ9`?n#_br)OdvDb}y-xS^a28V(C6W*= zTZUlSf<&8!EDN>?0fzm{0%RB#WLSoN8a55sumKqmOlToUOEM{H2$G^niKaw~A~`fk zksJ+YhBMRa^j=F>Wo2c)_wG3n{t*%9#J%~lDyzDBI5d5_v)+4mIrrXkPegpN9&Fxz z6T`K4>?taBAD4Fl9mah=b=)=*53jcuY&w%!7~p#yP-8M;jIwn>5R?MkIywXxm@SuB z?Cj!hO{U*Y;sGOBD3kAkV<+aplBeVy0M~~%zx;a#0U*gCb$nPhCOWqoX7slYJ_+#n zr3Jp_qv!FpR|ed?eiICpxc<@@ViUcAxgw_LTKA>uvsCR}K$AR5;K`EGk_uw6V+&Bk zB`{D}%-zNsjtfF&!61UgrAKh_`H!P)1`Q<>1_nl2Ebu4)>%RczU3}pezkosXnr^UE z8f!0{jS~<6WVObZT#U(~J)23)1Zfd{$)*x(zPxaOkQ$B*KtKkC`2g!%jJAMUgo9BN z3?ecRA7u-i8W=cQL&^ZzWc|zoxD>SoaE25Cn=w>)gVpDM6?IY0aD`^H4afu-eJ8VH zG&6Fu?KhXQj83JnErNhbWHeq47B1z*T{*t$*O(KM=-MK3s9hWehXJfVc4?^nJn~`-2bT<^k~5YhN=+ zhYHWNRd&&Yn(6E;3E517b#B0 z7No@Bd<1MVkTbshd;VRVd;BB#+%La^P0nERt*f36NGBEgmoQP?D-ju-KLtyv?m9-Q z)?u;9u4;h|Gegl0+W^MoiQI^r%}1)zH4sx3NX|jHN?28o3i5gbE*W`H6@Z5g@_G%~ zY&14P22}$JV{_vQhIiip0_iqxd|YaezE6qOl>TW2W{QMUh0C}feKZR~INLo`JgDU$yY7vdr z$i~IHYYV-$4}{3)YD+qmLnV9kvqbw)TM#07lQRbC3a%Lpiv) zk4A&v_y_<1AoPx`h84#eaQ;%ESzfALeWAb$L- zf8jsFm21FTuf1+kUTn4WQW;ATKxBg~Vu?Q;I2W)P0z@?F$GnIDOid65#NCqZMpVbr ztT&O;{Nz%sE}$a-yJHD;7p1dpKoye!V9ZV**>A#*qYebk6f8#rI1iAV!5g*yOBs+L zD1$Ns5ys}-uOZ*MS^Fe^@eLGCn%;}wfvSj&VnYz4c}vjvh3}h4=2~mOx*_rcvr_*9 z2#1FQjs{i3&R%*LyXVetxxx6Gwtn5p2I})4vviEk5G%N%8~__Wyy1mFoDRS4s=z&8 zj3gbDgWDWor=vhqY2lH7f9MkzvEC5gef@O}9*loxMK%PC3P%A55|FG22D1^DNoY|0 zE7@!V>|{XZj$`%tTeO@T%bma_rF!cHW``^Vg$s%Rxd>(#9>enSr|`+|`V%<&=%e_Z zUwsM1AUSKM4oW8EYF`+%f8#6a<4OvV|9;(0SKbFRqkzGwsjF;3II4e&5--7g`$dVC3#3YNwbmC=;?G4trKpuR!vcNS0)5;r zPzZz9CMd=f3Xqx91?ZkMB=ta;E3FjZ!l%CtPyX@m#%nKcu)ci&6iwO@GQHozjzIv+ z49sTG6qW9&6rG-|fjI@roH%6iIU;bGRZ6KDft-smMnyf96Grr6j6ka8-=hTmh1ofp zkkE)fNYhG~v!%uy@J3yiQXn!wP_(iT5Aetfvaw&i_ELNIE(~g)4W+mt&!uv8BUTRA zEI}hSFtsPdf*cqf8oUTnQH0oi34q(Hg2P-e-`NAr=NO+EnbjTIwnHZKfBQ+I20$&P zb{)*u_~>RvBlzEym4WX4qSSvCTn>3{lZOCbS;t?1kl<4x;8NadX(S7)B_m`KQKO-$7&^a-F${+qXcMG*#w=|Y z1TH#ZmQOs7w_m%4+t+WJEkc^kF09ByoCY^d(27pv%utD*6g7~OkGR!a^->6dMazO| zJWtVh0kf$nUGZ4Lvg4;FL94Z}3Q4si_~iDq-7)o8mL&<$bx0kMHwBca*+e{u3Q{AD z4MZW|yoPdkfNs|eYi5(E{`}DD_00v|2*4#45}hi)Le zcNHLY8ySWJ*Snl!$AQ^f&hX45dwA>B>s8+uaVW0@Te4JXB%*;oYC%^h@5C=&V-m_F zauRT|fS)90)z{w;^SeWk#ep@e)E7kuh3)#RHa-?LEEbcXg#}F3BQtJXeILWXW@uE4 zxvQ;e1YAR809XZcE=7%y1whw8HfP#VjWE@SXxW4HQ58MrO-5nH?%4~Y8i5$y!-V+bEr?9- z=;UL!?iVd#C2}Bna}{H_pHBGwp|*Qh0Z>+y=msAgIi{QJ2R`=n8LT(JwYRUdOgM<@ z!^SsN|JEQLC0>jEL(th1P^^NEC%7@Y+=J2*qXrLUh}pE7WG@Akx%g}L{#9}+(Xb>a zz*QBY!tx9hQKGJPIA(BmE44y@u7dzo3>bb0omUifM+;HQchopxUuI0~P?xjcEIY8AML>FvFytCnDHf zecNx$x^GxTf>AJr|5CUqCtuh1>$Ux037>u@O^DGC!{oWd1(e`u7;t;7wGnsDp2K1< zx&!YK{zs;K*Cv&DnSEv>tHT>;(ElW&|InGhJ$JtT!9Tk%AkGJe$6tVG=;}uwKZ7@4 zJ3=l>?p%VK&Lp+~NL)}jDKfAZs*+oE?OZewrWgWH;uDnIh}2=YSF~jk_5GV6u!z9( z<1*BuE?}^E6*7}C8TYxHw*hJliCI0sLmCxp1Y>17{s?MK!G56C~ge}HllNeP{pH+nf6GE+9CZy)e_dIzZ#oR zLyl!asK9Xb9iT#Dsl-S|$RpCK#NYOfptLbK@qcL>)x~F+qM9w_Y_~oP0}hXlAWT^7 z?P2H4+3`W6&v-vu4%@bG+d(4)!EPXDS>Hay*!m9~M*#@iKa_UQ9WTGoiEGm;uh5W9AlYj75qD z*5u46i6IFn$Yx~IxPV-YDX=mC_2dfXM9=1>fC!RwIypSi2R2|)qO(nM?rQKu%Y-zk?ys`~20k{QYk!mG zbGe%>wB}+s#EY+xJ!Cb^85792Za{`jGU2@3001BWNklNF&S3v0u-Y7%gp8BaB`i>w4898l$-<+R z&^6fwC?x9Yv%f4%31F?Pt-E6K%$;L*c#SZ|DA;gw%UK>%R`}eD_zugg{ z6nC1cJghbe_v-G@c22Wt1m@!R8!pihhrZj*z&OeU%e`}0o;$boS+;Y{`eb+5hlWU| zo4Hsa5Xs^rRu;6q^q_ueTLfcdZ-9JMi)=6`+cp&h*U+VxPNhRyvYH44&e z+lc@fq7YnE-`B(*vLHM$XwTrHhPf=3qF<v zu0TAZygFeTBeQWEI|!lxnHt%eS`lLf{23(l;Ks#zOCg5B&m;&|wrX&{*ukYIosPLrF02JTVEVcT{iy0LRq84nH;H2smpRu9YMg-j=2fcta#_we%)kaW z0=kW?*&jrgI9H>3ahrlh9kK{=5fnBt#H=N`shGL|OT;mQLlJNpz*$C!P*~L6$iw&A1Zb9aL0yMjl7&;7)Q@%8>#O$T5spE% z3)ap3%!fX{_eiyHhTv2=y!~1`VMN6tm0O}-ucKS zP@$A|J8Ux6!y2H3owMgLTf~5%ZLOWJKktMNfS4XUdOnv9Ckx#gwn1M+3N-vvw;B2 z8n`272XJk@n4~G9&r_HnSu5_O)YYUTF3$2wMG`*rKA(yQH+adT3f~*76*j02F=k_E z!CnAWLm@B<$sJKdssyP^V8!DAk%ZI-byO-D*59K)Yx#YR_o&R!{}r_8(7LT1)V4Y^ ziE>@qK1|So_ggg_M-tRJ9_dkf5)0$tXblmdU+!SG95aCJE!%+y$OP^;`ly$JSIee63!WN1K8n$J#pxch5v z?LNN4nRQ0VD{z?-JBQC6ZNZQ!vGe4d57h3LlVmBIt8#lCB$VL%-U2tTTt_B>*4tA9 zU1p#Zo4h4!5Rioc7kG4?1?Ob8AQ=Ess^y+dRVYOuNx*{|3>_K3B)5m*GPA;cYWqEz zJ_AAZ&@nWW2~Mnwj=)zhV%y<14T3LlD`M_3K)o4aZb%W!WHg{y7!)hpV7-!EJp z&~a;Y)g+l(#5;!qk@ny#Dj!>)q0w|O=mD4-zDWOR+CkU)sGn1@A1Ap5dR=+bSuG&c zG?j)2M(5U80^da2nN2&psR8=SiLEh~`ba_dAEOn)kP9*k&Rlu~^Sv`CiT%kPThS;j%4=tSBV-zCc`;YaipkzVU&v5?H%jjmaEq$H*oLiqga+xV# z5OV<*ivrxNR+<#FwQchPd}#3j_tyc_A%L$+w&_TO3%d*4z6A_NYc>9PAWrryJ0%21 zq%5gs&$*SqWDPIPQW`q&=s7!I*OxEIgT~t1I+p-+gQh1m*nUjXwHNQT34r0fH>y3zw>eEjMi$4a zKA;~wrg%HPo;5nIv6R+#Rd7TnR91K~6>H zg27X2;l?{Cy&2&Y&-gR_JZFXKQeaSD^ZVU@?{m%Jxdz?Xiah25Oy(;ugCYnnTs>~; z74URqn6Hskb@yyV^Cmb`6IQ=JTdsVY1UyQN5i>$my}s(=mWJ!;h7LcdEk31b(p1Hi z)Oq1YC~-@z8kCH-)F3d*tQ&a)ybpiBcYwAhHUb~r2Jc^wya#TquilC}6jMkYkx8SV z%1pw&A6t$~V!zs##5##ECgEU=1-DmgWCr@39n2Ry7(Ks?K8z`B8xz5V%WQ3GWX=#N z8{u-DHwP=+-P(^W+aEXzxIZJHPTq}dxT4DCUXR=R2kOp4SA~#d0L0)y4R_$AWxyRJ z2Uy3*Wi)-i7yNKI@{P^dNV^DX|l=ArIYIiY?z|K6R0z zHa3|5nKuAtmfJ5NNdUZ5H`eL-M6?1Sb1<%n)Hnb)`YA1QkZi%S z4Zu_1nh@0!Yet;sBZ$x2mQ5-31y03WGqq9UPN!}}iX8aL8|cnnghwqzqKqGRlCT1_ zm8GV~29(|GZPNpMyaGzHliXl^w9eQJ8S}k8&~iDdur`J8dJi(;5i&h&%R@L|VTb=4 zaNd_;Gj#!ai~9dmNAP{W`$oXk-~A6)fE<*=HHHI~`is8D?ZcJo!B7Za<5<|zZmd>C z4cN&ll|A$T)m!7cI#p4Fey^NQ}26*jzkFiE|`-$cD7Yj9RYJsAYB8;M38R~!M zYVebs%s?1z1%rOtJvUXJQS+QRx9Ml&zi z00T!c=6C|Nm4OA7Vyr9F&rL4aWX9P`4`b*2c~gzHJkqfnJmJ1i+-TR=ppcE^e1JSS zamN6llL~`ullTuTKngvK%v!IOdZGeFw1&K7!N3F*` z>vc6@Hw`)y6sX=`1$iX~hX{TNYLwVLe!adZBl6K&uQyn)2cR$(XU}OwAdP8xde;$2Z4La{ z*2E2f84y_^54S{DT8?4B+oU?S?8BC0K2W>=j))Gh9`?(60H9X?yjd%qRw-u2Ij_6{ z^}mXR;N?fC(*q*Qf*;MsHr(@h2OwFpKo}mOEISIn#=|1oX9{DBSEtQsS_k7q@6AR5z|snJyLoA}BPFfA z>u_**?@QLFu2b?PLV5pP^wJ(lELyaYg;b`dPwpy$GdVH@;c{JC*ss{ROy<6dR1&$V(xBWx-{Xvd`<=UI=6kjrQ|5 z;J<-J>=EiuqXkdee^2fH835xdz&B*AkU3`t&1Q;jy8#0WfH_ivh2B~=9T_oaaNInD+t@ zqw}Qw+VxZwPU^uRGPDy_gjC0+&gkgwv#&iBiKeP6Sf={cZeFfS)?3@x&Z6Yp%HG>@iF;6CF}&X6P&dF)a`?)0Q+Fvz_11i zaJ0&XW=pLf2i{nPSqs@UDCl~!)&kUf*G#)om*~>)Sk?JCXF#$MQiH%=oI<1^^8k?o zUuUnd1sPl5kE$VzJPcNRvsmRDTYpamJ9YyPL6q!PdV9Of7Dec56f{ZB*(R^^C;-&b z4&DAWmj12-)R_*{GRR?a1B!G=;$jvSRVY9Ta6VZOkE#IMjK#;*Ne%r?+TU>R@V}eS zt13dIu?XeH6=j-{h^oQP^@EX*!j7SOXn;xff3qkUTZS{l@fg~eMQ?%i7q6DH2A?f= z&tUJ;L+G~_2x**1!u{O|1RS$@=p1KoIh0&tCEz;|``z^Z2ciPpcPA-HM&heH6c)}n zIvOya?>2&SqgoL#HV|wyvM(z~FANNv)lDZRt;KbJFR8_DThn1FW=$`ua|>%=vFp%< zl|dAD8HmI141un8(y1E5}q*q8{BP0-V z_XVnc9S*c+K6%e z00Cu4cff~7n=;7q_G*p2-CYO@e9=Fl1g}^_1W3_LIxY)PGMooSt&xuok{G`Jos{~z zR5BW5FC^$~bs&P~3V2#;t?)xyS6K3B3K;x{8UisG++@_nJsA)bOJP;clPs!D^q1|Phy|ooyIQ_Ldkm`M z*CeT*H?1J-kKlom6g#Wm#A$y7L_k0(1CBNW&hrv!zEmU=S{p8BxCq=P9(9M`=IH{2 zr3@>`R-$K|oc(v2c9LD-R43k7JNm)@D1-1muZN9@;Pz^T`Oc!o?^lZPlGre~US<$p zgUd!;eMP+jlA-$Rphh-b5=_+qJdw#)8!?QvQ!#_-Mvsm+fv6i-hOo%1{;DuXS69a#?aWcGHk+Xov{(de0N6?zzC|u zGa93vw&QNju+LTl66O`kun!Su0MiiQDPy>k`|lgT4F~`tuS0OaRzNe8praldwdXba zV6eJa72CC`2mte-i)flo&7RRGjKmDij9e7Hmo%tb4>hYw-&M{)$)Hjosi+E2Od7*# z43g>YgZcMs*)UfrU`$H&`WiLZ@_tP!QPs~|>MdLRemk}jrb3RkuS$EstapIB8EY^P z?0d8F$4LvM#^VXfNSX*lQwOLr0Sf<3UpZNPz`3($@cvt`-qY(RBFuL8w0?jypk(m| z!r)ss0?|kyV1(}|tu3m&ObRjMloWu;2fiYX|w8c#@ z>Y`o0y`a-KDX^5(Ls=c}OBq~JZzJ&7PGSgmGU(uhZFjuL{WnTiB@Y{9O{}@He}FUR zAF{Gm7SN*^J2kbJt%es#0og{Dp_Y(#qh2XiXJ4R_JzE(qSS6vX0TymQ&{EuD#Yc=e zFoTL({!1B_Ytr&!n&;`;D1%=Xlz2_0YEMp zITxgUhMfx+(ajg*hm0qVU(gB6AiOIRA|eIEWhFC5c{a3i4RAakO+>IIwi=dQ2(|6eM$aq+@A zTz&N`_xSD;W@pZs6jp-wRAUm+YaJdm6yKCwyxy2cU`pWA(qE@R2oI!vpals< z`UB*=(pUgMKq!4ezgS>cZ!9}atkfN&6wQoF36Ny5_S~U`=Bf=t4PWMqFNBoHD*Fs3 zP^Iedj*1})_Xz}$y86_t=#{_3Y>WC*R9ISE01LY0(SkmWlmQXA30XM9(x=r2kfv8h zxbJgfgaiOt_ zE{umXGh)3LW~_$|b{0$Y%LV%R0_)L}j_|`hH(@jONh%?A*0~96j zPP9M=x`LD#7@!F~gIH9ZRsizjC7a>SV0p=A{S~hR?g={fy4(mD*B3+c@x!H5F+%rk z8tv4GI!+9CA-Fo=+QdkJG{({@diiSzWw6nbX>@mhI~Fum#bd4OP3@JA%7RDE(7s>3 z{0LtAtzW4gkJB_t3Cl|lH)1DUioK~BKuj-|qXYN~uWmzYOQnV93j5t2&{*48uO2^# z)W>ZMV+#@Yv&z;>t^(!|ER6 z{+ACuf;5}ePAUFFsk#Ei!jWZtWVI2(1CYl%*m=$jBQp*0{Pkao;;|yXB(RIVH35g zk_^}3Q>9={Rst}r^gW2DC`)~PI&{~Sm*}$GKu)}b^G89pu?*W zIcT}t{vrjpO2)aTo>SV&9`j!;aLt&2D5n%AbfhXnB8wMbsH@M{7mF?>GqQ;kAZM-1 z&tBfk!hl^@_GQP6=*83aO3{8xQ9a+wbO9rYecYwz49NPgLduSH$RJL*4P|J83~BhW zK7pSMk5;S;epY;)0@Fc|gmKbQ5TSmaeNX}taOt6oIMWNh^6UTno?h|n%sDI{xmsnalhJQ}{vwu-TsCIr z#xpV;#jQMg0-R^EfWm9iT7}NT7+i;3l78x^f*{H?38ul_;88DX^PVBBGM7?mEcYr7R z5RS*>_!HX$;3Tq=A!ixtdXCicb5=s~D)d$=O#D6;iNO<;{r$M)`;Y*+WxqBo2iw|M>$m0f`opoDO zZM27HVCW8M>68uusR5)x8tHE7Mq=njKsrQHNx>i_2Wej#hVGDtp<`fX4(EJ?^UwYO z>$>*Zdp+y^-Op+l7->b2pnq4t7@thoDMp(IOnNWP|A(~VcbHt%9nw$C@Nk^MToP6y z^I2bYKDuJXhWol}A4o@PILROQT{2=SS5?}B;MVLu)5Wz}-^5pr(san7#C2{RhKQhR zPyK;;`(}vg6R@&LkdIz&1@@;>@~={g|9D9l{_0O-3W`9Dv$JWPw5A*aUAl{kn=7-_L}Qgw2M z!|Szvs+NE5h4{!y_Y~Fq5v*^T;orT3ae>p^8Xq;ouB~jqWPt(^pb=FjiEDnW8W`){;2sru<1Kme3%@X7Ed-uUbO?siEH%17o_iO2MoPRWr?Xj z;PuoGJ&u}Q1)03OlO*`EEv?Ll$1VEbuKXN*BTBRxu|5U}&MfmbFVc9B)`-{uRzD?I zaHayXf&2};y{6AU@}>S0ov^>2)*Nn;@r!dPpY^B%X}-Y9UH~2ty(4E{WP^f4yu0wa z2otD#08#|~xcqc**6gcrAI?{{^UNhlM2eR9S>0UkUgPq5W*A49OC^`oTah#UCL8@+ z9?N`=<#H|(Gr7RP0ZySaxL9%;Vyb4c?ICNeJzo4xgNK^LFr{_9%6MsWHaKn{*M60^!I5E_y2HZuq4JA z!oQG>W0ty~3fByM03~W#gcH-(M$@@(@7+~ZozHQD#Z*Kb88@Yb!z2|a-VTn;#t1=h z!#^-{R&YGS;sgTJ)MPg+CggA!y3(zYHB5tuSoO|tW8>{V0~Q8BJ^crK;idpHXg$e2(^aQD^lP34LfYwS&VAU!zY7eMNSfP-z6rq@joXz zQrfMCD5_=co{Oi5E9BaUu840Zv)r#3 z!@>9%(Fp<;{l6w;k_3@U6Wb?^kWE-)Mmw=|UP( zJGpUFn4!7X=LiJZRU1~7B%`UlL^_S7EAiPIZn0UvfBE6PHo-7J?e%bi{^ZFi^Vr^) zTDYAXRmu-lY}~2x)J`9swbw{=L+d*4%DT#3P|iirI}!kpU4ELSG3|;=*SZM-Df?&| zRp7@uS`tnbj0_;e!MV{-ReM3!hbyYKO{Z5C`(idjRY3$pI6gwAz&B%b$5hb; zLhi|)^ZZ%9xhH*=$X3u%_%}Yv(vt-|=4Q0hb=A}j_I=c0ARz^`=r(wBagR9xzWob) z9wXTvj@a*BY$GtSg5cM{i~K*37ue{}G|~>|kq-~%M@PL$5QQ=2JApz{`WZWJ1)r7a z(MT}abGbriNp%g4X+1L|*wenY>QBYZHCT)XO`a4hABNN^KG$BjpfNZ9#p76)@$1Rd z7RmhCy+|ZFSX&8~i3U#wmma{rX~~22^KZ{6fw9IjssKlt9?k^q`o$R?Hp}F_5fc+5k4+D?)9XoK zt)=$$PP!g7%$j-JCUARHvKZ?X4kKiT{By*O`s0lt(x5Y-Q6GI?CEVey4$lD!?>A&S zq|ST#$J&khzO|=&Y;I~@(SQJR!7R;!w6gTGswH8xqTtd$kEK+zHDol=1T3{((oAJj zvf|6}D89waaRlS#C3VIwLALFTE{S3S z@f_MLiwo*eT0PQ_ZDS7jrJj70sJRSQ7_L-h95}VZN$~1q^vBAJb$!GxmM@=OeF(t( z%@934O>y2N zd1U0Tz46T=t1x1TwfE1VXKd@~vzxN}2xoo_2FnuHnVfi~rk{#$!yonN9&yvEqD5Em#rDOj=UCaXZ$VbD%s ze^+|n$i>mSo+v#0F7;3$`;?0Vb6__x+BK}FW*O54 zU~@1{#N&&pEHKN`NFg)2{o||_yt86@47tK$=tj)$*0tJ{70SF8N^+1pOTHbxy5M=8 zc$1~38C*Ey5{`fb?job$s;OS40(lFvyC%H|vX?7)QfE=LJty!7l3+L(S@v3p z_~LsT%sj8c)gq!lDr-t+?;k_QLfu@#0FpHuHOH*=@EpqMMyFF@kvZ@q+;b=Jc= zCn9pzLp}ca^38t!tC^KRHa7D!TrH>i2Ab>`jg53_8pV9)u}KL>a@-Pf#B|Uyzff;)%;-hy^&Ombz-RspNkqb!4MTtLa@x5d1H=!;^rf5*yYcvK+|ueeWONa9gSM z=+xM56i`cY_WA2LJUYmDhONo@Q_{XtRg=4*{q}1+>Pi$``7JpjDs<b^oz4_0oMQxgz(|?m5V&E zIl7GX`gn=e?^gH>&!CZ}9+_j@V)f}PhqEGT*6&5C0z<_%oW9FLTCiT)>zCX** zWmkF)<`NA+7DdLFM?mNWwP%67c;;VDOYtw2OiwBbIC*6sy3M}*(~PuBgWG^8NI0a) zN{bJu>vlgsGzFlw{!+atvjjRfOE4_KzYdZW*E$pix-@?tNtcV=D+wotcO$SKkJpjH z_1bQ$T)kVUgedEhnBqWg}~e%$~7yh-&UoSInCA z*_q2&ml<*I>1{((7%}FN6_y*?M_4PZ=M&2@3V?laW(a|!C0pZHJzxb@(3@2EfK)-b z)B#_Tqj{_NCEZ%dv%L|xp8ZnhSFEN|EN1{82%M20J4WxRSw=zIbB!f$L|u$lZaoCZAO>S)ZGr?eB0( z4BtZQMS|pN2>knmJq8`wTbexuFp87s;QfCJ$27}2E4W3~4Cn}5c)vyKAL>l!o3to#Eo%Fp z|CV$`(zs;>u`0}{javm~7Vc~HDF=3wDFt(!QXGTwW9kLmP>s%%c6I>M+vs_BUA#&Q z9D0BCA8FZQed@-0B`Qf>IY8XL_~bcV(0EuDF9c?2Sn2(xtwrlxKfW3~?cqkY(t@f| zF|$t0r{pD|qDf$yXQdS%yj#=XG@Q9R*j#%}cN@ET+tk|UOs2u5uO`9?kww;h2t@Z*$>K7BZL&$$;rTMyC+99FzPzbK zMCCP>b70Wf8>Y}FQsQ_^0)nbKN93LU>5;Iu+dJnHmX5&VqWk)_sKP2DRlS0|@$PQ1 zBjd~>(lRal^nO9i*t#5a*c6rzh41R&&C9B5>vqm(1;3SU8!vLr(;J5Exf-r##0_|f zWSCC!?(V6C0!LEXOV`H zP0?r1Y+ttMt+OE9fLa^&n!A&?EL@ez$)>(|!56N_0(+7nm;96?f?k=kHo?_5=8Xs4 zm%XJ*%{s8cWzhF$q&1)4$+H9d&*EP8BbfeJ1umwaV$vAx#A-F&dxe!u+hUxBgLmDJ`80fTdI4qY|u$BdRCX7x?L-3 zDadOanFqf4ndqMXe$5o16N*PhOjAWPJidAb zc}U}Uo!wNz%8CyA*Tz=U?K$tbWZ+=c9M14tvR#Mu4g>?l8pD%fg*G;yrOq?2J)-US ze8oU#>%Qu9FLlIG-g(87kznDIuMwjLUP=OE-`3QSLh)X`gi=82Me#yaW_NcAY%M($ ze4PDuPPz9Sl2l{jXpjG&1rJAQ5ziw$gy;o1bFNNfcR3G{(M#rGh|ZSJo2Q&mA`Xqu z{55wNU-e0vy_oikXfh}>was9(7<}^Nv%;ZNb{IM4lSO{x-@ob|BBtkzramnj5^^vWMPNfB|Syfs5g%b>j-O~hq*C>^z+B9J`=ecQ07C`k!7*`qiw3H zb-KD4z+l^2%eR&;=Kd~A#DeacZ0FZ3sI(iiy+9=9TdfKkY8w^S^j@DOzT?^f#C*s< zw^x*3`evf?d@85$B_;FqwJ>$%J>jY^Ug21jt)EDFa-Xi77KT1{?(9ka*3lK!^@E3J z_rh2Gh}xr)9SXT;_`x=Wk=!1!_umO=T~%N8(74bF=KbwYQpDnvbr4~BLZitEL-&3J zqwGubtOqy$@V_Ra`ov0Th*>O}fJnbF;V@|;18fMm^D_IpWG-{6{-<(X{;ci9YT)6y zWtDJ7%HG5VN!XTsk2gK|8Z&}OqM zA1?U1vwRjyy$4cY) zdGdSq_sV5L22pQuUz{AXToV9r$||JAKA>@wO!6!G({mrC2LMVjo7oGXON$beGso)O1^2Q_-qyu;t@VeaCUs-*2U@dro31 zcGoVoWUcq z{i}7!yB)-nN02&jNxKHErJW4M$O0&SSAD|3<(%_N{%qN=gTnr${0=`7H`9((KcU$* z+r}w0WITZC^G$N|cvo{YoDf&XYt^VyDNgB^hsnwHZi*YQ3%=u9MPfv+#+=( z7r?SB@QF_YrxZFdi2EOVj1_>ap7V1D-+i@Moyx5rx6_bx+h#Al<>Wv|Y#lC6k$}ph zNJvA(Dq$?>kWkWc+$6wZNtBviKjx19H zuSNYY|0#thmYlPepYH2NX8t1NMmt%J#&Z&NoDVM3#CM`z9~ z@Z!X1cN?z}5o=tn1b2ne0GTSwH@FsDpJC;U9>>%p#3do8u3>wvDBimd)^|g9=S+9> zRh*DRsi%oY?B+9~x^1#|dyqdhPNEJ`f(J#UUvm| zHnSYo|6W&Uh||&KjbAdu+(YvyN?iW)o3NLCla^U1cT$iA`dk=~Wi?RiM*#cOwc5yY zT`2+HR_u=ZkjPQmcB&rrk%$3e9g#ETE%0A#@AZDT#MOq`AsDlliKng)JmTe?eQi2= z6SyfD>n?DI|MS1!j*l(CZEAAPc

Lwkm9$`H{8zkWftSgRf)oyr18&^%^Vu%jg^)HpG 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 F{{snl&v^g< literal 0 HcmV?d00001 diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml index 2fb16e0e1..c31ef8f8f 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml @@ -42,5 +42,8 @@ Open Windows Indexing Options Manage indexed files and folders Failed to open Windows Indexing Options + Add to Quick Access + Successfully Added + Successfully added to Quick Access \ No newline at end of file diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/Constants.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/Constants.cs index 38939e244..c3e72deb2 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/Constants.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/Constants.cs @@ -15,6 +15,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search internal const string ExplorerIconImagePath = "Images\\explorer.png"; internal const string DifferentUserIconImagePath = "Images\\user.png"; internal const string IndexingOptionsIconImagePath = "Images\\windowsindexingoptions.png"; + internal const string QuickAccessImagePath = "Images\\quickaccess.png"; internal const string ToolTipOpenDirectory = "Ctrl + Enter to open the directory"; From 3a1d40893ee0e979bab4decc391bcd12c296e1eb Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 20:31:55 +1100 Subject: [PATCH 03/23] rename project items to quick access link naming --- .../ContextMenu.cs | 6 +++--- .../AccessLink.cs} | 5 ++--- .../QuickAccess.cs} | 10 +++++----- .../Search/SearchManager.cs | 6 +++--- .../Flow.Launcher.Plugin.Explorer/Settings.cs | 6 +++--- .../ViewModels/SettingsViewModel.cs | 6 +++--- .../Views/ExplorerSettings.xaml.cs | 18 +++++++++--------- 7 files changed, 28 insertions(+), 29 deletions(-) rename Plugins/Flow.Launcher.Plugin.Explorer/Search/{FolderLinks/FolderLink.cs => QuickAccessLink/AccessLink.cs} (86%) rename Plugins/Flow.Launcher.Plugin.Explorer/Search/{FolderLinks/QuickFolderAccess.cs => QuickAccessLink/QuickAccess.cs} (86%) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs index b5d756d3d..ac69d9b57 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs @@ -7,7 +7,7 @@ using System.Windows; using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Plugin.SharedCommands; using Flow.Launcher.Plugin.Explorer.Search; -using Flow.Launcher.Plugin.Explorer.Search.FolderLinks; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; using System.Linq; using MessageBox = System.Windows.Forms.MessageBox; using MessageBoxIcon = System.Windows.Forms.MessageBoxIcon; @@ -61,7 +61,7 @@ namespace Flow.Launcher.Plugin.Explorer { try { - Settings.QuickFolderAccessLinks.Add(new FolderLink { Path = record.FullPath, Type = record.Type }); + Settings.QuickFolderAccessLinks.Add(new AccessLink { Path = record.FullPath, Type = record.Type }); Context.API.ShowMsg(Context.API.GetTranslation("plugin_explorer_addfilefoldersuccess"), string.Format( @@ -260,7 +260,7 @@ namespace Flow.Launcher.Plugin.Explorer Action = _ => { if(!Settings.IndexSearchExcludedSubdirectoryPaths.Any(x => x.Path == record.FullPath)) - Settings.IndexSearchExcludedSubdirectoryPaths.Add(new FolderLink { Path = record.FullPath }); + Settings.IndexSearchExcludedSubdirectoryPaths.Add(new AccessLink { Path = record.FullPath }); Task.Run(() => { diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/FolderLink.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/AccessLink.cs similarity index 86% rename from Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/FolderLink.cs rename to Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/AccessLink.cs index 02ad837d3..bc7e86700 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/FolderLink.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/AccessLink.cs @@ -1,11 +1,10 @@ using System; using System.Linq; -using System.Text.Json; using System.Text.Json.Serialization; -namespace Flow.Launcher.Plugin.Explorer.Search.FolderLinks +namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink { - public class FolderLink + public class AccessLink { public string Path { get; set; } diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/QuickFolderAccess.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/QuickAccess.cs similarity index 86% rename from Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/QuickFolderAccess.cs rename to Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/QuickAccess.cs index 84e036c94..b83ee8ebd 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/FolderLinks/QuickFolderAccess.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/QuickAccess.cs @@ -2,18 +2,18 @@ using System.Collections.Generic; using System.Linq; -namespace Flow.Launcher.Plugin.Explorer.Search.FolderLinks +namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink { - public class QuickFolderAccess + public class QuickAccess { private readonly ResultManager resultManager; - public QuickFolderAccess(PluginInitContext context) + public QuickAccess(PluginInitContext context) { resultManager = new ResultManager(context); } - internal List FolderListMatched(Query query, List folderLinks) + internal List FolderListMatched(Query query, List folderLinks) { if (string.IsNullOrEmpty(query.Search)) return new List(); @@ -37,7 +37,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search.FolderLinks .ToList(); } - internal List FolderListAll(Query query, List folderLinks) + internal List FolderListAll(Query query, List folderLinks) => folderLinks .Where(x => x.Type == ResultType.Folder) .Select(item => diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs index 14aefeb19..2bf77e95f 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs @@ -1,5 +1,5 @@ using Flow.Launcher.Plugin.Explorer.Search.DirectoryInfo; -using Flow.Launcher.Plugin.Explorer.Search.FolderLinks; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; using Flow.Launcher.Plugin.Explorer.Search.WindowsIndex; using Flow.Launcher.Plugin.SharedCommands; using System; @@ -16,7 +16,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search private readonly IndexSearch indexSearch; - private readonly QuickFolderAccess quickFolderAccess; + private readonly QuickAccess quickFolderAccess; private readonly ResultManager resultManager; @@ -28,7 +28,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search indexSearch = new IndexSearch(context); resultManager = new ResultManager(context); this.settings = settings; - quickFolderAccess = new QuickFolderAccess(context); + quickFolderAccess = new QuickAccess(context); } internal async Task> SearchAsync(Query query, CancellationToken token) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs index e62637896..589785ce8 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs @@ -1,5 +1,5 @@ using Flow.Launcher.Plugin.Explorer.Search; -using Flow.Launcher.Plugin.Explorer.Search.FolderLinks; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; using System.Collections.Generic; namespace Flow.Launcher.Plugin.Explorer @@ -8,11 +8,11 @@ namespace Flow.Launcher.Plugin.Explorer { public int MaxResult { get; set; } = 100; - public List QuickFolderAccessLinks { get; set; } = new List(); + public List QuickFolderAccessLinks { get; set; } = new List(); public bool UseWindowsIndexForDirectorySearch { get; set; } = true; - public List IndexSearchExcludedSubdirectoryPaths { get; set; } = new List(); + public List IndexSearchExcludedSubdirectoryPaths { get; set; } = new List(); public string SearchActionKeyword { get; set; } = Query.GlobalPluginWildcardSign; diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs index 21bc49741..6ce740171 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs @@ -1,7 +1,7 @@ using Flow.Launcher.Core.Plugin; using Flow.Launcher.Infrastructure.Storage; using Flow.Launcher.Plugin.Explorer.Search; -using Flow.Launcher.Plugin.Explorer.Search.FolderLinks; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; using System.Diagnostics; using System.Threading.Tasks; @@ -32,9 +32,9 @@ namespace Flow.Launcher.Plugin.Explorer.ViewModels storage.Save(); } - internal void RemoveFolderLinkFromQuickFolders(FolderLink selectedRow) => Settings.QuickFolderAccessLinks.Remove(selectedRow); + internal void RemoveFolderLinkFromQuickFolders(AccessLink selectedRow) => Settings.QuickFolderAccessLinks.Remove(selectedRow); - internal void RemoveFolderLinkFromExcludedIndexPaths(FolderLink selectedRow) => Settings.IndexSearchExcludedSubdirectoryPaths.Remove(selectedRow); + internal void RemoveFolderLinkFromExcludedIndexPaths(AccessLink selectedRow) => Settings.IndexSearchExcludedSubdirectoryPaths.Remove(selectedRow); internal void OpenWindowsIndexingOptions() { diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs index 3b67b408d..1fa8e5920 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs @@ -1,4 +1,4 @@ -using Flow.Launcher.Plugin.Explorer.Search.FolderLinks; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; using Flow.Launcher.Plugin.Explorer.ViewModels; using System; using System.Collections.Generic; @@ -161,7 +161,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views private void btnDelete_Click(object sender, RoutedEventArgs e) { - var selectedRow = lbxFolderLinks.SelectedItem as FolderLink?? lbxExcludedPaths.SelectedItem as FolderLink; + var selectedRow = lbxFolderLinks.SelectedItem as AccessLink?? lbxExcludedPaths.SelectedItem as AccessLink; if (selectedRow != null) { @@ -199,7 +199,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views } else { - var selectedRow = lbxFolderLinks.SelectedItem as FolderLink ?? lbxExcludedPaths.SelectedItem as FolderLink; + var selectedRow = lbxFolderLinks.SelectedItem as AccessLink ?? lbxExcludedPaths.SelectedItem as AccessLink; if (selectedRow != null) { @@ -235,7 +235,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views var folderBrowserDialog = new FolderBrowserDialog(); if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { - var newFolderLink = new FolderLink + var newFolderLink = new AccessLink { Path = folderBrowserDialog.SelectedPath }; @@ -253,13 +253,13 @@ namespace Flow.Launcher.Plugin.Explorer.Views if (files != null && files.Count() > 0) { if (expFolderLinks.IsExpanded && viewModel.Settings.QuickFolderAccessLinks == null) - viewModel.Settings.QuickFolderAccessLinks = new List(); + viewModel.Settings.QuickFolderAccessLinks = new List(); foreach (string s in files) { if (Directory.Exists(s)) { - var newFolderLink = new FolderLink + var newFolderLink = new AccessLink { Path = s }; @@ -272,13 +272,13 @@ namespace Flow.Launcher.Plugin.Explorer.Views } } - private void AddFolderLink(FolderLink newFolderLink) + private void AddFolderLink(AccessLink newFolderLink) { if (expFolderLinks.IsExpanded && !viewModel.Settings.QuickFolderAccessLinks.Any(x => x.Path == newFolderLink.Path)) { if (viewModel.Settings.QuickFolderAccessLinks == null) - viewModel.Settings.QuickFolderAccessLinks = new List(); + viewModel.Settings.QuickFolderAccessLinks = new List(); viewModel.Settings.QuickFolderAccessLinks.Add(newFolderLink); } @@ -287,7 +287,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views && !viewModel.Settings.IndexSearchExcludedSubdirectoryPaths.Any(x => x.Path == newFolderLink.Path)) { if (viewModel.Settings.IndexSearchExcludedSubdirectoryPaths == null) - viewModel.Settings.IndexSearchExcludedSubdirectoryPaths = new List(); + viewModel.Settings.IndexSearchExcludedSubdirectoryPaths = new List(); viewModel.Settings.IndexSearchExcludedSubdirectoryPaths.Add(newFolderLink); } From 324ee62c2ada100bbe28db4b1d429261eeacdcc7 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 20:35:02 +1100 Subject: [PATCH 04/23] rename quick folder access links to quick access links --- .../Flow.Launcher.Plugin.Explorer/ContextMenu.cs | 4 ++-- .../Search/SearchManager.cs | 4 ++-- .../Flow.Launcher.Plugin.Explorer/Settings.cs | 2 +- .../ViewModels/SettingsViewModel.cs | 2 +- .../Views/ExplorerSettings.xaml.cs | 16 ++++++++-------- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs index ac69d9b57..ec3628c80 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs @@ -51,7 +51,7 @@ namespace Flow.Launcher.Plugin.Explorer var icoPath = (record.Type == ResultType.File) ? Constants.FileImagePath : Constants.FolderImagePath; var fileOrFolder = (record.Type == ResultType.File) ? "file" : "folder"; - if (!Settings.QuickFolderAccessLinks.Any(x => x.Path == record.FullPath)) + if (!Settings.QuickAccessLinks.Any(x => x.Path == record.FullPath)) { contextMenus.Add(new Result { @@ -61,7 +61,7 @@ namespace Flow.Launcher.Plugin.Explorer { try { - Settings.QuickFolderAccessLinks.Add(new AccessLink { Path = record.FullPath, Type = record.Type }); + Settings.QuickAccessLinks.Add(new AccessLink { Path = record.FullPath, Type = record.Type }); Context.API.ShowMsg(Context.API.GetTranslation("plugin_explorer_addfilefoldersuccess"), string.Format( diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs index 2bf77e95f..6cee47335 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs @@ -42,9 +42,9 @@ namespace Flow.Launcher.Plugin.Explorer.Search // This allows the user to type the assigned action keyword and only see the list of quick folder links if (string.IsNullOrEmpty(query.Search)) - return quickFolderAccess.FolderListAll(query, settings.QuickFolderAccessLinks); + return quickFolderAccess.FolderListAll(query, settings.QuickAccessLinks); - var quickFolderLinks = quickFolderAccess.FolderListMatched(query, settings.QuickFolderAccessLinks); + var quickFolderLinks = quickFolderAccess.FolderListMatched(query, settings.QuickAccessLinks); if (quickFolderLinks.Count > 0) results.AddRange(quickFolderLinks); diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs index 589785ce8..306a18f70 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs @@ -8,7 +8,7 @@ namespace Flow.Launcher.Plugin.Explorer { public int MaxResult { get; set; } = 100; - public List QuickFolderAccessLinks { get; set; } = new List(); + public List QuickAccessLinks { get; set; } = new List(); public bool UseWindowsIndexForDirectorySearch { get; set; } = true; diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs index 6ce740171..158461857 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs @@ -32,7 +32,7 @@ namespace Flow.Launcher.Plugin.Explorer.ViewModels storage.Save(); } - internal void RemoveFolderLinkFromQuickFolders(AccessLink selectedRow) => Settings.QuickFolderAccessLinks.Remove(selectedRow); + internal void RemoveFolderLinkFromQuickFolders(AccessLink selectedRow) => Settings.QuickAccessLinks.Remove(selectedRow); internal void RemoveFolderLinkFromExcludedIndexPaths(AccessLink selectedRow) => Settings.IndexSearchExcludedSubdirectoryPaths.Remove(selectedRow); diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs index 1fa8e5920..de7875e1d 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs @@ -29,7 +29,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views this.viewModel = viewModel; - lbxFolderLinks.ItemsSource = this.viewModel.Settings.QuickFolderAccessLinks; + lbxFolderLinks.ItemsSource = this.viewModel.Settings.QuickAccessLinks; lbxExcludedPaths.ItemsSource = this.viewModel.Settings.IndexSearchExcludedSubdirectoryPaths; @@ -209,7 +209,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views { if (expFolderLinks.IsExpanded) { - var link = viewModel.Settings.QuickFolderAccessLinks.First(x => x.Path == selectedRow.Path); + var link = viewModel.Settings.QuickAccessLinks.First(x => x.Path == selectedRow.Path); link.Path = folderBrowserDialog.SelectedPath; } @@ -252,8 +252,8 @@ namespace Flow.Launcher.Plugin.Explorer.Views if (files != null && files.Count() > 0) { - if (expFolderLinks.IsExpanded && viewModel.Settings.QuickFolderAccessLinks == null) - viewModel.Settings.QuickFolderAccessLinks = new List(); + if (expFolderLinks.IsExpanded && viewModel.Settings.QuickAccessLinks == null) + viewModel.Settings.QuickAccessLinks = new List(); foreach (string s in files) { @@ -275,12 +275,12 @@ namespace Flow.Launcher.Plugin.Explorer.Views private void AddFolderLink(AccessLink newFolderLink) { if (expFolderLinks.IsExpanded - && !viewModel.Settings.QuickFolderAccessLinks.Any(x => x.Path == newFolderLink.Path)) + && !viewModel.Settings.QuickAccessLinks.Any(x => x.Path == newFolderLink.Path)) { - if (viewModel.Settings.QuickFolderAccessLinks == null) - viewModel.Settings.QuickFolderAccessLinks = new List(); + if (viewModel.Settings.QuickAccessLinks == null) + viewModel.Settings.QuickAccessLinks = new List(); - viewModel.Settings.QuickFolderAccessLinks.Add(newFolderLink); + viewModel.Settings.QuickAccessLinks.Add(newFolderLink); } if (expExcludedPaths.IsExpanded From c02fa4b847944bbda69e1cf736a49c4fcc8ecd0a Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 20:46:05 +1100 Subject: [PATCH 05/23] rename ui elements --- .../Languages/en.xaml | 2 +- .../Views/ExplorerSettings.xaml | 18 +++---- .../Views/ExplorerSettings.xaml.cs | 52 +++++++++---------- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml index c31ef8f8f..a30b8e54f 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml @@ -16,7 +16,7 @@ Edit Add Customise Action Keywords - Quick Folder Access Paths + Quick Access Link Paths Index Search Excluded Paths Indexing Options Search Activation: diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml index 9d6f4976e..13d46394c 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml @@ -7,7 +7,7 @@ mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> - + @@ -40,22 +40,22 @@ - + x:Name="lbxAccessLinks" AllowDrop="True" + Drop="lbxAccessLinks_Drop" + DragEnter="lbxAccessLinks_DragEnter" + ItemTemplate="{StaticResource ListViewTemplateAccessLinks}"/> diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs index de7875e1d..f11f8aa38 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs @@ -29,7 +29,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views this.viewModel = viewModel; - lbxFolderLinks.ItemsSource = this.viewModel.Settings.QuickAccessLinks; + lbxAccessLinks.ItemsSource = this.viewModel.Settings.QuickAccessLinks; lbxExcludedPaths.ItemsSource = this.viewModel.Settings.IndexSearchExcludedSubdirectoryPaths; @@ -54,7 +54,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views public void RefreshView() { - lbxFolderLinks.Items.SortDescriptions.Add(new SortDescription("Path", ListSortDirection.Ascending)); + lbxAccessLinks.Items.SortDescriptions.Add(new SortDescription("Path", ListSortDirection.Ascending)); lbxExcludedPaths.Items.SortDescriptions.Add(new SortDescription("Path", ListSortDirection.Ascending)); @@ -62,7 +62,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views btnEdit.Visibility = Visibility.Hidden; btnAdd.Visibility = Visibility.Hidden; - if (expFolderLinks.IsExpanded || expExcludedPaths.IsExpanded || expActionKeywords.IsExpanded) + if (expAccessLinks.IsExpanded || expExcludedPaths.IsExpanded || expActionKeywords.IsExpanded) { if (!expActionKeywords.IsExpanded) btnAdd.Visibility = Visibility.Visible; @@ -71,7 +71,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views && btnEdit.Visibility == Visibility.Hidden) btnEdit.Visibility = Visibility.Visible; - if ((lbxFolderLinks.Items.Count == 0 && lbxExcludedPaths.Items.Count == 0) + if ((lbxAccessLinks.Items.Count == 0 && lbxExcludedPaths.Items.Count == 0) && btnDelete.Visibility == Visibility.Visible && btnEdit.Visibility == Visibility.Visible) { @@ -79,8 +79,8 @@ namespace Flow.Launcher.Plugin.Explorer.Views btnEdit.Visibility = Visibility.Hidden; } - if (expFolderLinks.IsExpanded - && lbxFolderLinks.Items.Count > 0 + if (expAccessLinks.IsExpanded + && lbxAccessLinks.Items.Count > 0 && btnDelete.Visibility == Visibility.Hidden && btnEdit.Visibility == Visibility.Hidden) { @@ -98,7 +98,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views } } - lbxFolderLinks.Items.Refresh(); + lbxAccessLinks.Items.Refresh(); lbxExcludedPaths.Items.Refresh(); @@ -113,8 +113,8 @@ namespace Flow.Launcher.Plugin.Explorer.Views if (expExcludedPaths.IsExpanded) expExcludedPaths.IsExpanded = false; - if (expFolderLinks.IsExpanded) - expFolderLinks.IsExpanded = false; + if (expAccessLinks.IsExpanded) + expAccessLinks.IsExpanded = false; RefreshView(); } @@ -125,10 +125,10 @@ namespace Flow.Launcher.Plugin.Explorer.Views expActionKeywords.Height = Double.NaN; } - private void expFolderLinks_Click(object sender, RoutedEventArgs e) + private void expAccessLinks_Click(object sender, RoutedEventArgs e) { - if (expFolderLinks.IsExpanded) - expFolderLinks.Height = 215; + if (expAccessLinks.IsExpanded) + expAccessLinks.Height = 215; if (expExcludedPaths.IsExpanded) expExcludedPaths.IsExpanded = false; @@ -139,19 +139,19 @@ namespace Flow.Launcher.Plugin.Explorer.Views RefreshView(); } - private void expFolderLinks_Collapsed(object sender, RoutedEventArgs e) + private void expAccessLinks_Collapsed(object sender, RoutedEventArgs e) { - if (!expFolderLinks.IsExpanded) - expFolderLinks.Height = Double.NaN; + if (!expAccessLinks.IsExpanded) + expAccessLinks.Height = Double.NaN; } private void expExcludedPaths_Click(object sender, RoutedEventArgs e) { if (expExcludedPaths.IsExpanded) - expFolderLinks.Height = Double.NaN; + expAccessLinks.Height = Double.NaN; - if (expFolderLinks.IsExpanded) - expFolderLinks.IsExpanded = false; + if (expAccessLinks.IsExpanded) + expAccessLinks.IsExpanded = false; if (expActionKeywords.IsExpanded) expActionKeywords.IsExpanded = false; @@ -161,7 +161,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views private void btnDelete_Click(object sender, RoutedEventArgs e) { - var selectedRow = lbxFolderLinks.SelectedItem as AccessLink?? lbxExcludedPaths.SelectedItem as AccessLink; + var selectedRow = lbxAccessLinks.SelectedItem as AccessLink?? lbxExcludedPaths.SelectedItem as AccessLink; if (selectedRow != null) { @@ -169,7 +169,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views if (MessageBox.Show(msg, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.Yes) { - if (expFolderLinks.IsExpanded) + if (expAccessLinks.IsExpanded) viewModel.RemoveFolderLinkFromQuickFolders(selectedRow); if (expExcludedPaths.IsExpanded) @@ -199,7 +199,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views } else { - var selectedRow = lbxFolderLinks.SelectedItem as AccessLink ?? lbxExcludedPaths.SelectedItem as AccessLink; + var selectedRow = lbxAccessLinks.SelectedItem as AccessLink ?? lbxExcludedPaths.SelectedItem as AccessLink; if (selectedRow != null) { @@ -207,7 +207,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views folderBrowserDialog.SelectedPath = selectedRow.Path; if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { - if (expFolderLinks.IsExpanded) + if (expAccessLinks.IsExpanded) { var link = viewModel.Settings.QuickAccessLinks.First(x => x.Path == selectedRow.Path); link.Path = folderBrowserDialog.SelectedPath; @@ -246,13 +246,13 @@ namespace Flow.Launcher.Plugin.Explorer.Views RefreshView(); } - private void lbxFolders_Drop(object sender, DragEventArgs e) + private void lbxAccessLinks_Drop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); if (files != null && files.Count() > 0) { - if (expFolderLinks.IsExpanded && viewModel.Settings.QuickAccessLinks == null) + if (expAccessLinks.IsExpanded && viewModel.Settings.QuickAccessLinks == null) viewModel.Settings.QuickAccessLinks = new List(); foreach (string s in files) @@ -274,7 +274,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views private void AddFolderLink(AccessLink newFolderLink) { - if (expFolderLinks.IsExpanded + if (expAccessLinks.IsExpanded && !viewModel.Settings.QuickAccessLinks.Any(x => x.Path == newFolderLink.Path)) { if (viewModel.Settings.QuickAccessLinks == null) @@ -293,7 +293,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views } } - private void lbxFolders_DragEnter(object sender, DragEventArgs e) + private void lbxAccessLinks_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { From 44b3f19ac470dd7a14f7ad1833c33e78b824ea6d Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 20:48:06 +1100 Subject: [PATCH 06/23] fix typo --- Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs | 2 +- .../Search/{QuickAccessLink => QuickAccessLinks}/AccessLink.cs | 2 +- .../Search/{QuickAccessLink => QuickAccessLinks}/QuickAccess.cs | 2 +- Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs | 2 +- Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs | 2 +- .../ViewModels/SettingsViewModel.cs | 2 +- .../Views/ExplorerSettings.xaml.cs | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) rename Plugins/Flow.Launcher.Plugin.Explorer/Search/{QuickAccessLink => QuickAccessLinks}/AccessLink.cs (92%) rename Plugins/Flow.Launcher.Plugin.Explorer/Search/{QuickAccessLink => QuickAccessLinks}/QuickAccess.cs (96%) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs index ec3628c80..807f3b7ed 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs @@ -7,7 +7,7 @@ using System.Windows; using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Plugin.SharedCommands; using Flow.Launcher.Plugin.Explorer.Search; -using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks; using System.Linq; using MessageBox = System.Windows.Forms.MessageBox; using MessageBoxIcon = System.Windows.Forms.MessageBoxIcon; diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/AccessLink.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/AccessLink.cs similarity index 92% rename from Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/AccessLink.cs rename to Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/AccessLink.cs index bc7e86700..f623cc2ca 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/AccessLink.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/AccessLink.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Text.Json.Serialization; -namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink +namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks { public class AccessLink { diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/QuickAccess.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs similarity index 96% rename from Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/QuickAccess.cs rename to Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs index b83ee8ebd..4a96ef0cd 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/QuickAccess.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; -namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink +namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks { public class QuickAccess { diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs index 6cee47335..4d1e27b30 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs @@ -1,5 +1,5 @@ using Flow.Launcher.Plugin.Explorer.Search.DirectoryInfo; -using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks; using Flow.Launcher.Plugin.Explorer.Search.WindowsIndex; using Flow.Launcher.Plugin.SharedCommands; using System; diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs index 306a18f70..798877e24 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs @@ -1,5 +1,5 @@ using Flow.Launcher.Plugin.Explorer.Search; -using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks; using System.Collections.Generic; namespace Flow.Launcher.Plugin.Explorer diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs index 158461857..c368b7071 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs @@ -1,7 +1,7 @@ using Flow.Launcher.Core.Plugin; using Flow.Launcher.Infrastructure.Storage; using Flow.Launcher.Plugin.Explorer.Search; -using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks; using System.Diagnostics; using System.Threading.Tasks; diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs index f11f8aa38..7afeb1207 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs @@ -1,4 +1,4 @@ -using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks; using Flow.Launcher.Plugin.Explorer.ViewModels; using System; using System.Collections.Generic; From 82d91840c16c64c9cba3ba76a78530ebe8ee15ab Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 20:53:01 +1100 Subject: [PATCH 07/23] rename methods in quick access --- .../Search/QuickAccessLinks/QuickAccess.cs | 4 ++-- .../Search/SearchManager.cs | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs index 4a96ef0cd..03313c6df 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs @@ -13,7 +13,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks resultManager = new ResultManager(context); } - internal List FolderListMatched(Query query, List folderLinks) + internal List AccessLinkListMatched(Query query, List folderLinks) { if (string.IsNullOrEmpty(query.Search)) return new List(); @@ -37,7 +37,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks .ToList(); } - internal List FolderListAll(Query query, List folderLinks) + internal List AccessLinkListAll(Query query, List folderLinks) => folderLinks .Where(x => x.Type == ResultType.Folder) .Select(item => diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs index 4d1e27b30..f8ba3a56f 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs @@ -16,7 +16,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search private readonly IndexSearch indexSearch; - private readonly QuickAccess quickFolderAccess; + private readonly QuickAccess quickAccess; private readonly ResultManager resultManager; @@ -28,7 +28,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search indexSearch = new IndexSearch(context); resultManager = new ResultManager(context); this.settings = settings; - quickFolderAccess = new QuickAccess(context); + quickAccess = new QuickAccess(context); } internal async Task> SearchAsync(Query query, CancellationToken token) @@ -42,12 +42,12 @@ namespace Flow.Launcher.Plugin.Explorer.Search // This allows the user to type the assigned action keyword and only see the list of quick folder links if (string.IsNullOrEmpty(query.Search)) - return quickFolderAccess.FolderListAll(query, settings.QuickAccessLinks); + return quickAccess.AccessLinkListAll(query, settings.QuickAccessLinks); - var quickFolderLinks = quickFolderAccess.FolderListMatched(query, settings.QuickAccessLinks); + var quickaccessLinks = quickAccess.AccessLinkListMatched(query, settings.QuickAccessLinks); - if (quickFolderLinks.Count > 0) - results.AddRange(quickFolderLinks); + if (quickaccessLinks.Count > 0) + results.AddRange(quickaccessLinks); var isEnvironmentVariable = EnvironmentVariables.IsEnvironmentVariableSearch(querySearch); From dd57bfc6f87bceff6a7522f33b59154cf5793f68 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 21:09:35 +1100 Subject: [PATCH 08/23] add backwards compatibility with old list --- Plugins/Flow.Launcher.Plugin.Explorer/Main.cs | 6 ++++++ Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs | 3 +++ 2 files changed, 9 insertions(+) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs index 7b56df691..ea44620ed 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs @@ -3,6 +3,7 @@ using Flow.Launcher.Plugin.Explorer.Search; using Flow.Launcher.Plugin.Explorer.ViewModels; using Flow.Launcher.Plugin.Explorer.Views; using System.Collections.Generic; +using System.Linq; using System.Threading; using System.Threading.Tasks; using System.Windows.Controls; @@ -32,6 +33,11 @@ namespace Flow.Launcher.Plugin.Explorer viewModel = new SettingsViewModel(context); await viewModel.LoadStorage(); Settings = viewModel.Settings; + + // as at v1.7.0 this is to maintain backwards compatibility, need to be removed afterwards. + if (Settings.QuickFolderAccessLinks.Any()) + Settings.QuickAccessLinks = Settings.QuickFolderAccessLinks; + contextMenu = new ContextMenu(Context, Settings); searchManager = new SearchManager(Settings, Context); } diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs index 798877e24..a8eac986d 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs @@ -10,6 +10,9 @@ namespace Flow.Launcher.Plugin.Explorer public List QuickAccessLinks { get; set; } = new List(); + // as at v1.7.0 this is to maintain backwards compatibility, need to be removed afterwards. + public List QuickFolderAccessLinks { get; set; } = new List(); + public bool UseWindowsIndexForDirectorySearch { get; set; } = true; public List IndexSearchExcludedSubdirectoryPaths { get; set; } = new List(); From d90b6d23d3fb9455a002ac9483b5f158dcec19b7 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 21:14:39 +1100 Subject: [PATCH 09/23] add save after adding to quick access --- Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs | 9 ++++++++- Plugins/Flow.Launcher.Plugin.Explorer/Main.cs | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs index 807f3b7ed..1c75d3efd 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs @@ -13,6 +13,7 @@ using MessageBox = System.Windows.Forms.MessageBox; using MessageBoxIcon = System.Windows.Forms.MessageBoxIcon; using MessageBoxButton = System.Windows.Forms.MessageBoxButtons; using DialogResult = System.Windows.Forms.DialogResult; +using Flow.Launcher.Plugin.Explorer.ViewModels; namespace Flow.Launcher.Plugin.Explorer { @@ -22,10 +23,13 @@ namespace Flow.Launcher.Plugin.Explorer private Settings Settings { get; set; } - public ContextMenu(PluginInitContext context, Settings settings) + private SettingsViewModel ViewModel { get; set; } + + public ContextMenu(PluginInitContext context, Settings settings, SettingsViewModel vm) { Context = context; Settings = settings; + ViewModel = vm; } public List LoadContextMenus(Result selectedResult) @@ -68,6 +72,9 @@ namespace Flow.Launcher.Plugin.Explorer Context.API.GetTranslation("plugin_explorer_addfilefoldersuccess_detail"), fileOrFolder), Constants.ExplorerIconImageFullPath); + + ViewModel.Save(); + return true; } catch (Exception e) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs index ea44620ed..4de88ec06 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs @@ -38,7 +38,7 @@ namespace Flow.Launcher.Plugin.Explorer if (Settings.QuickFolderAccessLinks.Any()) Settings.QuickAccessLinks = Settings.QuickFolderAccessLinks; - contextMenu = new ContextMenu(Context, Settings); + contextMenu = new ContextMenu(Context, Settings, viewModel); searchManager = new SearchManager(Settings, Context); } From 9331c807531670b4822022d671b3a2b851993efa Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 21:29:56 +1100 Subject: [PATCH 10/23] rename folder link to access link --- .../Languages/en.xaml | 2 +- .../Search/QuickAccessLinks/QuickAccess.cs | 16 +++++++-------- .../ViewModels/SettingsViewModel.cs | 4 ++-- .../Views/ExplorerSettings.xaml.cs | 20 +++++++++---------- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml index a30b8e54f..fe79e3140 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml @@ -16,7 +16,7 @@ Edit Add Customise Action Keywords - Quick Access Link Paths + Quick Access Links Index Search Excluded Paths Indexing Options Search Activation: diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs index 03313c6df..d4f4dadbe 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs @@ -13,23 +13,23 @@ namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks resultManager = new ResultManager(context); } - internal List AccessLinkListMatched(Query query, List folderLinks) + internal List AccessLinkListMatched(Query query, List accessLinks) { if (string.IsNullOrEmpty(query.Search)) return new List(); string search = query.Search.ToLower(); - var queriedFolderLinks = - folderLinks.Where(x => x.Nickname.StartsWith(search, StringComparison.OrdinalIgnoreCase)); + var queriedAccessLinks = + accessLinks.Where(x => x.Nickname.StartsWith(search, StringComparison.OrdinalIgnoreCase)); - return queriedFolderLinks + return queriedAccessLinks .Where(x => x.Type == ResultType.Folder) .Select(item => resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query)) .OrderBy(x => x.Title) .Concat( - queriedFolderLinks + queriedAccessLinks .Where(x => x.Type == ResultType.File) .Select(item => resultManager.CreateFileResult(item.Path, query)) @@ -37,14 +37,14 @@ namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks .ToList(); } - internal List AccessLinkListAll(Query query, List folderLinks) - => folderLinks + internal List AccessLinkListAll(Query query, List accessLinks) + => accessLinks .Where(x => x.Type == ResultType.Folder) .Select(item => resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query)) .OrderBy(x => x.Title) .Concat( - folderLinks + accessLinks .Where(x => x.Type == ResultType.File) .Select(item => resultManager.CreateFileResult(item.Path, query)) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs index c368b7071..791c06b66 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs @@ -32,9 +32,9 @@ namespace Flow.Launcher.Plugin.Explorer.ViewModels storage.Save(); } - internal void RemoveFolderLinkFromQuickFolders(AccessLink selectedRow) => Settings.QuickAccessLinks.Remove(selectedRow); + internal void RemoveLinkFromQuickAccess(AccessLink selectedRow) => Settings.QuickAccessLinks.Remove(selectedRow); - internal void RemoveFolderLinkFromExcludedIndexPaths(AccessLink selectedRow) => Settings.IndexSearchExcludedSubdirectoryPaths.Remove(selectedRow); + internal void RemoveAccessLinkFromExcludedIndexPaths(AccessLink selectedRow) => Settings.IndexSearchExcludedSubdirectoryPaths.Remove(selectedRow); internal void OpenWindowsIndexingOptions() { diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs index 7afeb1207..5d2980c55 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs @@ -170,10 +170,10 @@ namespace Flow.Launcher.Plugin.Explorer.Views if (MessageBox.Show(msg, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.Yes) { if (expAccessLinks.IsExpanded) - viewModel.RemoveFolderLinkFromQuickFolders(selectedRow); + viewModel.RemoveLinkFromQuickAccess(selectedRow); if (expExcludedPaths.IsExpanded) - viewModel.RemoveFolderLinkFromExcludedIndexPaths(selectedRow); + viewModel.RemoveAccessLinkFromExcludedIndexPaths(selectedRow); RefreshView(); } @@ -235,12 +235,12 @@ namespace Flow.Launcher.Plugin.Explorer.Views var folderBrowserDialog = new FolderBrowserDialog(); if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { - var newFolderLink = new AccessLink + var newAccessLink = new AccessLink { Path = folderBrowserDialog.SelectedPath }; - AddFolderLink(newFolderLink); + AddAccessLink(newAccessLink); } RefreshView(); @@ -264,7 +264,7 @@ namespace Flow.Launcher.Plugin.Explorer.Views Path = s }; - AddFolderLink(newFolderLink); + AddAccessLink(newFolderLink); } RefreshView(); @@ -272,24 +272,24 @@ namespace Flow.Launcher.Plugin.Explorer.Views } } - private void AddFolderLink(AccessLink newFolderLink) + private void AddAccessLink(AccessLink newAccessLink) { if (expAccessLinks.IsExpanded - && !viewModel.Settings.QuickAccessLinks.Any(x => x.Path == newFolderLink.Path)) + && !viewModel.Settings.QuickAccessLinks.Any(x => x.Path == newAccessLink.Path)) { if (viewModel.Settings.QuickAccessLinks == null) viewModel.Settings.QuickAccessLinks = new List(); - viewModel.Settings.QuickAccessLinks.Add(newFolderLink); + viewModel.Settings.QuickAccessLinks.Add(newAccessLink); } if (expExcludedPaths.IsExpanded - && !viewModel.Settings.IndexSearchExcludedSubdirectoryPaths.Any(x => x.Path == newFolderLink.Path)) + && !viewModel.Settings.IndexSearchExcludedSubdirectoryPaths.Any(x => x.Path == newAccessLink.Path)) { if (viewModel.Settings.IndexSearchExcludedSubdirectoryPaths == null) viewModel.Settings.IndexSearchExcludedSubdirectoryPaths = new List(); - viewModel.Settings.IndexSearchExcludedSubdirectoryPaths.Add(newFolderLink); + viewModel.Settings.IndexSearchExcludedSubdirectoryPaths.Add(newAccessLink); } } From 889c853e33db00a7996c959f48021b7cce756025 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 26 Jan 2021 21:43:19 +1100 Subject: [PATCH 11/23] version bump Explorer plugin --- Plugins/Flow.Launcher.Plugin.Explorer/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/plugin.json b/Plugins/Flow.Launcher.Plugin.Explorer/plugin.json index 1e92d2254..e9c8ef873 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/plugin.json +++ b/Plugins/Flow.Launcher.Plugin.Explorer/plugin.json @@ -7,7 +7,7 @@ "Name": "Explorer", "Description": "Search and manage files and folders. Explorer utilises Windows Index Search", "Author": "Jeremy Wu", - "Version": "1.5.0", + "Version": "1.6.0", "Language": "csharp", "Website": "https://github.com/Flow-Launcher/Flow.Launcher", "ExecuteFileName": "Flow.Launcher.Plugin.Explorer.dll", From f4ceb0e3e15f3dbdda1194e487b9dce51f92d04a Mon Sep 17 00:00:00 2001 From: kubalav Date: Tue, 26 Jan 2021 13:46:15 +0100 Subject: [PATCH 12/23] Update Slovak translation --- Flow.Launcher/Languages/sk.xaml | 23 ++++++++++++++++++- .../Languages/sk.xaml | 4 ++++ .../Languages/sk.xaml | 6 ++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml index 85fc1462c..64230a93a 100644 --- a/Flow.Launcher/Languages/sk.xaml +++ b/Flow.Launcher/Languages/sk.xaml @@ -17,6 +17,7 @@ Nastavenia Flow Launchera Všeobecné + Prenosný režim Spustiť Flow Launcher po štarte systému Schovať Flow Launcher po strate fokusu Nezobrazovať upozornenia na novú verziu @@ -39,10 +40,13 @@ Plugin Nájsť ďalšie pluginy + Povoliť Zakázať Skratka akcie Aktuálna akcia skratky: Nová akcia skratky: + Aktuálna priorita: + Nová priorita: Priečinok s pluginmi Autor Príprava: @@ -104,6 +108,10 @@ Poznámky k vydaniu + + Vyššie číslo znamená, že výsledok bude vyššie. Skúste nastaviť napr. 5. Ak chcete, aby boli výsledky nižšie ako ktorékoľvek iné doplnky, zadajte záporné číslo + Prosím, zadajte platné číslo pre prioritu! + Stará skratka akcie Nová skratka akcie @@ -116,6 +124,7 @@ Použite * ak nechcete určiť skratku pre akciu + Vlastná klávesová skratka pre plugin Náhľad Klávesová skratka je nedostupná, prosím, zadajte novú Neplatná klávesová skratka pluginu @@ -140,11 +149,23 @@ Odoslanie hlásenia zlyhalo Flow Launcher zaznamenal chybu + + Čakajte, prosím… + - Je dostupná nová verzia Flow Launcher {0} + Kontrolujú sa akutalizácie + Už máte najnovšiu verizu Flow Launchera + Bola nájdená aktualizácia + Aktualizuje sa… + Flow Launcher nedokázal presunúť používateľské údaje do aktualizovanej verzie. + Prosím, presuňte profilový priečinok „data“ z {0} do {1} + Nová aktualizácia + Je dostupná nová verzia Flow Launchera {0} Počas inštalácie aktualizácií došlo k chybe Aktualizovať Zrušiť + Aktualizácia zlyhala + Skontrolujte pripojenie a skúste aktualizovať nastavenia servera proxy na github-cloud.s3.amazonaws.com. Tento upgrade reštartuje Flow Launcher Nasledujúce súbory budú aktualizované Aktualizovať súbory diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/sk.xaml index 69640735e..97568be5a 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/sk.xaml @@ -2,6 +2,10 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib"> + Otvoriť vyhľadávanie v: + Nové okno + Nová karta + Otvoriť url:{0} Adresa URL sa nedá otvoriť: {0} diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml index d29b3f35a..47644fbe9 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml @@ -1,7 +1,11 @@  - + Otvoriť vyhľadávanie v: + Nové okno + Nová karta + Zadajte cestu k prehliadaču: + Vybrať Odstrániť Upraviť Pridať From f848e68b72e9a104eed3685b2de230a1e55c1ec5 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Wed, 27 Jan 2021 05:35:17 +1100 Subject: [PATCH 13/23] version bump Url and WebSearch --- Plugins/Flow.Launcher.Plugin.Url/plugin.json | 2 +- Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Url/plugin.json b/Plugins/Flow.Launcher.Plugin.Url/plugin.json index 6f0614262..c24a239f4 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/plugin.json +++ b/Plugins/Flow.Launcher.Plugin.Url/plugin.json @@ -4,7 +4,7 @@ "Name": "URL", "Description": "Open the typed URL from Flow Launcher", "Author": "qianlifeng", - "Version": "1.1.3", + "Version": "1.1.4", "Language": "csharp", "Website": "https://github.com/Flow-Launcher/Flow.Launcher", "ExecuteFileName": "Flow.Launcher.Plugin.Url.dll", diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json b/Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json index aba7989be..6e9986749 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json @@ -25,7 +25,7 @@ "Name": "Web Searches", "Description": "Provide the web search ability", "Author": "qianlifeng", - "Version": "1.3.1", + "Version": "1.3.2", "Language": "csharp", "Website": "https://github.com/Flow-Launcher/Flow.Launcher", "ExecuteFileName": "Flow.Launcher.Plugin.WebSearch.dll", From ccc677fd8f1e181c654ceb37706cc632c679cd46 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Wed, 27 Jan 2021 06:17:24 +1100 Subject: [PATCH 14/23] fix per comment --- .../ContextMenu.cs | 26 ++++++------------- Plugins/Flow.Launcher.Plugin.Explorer/Main.cs | 3 +++ .../Search/QuickAccessLinks/QuickAccess.cs | 17 +++++++----- 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs index 1c75d3efd..b478be538 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs @@ -63,27 +63,17 @@ namespace Flow.Launcher.Plugin.Explorer SubTitle = $"Add the current {fileOrFolder} to Quick Access", Action = (context) => { - try - { - Settings.QuickAccessLinks.Add(new AccessLink { Path = record.FullPath, Type = record.Type }); + Settings.QuickAccessLinks.Add(new AccessLink { Path = record.FullPath, Type = record.Type }); - Context.API.ShowMsg(Context.API.GetTranslation("plugin_explorer_addfilefoldersuccess"), - string.Format( - Context.API.GetTranslation("plugin_explorer_addfilefoldersuccess_detail"), - fileOrFolder), - Constants.ExplorerIconImageFullPath); + Context.API.ShowMsg(Context.API.GetTranslation("plugin_explorer_addfilefoldersuccess"), + string.Format( + Context.API.GetTranslation("plugin_explorer_addfilefoldersuccess_detail"), + fileOrFolder), + Constants.ExplorerIconImageFullPath); - ViewModel.Save(); + ViewModel.Save(); - return true; - } - catch (Exception e) - { - var message = "Fail to add to Quick Access"; - LogException(message, e); - Context.API.ShowMsg(message); - return false; - } + return true; }, IcoPath = Constants.QuickAccessImagePath }); diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs index 4de88ec06..150cb7288 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs @@ -36,7 +36,10 @@ namespace Flow.Launcher.Plugin.Explorer // as at v1.7.0 this is to maintain backwards compatibility, need to be removed afterwards. if (Settings.QuickFolderAccessLinks.Any()) + { Settings.QuickAccessLinks = Settings.QuickFolderAccessLinks; + Settings.QuickFolderAccessLinks = null; + } contextMenu = new ContextMenu(Context, Settings, viewModel); searchManager = new SearchManager(Settings, Context); diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs index d4f4dadbe..e6ece2a73 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs @@ -21,34 +21,37 @@ namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks string search = query.Search.ToLower(); var queriedAccessLinks = - accessLinks.Where(x => x.Nickname.StartsWith(search, StringComparison.OrdinalIgnoreCase)); + accessLinks + .Where(x => x.Nickname.StartsWith(search, StringComparison.OrdinalIgnoreCase)) + .OrderBy(x => x.Type) + .ThenBy(x => x.Nickname); return queriedAccessLinks .Where(x => x.Type == ResultType.Folder) .Select(item => resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query)) - .OrderBy(x => x.Title) .Concat( queriedAccessLinks .Where(x => x.Type == ResultType.File) .Select(item => - resultManager.CreateFileResult(item.Path, query)) - .OrderBy(x => x.Title)) + resultManager.CreateFileResult(item.Path, query))) .ToList(); } internal List AccessLinkListAll(Query query, List accessLinks) => accessLinks + .OrderBy(x => x.Type) + .ThenBy(x => x.Nickname) .Where(x => x.Type == ResultType.Folder) .Select(item => resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query)) - .OrderBy(x => x.Title) .Concat( accessLinks + .OrderBy(x => x.Type) + .ThenBy(x => x.Nickname) .Where(x => x.Type == ResultType.File) .Select(item => - resultManager.CreateFileResult(item.Path, query)) - .OrderBy(x => x.Title)) + resultManager.CreateFileResult(item.Path, query))) .ToList(); } } From 5773829fae33cb8647c855f70f997f0e3b3bdb9e Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Wed, 27 Jan 2021 06:26:15 +1100 Subject: [PATCH 15/23] add tool tip for quick access context menu --- Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs | 2 ++ Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml | 1 + 2 files changed, 3 insertions(+) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs index b478be538..f545df08b 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs @@ -75,6 +75,8 @@ namespace Flow.Launcher.Plugin.Explorer return true; }, + SubTitleToolTip = Context.API.GetTranslation("plugin_explorer_contextmenu_titletooltip"), + TitleToolTip = Context.API.GetTranslation("plugin_explorer_contextmenu_titletooltip"), IcoPath = Constants.QuickAccessImagePath }); } diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml index fe79e3140..b9b670742 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml @@ -45,5 +45,6 @@ Add to Quick Access Successfully Added Successfully added to Quick Access + Add to Quick Access so it can be opened with Explorer's Search Activation action keyword \ No newline at end of file From 8b698c4465a70143cf08a57fa2240c38234c50d2 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Wed, 27 Jan 2021 07:42:43 +1100 Subject: [PATCH 16/23] update to empty list --- Plugins/Flow.Launcher.Plugin.Explorer/Main.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs index 150cb7288..8002369a4 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs @@ -1,5 +1,6 @@ using Flow.Launcher.Infrastructure.Storage; using Flow.Launcher.Plugin.Explorer.Search; +using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks; using Flow.Launcher.Plugin.Explorer.ViewModels; using Flow.Launcher.Plugin.Explorer.Views; using System.Collections.Generic; @@ -38,7 +39,7 @@ namespace Flow.Launcher.Plugin.Explorer if (Settings.QuickFolderAccessLinks.Any()) { Settings.QuickAccessLinks = Settings.QuickFolderAccessLinks; - Settings.QuickFolderAccessLinks = null; + Settings.QuickFolderAccessLinks = new List(); } contextMenu = new ContextMenu(Context, Settings, viewModel); From c0f60e25bf481f05f88f220fec896e9b9e89fefd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Wed, 27 Jan 2021 16:23:59 +0800 Subject: [PATCH 17/23] Use type matching to create result --- .../Search/QuickAccessLinks/QuickAccess.cs | 35 ++++++++----------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs index e6ece2a73..270e8825a 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/QuickAccess.cs @@ -26,32 +26,25 @@ namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks .OrderBy(x => x.Type) .ThenBy(x => x.Nickname); - return queriedAccessLinks - .Where(x => x.Type == ResultType.Folder) - .Select(item => - resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query)) - .Concat( - queriedAccessLinks - .Where(x => x.Type == ResultType.File) - .Select(item => - resultManager.CreateFileResult(item.Path, query))) - .ToList(); + return queriedAccessLinks.Select(l => l.Type switch + { + ResultType.Folder => resultManager.CreateFolderResult(l.Nickname, l.Path, l.Path, query), + ResultType.File => resultManager.CreateFileResult(l.Path, query), + _ => throw new ArgumentOutOfRangeException() + + }).ToList(); } internal List AccessLinkListAll(Query query, List accessLinks) => accessLinks .OrderBy(x => x.Type) .ThenBy(x => x.Nickname) - .Where(x => x.Type == ResultType.Folder) - .Select(item => - resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query)) - .Concat( - accessLinks - .OrderBy(x => x.Type) - .ThenBy(x => x.Nickname) - .Where(x => x.Type == ResultType.File) - .Select(item => - resultManager.CreateFileResult(item.Path, query))) - .ToList(); + .Select(l => l.Type switch + { + ResultType.Folder => resultManager.CreateFolderResult(l.Nickname, l.Path, l.Path, query), + ResultType.File => resultManager.CreateFileResult(l.Path, query), + _ => throw new ArgumentOutOfRangeException() + + }).ToList(); } } From e615ad86d92330797107c116931e9d7d2111f62e Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Wed, 27 Jan 2021 20:55:53 +1100 Subject: [PATCH 18/23] add remove from quick access in context menu --- .../ContextMenu.cs | 29 ++++++++++++++++-- .../Images/removequickaccess.png | Bin 0 -> 11580 bytes .../Languages/en.xaml | 8 ++++- .../Search/Constants.cs | 1 + 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 Plugins/Flow.Launcher.Plugin.Explorer/Images/removequickaccess.png diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs index f545df08b..21eb844b4 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/ContextMenu.cs @@ -59,8 +59,8 @@ namespace Flow.Launcher.Plugin.Explorer { contextMenus.Add(new Result { - Title = Context.API.GetTranslation("plugin_explorer_add_to_quickaccess"), - SubTitle = $"Add the current {fileOrFolder} to Quick Access", + Title = Context.API.GetTranslation("plugin_explorer_add_to_quickaccess_title"), + SubTitle = string.Format(Context.API.GetTranslation("plugin_explorer_add_to_quickaccess_subtitle"), fileOrFolder), Action = (context) => { Settings.QuickAccessLinks.Add(new AccessLink { Path = record.FullPath, Type = record.Type }); @@ -80,6 +80,31 @@ namespace Flow.Launcher.Plugin.Explorer IcoPath = Constants.QuickAccessImagePath }); } + else + { + contextMenus.Add(new Result + { + Title = Context.API.GetTranslation("plugin_explorer_remove_from_quickaccess_title"), + SubTitle = string.Format(Context.API.GetTranslation("plugin_explorer_remove_from_quickaccess_subtitle"), fileOrFolder), + Action = (context) => + { + Settings.QuickAccessLinks.Remove(Settings.QuickAccessLinks.FirstOrDefault(x => x.Path == record.FullPath)); + + Context.API.ShowMsg(Context.API.GetTranslation("plugin_explorer_removefilefoldersuccess"), + string.Format( + Context.API.GetTranslation("plugin_explorer_removefilefoldersuccess_detail"), + fileOrFolder), + Constants.ExplorerIconImageFullPath); + + ViewModel.Save(); + + return true; + }, + SubTitleToolTip = Context.API.GetTranslation("plugin_explorer_contextmenu_remove_titletooltip"), + TitleToolTip = Context.API.GetTranslation("plugin_explorer_contextmenu_remove_titletooltip"), + IcoPath = Constants.RemoveQuickAccessImagePath + }); + } contextMenus.Add(new Result { diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Images/removequickaccess.png b/Plugins/Flow.Launcher.Plugin.Explorer/Images/removequickaccess.png new file mode 100644 index 0000000000000000000000000000000000000000..fbfb0b960ee1a82c8c9957a51faaf486b581bc81 GIT binary patch literal 11580 zcmZX4c_7qX^!NSFm>J91Q?{~=B}*bj*`|lemr$Y&ky4>-*|N<{%2L@z(PDcv5+$@C zVW!f85FuroRAh+}WgF(b)ARm*?;r0!Y3_3F`F_s1=bU@aN!sJEOH^217yuxO+E_aQ zfPw$T06{$bGaJ#l2!Jv`t+zWzWdH16PR(_R9h?r=Z4Tb`!28gH?=_hpgC#@VY}aNv z*(O;D1qrGUk2apjdwU|m|Gn_PE~|DdD3rK7Ib2$K{7G}UuE;YHg%=XmLMkCv#p6={ zDB8MbZR_p~b#H#?)-2cmWasU@l=HcXRKMLWaFoIO@N`SH(JV)^@-nTxXq)E#VH4zHtk zD;pCiR4tgDmz!PPF&AL#v>FfA#}(gbtx;DRa~OU`H6Q({*|8K=y`@-xxu#?+{(_jK z;)xHvy#AS$L+s$GHTI4Ux|v&Tid%@lX?y1GU*ohomOb2)h}N5qPBAPpma287kbDKa z1C}D14JHT!4P z-b2;$f48l(G# z29T9iCYbD(2Fpq-~0c->@2n?p?Um=tFN zXDV^edvon`&o}1RK>jKtHI{#}>a2Zu5?iK<53U{RqgkrHV7;-nq#Y$c@dA5FXLm2U z(oAU{gh|vgtEt<(l%vkxtV%p6w?|JFIG;1mSkdr`8XyH)R_G6E#<;vvtjJ&!ti9Qa z8w0TamNbEUTifJlh3ZQ8sRL9((&iZPuY0@PmBXaDi6#MTsl75AiFXZ&pyW#K($C zn!}G$Y?DubJx3$AEkLDPNFBc!>;VCHBro4`r1Etd5{nCv#R!%D;zltl8dXu~OF{&vajQTGo{kJ>P~YlQI=F z+eJPg2SRe771`;jSy9iEot~Yth%K&P{d9%=@1qYH(g%Ktp)Q_4BJj!c0G%M`sjm%@ zOwBp8rGngNHgC_?V;6*rKE8$Ie~*;s`m1#>h#!l~>pXt8p(Som74zIX3-`GZymvAe zja^FAi%A8&kHl=9ZnR1ypKm*M+fzpl9M&qGnbOc$)|dMD%hor~pTgSLK>KIpr}!yx zEcr4cn75zp&lX}kc*e9Epd}a14UK&%qN=gf#ie{Luw)V4Pi;I|j>P0hR>+M-M`6lo_u(*$T*`#5_uHhz=R61<3SM-O!LP!-ED+lDY&3^~rCNcFyMOCr6bVjV3 zN|=Zlt~TKrPW}yePaZAiX$-Am4l0ZNNoO3*Ruz+sl)L@}E#FE6q8&4xl*CiNOfT5S z(svq*b1&S**Iu?ipX>=v3Fa-TUxTJPrsGT;1TN>@*LFc7*!&UhF#g!R7&DgTe02v~ zD~Q4AW#R52zmJ2v6|moAl;uVqM`*>$4D7@3{!PN!rQ)oeZfIGyrL)by07w3Vrp1b53DhIUv zeeXP?nKaGqV|}&$kVkU)(j zHIHvsj(Dz4^ECj@d$bnZDOA}z7O83&-@Y-~e%%l{@oh`?{5QCh9leVs0f7RAsd8+a} zQnBc8(j!d0P;Gz*d4ULSF!n8rNg2~dE6b)t)?_UCqy&}+uxwd4tj`S%igh*&bMqoTe_N}cC;w1`Ri?U(+8FpsaW=hzNU z8>Jxm%09oC$=A6`&mAbJe5WdBTZI+-?n&I0EF>TJr1I8U7x9)&7VJ8-21sFowVTYh z8e~Onv_A@DABFte=HBp)Vlop*Dqf$0@xTrIV&zY71XuRn62_`>w(Tyyoq??g4 zM@I*@CiCkxo4^%xTmRHXgN3MDc_f*yCY&O#hfO#JWcRjx<3+Jn-n~p`RGK&#;p;JO8wH51U?WD8f;NpAwad<{##3o>ApYAo zee{~Ape!Bn6m(djJFkzYs>lNT-{IqevT2AX;1B!6QxRFP$RB>%>zn zBG4B3j_LY@pkG;xnjTT^h9J?U%HkU-XZsDgR)=;#PI@66PB|e~te33JcgKoJSe9_4 z25<1yqhLKxA26oW&2UWsolV4d?hL|KDqZ-%1(MG*){R?uQ+=XrF;W~>Nmb3 z{(W5{skp+wP{o+g9m#PYjb}zBF|Y0n^|7UEkNi7(yW0+VA`Xg)XLa^we!2#)3}g6~ zvV4nQ-RAOc$h=3Gl;cYH2|n}Y{;KQD<~l>y=V!)ER@|umHX=F3i%KVTH6LYf>YUBJ z@!8>K@kFrT+>#yr7nBo{Fjl>4PcxKiD=#CWF_pAF&%MEk{L?|`zBf>A((?e5jph=l z(|EtAnQcoZ#&-?q$Ye$(>d5;U$D&SO@2fconPm^(J$$!I;AWGKvGn)MpM14-`WWVQ zXfd-!7uTr`0!wG7GA&W3uD+e8?aE$Zea~R1g-}mkm0~S$X4n1ils-PZn_*ta(=0|G z(n(J`PI%pjq;zFrd?i7m!gUKmUwV`>omBc|wb#>{j%OHcB@ijbt(etEOD;Pi;Vui* zd|Su6qtV~%tVby)`5M((c82xUdHyroR;=XB>Vhl52PSDYbfbJL7PjFh?b^OiAnn0I z9d=$czax1Souqe6Z7=TbaVt-CELl5iLV3gDr*w!iNz_k?v!kHEef>2euzvb2mOapi zO(*$Sr|x+k&uYR^b8oGz(`?eDle#`_DJZCWWGhO$CTElC|8=nRDM1zOxZWpfW_?i} zqay>H&V6(6;vFx1t$}t3ZjqQ1aK58bZkRDae{Gq%bd9vxz7Q^x28j>fS~Xm>q?0!9 z^>z@vZw+j|r!8B59gK(ekW{SYn$&zg?3+J-0&J1=PLJUqSU61&F!Ur60(|U!hJptK_M_lzd)DpgIrtIG8OT74u-MX10xIy;6i(I}65n zmBc|;Izv11I{h9f#8Y#ND5>0Q&;jPKMzkt~_k`g*u@!$Pc8!Av=!}vm+3Ldk+T>4& zrvgWIPtvnAb+jZc=W37Afy2NihZl||G%w~t3A~GAJvS@?-uuB8X-D3JWjp%g+R_HM zLlH9hS3z1U*U~zBNgt)}53^KvMw&{%=>mo|)YFzT>KlZ$Lt1ss0HcU!%IUO3>5HM3 zxIxK1J8_=pd*+zM7pBxvC+X8_lY%`5JB_uB0OR*%to0m|gpLgsQP=KpK`uQ2rv>V% z#w#e@=&m^{X4T`U2jw75s(BroR!|R3nP_FoDZK7+p}M!iEPO%IQCHfa6`i5+Or~0A zb7!hcI^rqKxqv zjN$zFW_7e9)Sn=ha?Flx0#_#DakqF-QCOgE65piOTSr3`5A~o>5of(HavJXfp`WJ%haH7=KQXd6E`{mo5F+~)|uP2DbS$z zmAP)M@nvRtTpF|0^-)~@+TDAAgPL{kjj&=&MKDDrer`md)q zs#OB>x5nIsdZkpa(6jB`M>{&B;uA~4SU}7bDPMwe9E+g-ApGbpM?6I`c~E69xwB~7 zGZDNPDCSbu{5KTJ(%;Ccwb+fzj}rZtgqEbx9B_&n;Iz6ww03A$kVp{O!vil2%)j%_ zV8x)UWc)DIIxSs(@{chaIr4E(04@3*BZ}s`!QV4|YZ5G~uz%Kqj_&ifsC8EVZ844U zCnz#78`^kG4D`=HE}cUA|H&p+m()Z5Y}fM! zEQ!Fe)%`!I_gbfy_d}ePc>OC-(7%_Z{N8d}QhC=%#T&X2OJ=v`?2Kx{BG(P2JBx-tZ0hTuVoWZ=d-OXv&E)}M zQWNT_(*+1bsvfIFXL+auQ7+{vfy$I~d*C4l$Em#sd<7!9Zoxd*j|475B{)$XGfIHVE%&j> zkleXNSB#C4#~(I;0GPVc>gtpZt_Sxcf}wVnsYT}KnF^1dKd|8+|L^u zi9j|FFD=!XBKu1KHw2AKC!yb~A7IKmEGUlP{v92bwJX-O|yfFdUV< zExx2KOtMKfz><=s6VrOwqql7&dFDxt<;g2$PrCieW~1c4&%`fJ1zvAEG}`9X)8-2O zfXd>#+EWjrKmPtxx(fK~9aWa^Ghp8vEhTlePa%1l|4^HrDD;rcc5hGsl~O|XT_2EE z2SUT-~=Eg`*@jy(b{_}|=U%o=23_SRQ=o+_Atq)LyzpU@!sqX4x z))2c9rI5j=8vtXOmZuf-SB;ixrtWuQl~MZ5H|roqhfj_0ACR&D=0P*=WnuJ0!L6jT z@R!pjJp~Z9Va5QZcPc{o&A+EwL4rS~&Ld&Rjr3Ny2rrgP0O+}X2F3=(&UJ|AuFAbo z3QkXlp>~TLLLlXf6Mz5h!zsg&-*_rBZIC)q-DM3`t%5k5sVG|C`72 z;d%@B%*gTKQu+I({~xh2Q84r0XtY4z3r`BFCTe+Nx+{%6qh|2rDe8F`re z4+OBp7`U}=5rzs~au4y03?9-gzaI4WF50DH>aTnMMbHjQZH8a8xmUGM7MO`Zwog10 z*w5$l)}d+x5V0DHrDclpvp)1WtIqy}s>-&!HaO?|kFZ#;s2 zzvX?`25;;X6QQ`Q51$`IJOl3>wc~ANg?ci z0IFs7!07$p@ls*3p~$;6=JF7^OItIY=RTHklGYXomzVvJ^idwCwd~uJ^EZgJ`g}bK z=!ItY;3K+h5l_hoB`mpX0%IZcHz+n@#IfT0;!gc5o)zm^2mmLK+P21cwdhfOj_Xr` z3N$Os!;3WUDBzUEUb+ZhVWewc4o-=IgHMGdyy`q3^h`s&KHu`_ojvm&j;f>k=!7y# z_x--A+3bDUYOtDi`#&@HMYg%`*R#U_%r|?zR^^*skIW_ZB_zK{k`v#_-}1F5Sjp`k zCQ#VKa-{;&l+p!nvL*rb36`bGIidouC%VH_B>T|hnnfW%G57<6bcSK=qYnN1GJu7p zK?8V?#}clKhUVe%369DD5klYp4m-7>YDIk61++?k#6lmtc-^~EhE)ei42VEoU#@+r z?Ygie3V1=MVSJ2w9}HSnS`-0b%1a4?9vXx*dDyXNISZeaYx0!EaD1;iXAl_q#PLTJ zrd+Ug>#sm4ZMpsKyoBc%R^Ao(nxs3&TOLzHl=ZNRxD6>s`HshAE&GS>IPX0L2iS&z z#~JXlG74g>mDVhXN&z=KyswMhZjb_&`xua}H6ZT`-EQ%zDQwo_Lc?|}3)4<0Kk<-n9mb|A47C^PWl82aycX}J1bhsxc91d_fX%#()!EBLOi^KY z97cLQ(ZpyIn+2u#GC(FJDUm)s|2Vmjsrv9EuJ-9$XJ zk}&NIlq)gyTkh~f$9txTA}apHO6~wSs7z1fL*QIHA~$WaQXxRSO15ArVAN6V&pQgn zEM`AgUMa(XK-_$sK|KsnYua5|6XpFp_pd}S({Qd~ov1GAWH3w{k$p*D>cNn0RW%di zpoVtL$GlB!p}2p&&u7srxdj>@nJ?!&{T20%x?!~6D9P?I@i;&y1?8G>Pkt++$U==N zAh3PRExwUs3FOvuIRnDEnf6UW41dO~11u&+!Hb+U^Q zsI^QPW?{%I>9sv=X41R0v>PT6?x3dRzC}upKTyxdgNs4jp<0 zy+)q`>qgLKUZ~7!5IISRD7!nQf;znny~TTQW$EH&$ol;Q)#{L+FVU>)w|F(eq5vi{ zXBygBZ!U8!pf!Du;Sh2C75hSPVCeIU5!-qGU}F&5{&mQ&K__nks!l`QtCP0#N8s>t z)#+JEY#+qrB7the`M}cIL4j{9`5{u!Y{1d1@oRe#>Rk+%+S9BBUtV)&xYNtyF1Em? z|FROIpEbP<^}6Cvfv?4%Qc4|sl93e!XB7i08>Zk3w!ao+YyTQmvL%9I;XuVG1U@Ai zb%QvLUy6QY9zv+|qUM(m;NT-K+bMVD-*4dkK3v4V@1}H6C((CK9Um;OdcZZwbr)P9 zQZ=jBPmd}Y3Q%+JoiBx^dzHhUp%0ediUFC6rwBx6kMbX`G9s)hT86jzveg}s78_TT zcucHr{T_PfiK)FW>Uo91e?cyj@)n2T#3`|Pjlc)*iYRYoA;^LetM37r4vQ3t@QVyC z=!C-}5FIu0$2i7W&9DY8T zQQ{|`&|_h=h(*i1rBNmA)xc>}!<&Zsw-cjK?F=F%P3V5TgHG3k0h(}1Fj{Ah3=K(! zcv34*H(^D$C>YwD9j%fsfPcY4KdKBrmfl*mtmpC+fCCDcR4*%-=3Y6XDOTHD^E05> z7Ek?V*e>xyh(>4B+${VjnNp{%03ziv<|=#W&bve!+>JlAE_v8{W62%J04tu%H}ZCF z^BF&Dd0o!ifUb|A*)9H?x^zdCkQ;fQ=|kGcma76+floqrSG_T%A+YO4h#1fNy6Eb{PrOtWrix zzNEkC0)RNj?*%CNm>9#m_IZYx{aJwe%`E8ZQ2O6QP*MienX@iuxZ^JOKw8uKH}GPn z3T2X9b|m!7@M2}=xcWu=5dg!Y0;_Bhj`>g;4y6Z2CHKrww$70kU7mq7H&TjFtSKMU z((v=AxTfw29h3ulSn?v)LMS@U_TqozES2qm>pcEwb8}g-E=H<>&pr*4ZoChFi>$ceW>j zv`kDZUF_&ve$w@9i&R4U+Oow%JU<_6K)q*&yh$viituxPzPV!UvvUsD$`*beIEDdk z;YZ)k(GG9%wxMhLr1ymWQI%m1S9v5ueVTib|M9H2HN8`I%IW2YmHi*8L0b253ytnm z6NEHU@)(H|%0B2`#nmecLcoJusferdBBp%tGZt%X6is7|;y zI{K*vJE&fH-FPzl#%ri+s+^azw9PslIal1uqLv z68_a#Gd1Ud-o^qqb0xM~ffC#1Z(@4NgtM7_O8U=I8Dko9@NC<>UxZH@$;Z1W>FH4E zoz2U7U6%kzTTvZU)kaS8FP^jcnxu!kdr%*f{T5wIHvg6WkQ7Ha$SqLKA(&1|ekH>; zwf+#HladkO0&HMlV-ib970D#IKO2~nW1p5bUCH`T1KvN{#FiVQ!ebNQ4vppI7(VzF(4X^btA2|wm3%*Nj3 z{T-j-O{^l+J94oRn_&G0{k~P0tH92=6ENqB-ot{vz@Rh&4hFiR;)_0gILo+GF;Jc- z1!}R;G7nJ^L9&1SEj->j-#24o1#d`43!t?H);RBK=9p9P5W$wD1GXFCR@sx=NXo;RC zZ*#Rk`K4L$VGKugTD(}s*cztwS`gl9O`eM!=q@J-M6ZRkT|OytmROHW7Rq1|BVktj zha$(Fh|rx~`Wtz!EFVo?*C*^oYNvF$G%Q!^SW~E^^~`}rN~QhBMX_eEQJGI7C4(nH z1XeaGo&=7Msz9|Vnf|MqY{WIUySkjiT{;eA>8=9m>rJZ`lUcB01-E#A{bs3(WhL@Y z+NQ}ffF-l%bP0|rEB8JYJ_NSyI{jwF!eK=XR>e?Z#Fa)!k|?*Fg5`i92k8Tg^@7>q zzm$>@&v&pJ#Fa{*4&uf5dH&6>goYY<-et3EVeuP*bGK+Ot<~8n{Hj@vse@bF${2+A zRbQNsFqXWXKToxS^8kQ1d2Eppb%?7Y1AHIJD0yXyvnOq6ix9LzGQ0e9l z=H_N!Z#KVv#{jI-y-1B?Ww6xv`lb{BOAS-I9UVe~#qT5$f%MqeB|cZ}CgT4^2g*rRPq~;5ME7QWTin{aaa_Z;NyaXg4(;-Idw?51M+M}pd{B#3mQ2pkz z1Dr}l@>L@rtcsFZ<3uNapvOp+>v1_<}tOjS|&PpTCI zyioQT_QRIg1z0iH`i+}V6BAuDD_4gS_Bpkd{f1RVJ@#Pk06epxc#xs9zRk2b?ZAnFSk!HnYXdOl+J&bum*CQA-qz+iWrOGi(Cb1e*YW zzlywoWpb6UZPOHn6T?2lKBlld_8jc7G8a8RC*4JLg{V7SuG?kyn~7$BpBh-Xxe;_8 ztg&M&bJV@6Sa)jG=$)!rv^B8)pUQ8vf%Si^A?S45wlhNWW2H!BT{-{76f)1eq`BCY ziR2@Zl_CQ>ow4g!zEsBaxJ1^x87>;U`}E_02cC*YyI{}OIV4qjPN;exxx)l@R{UNt zSU2`T5KoPVlR`sUU-Tso5Cht_X`!KEH?)3RCOa-Cdx2ATAMf+j2~7MUS}o!zd9{;? zV{1)!^0u^pnc7E*lLhh{a#X7c5d!n7K?V7w(i5vA;2S(Q(qIN)-*AY$otwa88(*nD2LY>83!H_u8wB>=U#p$*j49lL3-gvR$FZbG?Sbe^Rk?63@v_rn8w#KPLlJu;k|7 zx*~mc0<>Q0??VLjVjB_GQp3V>=923>kU#m5wR6bk3nA%)z#N~VYWC3LqE5uQ+_Ii8i3|1v(aI@#TjIq>s zFNw5=HM{%X&z%{1UB7kim){=PQpL~|oWQJ8KF^9Z+ij!$LfvbKBCi>n{1)U_{1C$Q z@53pnRZ7&g4*fL&9yj|93^Q4(OVI$PRLgjL#$M&>RG_hKGN-hom#Ac$Ol4A0R zXB7Bqb8PZugnSY0B^XQg;wi}oReLVRU^;xaS)b$iur*mbJO{ARM*espvtg}P=QA^o zR)raCC98qH0?*O?=s)u4UD*rR26ywZ*?aR7^I)$`L|SzKtAzUbl;m~w)=?goP0Czw zfjB(0aiL8L#U)f|=ZD?U6q`7AGh)m#)jReY6xaPsXPiGaHs^;-Px@ImCuBA4Y{LZ} zfpI39bzYho47>RZBTF!*i3);B>hgld!-`o(1(#W-EIaFcgX%**gNDq9u%{~+u2D!T zVU~aQvJcePl=5B@x>B# zELC3pBF$eJE<46vL+z#MMX=KrAK8RVF-5or?RA#7EG9GR<)4H6*JDE1@kCQ0F^uId zH>Z$|F}ugcEWR^wT%qZ!mb-Q@UUpdYmB&&KA48RUcAhri9#WO)JKu~u)7gKUr^)JV z*tddlnD<5C3O~34)s+sxK5yyS-D91Vpfy?yo5{Y{n_E^a!6QZw=~XQFVk zEMQ3LNfZ55ORzknI&;B^7wQ+b>q(sak*93C09#{sTRIea5V9u zxwBuV^cEKOe?GMNM{dc-oF1OeM~(S?)^P(a4znHea49kK0+!lht=zLi;Jjm?p5lZ` zrCzt5vaXc(LNg0D|4fYMiiStp7DG)pD0nDY{ELF)_%QOtOw!h z6=)uHU8MJqeyn6DjVA?GWN-C4Kl#SYAl*Y%exemntju2JX==Open Windows Indexing Options Manage indexed files and folders Failed to open Windows Indexing Options - Add to Quick Access + Add to Quick Access + Add the current {0} to Quick Access Successfully Added Successfully added to Quick Access + Successfully Removed + Successfully removed from Quick Access Add to Quick Access so it can be opened with Explorer's Search Activation action keyword + Remove from Quick Access + Remove from Quick Access + Remove the current {0} from Quick Access \ No newline at end of file diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/Constants.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/Constants.cs index c3e72deb2..78c7c98a5 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/Constants.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/Constants.cs @@ -16,6 +16,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search internal const string DifferentUserIconImagePath = "Images\\user.png"; internal const string IndexingOptionsIconImagePath = "Images\\windowsindexingoptions.png"; internal const string QuickAccessImagePath = "Images\\quickaccess.png"; + internal const string RemoveQuickAccessImagePath = "Images\\removequickaccess.png"; internal const string ToolTipOpenDirectory = "Ctrl + Enter to open the directory"; From 81733d35a62510573c533f00da5d9b7e33fdb7e1 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Thu, 28 Jan 2021 14:05:09 +1100 Subject: [PATCH 19/23] fix formatting --- Flow.Launcher.Infrastructure/PinyinAlphabet.cs | 1 - Flow.Launcher.Infrastructure/StringMatcher.cs | 6 +----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs index be3c58f66..f1557c45a 100644 --- a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs +++ b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Text; using JetBrains.Annotations; using Flow.Launcher.Infrastructure.UserSettings; -using Microsoft.AspNetCore.Localization; using ToolGood.Words.Pinyin; namespace Flow.Launcher.Infrastructure diff --git a/Flow.Launcher.Infrastructure/StringMatcher.cs b/Flow.Launcher.Infrastructure/StringMatcher.cs index 3777c6811..63722bd54 100644 --- a/Flow.Launcher.Infrastructure/StringMatcher.cs +++ b/Flow.Launcher.Infrastructure/StringMatcher.cs @@ -59,7 +59,6 @@ namespace Flow.Launcher.Infrastructure var fullStringToCompareWithoutCase = opt.IgnoreCase ? stringToCompare.ToLower() : stringToCompare; - var querySubstrings = queryWithoutCase.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); int currentQuerySubstringIndex = 0; var currentQuerySubstring = querySubstrings[currentQuerySubstringIndex]; @@ -77,15 +76,12 @@ namespace Flow.Launcher.Infrastructure bool spaceMet = false; - for (var compareStringIndex = 0; - compareStringIndex < fullStringToCompareWithoutCase.Length; - compareStringIndex++) + for (var compareStringIndex = 0; compareStringIndex < fullStringToCompareWithoutCase.Length; compareStringIndex++) { if (currentAcronymQueryIndex >= queryWithoutCase.Length || allQuerySubstringsMatched && acronymScore < (int) UserSettingSearchPrecision) break; - // To maintain a list of indices which correspond to spaces in the string to compare // To populate the list only for the first query substring if (fullStringToCompareWithoutCase[compareStringIndex] == ' ' && currentQuerySubstringIndex == 0) From 74f1b05257474cf50274d655f8c42fd883cb1bab Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Thu, 28 Jan 2021 20:41:33 +1100 Subject: [PATCH 20/23] make map variable more clear + formatting --- Flow.Launcher.Infrastructure/PinyinAlphabet.cs | 2 -- Flow.Launcher.Infrastructure/StringMatcher.cs | 11 +++++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs index f1557c45a..6c2a94e82 100644 --- a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs +++ b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs @@ -45,7 +45,6 @@ namespace Flow.Launcher.Infrastructure int count = 0; - // Corner case handle if (translatedIndex < translatedIndexs[0]) return translatedIndex; @@ -113,7 +112,6 @@ namespace Flow.Launcher.Infrastructure private ConcurrentDictionary _pinyinCache = new ConcurrentDictionary(); - private Settings _settings; public void Initialize([NotNull] Settings settings) diff --git a/Flow.Launcher.Infrastructure/StringMatcher.cs b/Flow.Launcher.Infrastructure/StringMatcher.cs index 63722bd54..916168dfe 100644 --- a/Flow.Launcher.Infrastructure/StringMatcher.cs +++ b/Flow.Launcher.Infrastructure/StringMatcher.cs @@ -47,17 +47,17 @@ namespace Flow.Launcher.Infrastructure return new MatchResult(false, UserSettingSearchPrecision); query = query.Trim(); - TranslationMapping map; - (stringToCompare, map) = _alphabet?.Translate(stringToCompare) ?? (stringToCompare, null); + TranslationMapping translationMapping; + (stringToCompare, translationMapping) = _alphabet?.Translate(stringToCompare) ?? (stringToCompare, null); var currentAcronymQueryIndex = 0; var acronymMatchData = new List(); - var queryWithoutCase = opt.IgnoreCase ? query.ToLower() : query; // preset acronymScore int acronymScore = 100; var fullStringToCompareWithoutCase = opt.IgnoreCase ? stringToCompare.ToLower() : stringToCompare; + var queryWithoutCase = opt.IgnoreCase ? query.ToLower() : query; var querySubstrings = queryWithoutCase.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); int currentQuerySubstringIndex = 0; @@ -136,7 +136,6 @@ namespace Flow.Launcher.Infrastructure continue; } - if (firstMatchIndex < 0) { // first matched char will become the start of the compared string @@ -197,7 +196,7 @@ namespace Flow.Launcher.Infrastructure // return acronym Match if possible if (acronymMatchData.Count == query.Length && acronymScore >= (int) UserSettingSearchPrecision) { - acronymMatchData = acronymMatchData.Select(x => map?.MapToOriginalIndex(x) ?? x).Distinct().ToList(); + acronymMatchData = acronymMatchData.Select(x => translationMapping?.MapToOriginalIndex(x) ?? x).Distinct().ToList(); return new MatchResult(true, UserSettingSearchPrecision, acronymMatchData, acronymScore); } @@ -208,7 +207,7 @@ namespace Flow.Launcher.Infrastructure var score = CalculateSearchScore(query, stringToCompare, firstMatchIndex - nearestSpaceIndex - 1, lastMatchIndex - firstMatchIndex, allSubstringsContainedInCompareString); - var resultList = indexList.Select(x => map?.MapToOriginalIndex(x) ?? x).Distinct().ToList(); + var resultList = indexList.Select(x => translationMapping?.MapToOriginalIndex(x) ?? x).Distinct().ToList(); return new MatchResult(true, UserSettingSearchPrecision, resultList, score); } From a6ce3506975212518f8b42178f94a360866d6126 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Thu, 28 Jan 2021 21:21:35 +1100 Subject: [PATCH 21/23] fix formatting --- Flow.Launcher.Infrastructure/StringMatcher.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Flow.Launcher.Infrastructure/StringMatcher.cs b/Flow.Launcher.Infrastructure/StringMatcher.cs index 916168dfe..9ded898e3 100644 --- a/Flow.Launcher.Infrastructure/StringMatcher.cs +++ b/Flow.Launcher.Infrastructure/StringMatcher.cs @@ -85,9 +85,7 @@ namespace Flow.Launcher.Infrastructure // To maintain a list of indices which correspond to spaces in the string to compare // To populate the list only for the first query substring if (fullStringToCompareWithoutCase[compareStringIndex] == ' ' && currentQuerySubstringIndex == 0) - { spaceIndices.Add(compareStringIndex); - } // Acronym check if (char.IsUpper(stringToCompare[compareStringIndex]) || @@ -310,4 +308,4 @@ namespace Flow.Launcher.Infrastructure { public bool IgnoreCase { get; set; } = true; } -} \ No newline at end of file +} From 4993edae2d1ab5c6592384258336709b4d149985 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Thu, 28 Jan 2021 21:41:20 +1100 Subject: [PATCH 22/23] fix formatting --- Flow.Launcher.Test/FuzzyMatcherTest.cs | 5 ++--- Flow.Launcher/ViewModel/MainViewModel.cs | 1 - .../Flow.Launcher.Plugin.Shell.csproj | 8 ++++---- .../Flow.Launcher.Plugin.Sys.csproj | 8 ++++---- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Flow.Launcher.Test/FuzzyMatcherTest.cs b/Flow.Launcher.Test/FuzzyMatcherTest.cs index dca8bf7a0..f2cdd7bac 100644 --- a/Flow.Launcher.Test/FuzzyMatcherTest.cs +++ b/Flow.Launcher.Test/FuzzyMatcherTest.cs @@ -241,7 +241,7 @@ namespace Flow.Launcher.Test $"Query:{queryString}{Environment.NewLine} " + $"Compare:{compareString}{Environment.NewLine}" + $"Raw Score: {matchResult.RawScore}{Environment.NewLine}" + - $"Precision Score: {(int) expectedPrecisionScore}"); + $"Precision Score: {(int)expectedPrecisionScore}"); } [TestCase("man", "Task Manager", "eManual")] @@ -309,7 +309,6 @@ namespace Flow.Launcher.Test [TestCase("vsp","Visual Studio Preview",100)] [TestCase("vsp","Visual Studio",0)] [TestCase("pc","Postman Canary",100)] - public void WhenGivenAnAcronymQuery_ShouldReturnAcronymScore(string queryString, string compareString, int desiredScore) { @@ -322,4 +321,4 @@ namespace Flow.Launcher.Test Desired Score: {desiredScore}"); } } -} \ No newline at end of file +} diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index 870d17ca8..05dbb3a8b 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -19,7 +19,6 @@ using Flow.Launcher.Plugin; using Flow.Launcher.Plugin.SharedCommands; using Flow.Launcher.Storage; using Flow.Launcher.Infrastructure.Logger; -using System.Threading.Tasks.Dataflow; namespace Flow.Launcher.ViewModel { diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj b/Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj index 0e83427c0..d3042722b 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj +++ b/Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj @@ -54,10 +54,10 @@ PreserveNewest - - MSBuild:Compile - Designer - + + MSBuild:Compile + Designer + diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj b/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj index aef781693..c25e759d3 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj +++ b/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj @@ -48,10 +48,10 @@ PreserveNewest - - MSBuild:Compile - Designer - + + MSBuild:Compile + Designer + From d81db91b72caf5c6b699939fe504ec0fcb7ec373 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Thu, 28 Jan 2021 21:48:44 +1100 Subject: [PATCH 23/23] fix formatting --- Flow.Launcher.Test/FuzzyMatcherTest.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Flow.Launcher.Test/FuzzyMatcherTest.cs b/Flow.Launcher.Test/FuzzyMatcherTest.cs index f2cdd7bac..78c918b61 100644 --- a/Flow.Launcher.Test/FuzzyMatcherTest.cs +++ b/Flow.Launcher.Test/FuzzyMatcherTest.cs @@ -41,7 +41,7 @@ namespace Flow.Launcher.Test Enum.GetValues(typeof(SearchPrecisionScore)) .Cast() .ToList() - .ForEach(x => listToReturn.Add((int) x)); + .ForEach(x => listToReturn.Add((int)x)); return listToReturn; } @@ -183,7 +183,7 @@ namespace Flow.Launcher.Test $"Query:{queryString}{Environment.NewLine} " + $"Compare:{compareString}{Environment.NewLine}" + $"Raw Score: {matchResult.RawScore}{Environment.NewLine}" + - $"Precision Score: {(int) expectedPrecisionScore}"); + $"Precision Score: {(int)expectedPrecisionScore}"); } [TestCase("exce", "OverLeaf-Latex: An online LaTeX editor", SearchPrecisionScore.Regular, false)]