From d3f9fa204fb5338afb87e46b8178bb8e476d250d Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Wed, 16 Aug 2017 21:25:18 -0500 Subject: [PATCH] Implemented a status bar to show Twitch stream info. Config file now re-orders all elements in alphabetical order for easier finding of settings. --- sigIRCv2.bat | 1 + sigIRCv2.jar | Bin 1824282 -> 1829503 bytes src/sig/ConfigFile.java | 11 +++ src/sig/UpdateEvent.java | 14 ++-- src/sig/modules/Twitch/FancyNumber.java | 89 ++++++++++++++++++++++++ src/sig/modules/TwitchModule.java | 77 ++++++++++++++++++-- src/sig/sigIRC.java | 8 +++ src/sig/utils/TimeUtils.java | 32 +++++++++ 8 files changed, 223 insertions(+), 9 deletions(-) create mode 100644 sigIRCv2.bat create mode 100644 src/sig/modules/Twitch/FancyNumber.java create mode 100644 src/sig/utils/TimeUtils.java diff --git a/sigIRCv2.bat b/sigIRCv2.bat new file mode 100644 index 0000000..e763464 --- /dev/null +++ b/sigIRCv2.bat @@ -0,0 +1 @@ +java -jar ./sigIRCv2.jar \ No newline at end of file diff --git a/sigIRCv2.jar b/sigIRCv2.jar index a9a626de2eb724a219fd3663cb3de3e72ebbd169..03452c9b0b8a6836f3b3b0955f3bf9ea5cfcd701 100644 GIT binary patch delta 48412 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 z zT#bopld=)=G+hWZb=YpzOZG0{#5!g_9&z)M-xs&n>!jPFk&* z^d@HJFl0VEanv=|HpB4u*`si##_HT1#kMZzx;E1$HErW7 zpOK#jvWPE*W{dxt%sNnN^-kJK;e%f*_Uj&i-1v zFc~Dh=a`+P{#r z7awjB`C40Pqvxh8a9K6;Oj&G8TEgJUX!PM9th~s;u;a8r#kG5KFKQNiu+p<8<$~TB zM@yPMj<>KKyX-=kSU(`uiaet!JC{%(kvz|F^He$MX|F3ajUT~O%hv_?@od|5S~I%v z^miFoI!;kl)9PJX{niUw7GhswmR=0Em?X+PD^S8Dv;(KJYVS(iJwxy9U$mGBe!-*c zJ-tz^uOd@&kdd~T-6(^$Zw*ViMgmk8-uLLIJ=biIeYbMd3TyNxlvTD!ez9$|_s6YU zH)UN8eTgriowj=YB7tv@_w0!-+F9GYxAopy`awPI;i4P-e!OXc68x<-EgyrTFQ4V5 z{v>+iq6b&OwC}2VXnH|h$^$u>>E7~5(s+^y((dE3e&=`eV#|91eJ^7q>eD~r#EmvoLFpXqI%82{R5*fQkP ze`xsk)q{^MUi!1Y6j&~2uT}EFvMdM)aHR)EX+)gztkIXH**8wMkS2rGG7*iuEArO+ zlUq5@MrmiPdFGd7l8VA)*5?stOf>3lF8D}t1&v8xt0UZJsVBccPkBLpfjrvPPkXp} z{9%!{vJu-IBo0wjAbwA%C_wz4ltcS+6T$_MxF#uq4vj^z)h9$V`&0FruxHlgq%J9r zGMpSm>Wp2c_Jr&ky?t_Y(!4g_DP<`t43zbi$S-UTl{|MTbJcxXsQ5E6acMm4QXyOU z*Kbc<$GdYQxG3EEulZNjgA4xA)q&5nuo1oD^Zimafw{fO=VuNTiTz%#7<4}sJagQ8 z$keu~-(93SFeWIr)af3_Y8SS#1hV(;c{P4TzbD!k<__ChO_v7PR@J-9UYHT^-gGJ| z_}woyyzly>3-G>9grMx>uZ_3*^ z1fP~wN*L+Z56xJeV!i)S-*B8Mp!>Pgy1djTlKs-r8rniKwnEdzq#k(#(~B)ag8-AvR}W0*X(%T$K_mB#y%)$W&BEC z5_9RS0W$ec(4(;KnU$Pq$tTU4#V_@lv662mouX#;b{Njlb*80vwhuL5;5R4unJN5d zf@NsYmZb)4O>?d3%Wl|KVx@;vbbd=@|2Z{zDd*zE&-jYPtt7{_i&xgSc6}5D)(px2xl%L3N zwo&Pctn+i3B-SbA1FCUsInuRFqFv4zuV<@^F!tn&A5JKH)@7ZCGv%Wywq=2WYSD&J ztR4Fye5^QQC%vX0QK{FV&yW53Cd5Z-v$YXBNv z(43&kW_WyE=&0Sb2Q@lX8M*fsN&EG=ySd6HLb$Y8=A~gc(+a;fO$uL%E&ML)BC(ZH_?dRXa#PUeaY%__OxA`Q7U4Y6)J^Rs z%xNOn$zpnNDF1thn42=EneK#FY4S^tACK!w>0hR(Twe}OZ37uiDW@92D?yRQ4?*_T zg-3@;+#)BQ|5+*CV^>j@UQ|dscep0R#!;mvZZ@f=y7tM7>qRPh7505GQWsag--$aN zA!D89_HZjSES87i1-HQzK_m7psVipXq&97XsglA|5$=1f*Y!=_k_J((nlTtQ&3XEG zMR}86Vw`_0-Q5(lvf{>FV<@l4Dsn$!sX=P))}@yWe=4iMPYbJ_hToN=8x}R|_7v-H z=~hJ4N1M7I2R**Bsx%pHm>pg-IchvegVJsD~WGSz^91s@Oi=m z-^&y9UPhjs7u)aS%_o16fqwDgjpPw6lXZf_r#}WR4$$Afb)7@kV*LP?Qasw+e*6+ zcgoyV;}6q?yL{9Rjyb5U8>@aKNma%WZXUrc!mc|iYBbm@wVP5lWJ5LBYnvpr zo4g-aNfke8J-vo~MYBmWnxAntDa9cgy|6MllKI(z_~RJ@U@;_x6MjjrPsba#)VAjX=ohKLsLp;fcc5gJ=CU$2mxS1%FG=-;XZlg7`Q zNUgVmGrQ88x3o1yMoEM%Is@)H_Q`PldH=BHiTVsua>Xpy;N0);brp?U52iz=6y?q@ z=n_wT3kp)zsrL*pQ=OSKX2}<$$Z227(G}^my;kPtq&hQW)LR&y8oGI4i8veE^@Gnu z_Q0P50aD$5AzH3x&vIt6PV~_e1YC?;>vDZ*K@d>RQGRMj>izXh*3hc*o+-7%54gfo zf9GAF611q9O0ZqZakncT{i1hWrD}`pTRnHKAj!t9JB%l42$oEWrVK4}uZJpR+~xBM;aLV(CL`g!YQm(!!vJ^o`HsEBW*V}E~#$#$SpS!EOmeGOLuPE zJd`oa8M|S6?1wipRo?KdmNI9AwrLY)(N3_``?-&naEiO(*%nm}me$^;{25Dg&+Y7* zb9J6S9y5IA7F#$+6XT?!KWeRT8GgH|)=9Rwhoy?C82Vvx5-*AIZe<$#Wpf4Wjh(!qm}pYGv)S6TK&DKCjT^5BL5jX3%5jf->+u^c;?~X?KM9=dNjNkaoEAXDVyPxgs+r=?@;$6{@G+Y>~fb zmZRIzqSh7^;dC=r^`U~H$bNHWH|(Qk%QQyM^hP1E&M|w-65;G0?I(`M&gHgLZ?T%? zc=5idTT17xzWo02eQSPt>iPT_!)0q@4%)rh2EEa79rHFhT>)je72c_Xm8GZtSiiBW zS6of0QoiWj;hGZvnsW3HbJsZ+!?7-c>%4gu-^)}xBNen}ty%>_A1T*gbr90RDxc)Z z+ECrcc9oI8@?PZ2;D-%b6LtAq_t-l!FZd7hTH1Q7-{lf9YMJW%a-E3NdxiB}_@PH} zoE&O$3TiEt6So@t7eoQg{JeAzb#RzgHYH60cj+d-mdjYaveFD)%uzpIS2LEwb+nTY z?h((5+x=;5;vUe9o=EjY)|8V}_zR<-NQ| zgc&N0)6{9nDZ1qi!~9Ga1X`a?>ZBM2zaL++&SaN0O70!dO};N^d8SW3wOE;#`Y2Y< zRBAKk#Uzl`v3(->$>IAFfl_U;ZuENocLg>7H0VbYgk0A zuX?J=WI8H}CyHt1UTG;AR@EZ)uvCWZ;)MQn7hihjl(=)hWUr|)r`@r3qfFk56`!U) zAoqgVIXAPpn!vH~n8IyYBQfu6zl!?`D;^EGtFs5GNHweqyT?=NY_!GJtQlUkKU!K- zY)H4X%x5QAkxH=V;!N~>7hk`%KN6et``mp369?kYf6O@?^E$5$idSyYIXWxlb9430 z2puSVK~Ow=e6?Ea+ZBiWDyd%@`aWWpDoU3g%~ek*S`KNR;(VB3Q}UZ`wRp|nSk?Qd zT0vez=!Nm@OEW#=hCe?A28yTu z8!V~O8o4qj)cm??W3B8$&<~oMcd}-sv9;BQz1@w6PXSIZKTfyjb;EM!KA<+iu+XF7V zS`$={hVp_1P0!t&k|QXX$Y37UG@5;6kT}FL$CWrbo>~2J&!zP!$b1h&x4`K8Awbh5>OEJ)w2K9u!{0=<+QnAN}y;-aL0g^M*?H@s%go z(kH$-MOXNRzf4e6ERgAo(@fZ!*B3mLo>2L=ywspMCMRsS`eTSu-*@Sf3dOhS&y=)0 zmZ1b$zha(V4j-*slD_9{aPHByH|!~SUYX9b1{;r54qmvIrYm1*r!q6?OE)F(?6ftD z=Gv0flIH6suHL*_nUcXd_IuSyZyufjT1?gzx231YW27*T?KS7m15&o_(qCeDrGgt( z6CN#=w~fdyS$z+oDm}Qh$z9GcOpwHmCEIfYe(+^|aBL}$aL=AEBzyL-?R;@}fWNDU zpM;64r=uzEe>2oDId@f5#OMr}uunWvc9TKUJdmu|=V^jNc&(%l zo36(BYQ*b#v9< z%!l}03SM?;!@TaOg1-JkS&r!>HL17I9oy>)v}{+d10F;Je0 zIAke5_=QLe%P1X|u>631GMQ@d$=a8F>2pvLf9w#q+>gx8FRqXY3 zTP3^SkP{*IJlL&T$g?|FyH^!)fFClR6g#4CcqmHs&~34$)U{Y~))zMzb@KymSp}Mj z4VXE`M<qS61>tM|?l?+(t*bJJZe3#T)T#P)hHnoe@(>mS7WhZ87J;w*`BGHP z)t4i$IbWLm7UlHmiSEVR&mXfMe=)uMU~-b|P>M;@LCq^tHIL4gCl$F87CA(a3e(b< zXVwKfWr2FHxoWjR$vKkY{a5bxREO67aOCucf6Kt>hupB|l07V{*e%bgMKWA3R_tTg zFXmSu?6b6WC!jKKi`>8-dy+buBr4cY^*838*kui;J)>n$WroXNKEl4DxFZhrckpj3gEyjc4q=6>%I>v#5= z!;e|L0x5N=TN6mFbMLb*F7Kg!?-^XYzWPLQ!nX7+N%$OM;daQ^w^>l>P!MzP15!WK9jS^4Bf2xy1Kb3Veq&NF9kcK5VC z#PH%|Z9rDM0gp{OHNX1Ho?DiP#0TdFt&~2cMiIYGzO#W}Zm#ybsgR3Ch$s5zoJSQX4$qu#< z`JZ;ZmMYJXG)r)x;nnXc+dqm-bm5gW2a6d5Sq>E67ErM$Y@It`G3rL2DRi2OU3*OA zrKnx^l%VoHE!L)y5Glqc?gaOR8>WK~Zhkh*KYdTMX`WR15i`&Cg9RVYpQdqLH?W)j zsvK?iOh>HMJnrc=&o#@sxW4+PR%dXZi_f=pv@)XQ=#pznN8g5Ac5Qbw!EsKj^*FZG zMX$NDryAD#?AK-2Nxys$p9itc>ezJ&R2;yBjLA+v-Xgf3v5LD8coD*j2wueSB7qkv zyvX214lfFLQNoJ~UexfSffp^j=-@>Uuf6bMfEOdYnBc_>FBW*QmS?Q8&2kXJA9n%? z%osV`&pUxuW=sz52c7^83x*xsV!<%te&-3~vS6@;>2$ilTLgmvnyeTH-0wY==dogX zNofB4!6y*UjX8-h4BkFBzykhoV}wahjc)${6u_3UvjZMB3=z=f!C(;Wap25@If`)n z08e-@%82|dnBu`GA~7pKh!>-T2onQmUW_IpPX-EkG3vBkYy{iCBW2W(09FM10hthn4*ceWwf3_`ahweS9Z=qn5k}}vqeRpmk~RSh z723uum@RV49cME|$b50H9Dx5E0UOZghp8(4QPS&2z_Ke5Kb9&7IcaULIX$y9quEVi<8>ut@`6@?fa8{r~v_ z&VT&F%WhK?%6~4kC#vj;68v+B;1%G0FuK57!Z5_BTQ(pOaLx_hpHATWMm6WAHW>N8CURtZYW}zJ0(D``VL}gT1Y8uxC=lL(|GB(Q!~ix{2`In^ zVT=%A=PpDB!o)F@KtKc|Ov6Zn?D6(>mN@Nm+QG#UTo#30aZvO{%hKHJJbmoc>f2{ zf;n-F7&0S<7B4FSmp8>>RK!YP%%D&Tu09t@ zI5!55qJGe(g0LS)#gZiE2%=z&6CA+cAVwAuGDC&OA(%xmj(oG&MeL6uG(cV%W~!xw z(7`|VLH|9vOl*VqQbD8~a6%Xq7{Vv)MHO&eOCEx;i&zTQW1l0=W{GsUpb3;s5hh$U zg%QLZC0?fxdfeRFNtNREPeEpvP%lGiSU0sWydVa-(illZyA~zCr7`jdNgqzI0R&{!b>?C2$UI$m$_9)l+$xia`z)9157@Nc0g@Yzh*xqFF?V64C){ z1q=nEt%};JME}|_M_?65G*N7E1jh4VZB*1AfxU4_A17GBQ`{;LP=sXIa2JVDgwt>n z&KtbXPaKi8+C`pd!EVY>#Px>~ENcu-5WIJ}63kKFeiz|VhWl0Q>0RW8GW59&XA3^n zPi2fcQtP~noKk_4Iob_Rjw8b!cma14RamJRuYU;%h*X8^h9eY@DM6eoAv0Q6s-v*3 zK3LSIdK7l@1vtm>RhaQ0WJeu)agH?CciEWL;8y%3W*6bS0H?%u7u;2Y-jngDtwRlF z`y1?XR8+^PB8m5R5z=Tv7_V@>_eLEi4STrDMyvq~Qpny#3U2+af2;=d?#;VL}f42ml1z3|3T^LS_ ziT}m)fJYBT9tKJj+Y=Cx0S`SmZ>JgXgbSFmu`{4ia!n8By~2pMi2_S~m_C3DPdGu9 zJ`8oY1yQoSB~cn+jv=L@C4y~Ygb~OXLPDsF zC%VXn3SN+cABJ!&Z>pnYyTCOGB5t&g2Be5~hr2skySzxHiT0shtaAT&ebn9M#bpG$ z<1l<%3E!QN(1M#rFowhZVjIJ4mJAr4ga_9RBUn`@r+=|N;_LD+p#gIyMAT?Ro;(SA z;H&rlI!GDAK%jx$g=36ik!IIWGHQ&`M{=(3nEn5@mn`s~mb{6?JCFgHKq3s<-a!*s zqKI~8u&Wu&>}AF-n|KV-&NP0H zvr#_UvEj}i7vhPy&`QXjf;OKgyKE!LfAhS9vl$fZven!n;sA4};AE38*@cgo!*F5p zau>O84i}3--7d0aj!{578+MVwqQ3>XJpZS^1e$hvRa?LnBha>suv)?(pVhgGgjmAz zHF|cD5lc8*qGXgVQh;1)PRX`?qjHA92_M=N#Y}nEDKacXxz+ z0)`k^;Yj}uNk30Q3i5CSvj-fFgb5bUz$2&Gj!<>LNFa$jB20~p2;6djzMVTnc?NcF zq60<1M#!aN1p)DpU1E!zrav{khAb`9fblg8co3nx^XUDJ7lgNLk;#j zLc)M-Cjw7jP|<=Q95LG=Je<@_pu-X7bAN|qG|(^tK_^JQ?GXEDS{e|HBLakI;S}uD z;H?wP#u)`5gN>aDT(yVyf{M=YWM8y{!$j#hK$tUh-1?7D162olQqYIPT105Yd}P`8 z0&y2eV*Vp6AQDIVc8Kac(Oxj(0(*sn7)?c&wU-7+xI!P>9g;D>ml}lONcs+WY6CZc zURPXmcF5chMtUIP27QD{(0o)Q*l9p0j(F@4I(`-!&<+V9cf-gK_QL-hcE=nc zBqk*W4>VXAK!iKAA4U}mc!yK2sNw(&9#B1m>f8xdKHz{;W2h1Z)i@;r2lSaYD-R&| zgvte~gAJ@)zyzl8 zg9yDb2MP6Px4jgBnGX!^k=__CLP@%9qyi?rVF~3-JK4acLXGp1Cd_314=E7l!ag># z#~cC@=U@>boI7fZoR}1s0~IJbhv7noxk39m%vr>W2lpxg`l*O1fwwR0$Ppfp=8KU+ zT=+nTFN`$|0)WvEzJ3-2=6-N-c^trX{eCdYM9d7{`@s~igz^yBouBnKke{D38^`ailtC^3^?I{ ziY7y18t~~dJbxZA`ls8+&!P^tMsRTd8@;lV|9JU3pEJ(s(7BnHC{u)La zn1#a$@(Mms!--H!7y-BEuBF#M^6$xs(=;I6`@_w6c*-OmwYz|*U6 zUHC+zWG~DPnT@A!S0j^j$I9u|67smGpSVQYX zT*di7dl+1uN3O%n7XeD5uEP_R%w2R>`gtAB{f7mppiL!a1a>!|uWT_&a&Evm&-@%G zcmZi7oDiL5IAM<{RN-EQKuaX72*pR#Bfb%?Q2r>GhPw|>SU_47%n}UY2|0Lj6|O{{ zn{b(vM#IW}nL}+F(Xa%ag73b{u^`Cy_Tlwp$jJ)6Y`+rj4 zauY6{u07y#3f#5hzrs#$xe03-MTaNEfI9}awApr%IbsslU1eRRAlV&W)VNUB6GOyA zU^oW$ngs7Il0i*E33Os%JO2p&i-|#6ES$cD2T=SY7OpovF;rBrkuU&}7&xn3<6t*@ z6i2Z-JFH0!$KO`J!`W_2ZrhSMN#OP$2~+HghxFp1zmy2r#luPSSQ^cuI3C7WV_KqW;&2aeo=c?ui<)8+}MU0#;PBrG^DVdT+86mOr9et45m zfTUY++=9dZ#Voi3BRs!d$74p|d>hvBPz;`6a8r{CjNXRJAt)A)Nx}35*fX+;F#U-H z9OeOap|Isq*uS0fFcCJt_72`g1f(KJ_HH{QC&Ap9@1iEvB-nO^OjM*L!9yZx7ApQE z!F6@w`A!b$FtJZEEN}4zN~)9LKyfsp;^tFm76H&q--(hS01wVNU8v{-@G;GqUR0>0 zz^I!zf)iGV!4&S54-nje<8fdaCph8Z2~KV6JDB5ySK%4+K`03air(FU=LB1d-Kb+3 z_PS~+?zBPoKOCMoQ=z{G>;K0qiAeW?;nu%hMMgzRNB!S3$v50P2~MP8)CnticPAI2 zA!P^Yci~hZ*Z(I`ll_ic*j*TqmGns&a1m=~S+ZaL$M;j>f4(||&Xc4Y?_vA_qxo5eY-m^R`64t zj0D)+hhr53@73|PO%XDFToJ;EliI)dza(_vcseYe!3^&}4WiRw=s0S=i;Shi4XW94 z7g5$CBLz2FU;y3@Q^$4wsUn#T-jxyD$$&Mmx5E=^FqHwbV>^qI6UOk2s_+2L%rJN> zkE{GPnK?qOSH?7>eYFaEib2`VRm(D>7!_b>na4Zajo7d=k9N zA>$EzyF}6v4#RLJ9DzXRe=?W8_`j}|&SbQxtA8fU>p{r>ItaSL+QPhqk&~DI*QWXi z?hdcR|HT@JO$?q;0g5c#Nh=mlG?6 z7vLNy!22jN8k~bLGW+;n8+?9?!~5Y)K0e82HoV(qezuF;xJO0@+*1E`8+p+`z0&k* zm#cgc89i8w!MVPIyVR+we_WZ`ajuR?O9$?CA5f|xI|Qn8U=3b$0vHNYG;qQRp*V(nJqX&K z!2`i|d+ZBger$R;%nxGa$a&CtzioS>M813NyBOiU=s}Il`mGGw5UIkKzt{nBM0*#9wfjJrL9v!{)@FA*aQihTzb3!=a0G{-EVsQiax(~GYlf!BM9Cq-ZXp|H_ zhX>b8_{6;wBMusE*;#;a39LjGe6)@u{v|Np>`%oBIWSTJH!H4moN!0D;p6mDICrW_ zVaQXQ!3jaYSOyPDMXZ4SC2TGaF~wehErW$+9YzV=K?-=H-$y|MSV{jbfQ2$x93{M= z!X<$Ylt7^zmRSw&opuNhC@hCZhI9=)QNq0=MhDDZz@%>QmTJe51w45H&nxQimI_Z= zWGQ$+)mb=tW)-;3HNe}LL2d=C`a2_(tXE)kk%z{p=%|FZ$vmnQR3J7F7Sv)&v3n{- z!aERL0nkeWY4yenGN4ighr9Czj)(z+015_BRR!Cx6on&_peB%l9tc%KLKTCOo9AH} z@isqg^LOE}6xe!|dWeY&cH#JXctdga z`M-o7(7b{b4J+M+9baK|5W<>WBsiCX4a~lRIo_(cLCYd@C*RRHN@}z`^0%78o!j$?=2^jJLqC^W2Lg2S80Ld?;ws3VlSF@kAHN+m90mfhau{+&G@W zNo(H*58mv8I4lM3Gf+{2mu+xp*OXDh`5p#-8g-nI1{b~HXLqvR!+MEm;mBF!r4H^@ z5E!(>khFXp6`rzG@ZI64andI2a{$T^M>G;YdY-o11hXvrw3*MKcV;6kqFqP z!2ZeTfn8Gh_aNfUO^guQjX8h;_%=kzZYMaZWq66z6 zU}W{L#S>;=#R#W*)C;QJ0Z+RXb?Eqr(Iq$r!unuzga2m)HodU>_x0ed3}CnyPKKJ# zI3fm=`e2K7zT$){a`Xr4R?|lX-|GAXJAZ5uCAOcbxNyTk2g*Ld3My}+c=HoHohHKv zr6aJv-1^}v&ml*J>HwV5!~Jl9N6_Ml6>@_CFWAr{(#inLkAQs#55gNSYCfEh233PF zKRz*3hz-G@^g z=QF$!TD3t1?HCMWGpE6WS@<;P{1}`@>h7p`d5W4FP0jZOrl$77V;C5|z{Y#~qh!jS z8Us`pVKG!+p`-j26qk5W!<$PS#^SJA1d3@cQ8R=>$jb*Pk&lH{-rk;hvzfHaTtsD<>SdI zguEOtn1SU49KoqdJlP9^9#gZS?cbb$neDILWji$q+rPg7Pw2tZB5D#aIti0iD_vE(%Dk;*B!9jWx-i7HY$x+B_PsoTAFpqG00su`ccI}ib@@LsyQw>C zqXlPE)j@3;OE9vuAEqG%VheC|j_d8hpX6wErfA~=OoBbR%f|f+uHwfQyGYe4?3g!m z@F`0BFX+A3c9-q_EgJY}@i+~9dukDuvT=Hs?WO?@J36G%rZl^URL6CfSDz^jE9zyj z1amL+#M?}fjk5m|+Yn~Zdv&;qb06cO2MRH&}O$6O(W zsCb1FEv2Z?_yeC~IacGuWrVr`g}Uo7>~%Gx0@j=yd{~F&JnBG+!3IWwKn~1r!uU6u z13Ru`16sKTaaIu^wh7-w<@$n(JMA<(0V=ZhpMKSvMjbe};DfSh3h1u456k`#d_+VGQkIKc}ph12fac`A)N#ZZ&Mq&Lz~+i^1Xf$QcVqx)c^Sp;QSat7!IG^{1;=;6BRQp%o_e;*#ibR zx=$Bj_lMEKsdk?NPiVk*T38Mn14_0_zQ09F1uW>G;|B9CTuBFKU=G_ZA_kwugB)tu zhX2>qbp}LnZQ(eJow5td7Dk#1A}C--4Bdt(c4MR18!Gmof(VKQ6^w?XQ4~8i1U0rG zVrP)XLgkZ)md{F$bfE(*_V;D7M8R(g`)xsmF=`xkWMS$AEyPRbFuFO_9;+7VsuoqyG?hDh zKT)lr07uky%6u~;naUZu=m`6wbS}%*iO%G&6I%-3A)aBi52lCUzKet092C|`5BHt+ zai%y|jblMN5vRggC)%Qiv(O^5%$4WS$pCun0Zu>OsJ7>;&Z!2`MaVfykDSDIfn+9w||I+PN6W0fVr2qy8d#N=GVa{W~!^5FkFS1G*#=IJUts6I~6yZnsP1x{iM zVa{^~rU*VSIk{Q{dG9p`wHp9D`-_9w4KP#={m8-dr+8?-u5ekavf8sh{fQ}r&_rjn zzOk;H-77k26wladAc8^6+O&0QtIT)RgOn zncHz!(TO5G#6ZUBNbQYGv~xqbN?LMNYj*_6P;Db5wlOo|!k4xj)NhD~A$dCN4y%;` zX1b$rygdWcgv~+hH<@X> z5nN4sR3EbzPHV9mc5jNLHT^j46Aoi3l_z1Xq zuCU1unV6Ztfx#ajViE%pw89_FxAQa#Yk{Nu6>+9|^=N?vV`ngWws3JKs~x`x z(m1nyk_Km$PngEsL#?3QZ2^~swh^szT4T8Tm{E|evAtNIp6}A&Yy=B&8?{G0JUDBX zbrP(vFyKd-$23NEjKQ02rAo};Km<6Q?{iQdh`1s1Hx9CIVbpQEp{YYdji#5@%ntCZ zsWdAzP%O>8V6yvv(d)0pRuuOL#?lP+&U1}&#V+S7dn($c@g=t)(Ta>OG+Npngnn24 zwdkbUr?LpcRhw-s$ciXP3|4h=u%~P8_RXngu-H*mVvy0-HSML)Nloj6;bxV)%>NcF zhN^-+WK^uNx2BJ7SfidCB08&5+emycpCmpAfuU`fth%hZy@5hPQBRl93ByEBS{aJr zZsI@&n$Y8p_8QvV3AKVnWEbJrA&ed=)Emxzy{IG%p=R+IuIn0(2emzc0Z(c$2pN?O z^TJ{HX&R@03l}>GKC?N9jDSJCR1Q)T?CqF=nl413dP^2^+Pb6IPWX2w2NetK>rni+ z>`Y%rbX&d!1|9oxs6Gi&l6fDqz_iE?W?Zr0+lA;7KGB+EU4Z@wR;fx)^I3bf$EJRm=;s zOiSmwVFYXWfitdAVtZBKSBM_Jb7)NSqQnqYKurfa86_sD&SM82e*{uoqyv_Mx{Kbb zF|8!ZgC4j#=&2X}V zSIfaTT=9^S^BXAErpnu>d+E*a>>Ct1`frOcO31E3^JDRLtykrM<07nPt_(z%X-&GiC?^*|+Xy#+{xGVWXJ`XF`UGLj{!=2R-ezdU`k%2Cuwjag6wl z&=6<7SXPjNBdr~T2J|8ZxzOMQ7o#&>v<+$FAhc9ziash9GQYM=HeGNIWWNzq=&3bO zOc+Wb=?ss9jyj0TwlvjZlg2E2&SaRFz%HDsTrosoJiwXW&W!P=xK>&%l``gePsaF= zei#DT*N6rgNa&(<<=n$g~Lr4Q1O9+lT{&~wI7(Qpw98^aOy;yxL`OyOM; z`wgH4qtNuE);@m(bc<5C3!jOo-v=X*Fh1@Lryf-1qO+p>DOw{%jRf5hi(h6sZzS5I z>ly{49)%!aGFG$9I?1E(oZplxmMm(slWknU|k+Kv`+%2!BO3%1z z#aOWp%^fQS35#)wV3OFB)VH)&^mHtG9*zxIn2Zlv2cGEkamdgvM=m=$4)NqfBL~0L zbd(=ekMYns=*;Qn^&H)KIZrYAbwf^%w{tX*+XU1~Gat^(n1B_ylJ*?5^K{hk&73nn zj>=M|hj4|DK8|vZ5)$B670+mIO74!-q$2-^(Z_}}+K0R+V%===Xa?HTC(GMqB6Lm&vy3nvk}GxEhGy!P+S=3x9}w7OCAICwR|QO~QyCJ|o#N$2#)M6``N zi#ZrE!%==#wWdI4GSpcdbv?AG`;ir{{jgXC$*_?BW0oOe3vxF5UeFfg8Ev=0rKjup;? zGYkaLFAStz;vjwoo`w4j4hl{<%3BllXTtjFJxtE&Ah!?1F5?saN?uINAS*`dBF?GyLeOiCj zwjMoBLK_`m&*@%sMI%*wc68xR7SD#0iMr~t+Vok_No(F3vY8_q1uO_jshEsw)3`Zk z&PQDTpRSxEM&PpuuT!v&R5lxzK9D7O$6?-Fq!jAKEl`yDRIJs>?Xr@|bhwQm7e$iU zP)ITsYJ1=ULUsCm6i#ury+hFiWB(hm`+SeLy#VU6EW#{ zZ`@8pF#8#&<U0h=ChIh89;~LCN!2oSY8h8(pQN+l3h4`w<_8>o zVQHROfF_iPQ+x}>SRr{k4O=J<7v}!Rus6M2h&=4S%R#fVI$Mg*z+lw~H`|yv_Z%wX z3S$;MGB|<2dA^rhYf7Wy$_`rqG)HT*TH8FmYsH@M4rE@;L`r z7Gq-2sfvS;B^aA~yy9U05)5K}-f(d1AySY+;f_mDrs%&oy?QCEd;HBnq7eNL`)x%t zGZDGH#})cvOOf>(nFxSC;Z9&!y556YEdwgHmeHpV@VaH0*g>_(&O%8SN9D-A?q{7c z@IHqH3&~H=XPql$2AIN~oy!qeH8IG-Tr0gDJFV!gy5}oXy+plqL{v?cjrB^8`2n(q zi-%sz&$-=M0cRe87QQYu4#(E6^saB81z}DHS!nI0cVGwEyj6x^nX1SVzgE5JVnJ4v z&{~h1BkZhQd^VC*4X!Qj6oMa3!j1)=D%4mr)FiQN0)^y9xPD zY^z!_Nk(4=>oM2+4ykULB2#5?pzKy5)Ezv{Lg{JVDyB8lLaFHy(^`KJ<6Y!X5pr-uE^OPuew&iZ zY83hM8f0_M5!spRS}{mfTx>x&rnVL}*RV`Uy8c)>t5J|eSK>rfNRtz`7&mA(!|t%uXQxa}Y*tX(g* zsNqRdHe!?T5Oz zZb^!?0g8zjAx;VgFY3GzLsPkxLD|Yz86;IV3f+jl`Kf_{qU#!bDK%g6X+=dF@l@-% z8|ZaI17ZamgEhU}h)40EIVI*{Q?FGX`g!LT4D?s!wUzWdsVWa;vkpYW?rHFpW`D?_ z74_bP5#n_?P242*R24=cyR;pu*7KRF7pZq3^681=RScx=K#Uik&cHNbDGt8w zzyNJK#ehw~d=&lWLax?*DreO6J|C`Z7BRXZ&6|eXm{O{vcY?qm`%f8Gc!F}h(KoBdY+30Maa_rTn^HU&;Xud7y5wcO3#YW zPQ)!7gzN{nxx)-<(hvL5!{<`P0SsV&?nf+XJjkS;l$D2uD}CKYYJg)7AbS_F=XL<| z%Y6r+IK6~{7-8>8ZgAls8mnJ{p%y<1FIg=<2&>m;%nCt5tMfGMN70R%{)i6r%|!;j z5sqACzfH)m*noxUA5oV!H#rk>2!TMwEe70a)gkPT^}EA>8$CUQt&zMX7GQrLd!7e_`@__Ul2%k0Pfcw)vQQyJN^4{tFgQ>klkEz693 zaUOl$?I%nz<6fbe-9Ls@Yt=E+LBax&6i7BphSJ08ik^jMs%}ia&JC3@V z>7`(P*BW(XT>?{oUo#zC!=8qf;_(!E8Lj9*3ED|+J1#Bz3m5P~<4K$V9fq%Zu#A~# z4JDp{uW7g;q@=Cr#0kW8`y*t!6phT&--zqBXG|5^xfB&Lva>=VqZA38i#9Wz1?zqs z_@Bh|;@v>A1lONW;<>pEWlTd#{23K2{ER)0fOs<#TH_xoI*oB|!d2`kfBYG#oyIpj zn101bqlThRVL$G6f`Zx4n8HK_V?2#ilBZjkoMCuE$(NB_&S^ND^sQNBpy#Ji5q)rp z$CAVun0u#kChrX99oD$8V-{ykhO?eG;LP_doc*1lkR_jmsdc7;$(jZ2%Cktrm}RDM zzw9c)rPy<@pH7_4&NSk@!#R|t*E$7rWs$KCxt&I84gUpg+*Ocr68|qer_jv|_|b_K z&?!6zohM8ucsrxxgswZe?uNBS9IL;I$G`hL#LaN=hZP32BiUVrmF)%4XZLa1Ef4t^ zcmeq+IACV%sq_Mh(CH9oY%gLo9CXYK>s~PKT{-g>w{4l>8-{= zBjzmUCiYTdu-b0&j3MtPV!t#enJTk&vg19l@+LCT-9^b?uIE&nH_7O72xA*sggV~K h4%#~@lbz}*YrHBK8`#EL#afA_HNJ}WcEYX9{{iPq)=K~Y delta 43099 zcmV)AK*YcQ)Nh)sZw*jO0|W{H00;m8wzvLAp+cmLElCGt-v>>#qb|s)`o1RH&()%R6(l#wU z(#DV=L)@lK(}py?+w@A0G`;?ce5G$@SF$9_4PX6zmPRwbdGmhncg#HhpC_LJ@EZJE zMU8?c+l)v0t<;Pef8S>&4Hb0?RvyuFdL*f*;*o>XM~tYWz&EYiMp}0g3Ic-*%VSQ) zOvU>Y_|q9HZDbtNuobkq7FowkMn;PBv}%gVgKjlu^lZ|hWlM?W?Yf;9($h4nA2Z`A z-N|MQ1vf3W*twX%;+b8<@$HNz&6MfvQcxQVO(>}Aw_c5IR^BT<>~F>YkJR-f!J8t&|T} z6Wlg3IV0o4dSaNFXiqeuJ3Y>E(}^Z}oSfjXK|?z>l65*u?QaYYRtBVR@l0s(ln
  • DCKw}W7r8R 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�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 diff --git a/src/sig/ConfigFile.java b/src/sig/ConfigFile.java index 5ed04a8..9e735a2 100644 --- a/src/sig/ConfigFile.java +++ b/src/sig/ConfigFile.java @@ -6,9 +6,12 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.util.Arrays; import java.util.HashMap; import java.util.Properties; +import sig.utils.FileUtils; + public class ConfigFile { String basepath; Properties properties; @@ -90,12 +93,20 @@ public class ConfigFile { public void saveProperties() { try { properties.store(GetFileWriter(basepath), "Properties file for sigIRCv2\n"); + SortConfigProperties(); System.out.println("Properties successfully saved."); } catch (IOException e) { e.printStackTrace(); } } + private void SortConfigProperties() { + String[] contents = FileUtils.readFromFile(sigIRC.BASEDIR+basepath); + Arrays.sort(contents); + //System.out.println(Arrays.toString(contents)); + FileUtils.writetoFile(contents, sigIRC.BASEDIR+basepath); + } + private FileReader GetFileReader(String basepath) { File file = new File(sigIRC.BASEDIR+basepath); if (file.exists()) { diff --git a/src/sig/UpdateEvent.java b/src/sig/UpdateEvent.java index a589a02..fbfa556 100644 --- a/src/sig/UpdateEvent.java +++ b/src/sig/UpdateEvent.java @@ -19,14 +19,18 @@ public class UpdateEvent implements ActionListener{ private void UpdateAuthenticationCountdownMessage() { if (sigIRC.downloadsComplete) { - if (!sigIRC.authenticated && last_authentication_msg=MSGTIMER) { + if ((!sigIRC.authenticated || sigIRC.testMode) && last_authentication_msg>=MSGTIMER) { last_authentication_msg=0; - sigIRC.panel.addMessage("SYSTEM: Your oauthToken was not successful. Please go to the sigIRC folder and make sure your oauthToken.txt file is correct!!! SwiftRage",!sigIRC.playedoAuthSoundOnce); - if (!sigIRC.playedoAuthSoundOnce) { - sigIRC.playedoAuthSoundOnce=true; + if (!sigIRC.authenticated && !sigIRC.testMode) { + sigIRC.panel.addMessage("SYSTEM: Your oauthToken was not successful. Please go to the sigIRC folder and make sure your oauthToken.txt file is correct!!! SwiftRage",!sigIRC.playedoAuthSoundOnce); + if (!sigIRC.playedoAuthSoundOnce) { + sigIRC.playedoAuthSoundOnce=true; + } + } else { + sigIRC.panel.addMessage("SYSTEM: This is a test message for your testing convenience. Kappa",!sigIRC.playedoAuthSoundOnce); } } if (last_autosave0) { //Don't accept 0 or negative numbers as acceptable values. + if (lastValue>newValue) { + upArrow=false; + } else + if (lastValue=1) { + incr_rate = 1; + int val = diff; + while (val>10) { + val/=10; + incr_rate*=10; + } + } + if (displayedValue0) { + lastValueChange--; + g.drawImage((upArrow)?TwitchModule.UPARROWIMAGE:TwitchModule.DOWNARROWIMAGE, x+xoffset, y+yoffset, sigIRC.panel); + } + xoffset+=((upArrow)?TwitchModule.UPARROWIMAGE.getWidth():TwitchModule.DOWNARROWIMAGE.getWidth())+4; + return new Rectangle(x,y,xoffset,yoffset+16); + } +} diff --git a/src/sig/modules/TwitchModule.java b/src/sig/modules/TwitchModule.java index b90191d..804f847 100644 --- a/src/sig/modules/TwitchModule.java +++ b/src/sig/modules/TwitchModule.java @@ -3,6 +3,7 @@ package sig.modules; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.Rectangle; import java.awt.event.WindowEvent; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; @@ -14,6 +15,7 @@ import java.text.DateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; +import java.util.Date; import java.util.List; import javax.imageio.ImageIO; @@ -29,10 +31,12 @@ import com.mb3364.twitch.api.models.User; import sig.Module; import sig.sigIRC; import sig.modules.Twitch.Announcement; +import sig.modules.Twitch.FancyNumber; import sig.utils.DrawUtils; import sig.utils.FileUtils; import sig.utils.SoundUtils; import sig.utils.TextUtils; +import sig.utils.TimeUtils; public class TwitchModule extends Module{ public String console="Twitch module goes here."; @@ -50,6 +54,15 @@ public class TwitchModule extends Module{ int lastFollowerAnnouncement=0; User announcedFollowerUser; String[] followersounds = new String[]{"Glaceon_cry.wav"}; + FancyNumber viewers_numb; + FancyNumber followers_numb; + FancyNumber views_numb; + Date uptime; + String currentlyPlaying=""; + final public static int ARROWTIMER = 3000; + public static BufferedImage UPARROWIMAGE; + public static BufferedImage DOWNARROWIMAGE; + public static BufferedImage UPTIMEIMAGE; public TwitchModule(Rectangle2D bounds, String moduleName) { this(bounds,moduleName,true); @@ -62,7 +75,8 @@ public class TwitchModule extends Module{ private void Initialize() { boolean firstTime = false; - InitializeFollowerImage(); + InitializeImages(); + InitializeStatistics(); firstTime = CreateUserFolder(); if (firstTime) { CreateFollowerQueueLog(); @@ -116,6 +130,12 @@ public class TwitchModule extends Module{ });*/ } + private void InitializeStatistics() { + viewers_numb = new FancyNumber("icon_viewers_count.png",0); + views_numb = new FancyNumber("icon_views_count.png",0); + followers_numb = new FancyNumber("icon_follower_count.png",0); + } + public void run() { if (lastFollowerCheck--<=0) { lastFollowerCheck = FOLLOWERCHECKTIMER; @@ -136,6 +156,14 @@ public class TwitchModule extends Module{ } private void popFollowerFromQueue() { + if (sigIRC.testMode) { + User user = new User(); + user.setDisplayName("Test User"+((int)Math.random()*100000)); + user.setBio("I am an awesome test subject."); + user.setName(user.getDisplayName()); + user.setLogo("http://45.33.13.215/sigIRCv2/sigIRC/sigIRCicon.png"); + DisplayFollowerAnnouncement(user,true); + } else if (follower_queue.size()>0) { if (isStreamOnline()) { //We have a follower to announce! @@ -190,10 +218,13 @@ public class TwitchModule extends Module{ SoundUtils.playSound(SOUNDSDIR+followersounds[(int)(Math.random()*followersounds.length)]); } - private void InitializeFollowerImage() { + private void InitializeImages() { try { follower_img = ImageIO.read(new File(sigIRC.BASEDIR+sigIRC.twitchmodule_follower_img)); - System.out.println("Initialized Follower Image successfully."); + UPARROWIMAGE = ImageIO.read(new File(sigIRC.BASEDIR+"sigIRC/icon_up_arrow.png")); + DOWNARROWIMAGE = ImageIO.read(new File(sigIRC.BASEDIR+"sigIRC/icon_down_arrow.png")); + UPTIMEIMAGE = ImageIO.read(new File(sigIRC.BASEDIR+"sigIRC/icon_uptime.png")); + //System.out.println("Initialized Follower Image successfully."); } catch (IOException e) { e.printStackTrace(); } @@ -268,9 +299,18 @@ public class TwitchModule extends Module{ if (arg0==null) { TwitchModule.streamOnline=false; } else { - TwitchModule.streamOnline=true; + TwitchModule.streamOnline=true; + UpdateAllStreamStatistics(arg0); } } + + private void UpdateAllStreamStatistics(Stream data) { + currentlyPlaying = data.getGame(); + uptime = data.getCreatedAt(); + viewers_numb.updateValue(data.getViewers()); + views_numb.updateValue((int)data.getChannel().getViews()); + followers_numb.updateValue(data.getChannel().getFollowers()); + } }); return TwitchModule.streamOnline; @@ -343,6 +383,35 @@ public class TwitchModule extends Module{ super.draw(g); //DrawUtils.drawText(g, bounds.getX(), bounds.getY()+24, Color.RED, console); DrawFollowerAnnouncement(g); + if (streamOnline) { + DrawStatisticsBar(g); + } + } + + private void DrawStatisticsBar(Graphics g) { + g.setColor(new Color(25,25,25)); + int xoffset = (int)bounds.getX()+4; + int yoffset = (int)(bounds.getY()+follower_img.getHeight()+sigIRC.twitchmodule_newfollowerImgLogoSize); + g.fillPolygon(new int[]{(int)bounds.getX(),(int)(bounds.getX()+bounds.getWidth()),(int)(bounds.getX()+bounds.getWidth()),(int)bounds.getX()}, + new int[]{yoffset-4,yoffset-4,yoffset+16,yoffset+16}, + 4); + DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, xoffset, yoffset+TextUtils.calculateStringBoundsFont(currentlyPlaying, sigIRC.panel.userFont).getHeight()/2+3, 2, g.getColor(), new Color(195,195,195), currentlyPlaying);xoffset+=TextUtils.calculateStringBoundsFont(currentlyPlaying, sigIRC.panel.userFont).getWidth()+16; + Rectangle offsets = DrawUptime(g, xoffset, yoffset);xoffset+=offsets.getWidth(); + offsets = views_numb.draw(g, xoffset, yoffset);xoffset+=offsets.getWidth(); + offsets = followers_numb.draw(g, xoffset, yoffset);xoffset+=offsets.getWidth(); + offsets = viewers_numb.draw(g, xoffset, yoffset);xoffset+=offsets.getWidth(); + } + + private Rectangle DrawUptime(Graphics g, int x, int y) { + int xoffset = 0; + int yoffset = 0; + g.drawImage(UPTIMEIMAGE, x+xoffset, y+yoffset-2, sigIRC.panel);xoffset+=UPTIMEIMAGE.getWidth()+4; + String timediff = TimeUtils.GetTimeDifferenceFromCurrentDate(uptime); + if (timediff.length()>0) { + DrawUtils.drawTextFont(g, sigIRC.panel.userFont, x+xoffset, y+yoffset+TextUtils.calculateStringBoundsFont(timediff, sigIRC.panel.userFont).getHeight()/2+3,new Color(184,181,192),timediff);xoffset+=TextUtils.calculateStringBoundsFont(timediff, sigIRC.panel.userFont).getWidth()+12; + } + yoffset+=16; + return new Rectangle(x,y,xoffset,yoffset); } private void DrawFollowerAnnouncement(Graphics g) { diff --git a/src/sig/sigIRC.java b/src/sig/sigIRC.java index 95d100d..a7c8ad5 100644 --- a/src/sig/sigIRC.java +++ b/src/sig/sigIRC.java @@ -95,6 +95,7 @@ public class sigIRC{ public static String twitchmodule_newfollowerShadowTextColor="26,90,150"; public static String twitchmodule_newfollowerTextColor="255,255,255"; public static int twitchmodule_newfollowerImgLogoSize=32; + public static boolean testMode=false; public static void main(String[] args) { @@ -131,6 +132,7 @@ public class sigIRC{ twitchmodule_newfollowerTextColor = config.getProperty("TWITCH_module_newFollowerTextColor","255,255,255"); twitchmodule_X = config.getInteger("TWITCH_module_X",320); twitchmodule_Y = config.getInteger("TWITCH_module_Y",312); + testMode = config.getBoolean("Testing_Mode",false); touhoumothermodule_X = config.getInteger("TOUHOUMOTHER_module_X",0); touhoumothermodule_Y = config.getInteger("TOUHOUMOTHER_module_Y",312); touhoumothermodule_width = config.getInteger("TOUHOUMOTHER_module_width",320); @@ -181,6 +183,12 @@ public class sigIRC{ manager = new FileManager("sigIRC/record"); manager.verifyAndFetchFileFromServer(); manager = new FileManager("sigIRC/glaceon_follower.png"); manager.verifyAndFetchFileFromServer(); manager = new FileManager("sigIRC/sigIRCicon.png"); manager.verifyAndFetchFileFromServer(); + manager = new FileManager("sigIRC/icon_down_arrow.png"); manager.verifyAndFetchFileFromServer(); + manager = new FileManager("sigIRC/icon_follower_count.png"); manager.verifyAndFetchFileFromServer(); + manager = new FileManager("sigIRC/icon_up_arrow.png"); manager.verifyAndFetchFileFromServer(); + manager = new FileManager("sigIRC/icon_uptime.png"); manager.verifyAndFetchFileFromServer(); + manager = new FileManager("sigIRC/icon_viewers_count.png"); manager.verifyAndFetchFileFromServer(); + manager = new FileManager("sigIRC/icon_views_count.png"); manager.verifyAndFetchFileFromServer(); manager = new FileManager("kill.png"); manager.verifyAndFetchFileFromServer(); manager = new FileManager("memory"); manager.verifyAndFetchFileFromServer(); manager = new FileManager("swap.png"); manager.verifyAndFetchFileFromServer(); diff --git a/src/sig/utils/TimeUtils.java b/src/sig/utils/TimeUtils.java new file mode 100644 index 0000000..5f98488 --- /dev/null +++ b/src/sig/utils/TimeUtils.java @@ -0,0 +1,32 @@ +package sig.utils; + +import java.text.DecimalFormat; +import java.util.Calendar; +import java.util.Date; + + +public class TimeUtils { + public static String GetTimeDifferenceFromCurrentDate(Date pastDate) { + long totalseconds = (Calendar.getInstance().getTimeInMillis()-pastDate.getTime())/1000; + //System.out.println("Total Seconds: "+totalseconds); + long seconds = (long)(totalseconds); + long minutes = (long)(seconds/60); + long hours = (long)(minutes/60); + long days = (long)(hours/24); + StringBuilder string = new StringBuilder(); + DecimalFormat df = new DecimalFormat("00"); + if (days>0) { + string.append(days); + } + if (hours>0) { + string.append(((string.length()>0)?":":"")+(hours%24)); + } + if (minutes>0) { + string.append(((string.length()>0)?":":"")+df.format((minutes%60))); + } + if (seconds>0) { + string.append(((string.length()>0)?":":"")+df.format((seconds%60))); + } + return string.toString(); + } +}