From c846dfc75a89c142f833e6920ef84e5e81dfee8d Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Tue, 1 Sep 2020 22:23:42 -0500 Subject: [PATCH] Make skips equivalent to implicit checks; make their visual representation consistent --- .../render_implicit_check.png | Bin 543 -> 217 bytes .../habits/list/CheckmarkPanelView/render.png | Bin 1470 -> 1328 bytes .../render_different_color.png | Bin 1441 -> 0 bytes .../CheckmarkPanelView/render_reversed.png | Bin 1480 -> 0 bytes .../habits/list/HabitCardView/render.png | Bin 5136 -> 4911 bytes .../list/HabitCardView/render_changed.png | Bin 5136 -> 4911 bytes .../list/HabitCardView/render_selected.png | Bin 5203 -> 4985 bytes .../activities/common/views/HistoryChart.java | 8 ++++++-- .../habits/list/views/CheckmarkButtonView.kt | 1 + .../widgets/views/CheckmarkWidgetView.java | 2 +- .../uhabits/core/models/CheckmarkList.java | 11 +++++++--- .../core/models/CheckmarkListTest.java | 19 ++++++++++++++++++ 12 files changed, 35 insertions(+), 6 deletions(-) delete mode 100644 android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_different_color.png delete mode 100644 android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_reversed.png diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkButtonView/render_implicit_check.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkButtonView/render_implicit_check.png index 2f752976811ab29c905ee1e6173c7abb6c262717..269a7c9b7dc8f9af47d99dbdd72bc8c9f780efe6 100644 GIT binary patch delta 174 zcmbQwa+7g_aXrHXPZ!6KiaBpDZsa{|z~kzu^+730+c(Yo@zyOJjLQmNYNaJe?v#Ge z_@JKw4Ls1hb(LL4GI>vQ_W6#8u1V2p>-K&R4_trd@hj#&5qo>3q?@xZ&n#+KQTtDS z_VTk<2ky@(ZFsA8_VO|r1>@^0YHw^aXH-Wsli|lH_I0~OdAj?*9|K8wy85}Sb4q9e E0AdwFkpKVy delta 502 zcmcb~IG<&LaXsTTPZ!6KiaBqu?f1JKAanF%@ms}vfo&YB8;=|i4oTARZ#Z&mssBYr zwv45G9&d%e7{0imH#K6$ga?9JvFct^8XGyLd2|+83uvw0#GJ{r&%DNd_J1Dx`H!n} zIT^44hq!5}$0Mi3mRij{yeeI@K6#bggPjrC`=yfk(%StldCpoUzk1F}kC3kn=O51h zu=Kb1+Y?d0cdnXwYRz3P4G#N!q2qw$0xkde0M8@Vs`bIQdN8 z&C=(0mKr{bxx~&Yx9>?JqwDr#+vK8xtSCz*_w>Zc0C{Fro{)q{JgK+2Cv z&sjbEwG?lBSjxaP;n_5Sk{>||tRAhZEb{wA0vIpd7ux4}%j8&1*7n=!q32n!1@i~1 Zzl^Oj4*#^$=HCI5_jL7hS?83{1OO*S+xh?i diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render.png index 39b3ebb2c2dc14d1fbc2c2161095d24d294a6341..c0eb5e922f74d73417c31c8d96f736f7eff4885c 100644 GIT binary patch delta 1202 zcmV;j1Wo(C3$O~1Gk*lzfjxVRhhA5?1TL5Lug z#Do2yh@c>gpo0c=^b}oG@K9c&0+GrLNvu=hA+ojh9wDsDE-X?O5ya-q?ze-pW$VuD z4`+6soq4@Z%RJ9KeE7h=KQqtwd7g;?0000000000000000Fl2ee`tx+?gCnA`|%ym z<>~Z%j(Gp_;cw5hyPj^N|8#<}v9WTsT757g&J7L@PBz+iWMrf_BKG(6^!(W0-+yI! zDqOmb9RS;pKJsd$RqsYbG4Z=%YF3Pa>i(=R8y@mG*Al zy!rZE`;L!~_f;yDe+wz4Z4q%jBAyx;82Dyc3tps-900e5&x{;7r<`B>{_uAnwyCVH zq5pJ(TKJ!dh z=X|4j*W|s!2Z#S!?z*~#{?iG@#>UE1Q&U3`v2OOZ*+ZaCfB4V1zIyfQ?L|Eu)YI+) znyFFvL`0;BiM11JZ!Bj`-9-QC6xC|=!IaW%;U5u^QrcRnRK6S^AKw!Z(IEUIBKm6U z2L`}mJ$&rpb(aoZ`fVZmZauo=V59KKk*`(r^yA+jxmaypg`G|R+hb&8kfS3=EW-e9VqEF)?x9gBZNG>%ZQArpZ*TA3obwNheeX&L|A+z( zfWGR+Qz@l=|9>^@o-2fePxI+N{AVdcV5NkAM8O8Y1MfU=&&(&!+ojzb)>h8WgwVF* zJ6}#Ie;S{27Cwuj|AoQr#wx^W#Y*<@4yY1-C z*COYWDbk#47{X_1^uHK#&ZncffnBW~lO>v(nwnnVuDPX!G+E&mfy*b#Yt~mcoQX(J zEam;e=g#Oq{NFs+`QN7A&0r+QwjcOzKD%?00xhy~mTwrjqph_*|i7J+BG z^7@s(f9<*UWJEq+Zy({)I{Hr++dp6UmrAAG^IaWOJI4N&RM-TC9sm)ILrD0vp8nH~ ze|ma)evF7YAA@r1rJf78MD%*?ScO#h0T3~F2nnC%qyKc9{{H?eDWzxP<|Cc|HP?0i z4Tiw)DW#{2`XtbZg0BJ0Rz6W)v%a$N?HqA`j(GF(;ctI#cTL?y|LHcPqoa@IoIj3; zb@TloOzqi0=WC~ZeoHAmwPnkeua~#t48>Vd0{~#Tb@ER_0+F#c7%Z!Q070-T5ov{M Qw*UYD07*qoM6N<$f^AcEh5!Hn delta 1295 zcmV+q1@QW?3cd@FGk*njNkl^PO_bZu9 z9yPOfb3ZysANTh5zVEZ9Ms$DW%9W>`b0;Njan79&g5de??(S>Fu1%#T*!rcL8B47e10?QfgCb)9rfJ)Jo{TUlqb%&bgH!2yWK1rbd;?WOka_|H5CA%xqUW zoj#pPrG_P`O!!MuXKsK0Ad&;1&36Ii>^Zh)OSRVyObm^d3m+%9wCb|YOpi}z!l|zL z(SN@d7Z;zX_S$4Jd8AzUOS%z@#a`*^>bey|X{}(&Id{I)$@~zg5dO-&##Buz3_&E9 zfclU3cXX~k@~xR2aL%1ty48MYZhX4r?)$*R&}f_47p2ZSxut(hHoNcgJHP#2n~IwY z{r78OVWBgV$xKPwD`}>qqho)mjYsL<@IPGUC2zE~wH?~Nef!U$7u&=tEbUZOYQG># zA~yhX;d9c=_WyU({q*O}_7{qU5aAOp`tMgR{C|`*m_Jr7NC^Mh+UO8ygz%RlxCGRh z+4{}h;Uh`*?ACt=SHJ5W-xm}fC49n1|NUBBUHx7K;V<2_=G;|yoba!`?(XhuK@bc( z=Pp+JJB^QRHq4xXkzftPEbMDO2t@ZsKl<<2 z)vH$@&t|hFHwz1crC`m!)c-KyAEIjC2{cmpOA#9YlC*#O*xpH#UMzLqId?{~GcxxX z;S)ak?^iOJJZol8l{)X7yJ%)-CA}@ezit=+by9o{x_X4qy`lep725+?C&E8u>)i)v zq#+Qw0U&KWgb1H-(0{+~VF(cZA#3(c;7AStY5gHY_=Jo8`?Y}~K=_A@+dw_5HiQVD z+Mxe_tz&-(5dI;{J=JqM_h7f8@^=PR@jZOid^{5eT8WiBK9Yh$ER_y<8STJ5_v6;Ck-0A}R6%Kq_4xLWEEK(0{*53<1Kwh7yUyteG8@ zv{HDy*t&k1A+Ta*2c!BVP$}Yj0BiLh@9%hcb?YZiddx|OFN~f0!*@-sg#P=L+Y>k; z=}|NLAj;2~Zx(zZ3;?vSX8uY@k+Ch2z#fsn2N diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_different_color.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_different_color.png deleted file mode 100644 index b55300ecec29baaffc2d6216f26fabf9696ea7db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1441 zcmcJP=~I&j5QhT_B!O@%1uP*I3`Q-(8ILhQ!u0}j#DJh2qLxFHv>aj~kf23mI$nsr z5~Kl?&;SAC3WuPDQi_Hv8aX2(h(JSxN+6Js^sRqGyB~IU_QTGz``g*PKz}b3(hLcM z!BBv=I~fL3V?g<7xF+O{SIhIDusxXwP~ec!;ODNxU>c!-yBp>5!zIxmmGYhOA1fbI zJTpXbjMphh(kbf|G~-XAk>RmM3a}fgoqE=9h^sv&I~(m-?`(iKGifW$bGGcc{lKx> za#`yulD+GKAA%TUXu41^6XThCIE{TEZLY)N^OiXM(^CHeu=$WLADFxYLHr*!-bFMS z^6$y(jRNhdO!-JF%cO!d@`^f74+X!C*mM;X6dt>E^QHwNB7nzav8IAJluJHLQ#9HZ z-`*T(bzyXLG#8Vw=n2|JWetdK0pnuH$18Rs< z=j_jJ(6UM&d8C$ZY;1hJZ{NOH>x*HTiBkRR2o=-3&@U$KBzU#HRNI@}uzbhrE||pg zO*;}wjw)3}H^J$xa*wUV#%E?LbDQewmS3N&Jz$Jv;kD@i&%Tgv zP9l+bMmAhDzeV2Ka<>UH^o=68qu1{g&d(JGGHArB*5=B{`YlNoZFbtvm>BKNc>x6aRSj`tu(F8T2Wrmq298gVE4Yz^WvSc{hrk?3Y(-R<4o4)bo;h`<)2Y% zcExr;vYn_2|MBm)9T`uGa-_eJd2{G>7e5&`j$6CEZ7q zYHZ)~VEO+}MiM_3JzJTI4ITDmd#BbVnB_nwLDC zi!uSh*dEY8xnw8ADIVD{FGzO|FCJx&lcUwiM`4dcAd*J&ExoE9eM`lJRZ)NB?UaV$ z*3I%_Cz}7e7-=M@U{lSqCkMjV3t>FKxXO4z1lF^-7%i&DgSK_c=)^55KmwE2g^fx#sB~S diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_reversed.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_reversed.png deleted file mode 100644 index 2965eb6914a1528749fefce5b036a462f84bf80c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1480 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 literal 5136 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 diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_changed.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_changed.png index c3f29a4f41986dd789c4c57caa9454c2457d87f8..7120984a550581db228e801bbdc4dd51abe7557e 100644 GIT binary patch literal 4911 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 literal 5136 zcmdT|cT`hZm`6d1BZ%Vw3WkUhP>?1DhAx6&s8S5PT+|$vrGgUj=){ap)77>N%UYd`2zyI<(!M!8 zcl{WKCx&fS>Q?>pJf7n3zvaz8z`Z;fP_pXd;7zG8EvJ53dw)U>ciXkw+7?lJ4M#MU zd)Z+uc9EOo_BDex=*{16a>p2QyGV!!cCUb)Id8eO8M!S)!nPRdr~A%Mg-$6-N-l;k z94;7E`$8ojJFaEENWpM4hX$E!VD%olU&2l5JvTZB0Jh-`4)3e}%6|Ctfqs zVu*Rj>n+up_>h+c=-2rCV}%5QEnnQ__cQ(~aYOmJScGFsmlOY&4Ayt~r_RT|&iWO9 z`lRGG-{i3OdI7oN`K^l`_{5Knfz&;dqV1QVnwaF|l&malVWBt#0$FZazh<$y{JX$g zfzmwe-SO^|w;YM}elG$d79JVVmfj5?kahxb^ZnK^^VIT8lydNsYx#>S$~6ym4P++h zMW2~W`Bi0d>afhm;Kvn3so(mi&fXT*dW3bGW}K}pW50OPYZsl@_#Q_mCq+O*W*pq$ zMLqe99#{Oh6#y%3bzE9Tre}p*r$R*s;^vOPBWynb#2p+!TaAA`FtfGIz*>7n|N8Vt zX6$YkX~VGrQ)mp?N4PTVRkB{^%{SJdDq?qg6PC&M0G!=>bKi((tDyD969pgXuFpC< zF?(N!vX2;=J4}-N@vRn%14qeR;xJ@Cs-N`PM{15f#$r7Fptm&GBAAJk z%lB|NoS0;mq=ZE2!}iw+ZTj*LYxKQlsncFJ(^m2pK_+p6Lb5MPE8sQA-L5JpVi^)| zAkFu8wNg*o+oZzuU%3N6o;VFBuG6&(wu?Xl2-ivbrW&6LTGo}9`~QemUQhipz0T5x z=elRI=l4(jM+=0Yjd^$cIDn>csoD4~rZU`XiRsUK5ekKBC)!;T9DS?=k&uXWuui0k z(nsM==C%eKc1FHJ%|lq#Sg(hj5>`2trzkk-kY`})Z+^QoJcwE8+MsTza;Ad-TTfNc z$d(@X2okZQ{Lvol@Ma1V`VGU({72m;3>n<@;UZ(KHyp7!JE`n zL9@LL%9|-2rV4F3Iw$Z?kpC!nj*b;Gs1xt9TO^U+L*dA#Nskc%JJ)FFu1b`6($$Feh<80jB87EXmE8ww$g*=&$Y_OtF>22} zsH5NOtdrS;TXRkubyk3i)I}39m^P7@F^YR#9UV!3{eJXR!5hSww)bvew#!7t5KjEz zqoWML!%h0x%#j3fa*f;~wVsNb9oli;)B|bQee6s088L3sk3llF9Hhlz1@!5BlT|gS z4Na^0$H&EOM^E{NDatl^CS3>dEBV>j-A1!Y(+nYMb*+<6MkPcoRq0P_Gl%@pkZS`U z2M;-;ncXRtZ^=ue1>`qV8h+Tlpck*gw~X(!!QG@GSE*@=-67@ua!QAx z9oy$Y*Qs=!?I7>P=FMWCGM$6WvWf~5_ui~G-SZfdr`2L_cIM%N(nKrV;G~n$v*;sV zSvvXx`<-H|TugF73skugULm;Lqt~uejuGHZ8~HHX6c}u*2aYrg*X<51=RSWkM0EN? zv^yURBYFv>rXE3O+NKd1LQp4Fjiyi(OV{BWsk5~00+^h7Z zr{rYH*S6xMcN@Xn;AjHh;8}d6;b=M|cq-Bn44!!Z%#K-Tkz;X&kploJ>6;CAUF@R% znrDi^=u=DUWSW<6vUspDML2BrX(CF58$8{(pL@f9i9ya7zFkyi>ec!B1HF3@Jv7@T zcS8&P#IeymS75YL=elpM}6O4V0AcIqsSt z5y4HWwC_EUKA3J1#P(mg=#5eUh?>WfH_(IX^RzBAVqpjwlTi}qn^oAZrzr*N8pm7f z_obew2#lCSJnRNTNPRETwLEh490TJ4_aPNofQ`YL#w}qRP{_SY2SXuv*AjSp4mks% z!0l4kcenDj2C3{}-)9-CxS=!eT$mdP$<$RlFdWEDzhC14@{lnzZ znE|X{cj8CDe16X30);2F59cF5HO8jx)A*VXCw%ZyQc}W^;iI-( zPHyj+nej(Xaz4jgfPBx%fUllxlDkuXX_Q~y_DDZ^tzpdvA}P^L+4c-Jb1WFKB8}mi z!=lAKe)b=v+=nG~iy%df20A0h(4{E3*OER5pH%Ou-9Yr{D68ic#?Y%iRl8Ws?0veN zTT-)t756acoy!}U>VNny05Ns0)%SdJOpI>RAxQ|j*qpZ0@qAg^NpY)raWT$}%*#RrHB&<|(>e*&6+cnknN zp9MPFY+@lQ$aK9T;NXQ`J3dX|3J|0$UAZ!&WMQ8|s;7_D3Ft$kUCkEfg(Px`>a7+PEe^lSyg-Pp7l}<1CmdyAstykRoA<03 zxYgwGvcS0Bp8b>uZGajd`ZsSGDwpjARZDqESy4i|By-8gp6MNpj8DgGU*;OUyNVwH z1&MK$p!hdBXUoMZ7r$t!0?wlvx^{u8@P`(D925XCE(t#M->!4KBT9Bu>WcK^AoU;B zcb-XI{%*27uo0&5B-eLI!HA)FP*(TevOBc$6h{)MJ%sEx?+myh*M2zVXFYh_9=A&h=~ew28iqC=JE2V%D#&`$j?bi7 z;-2(+ZzVUSNNm;Z_uHHWvkaVvhX;Nk1{&<`bq<;S;-9G3RDU9AB1gs6zP@l^bJg`k zm)s{(=qbzc%s`Wcra5Nx+YvMYg_O_XMHFZ zL+5cwn_@gN&^tH<+evQqSv~mhTxoSv4juszD^Cra@!Ia0)673>Wc={%!!hn6>al{q z4b<`W59(h3FQ2-7o!iShy0YvTD}6RG+k;zZ9t{>xMMM7tA!rO6sY5ckouEzciQI8TIoTAAelA<-OT9<)2N>71f~ZNCd>+9EQ9y8V0#?Kjf; zBv&rG%KNR35KZMxA%(!pN6&b)(DF~{o&$4C46M_VDrdiFp#X>3=W;eS{^p$kh;!mU zvpF=%s5AY-)|vF5LlDH_y6KgcplyL}8;7?=?aU+H4pJq6PXsTF@^r@?OmzAPl@lDG4x7w0wQ38>sqLS0m3*c!gPf+jc*~%{O}$@UG-c2*#^;; zM1nOUEF-#hV|Tml7Y5b%e0+Z)AQ1bBJJ)|q7YtjJ;ZF*39j$Lek*8J-{?#ez`^Bi! z%)J6e575Kn_?jyuSPYHC;`k2?t34L#-EZZvP+Vh-W^AsV#w`sgTivz35;r6U)I(2e zZpqN8#yw%XarAwzN~MPG{crw#F&cY`&$J!5PBb$rcfOlGMQz-=!lRE+%WMv&{K6En z7sW%jn-+y17cXuR>H_)>=&gfbuU7q*p^Qi`_Qf$t{K$yD`lS-o;tqVIhu3I=)>%{@ zr$u`8LF?pqY4dDZ>fyeyA8C*_q5g_`GJzyq|U*K;6Y#0i059sGv zMgav@T@&_ZJk{;%yq40Ina%>rel1@_v|pOCV1NNAM6sBS&Lsj0s4Y{nrH3#eL)>bI zJDtvC)FML3ALe3QQpQa=tce-&kFx&e6&{}%)7LYCw^rX`NoFlD?-4v8>>AW@7guHr zaOh#(GP)a;_Z#WCE&x(&Fu2rVo`}nLDbPInA_yB48A2BUEYm8)4Q))A)ovmNrZ*R> zzn2u!`tUX8E2lJyx07HJVfuZ&&%cx&r28-ZTmW-4R=eiEwgQc`Owm99CvIQy#GMDi z;bC-Dt$SZ7z`2w%%SnL3^;inW9f5b*F2PI_Q3gQPDvKZfS~n3R$8xW003u5@@aUEJGEin@C@fqpSKDx|J^oz0=K}MUE z&H_i%#BhVjLBg_JF4H)qNP}M!Q5ZV%@G|o@p4tFQ7Bo%~_tqk4$h%8SY!!Hj zu-%z7GtF>FP>QE1r=j^d1N)ghq*OY(W4TQ>O?pqb#_U}#lOnMmqx-Y^O=5_4*9pALAM20153ARu(>4r!kpG`C^~)L@owp6)wq z--%|C>cOHQ)j(D?n>`k4Io%uir8Ka9{s4;i25SHNqGcrEpwDiP*xs}66$Y5K1mh52e}U=rJGgD3FsquC)cvi9!*zl;OvvVuUW+HH#f2@%!V3&5P4a}}j* z0VTjDQh!<(1F@rKWX#Ik3?OK|D{^*fnVdnL);@g~*1}jD%5+$X++=m?H1m(&vEMz$ xI--a&JoC@H|9^);|C`e**5CdQSCsV%^O%|ZFJ$XPdkt$2?6!$+#jX2K{{zRzzCr*1 diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_selected.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_selected.png index dee63a2c3e58a4b827d6f401a3d8ac98bb412b6b..28f95ae7a7966e691ac7b585be78be6e19105ef9 100644 GIT binary patch literal 4985 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 literal 5203 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 R.string.fa_skipped + CHECKED_IMPLICITLY -> R.string.fa_skipped UNCHECKED -> R.string.fa_times else -> R.string.fa_check } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java index c278a6635..bf88168f9 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java @@ -116,8 +116,8 @@ public class CheckmarkWidgetView extends HabitWidgetView { if (isNumerical) return NumberButtonViewKt.toShortString(checkmarkValue / 1000.0); switch (checkmarkState) { case Checkmark.CHECKED_EXPLICITLY: - case Checkmark.CHECKED_IMPLICITLY: return getResources().getString(R.string.fa_check); + case Checkmark.CHECKED_IMPLICITLY: case Checkmark.SKIPPED: return getResources().getString(R.string.fa_skipped); case Checkmark.UNCHECKED: diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java index 7de1b8e67..68d38a732 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java @@ -100,14 +100,19 @@ public abstract class CheckmarkList static ArrayList buildIntervals(@NonNull Frequency freq, @NonNull Repetition[] reps) { + ArrayList filteredReps = new ArrayList<>(); + for (Repetition r : reps) + if (r.getValue() == CHECKED_EXPLICITLY) + filteredReps.add(r); + int num = freq.getNumerator(); int den = freq.getDenominator(); ArrayList intervals = new ArrayList<>(); - for (int i = 0; i < reps.length - num + 1; i++) + for (int i = 0; i < filteredReps.size() - num + 1; i++) { - Repetition first = reps[i]; - Repetition last = reps[i + num - 1]; + Repetition first = filteredReps.get(i); + Repetition last = filteredReps.get(i + num - 1); long distance = first.getTimestamp().daysUntil(last.getTimestamp()); if (distance >= den) continue; diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java index 3bdcd51e6..2cd324547 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java @@ -176,6 +176,25 @@ public class CheckmarkListTest extends BaseUnitTest assertThat(actual, equalTo(expected)); } + + @Test + public void test_buildIntervals_4() throws Exception + { + Repetition[] reps = new Repetition[]{ + new Repetition(day(30), CHECKED_EXPLICITLY), + new Repetition(day(20), SKIPPED), + new Repetition(day(10), CHECKED_EXPLICITLY), + }; + + ArrayList expected = new ArrayList<>(); + expected.add(new CheckmarkList.Interval(day(30), day(30), day(28))); + expected.add(new CheckmarkList.Interval(day(10), day(10), day(8))); + + ArrayList actual; + actual = CheckmarkList.buildIntervals(new Frequency(1, 3), reps); + assertThat(actual, equalTo(expected)); + } + @Test public void test_getAllValues_moveBackwardsInTime() {