From 7c24b92218a7beaddceb44b81522b211f426d0ef Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Wed, 19 Nov 2025 09:30:23 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E5=B0=8F=E7=B1=B3=E4=BE=BF=E7=AD=BE?= =?UTF-8?q?=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 小米便签开源代码泛读报告.docx | Bin 0 -> 140825 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 小米便签开源代码泛读报告.docx diff --git a/小米便签开源代码泛读报告.docx b/小米便签开源代码泛读报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..8b562ee51a01f1dd171e589bb67fed12634ea2f2 GIT binary patch literal 140825 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%0AV@*fogsKn)UlS8OQ~m4rCIN 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 Date: Wed, 19 Nov 2025 11:05:46 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...读报告.docx => 小米便签泛读报告.docx} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/{小米便签开源代码泛读报告.docx => 小米便签泛读报告.docx} (100%) diff --git a/doc/小米便签开源代码泛读报告.docx b/doc/小米便签泛读报告.docx similarity index 100% rename from doc/小米便签开源代码泛读报告.docx rename to doc/小米便签泛读报告.docx -- 2.34.1 From 6280f61e301648cd7a999ec2655d0be99c49ba03 Mon Sep 17 00:00:00 2001 From: 15972095207 <2484216370@qq.com> Date: Wed, 19 Nov 2025 11:05:46 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...读报告.docx => 小米便签泛读报告.docx} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/{小米便签开源代码泛读报告.docx => 小米便签泛读报告.docx} (100%) diff --git a/doc/小米便签开源代码泛读报告.docx b/doc/小米便签泛读报告.docx similarity index 100% rename from doc/小米便签开源代码泛读报告.docx rename to doc/小米便签泛读报告.docx -- 2.34.1 From 09b390fca34f61af8e98a7330b4edbdf79b2862d Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Wed, 19 Nov 2025 11:45:56 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 小米便签开源代码泛读报告.docx | Bin 140825 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 小米便签开源代码泛读报告.docx diff --git a/小米便签开源代码泛读报告.docx b/小米便签开源代码泛读报告.docx deleted file mode 100644 index 8b562ee51a01f1dd171e589bb67fed12634ea2f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140825 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%0AV@*fogsKn)UlS8OQ~m4rCIN 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 Date: Wed, 19 Nov 2025 11:48:04 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 小米便签泛读报告.docx | Bin 0 -> 140825 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 小米便签泛读报告.docx diff --git a/小米便签泛读报告.docx b/小米便签泛读报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..8b562ee51a01f1dd171e589bb67fed12634ea2f2 GIT binary patch literal 140825 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%0AV@*fogsKn)UlS8OQ~m4rCIN z$$^P~(c`H#%Qkf%H!3{UUaJ|-Seb27)qxjO>tKTqnv9C@L>*76z1`+u*6C3i6Mo*3 z(+)lf9V`;`;8I79o{5@uwhkK_MC|#BKAY&8?tS4{9o1Bk+#ppFa_JqMzwWzoXEI%d zS!-;Tw0Cm{1ILE61i&;9SkFKH-D7C5eS^I|kl4lO*_7g2z4(HM{@AwTW}L-d?Onn! zbU@*>%36Ca6Y)}Zl8B2JL1??H;#ujkt8jOQmN;y z=gc!6M2M)`>1P%(?xR0qv%mO@w!L#JP(kgm4vEu|`@PY}%n}EVcAm@zP18+^ZI-GF zrjc5Uwnc1OOADRhhS7Q7SgIw*XU%t2dIP^ugS+s0TqlM5@fbVQEXfOr_JZdg*A=;! zHPn1kXrA$-X|7t{LZ6|f#@?FHb-*1KjB+0N>2JE1MvLx^yu)GCczVOmO4BVgxJYaXKHM(dPRocQn6$&EE37nLe%L}P^{MlSuC~n_+9m~h^xiW z30w;N4z_K%^+R*l3){MS=Qqh>!F2~C-v}XXU-1^+aLSh?sJaaLgV-Fx?zRR+ijRtk zv#uPmX9eM2rx{5y@z<{x=6F1on^AXtR?(;)-7BA*5WvJ=iV#=3JhkPW(8Z{jUIeo! zWcxTm(TZMCE4x)aGCE#i)zFb&Raj%z^i-eOfkUJ)?8%AI*2}|Z-4kFbulZd|E9q1f}YZXC#TUOXc2yrGh6kEU8QG|=#^En#S#lwqiD+!3a=(C zfoiPn^hk};`}p$aT`sNWA}}0EzIq1=`;4AwjwcRrMhC1zm!~WXjfkq#bV*jplNDog zzxX!BYeyWOyOj)^tc=;D-{w)I>rmU+d}Nyd*0yW$gjXvXe<46`&D+TguNxWqL9)7n zO+0;qBkdTo{Sdv-2WP|YX?jwB5$jf$159R4a}qnYm}fpAhH+efFn9QPe$p)!anEe1 z`}2>l*W4^Uqnm2+)SLPuhiKnb6oatu!HAv`o&ZXsolj13@f}N#nq|IUfq4+YJHyzq z`?GrJB-SpfK}4a3Hy>X{$(39s^~Q(yO2?O~an@pk2pSc%OD-L|?u9)Trt@Ygzq`aX zg6R4H*VMUaHvA=-21V=TF#B-DyzYBGHhX?e z%)Q`ZPXD1s^|CnJedpQ7w#61tG>4O|*3>jOx}>Sfy7srO!J(Xvx8*WE)v2u~5pEzgk?4c+xCYHglZ! znL(@8w0QVfW{LT5@LRK-Ok0xgK8hcm*mRex#-h*#-Bi1*qjEXPCkbY0oayV(X;_#4 z$viTTi>5k8DQyqNkS85(>|i5av|j8jQ-)XdD_m&)2M2y)7l|}S!Wzr|TID&r@UFLC z?i6w=R5xG4zIn^=L3hQGxz8L^^K8PGyQ*pTJ*`Y)&2sxV7=8hQfipVpmC}79a`t!+ zYX7uSBHuLA^M-?cMT@R>rF2GXw@eii?KI1S&e#;x`4QRLXT}Mp*or4MV%H0;amyx| zi*Qo&Nj&L>R?q{vJ2?)I)dCnl;A^hZA}W8s+kRPnv~#VR-s6ED;)6AxE*ZEOE8C0k zBB0*~>7vT5sebMYXZD%Byx^R^u6}Q<;#Kj;68vDPWH@tX27Bp+L)#nvgC7q%)bzN@ zM8D{e(Y;fT%DYxjGhg_d@rQ(kH-jX@Lk+{b%<)RR4ud1M8q2$1Lr>9JeIw|R(Y+(8 z+H>7M9{k)eB*`N6T?5*sMHs>cp&jk+wPNDs)2X7eQ6yWjS}aULHL|d~T2jr-x+A2= z-hVv{>+9%yeXXD7Q|Hrw`K!{eB;T$fmb+l*jS#|-t=~r|03ny0M7EeLe7s30EVsM* z+)Xh9_JC5#7%39X?VxXQRPb%wM?iD!(9dB)eB;xb2BWfZI_9T)4dI`eb5=~9EjJ9A z&}zTG_Z$b+h0t=4vu$FamSVJA;M{ZD#gGESD+*csK69Y@u6maLjSYqRVJ~J^*gDoyx>B`*-Ci;%oaMR1vs?Vs$sGBk zkd|dp{2M)nuc1EIo>qjiv9nx74r`9H$Pvm|bj5`uvO5n1S5f;l+`F>n2o7Jx8C_rf z^Tjn)Qz#_b@z*R`P)9Pi;O>P3XP<%7G-`2BTR3UAiuzGxoWzAtZ36r6OBoMMzg#qTC#+Wm`@ zo3Yf-5^BO_F+^#iuFPI#X*~L#!cr#%|Mce?|9UOYYIL}e1Gs&t3@>qc=lAf08>KTG zB^P$azJzk?(J{}{9G;%lqRVg)(fi1VcD)>&7SGX1Q8&G#IbU#)A0N!vzLWjf|_1iO$$%R=4P=(V&}C5+O49nj8XBDr3D*YH_n|cn%jkT!>cK(EW&;U*1-#W zq@qkL6~|deW2W8=JU@>uR8=3EOZlbka2RaTnM;l0A$ zY@@f2r9<};5sYct1ws z#r!~}Xs>Cq#xSEhkG)!Vvo+FB^`ppY?80~LCg08B2>|$UYs~pm+fde^!n^1$TZp68 zpx;(wqVaC-bRk0Ej|(As_|RvSwb8f?VEB(%h4x0bYRU$R`oq8BgPR~m{5dawF5{g# zw&LwLwm=FTI3EXPgC&g^@h@Ec{q@U(l^xY> zZH;z=_z}vHc+anWWy!~R^cw7fJJ&7j7idy&@;MEHJ&;uR6++D}h8##~Tr(w~#&zdW zxdYEq1!-{@W^26YISfDkD=^i|ZvHd$!b;1=9HWW43;S+M6h|lg)i{c2BnM~nWZw8_ zb)!}`_smI7tcET3;%FmxjvxozI@}I z`q0z*$+9JDff0AR(NCxx#Z|V(_!T;I!75p!CX(mKX)!;?sTNmB#!L~ z-ItS2$$9x%j=4=B$M>_IbFN>RRM>a1;e`Hs?xURnY~E7CI^Z%|Ar?@U!>O5dER8kD zL;Or z8hScgg?{=D6uj(owe?l`GS=K0QLrBxCL=d;!?{;{PvN)9lc)U)Hv&5WXT!*TKz9T0|1sR5)5#d2m+d5Y5_09uwiUqa~hvO7N`C zLG~o$Ag`wH2tJ&k*I2FjoFTZRIH2$;{_DFB>`)oShpxtKK~nGp>p7@MNgzIrTlMHWIbpP#LXN z*WUjrR*k1%-osC~wX7XTfRC%_V6Im5!+CJHKDVyulOY9D^jf6DfXVE2mVF<#SDBkC z;wT$uLD%s-ES`}oB)_WVQC;}p3^yM{V4(d>W0a>9Ms_bAmPiv@^ugc}jO}9yGgV)x zki%?tS|3n^KlNI4`|Fi3BCToSE()(1pr~F)%}qbhr~BU2KMU3xPTc+2=Rt5SY&lR5 zu>eya9~84YuKu=%OQc0mOgOB+FEy`d*Wp0y_oUBuUT_mQfc&!$g0K-&9Rc^%UtPb0 zVtPtaGd#U>;d7lC${yUwR_aLRpZ3m~nD9#TrrZXJqgC#C0fve!8dSkZpheN>$7$W; z_l1cIe_jO=C}&VJ$Ck04!G|pfy2upmhDTS!#Yn=v;pvp@v9NnH3=V7}i_ET{H+M98 zM;q}Gpb8!&RGoA9-LvV$VF_n!-%`Wr&m{U9zvwK*$R)%wx45DH>6pojw8s3CPlkc8 zQqH3v!I6aVt0dmm$c^RQlk>|DvoBvKln2q`e3iJ6VhYn+P_Kwcsmo(3q-U zrWm8JIY(AMBa8V>_T(_-N67WUy~3x6-!Fts@4QkLPlLHkr&GBuGZ(Q`9-;c^Kgemc z{Z7@wo=i9f@!X-)lC^=k`}vD#;2j!!uG-G#d#M^4jk7AudkGL3d=#cVA8<7sw?q|e z?95I{YZLm@O5w-=FXfWf)$+8Oq+|l zR&i?$1jg%bEcydV%&K2YGZn?+WBU_>J()=!zPyAiAOiJ!bytwy|ssQWJ=ej&|AqPpn(;=UF9 zj~&_?9sv#!CuS?H=*c%V{C4De&m46A6#JHc{<@d)<<}ZaSZ;~r3+K?y`NP(%;G>?W z)z(VbUSo0hqE^H2TP1hI-g7G^__HMy<>6SR>@clC>Ze9A$f?SzV0!pjv#!p_dgNzB zWa5ITVmcWbiVA*nz!Srmsa~qD^UP%8_}Q|*iVY*J>Z&{3P)*=1EE*{siL=ICYcDcP zhXqe~j^04W?SODDv1fR~Zg4I=IlnZV~VozK_)bsFoH$7b41(vY%WVMrTPhoZn z?jNA6XJetf!CCtD$ouUT^_7&qIMXa#RDATy!;HR>BikB1Qenn`)qF1VucDHk!9%@x%TyOWp0v*hAAlc@`YY_+X0?N2$xNvD#VDK96A07dtQ_OAeD7U>`@Lraa_sr4s)$yf79?vM(;dbl3zFvhTxSo zJWAT*c=s~QM=>L7j8mE72Mo=O316Ucg2QE?Ns!sG5|@J;!r$a(xR=HWrdqx$)V9&L zHXo0~&O?>_kX}eVQDl;(+@ZYd^{k*pfyD9;Y_L`JOh>vCCCnLrJFGP;c%Y@DOyKN7BE<{QRbZ}#R+g^Fn*jV@2 z^dZ&9PwAj~7}`zB=fKRLsr55W&$);6^h*Wt@%2LU#7adP*V38_ok;s)sZZ)d!? za{y5N+#F{ES=ygxgIZY#T^n+y!LLb9iZhJ{-3uWbZl$5wIO1s|xy-Gly&DM{6Q`<4 zybMJZ$Js)D>KT-InnS_P1sh2Lnypk4X z=P$lA9QG3o{dhhs+tj?L)xD(KH^4$Pvf5ZSCX_QhG9nbs$k>K9cUp|H!L9UO%sjI` zEK8`|O;|Bv^-<=nv(vz_Gpucg`zW%`nR6_JP{E7rE%M9AGsv?IY6XesJU(;E@s6%Jk3^I>q_tI=~y zFg$)GZe}F4hDkL(i)xp~)ZYL%K*+zq4ut3l|QAv z_nFnT2&bSg!^b3BesirLKIB^AlAWo>*Z%4158c0d#I;^oP$Wo8r0Ypc2Z#u0euDMa zd|2w4NU-7UP|J+Nx#n@eaa&_=RDMLavS_)%%TtgJk*GJTp6i?ES27b?w76RFnHc>; z646(%xaQxK4s&lPnb`qe@b&hpsb0=gJ9nEbmErlkZkiarJG^V6YI-TNF6$4*Jm!mL znO~`kXEfV2YX*QeKg}>*Pom4LuDUc>(6aP< z9E)ENrpC@@JxFX>47kHt3r8%i_cCB|cKB!C3L;cv`5)eMUH8y%+yfDzFcOq%_)^Co zz>i5+Gx!$WR%sn{MqiJ4U=x2kthkXI(V2Xw4jdC^_D`BBu6QHAs8D@>Wn{3Z zXkGX~uB6;otMk?&Y*50xbeh9K+;GgSM&HLbOh`aE$3cUIGd@pu;Z^EHp60YLkNW-Q zWkYtmdH$WZ+R6M699Tpc$WSoJ>X#*}H^dFI&-R1IHiH*J++M@ZT*;{nZQgJ14rDqv zK68LoDl+5_-8NN*ZVDhOe-A2H3Jh=T|HigAu)g4+hhQ3qR&fV>p%y zm9*1hb3~@!MYJ(Tbt@)+RD1aC2H9GrPtN!D%SYDmJj54lGUtnXJJ zDcN0V`qWYo)T3N#j8qn1*#3egY*fI+tcriG8mNE1yKdcsT|k^rP3ez#<`78B;VM{^ z!P-eB(0Ej;!tDFcFU@9d8YE?Mm!lor?k@ZL_WS*oU`1Qp!HU+T+!naFFiY$N=R0#p zm=TwE)6xkMyb0n&tWR=Ti&&0n1G%0XRci33Bnt>d#-K%gY8GpeS zQs?#eB={a+`4Y!>x|d&qd)mkZ1FGHJL1IFa?5XM4`>S3%1ta73DhF-6h{v*bpBblvQyfYpbba_{BicSBOT~Jp z{=vZm-F=pRo^+4;NxMeZ$b~FSi2qX(Y$=F~3N^H)fYc^L%>$qU-}uU(z+BvqZOyaH zauucKA{xFGx6o0u?2RH5k4cmL{(;iYf!W}ra-mihQ5P2WTpEOe0(}ki{Mg#jmeUOm z?1G=Qe%i4LSQ%th-MJMg5kyk@i(HMH>6X{^2&nA74e<~uRZ1FNq%6uI&_*xgyUicf zU<#f?T5((tkj#{OI1OFJO~3EXujJ$6DO#+Mco$CE?YwXro<-n7UxWiGPM9++|K%LG zN&CC<^j_@e&aPI10=0fZGpT|HY{)>`NhKg(F? zxH;rpfzyy`#F$~Y|GxZf2Do2hjq19Yk7Q7>PXFBmNJ4{K=AkC)97`am z*TFzVNM8=#`FlcOcdXm_;9R%UWM*l6azmT_w@bS@+NC|^n>8QB8zJfa*CNM?r)sHO zR0(8+?H^iD@{=oKWr_rZ3GGVlD@@=aL~nq!ZoCru&vrS3Z7r?TnReabEl_n<(pr-d zHs=RECfX$o&QTtk12T<%?s5~+<>8)B&#(>G4YDN~+Xb|~pBs}y9e4kSN|5|98#+K$ zHzKqr86xgS^eqHM8d zwSBACnPzM|%bT5klj?AJKZEhG6*x~Mi{OZ9d=)nq*Ap3t3)+}K#snzw zSCQ^hXe|vum)H7Z;@vCI94-Z3CH8b#V)ruY<{-9J$GZ;rRZhx}($FCl)CrBhSwb9Q zx!)4@)bPS3)cK7H{-J&G$A(S+1&G9q2vm;6OimHZFZDe;6rKXL)&A_hJ` zykpz}78$xMdRxe6mm2e?%PF|}gU8uZ{U>UjA8BA-N-H#2`?tvDdgBDi444Q>(;Tew zgn}9zhP7dnh{4Fvj#aFsm5s`Xn9r)xrAarY`~&KQTpsFe`WuDaSyK3sO&IOJLTu1& z_My@+eWT$0ZqX}@ zXLk~zD016FWX-{bRyItT)^{W1qb2YJf$s_%HLm^#3jmURl5vS`7p_IDh3HYray0Hy zdTh1C^&IyqNm<dOr)*jFBI~Vih;DyQ<`Kv*kRzqfTgB6OtxOC$2;#94)Ps0ChxJvta-S0=^-}8HV*J| zI^9Hz6Fv^U=l_~`t7_WaD7n}`XpyI1?Q+u5X;T`b*-+>l|LN(*5H9NNJ+?T(GX4ec zM5mwu!o96c@yvn5kb{MkyT^Uq0!zW~G68ObDzKD=V|_r1gKwb&Fj8NupWfY?IguBo z`V}!hv{F%I$J;N+OXazKzv(T+x)2xz&Q8yA=f(f-4bXw%mvoC>6kl8d%RQaLx}?;2 zSW~%94gXzpo5Rec2S>VImj75gOmY5nGdK8TERXH(vBA7^cbCE>-A8$$=-!N@dQv_X zw}Z(i%SV6WJzy)GT*?8BjqR%>UV-waNB2Fw4gs3V?bCthm^0ih;tXs~x4{NUzm4Js zeQnU|p;4i3ITE6CEmi4x%ykLRUMWUQRjm_$e%AQH$cl+O57A^36@R!9?Vnb#?-%^C zEhD6!xyOhzPjlRF;b6geVbo9u<~dAK;blL+$9u^kFcs%ohDe;C<-(_1A19bPcF62M zek>-R9v0BeztSjdR|G2M=m4dcPvi~3f!hh9{$V7RnGw+MF#Mpr9aw=33t zR2#8r*7pe_*n8l_*0sXl=vSkH9&CTG9U6svQuFog)N5o=ItxnO*rQNTf;2(CBdBa~ zg{}Ilep`aZ!OnU^u*nBrR41ALd{QOPxGkW4hHaT?avBUB98K!3bG$BQ{fMsr#B`4sR->Y| z@c3|x$=_~DoR>|WZrxm(IK47b(XGQsD4-QGgok(l_F!?aPS^@t?*5Z``+4?-pKGza)Tz9k6vaJri~Knw?zOqKOcHy0IsZ0%^0=drPmxpDJv#f*r?L z7C4zZ#C#X|Bg`=ckp6&T3eRVAItBEXMIW=3j?VIHe_B@gI)*>WP8fbM0@z=~Y*>5u z)1b{d(>g<3jjMNKZ(-d%IAnQ|xyeO|@$;^FiO@y{&eL;mkgM+;!re}-pXL6`N3cGZ8q@)e(% zTfu_8I6gU^{;RO%5IhLK#@Fu39t?lfZ`mS9h+CieAN6==kK%h#>)|V(-as#9=mrVf zozHI?GI;D_g07HQ}Y&sS>5JT~Qjrb`kCnZXU>$@B?L03)aX+>%INa!NCf5j&{tcZPcbPgHeupXnp z@^)$O>-e)(n>AZb7IZp)jId=`aq?w7YLt#fHSa{tXgWFj0Mg2Xf6d&LxwU852`aA> zC4i7X+gIo!(t_}!uf=?CfZL(CpMzL@4@X$z&jT9v>RyeKw&R)O6m!XiT6XX4wLF}q zU|Xqoxos$askCGAUO-;-gBdF=XKBUK4HQdkN?^);%hI0;tKTX%S;C?;9RCI6elq zBUoe46huGcR{JUpMGpTvPYnKY32UGDoq5z!sgw8wpp@HB{l$Q!rN~51$b~GWy|*m( zEn-URZ!UOw8#b-Q5UAOYje`zv>AtZQ9?*>bMw79Gt_uo=KiFExrK(%!UDJ%EplN#3 z;3-14)$&>*!~>q@_Lz>T=FolxaK%1^3O&w!f>{@Z9*oO*d>M56UGuRsOf<{{8fTuT z_}!Mb$2Qh&7OP0$?xXK&2Y+zU;qjj7nP~v@bA~szZ)n5`VG7+c%jE31G?(@bs;jkT zT*e-#m}KE_oR)|^nUu{Y@gnpn9%T7#xKR{2anKnCxnCtHAOoa!f42ot6&Gu<7YEyH zvH%m3g%ZTxaxQ{d0>l>2ghuX@*cQ-s*ZSH8x@|SUXc0Zho))mpYdC13`;B(Q`wi{n zdAG*vLYyr}!#jGLojY9GoloC}gZm@hA{Rhh=pL~ox#xp2hXhUmUdt^zbwQ(ZpN2 zW`P1lv86U**;qopOM*J|>C=0(MDxU(QV!fV$+5>4C*0@lm2GOS-Xv@Y#pM4$)QyEy zh<`gcX{>D!#H7aS_<0A<)O1NPb&tXSgJHA2cnw8*;kA%&$JJ%9_#h_{oVNU}T+ z=fz4ZSz0R=4LHSB2Nx){>=ZXEw^;~Px^HW@l>C^hau5>aiT#Xd0=Z8@LQUsK0Jzq19VJ;8ps{Xa4QwM(pZ}SF)wE z0|n=mg^o6h`ocz6TnT&L+`J|XyLz263TR%#9$%d06jB8->*`?sJg8xD?&ZXYVV*=o zW@qs`e=Vr}<%TxYAy@rq<6rYOmI(C3N8@$z;Od&gvsBc}Etll%-U|;z)AJcl&aLM9 zjFZ{U2HhkHvJ;%x49G14=k~JbJb2z$5&P=dOaZ5k=ZZz~=FL#Q+JpmY7&%?gW54x22 z1^rar)z`<6_BJl?I5*~(N5;JF7{;N=b zl!cp#Vg|7EXN@Pj1E{3+t27JpvY|5q@OB->h||ccG)xju-4D8Ad)xf)TcKA2czoww z6op#K1MZ6HfqaR^5$wK)N!#D=zU+RHN$}gfdaS$Ux%*4}NWdlzf(vjo#}52a@}F^o zCwwmwtGMp9xl>bGE?L$O&p$D4P_!J}J+4dFZS>pkEX|SOwzvi^A-VAfq$B2!|E;(; z!A7~LyCX`;pb{a2a*8PIi zVe}D9Y&Y3jc?>3K{J)FK7|m?C4Lr0QxgW1;I*%jBQ)R`O5lHTv^V<6P3iMVVZ7wS( zj^M1s;r4xgsM^fVhgM2h$MZCW{wK5|#+$0;~QMRvztO&sL zz`c-y%8#jTZT}NpMY)3S@28@B;$$WaCx9)Rd!=!0nYF(79_gk}pC{1bQ{`elJll)O&0XyQl1+yFQvBC9 ze`x}>@y{)N3^yw42Tgn=7U9o}=K)9&01(QqG)M$3-0~sBr-PP88?;bbrqQ$gdkfJ6 zBS9)g%tm51u#Jz{b_w`DQI22M?KALyzh&TNvq`*Q7k>bCs(6{s{MQnJQS^ZIdntl# z;`Yg3yvQ)~pg#1w{}R3Wf(idPI2rKy*No+XDJH)RElR10qe<8R$uVVL zXT#=^WDlRou?}|2MtOz2?<2L#&}r!PYsfO12>$i$7|=w(;l${rW0+@{lXvD-VUuha zc;Gzy?K?Fm9pt2Aw8017GiGFBWQNh{haZ5``Gs)PT+I$w$YVScqqq+q9`zkeOGfAr z?{5+bn(6-mee7+E3tbVh=F9_aH|P zd4QUX2Lk_cCt`oV-{vR>|GKs>Q2W{*-f#bZz2r0G>9EZV|F#=n++!iX^Dp_21J{Zm zs1&<*VSP6MJt~KgD2C_%;xA&f?7*^rz5KZR@WQhFA!8N$`;U;tV2t%)lG$6#*rI-e zQQZ{%frnXg=-$wLTYMLPGWLOVQRx=-^S|E) zU!(>3#)jYcRu_fZKy64JysvqRUJMB{9~CIWj`g_gLWZ>8z%XuI%k}z~G}eJMEJJiY z5njyyA7BP#>GzcA{zsLG$iTOpxD-@Y%oOZDpzjT*6gyR{44;4-uwj&FGJ z{^nbFd;|IxgJDw;@xXm7OBiNcI3yoX>%LHhl z1seA}O{eXmF&6XE*U*&~Cw>GgOlsZ>X`uP~v1kJrFO47aRpz=t<3^1~Dj4v7?&tY@Wvbb#W#(!2U0+)&hg;gk7-x%@N`HH8zLnkDni?HM$U1s*AZ#A1=u$O1+)6 zoSt3qH!c6FUw%Njh32)-DjA&8FZ1K0oHY32l-01&!%Z*DGZL5KG}Q6^pQ%$+Ec)kM zYi`C4DZ96b5Wg^6v)7@y-qq^d>!i}4JMPDT*?`8s2K#@t_vZglztP`#lqE}4))1}A zSdviok`#sPI}r+F&Az4HC{kMN43d2}48zPQvSk^SeVEC<8|&D)uc6X?Kko1S2Yer& ze#>KC*K)3No@cqvb^}X=#{fwJF^~(!H@ql7Rc31Ntq{Z^!5&mG0E`Z zd#@bVrCRXKN>eH$`Xk@qaKt(^%#UFy-<+s77y-(XxS|eHg;_t7cbuV~l&_*8 zLq!6+$G=b!4H%jfhY+Jz2g_rR#N~J@eTsxlfy6mHi20x166h^MKBX(gyS83)`2^Q; z=z%L2G{B8O?1a@U8ANz*h+Fo(;gvp52v~ny0B6Z$#D;*=1eG6q@(VQ7s1j|t@w)w4 zUd>I-4>ueS?QDam&CJp1yY|u^_!fo%Zko0^ea20t00n9!eA|58?QtPk_7N8(q2GNf z_dU#+h@-RYmNn%$82Iq;LUS86S2L9lIjllZQ8uG6OYV4UUDpblCDATWa_u&<`6JiP zWF=pD(fD20IUF$bu01|pH1*;hVN+v6pr_wdq=0mvyCz+WCDP$2D5r3(+g$jV%`hh} z44tO}Tz4uQG1FK7@anN=s6z?b!F#vLd-6k$kStZb6iN$Oo~#T%tcg1P<5>tb1aO~e z!H@Wa!?SJMw^xK>d$I8+qQt0~8j8Qacd0W^J?V{KdLhX5c%f;|79@ML7bnUQ=Vd%v z;Sq`;eWu5P{Y%1I_Lq63)Edc)>8sP@PiD#+ z8C0ztQhd>6Tld>{7)R)UvtKqLL`x^x0Cz14Q#h5L;c?-M@dek>DbCa?Je>>2DMH)o zDr)ew0JpJ`!JS$|2!D;L(f?H^vG*A02UK|0cAkZp9yQQ;JLYYx#$K;~azgJMbi+2S z-$t$P;_La=LI(0fHjiHTjl437T5ly-tOc_*$e$LN@?OtmeNliYZFCz;5`jUu`7<)y z6joI1a{9{MazGvJ=KqQw_&t=#C2MZxJ?7cfl4Q*-GsS;Ri?zV%$|NNlX0Xt~1G z=*erg1{le^CoRl!SZUqu&d+TGtbSxms0zF}>)euxg6o?$8VP~w6rfVfdBv=2>+(i! zYld(2w6q^ivcim1!$X?wXYPXc=f?#!#7)EsXK{Yvzh-T)@*=Z3wnpn4Xlg%v?+QY^ z=dOHtJurSwnvr`g{oy_`vfK2Z6=|9JK>-sme|vA9Zp!=~V#%pq0BE#GOwjqHUlNX# zj+1?PiZUxxjx*f!DzwPN%tYvrSKy}`8{lQh6-n4$O_^P@17zlc8vjYcIw%VeQ<2a> zo%X#;Z+JB~%(5AlCVB0>_4TmEpZ`hG5FyGAu8jJ5<&~+UC%kOG1ZVQa^q8JdQAQ}L4C8q&1Ap*oL*SY^F9e&h$S@0TlGaX~Sz!Q41@@0Q_pGE{^uv+e83|S^ z14ZwtT*E-U>+_*)%x5;+8?=LkUl-+|P1P9gbDv=@>%HZpKE!W=d#v+f<*iOqm(inC zw>8iOb`Ct)!G0jhu6;ta_hwgqdiJRzG}Nn>Rc2#q<`n|eu5*$>v4(2QtQm&KM8{q% zlV5mY*ZhUr&ALVb>yFNggP(3l9ap+)_GZWC@WN>u)u#P(q3tI3@hQ*JH+!N&<7w2y zM76@_QLp`L4OY7@h(;%})X#|@jh5cI5G_q~-P(K`nFL?jlosQC>J#I3OD7Wbc*byT z2;-N3gDwq;bVXR5I2BnW+liC*)zK2y{gnmp|5#MoIUfH#X%ug|)_jnuyn;K65BsW; zTsG=B02W!#)k3`YlmTrG+C*Ggwx&kAfYJTNv+^W95n4fqe_S{|Q!=Dsjjg|Z!b|1o z5`;25mCP@35eB#+Z8=MzPRs1PFW1VIb(4+zfP}2J0kh?I{bxP3+NB@-XE5{pxu)6u zQ@7?r?XdD@+3bQ&i7lge(V;$ZGf2O$PA=mUcjH2()6IAy@>m;3n8`Dl03+ubleZal z<8~)gw~NmGqCdQF%t>>%(ZU~=h5==Psd@=qK~OM+CmcMS|5E?nobt_+T=1|>)i3Or z{lhOzW2kNRVR(I2DzCPYZ9#t3z2F}%&mAwk;_ri`W?R3~aj(mkHlsS$m$ZngUlo!( zqd4ooaOXax{#BE{*C^z`6|QE^nOLAgo{l3=I2+t~sV%I}H{g)R=&pi-Dw3|aI{qZA z`ND{#F89K%;q5iBBwyBlPWNmeXeh9G#~<4B03rwOu#2YA#XcFSTofoMwenuHsl$# z8%dClQGjOK_$}X&HTsa47oQXZ>l_=*ihKdm{web`8Elkb1J`6k2UeP^G6OshFWmr& zBkpeSpUev~MvDMz#vryh_e;+VoRtxTG8$;!|3{gs#aUd5Hg&9&g*~hl#kh^r7u$cj zgI$k~^1WcIV=F5!#%e8&C~G2{F}1w5p`oJ*FUN@RD>pJZ$8`dXnMRohU zAnU&{&#(N<@7z z2iPm~ey%FG`o!h`%MHs}ACMPvAC8yudB9l<85{}=R}(QC&-;#Z;8lG$$gxtj`G(b# zXuL6#>6o(&UTE8!U>-b2_4Q^e%EF`R;@H?(8{3yka&vO8@KDA<CWWMAH^Cp(I1ZPm*8ybI|q< z_z z`;Z{HEHmvp>-|$`BdwJ_%3aZbT(Yi5j7*zh7utxL|tJ z<9Lh$&n!nv*Vy=sOXr;~Pk-ZAulPiS(_gBc{@=aiU1VY2p(H-u%0r=tM7;TiE^;nJ ziD9@TpBusmDK*lieiC9qgRIVC&Ub!%SC-bB%qtTi2^TNFIJ{slEBoXK1-W-ddRF<- zeeDyt%36+^dE?@>;Rin$b9Ak*_)ViL)s($#GKlalk$OM?(!O6^D&*<0tC#iD^(M0N z%0Q+BLh)1sy#GVnsY5r&uM1y>hy1f~&`1T#M=bi-)sR=pThh-bP)u!IhSj}t+n`gU zecfYYYh;ds?HHV zz3rw40hlRPZ=Zx^mxm2-mFN;bbvRI7%c%8;mb+N+Y2a{z-pE|D)Y0aPYR+cK2 z7A7Agv54E~Bp%hALFH2U+tQOEKl1-uC<|CfVoMBk*e0rkk zPOV1=(1qqlsOMPy-TWZZ^mw9lmPjkvHERPQDP*LV$ddce0V@LS{ zEU0}=(ZwanP_Em~c^wa~7fqn$G!LS4xqbv1-<$Z4!0K^p)%uV<=<$ra*Q7j_ix)dy zL1lOpw1hX4*BPf{l&!f2s+5a%rsp$M8ATpM6Z{x3h>JOEwo~_9V>uTGW{+mEMyL3@ zzH!TM3&hjQeiwRuJ%WAm)jT&Pi7cC4zHNIY)AxY$^yyzGhsCXgKExFTutdDjjmZep zy9x>=rO1ZrW%5ms;?@6UpX{BeFjJ7WZF^Sd~!atdZM$*#2PAKeW^cY=dV~x_-goa3ho#p&)QY1sDUd&8c)nZp4 zPGjJwj*-s@LOwFS*N|&`OW;!ak906e(4@ZRaJYXhGV7QC(E=R<+}vs2%ET2uA_w@ z%@qckc(neb#LUB=f(K)zoB5=Tkx&Ey>(ltiHfre;yNZYP+oexJ5v|R~IMo_SxLAV7 zCcjDf4c0>aW2u9z1CKbryes=iYppj-wdfykD#2%bS)M7f`QrF5ygURLetzy|*KI~$ z$((V@5sZuTuud97SYac5@Q5?t z={zew3+cgDJ&)dRr)u>?y3AyY(BKY%&d<9Jsr{wHPyW10AuG(=^s69`+^1|=Mws{n zFQPLvlj4>tqkhCeM%gy{mCCJGVS4{bJPokFFP>eM4K18y)jO!;>BiJWnYZN1l)G6v zg&gTHdcX)44Jqq9VdRN5m692IrQk@Bw9(lMas;Jvmsm&7X%>ZNDtj z+8j2u;vl;Xm?=<5+(+BAG&z*OI+^%uN z(Q3+T?wtmjMq(D*oLv2n|9gQPmo6uOxHm3GM8v@=UDiVA)j+tsNVU^5pxP$<>l z8jw*S=L7N`@-G+Ycn|>EV>+B%%^E>BXd{9wwm}TWcz#@)!u)i8gR4hCeui#A^F~9e z2e=4W3#*o;JxlJ9`Aq#%&ED(ET}Mvga15x*ndXwNoc6F-UFE#D$RS-Pz7=&W3(8nhYLJ_kr9?d}|}oU^m;^rek-Iwd4}t7L`|>O0~i` z9>JJnBZDni>{Lt6E4{UYFLze(-*jqBaQ1@O4-m03V`mJ&>(RcD^J2@LhNZ^}9+%(T zDZ(3aO=cS$<)IYjx|W5rZO#9{R9q_2X2$NX3|<6-*nR?=)W4C&Qc93;Hh}SS?Kujf z$`@?dv9Ly~detDk0RI$)5ZC_a6D~c_((4{SjV@U$ftV6iawKHo6{7jj)4EQa0>H*u zT!DS0<0kTMAGUFkjb%OCa4OHjvDiLO_Ud?B4w0O?-~L3UjgVSJbHV)qxt%4m7%;M9 zzAsw*V@-bKXPyCtjeFkp37Z^H+MZD&c->XucfTN;bRf^Jvx|$+own1BLkvG;TIjt+zx)kYQV0(j z{%2+@_CG-Yhkulc_V=|F3Y6>qvm#Kc@+)9q-Yw1`p>=L_801JDTkXsYC`Uy~Y(9n+ zK;q41z=PPynF&Q?g;efQx+qY+nd-$X&IUZD*CEa$B6YTqMa6B?orYMsoH36o&Ey?V zosrdq4$nz!HRHl7e+Ve#RS;Tk4J%!Mfq1ps)0Kx^nvi(LZnnLfqW|-zW>-lM9PYl@ zAa+X=gvk%emTDGU_CZWO&J{kRO-I_ov^G=@DAW5%SRGOU1*1LbyZXZJpj=KH`L91J z%3LukcDP+IN=}eUF$JkvQ~h-UpT}O0tQ${^P2H8pip|T=JY1Sz=Sg(cr8u#IbUaQ% ze7n@nNBjY&8Rqe5A1|sbkkclXPIdOCGzy{@)TlhcRmStJWjqkp+9)0;Ys8)U@%qA# zR6Xt*kXcn0(bPTZ4NNYc-YnI;uZ!%1ocXtWW>3W&jSzRU0zI?B6`FAZ@>mJkvKjAu zN_S5k+x-J+hhb@r|O4su}PA}9#p1FaFqPn0OMj;60!eqyS zO#jugSqi`yoPBOqmaL>#i7p>}ns$CRJm>_&n$#IAAR?vUvK;m!8@^gJ)ePS&;qSBj z5V5)R_B78V=k<8b1mcYFTSisokpVxih0S^UB%E_g$%xmRq7L0HWWl$}NlAF8?jiq_ zS7*9yU=#Tr1N~b4P0#$UWUm|_R*H;|KE*5w@ax6*AD8}7O{AkQ#`v%rpooKe-jAGb zvv8KKZ+WFr?t-sRXhEoXeZ|$=y?kb=BnKbSrdLXNR(J;W%5mikvZhP>tl#>7a>dyj z5o1SO{K2K4Df!Z`KK*KN+IvMy=QC|re*t{erU;AWU@xF$3+EHj7oAo9OpXAN64<@} z1^G0}mu$nFSH+RCpj-siWsn&yD4r^Mh#^om+cOBRMq+AaV}Ds6#wT*pCS2~!|ILfO z4MLnT74085cN0q7t`CPR{v-r;L%)Ika# z!G-R*bp|oHzi>)%=;m2YkWBni9u(F9db+{x!s{;t8p*)mKoyV!5@3Dy+yHboVC_T~ z2LVaKUH%XiKWAzEl=f^KFabWcTp0T2mh*EMIXjBFaWKK5%fNe$bI2ERMLQLBo#Da7h3SWvRckCSKbG&3+U_HwT+FJ!Z!9M!^v~6>we7 zXH&Yusx*%@Sz**;%0*!lca!fO;HkImY0!U&W>3E3^E^!#KF9&$WQjl7S1D!-^PUlB4a%McoB!3_s#7Z}aN?m><4fRk&BoAWiVjtmG}j=tc#b~E8H2GDsM=hnfun*FegpD;(;WL z3pI%0tocgP@p!LO+@M36xIYv5G2HDJZWx=9-HmxyCe?oaxxZSF3Gvz(_q88A z7t28Bn?qi%hkFdUmiQyDFaa@Y(H7JA%MpPOL0Smhfiy*L=vHb}s`&=8PO0u86xk1= zc6U9XOJ*RV~i*UYxe( z^Ad%hls!-F^^KmG&@eDk7ksHODofGd)-Owg8rs(urs#*{Q6S9WEc^!VMhEL&zCU*q z^mlA5zCC&CK6~itbIw=aJSkUZ5g|6MRIhjuum@=o4P)2FJmkiTc2)-y#y&mpD;kp> zz^=<38x%l$n}u@>hpVdvlMslx&6mgFMo)i+R=j5y?kj>yK)L*9SLf#}4<20fC$xs5 zysHdax{~+`)<)Z3&@%HWJUu``d5E^}6kkKmw(9qOIZpqIl_0^kN}rmwNsr`OgTVO- zM#(ZP%=;?J&FXlpz~RllSdstCWY^4ykA(ciMDkn10)$K5{yW2ESEX5S|2e8jOY4EM z$I5gRApjW=z%fl^BFH+Qo}QjKoV2~(Wy92P+j5mxQE_05hNg*b!J?AMfgp!_!|J8u z-56iUdENB5TK1`NDzFK}S0YgNajy+?ms8n2`qsBiW}bgyOHJgN z_0xMDLXabEqI#+Yb&rXCFHInp_zcpR1E7#O71Y61_c>}dGfH%Evs^n-sB_r5i zmxz?m1k~CkTOb=7^KggF!q7Jq$9Qd|w{tBl$2TxGR;Q=4r<{^l8|F76`Rk?CVHy7c zpMf!~@2Tm^r60vGGl7OC$rFl|t)+H0>ae_95qeEE!kV<4>M7y;Q|Sk#2C$>jw?%e^bfuu0n*~&SCXHJl-M1 z^25iS(VOZBH;I#`&J(>AnkSvr84s@C_Sxn|v2gFaqwqmDGmY>K2? zSXlnBu!VHd8?I$_yZGqUDO3M*52WT1Tb(ME6I_zTPA+yfHXYAUL6qN4+(nu>5qzs-GPk#2t}^-8ahOjwVh&LgTk{2wHU`TjqY(Sue4^A&qt6jaKlIeu$bQ?$ zZ35^1SjXhU3sA~QUM2zhHnCD%V);Gh@k$0^%ON-#MttNbGLcLNJRg*6OM4DqL9F#p z{e7tr}?3mg@v^>pB=rI2sUG|HthEtm5eoi{fn?=#BOlWSA7GrkS!YDtAAS|Vyyo!m-Dqz z0t(h83|C6LvZ1m3s^O@$5m_f#T%GOEocj&YTG!zrat-zIM$4$DZxNqJusN^a@LOi} z7vVWWgREuEvlBBdy6r;lEglQdwCkqZpL)wJh>aUWCSLEkFVmmHT#p|&$eVWxD|-3z zQa2%q$M=3qjj->Tf@}CS+t)WD^zPk*?n~Sw4T|fg&(-ec=Q1r}VxZ`LoSzu#!a6Hc zf#+!F1U#C@^#0OBuI<(upGdyb2J*|7Ir)&_YNn8o8h)7XW&4@&7+FpU_XI>~I;-O% z>w84GDJ-r+XfA#OS_wD|?K#7b~SeHiqo8Kh1kLpZA%;PLW{T9?RZwI_cIRENAq;`7>%`&1~yS-p9u{Zb-A zEMd&@H`C+uu6_s!u=wmzk6L)*7Pbd}y zc&^UzSQ?MxTwR}6BAJ9i3&Q!vM#0=Ly>)+646KAwq~nC%kvi6=J7XPsH9kbNWV6Y= z=p#e7p~KJbgqU2}w8LEjj}lH;3$WbSLsK%px`PAl?di-O$rsmigt_B3Zj@)F7BSUd zmG3`_xwN1`+NvCAyjObqyTftXPrn57E5h{X;6Jh}gVYjQNYey1pYhRQxx^Tc) zumRVGhl#^A0{B~#s)V%fLKCZ8&e5OMiiox?zbq?TIp{E}O}7yDYb5_C^C2&{XPu1u zRElI_9?tvZKjK&A+Eio|V!4^QP?z0Z-4?_%5c^$rpecjf^uAJOx`RMogc00(*Kpal;zfHiw+qFT4s(zE@w_j>RK7u3{6%>i;(hfGfD{|6d1Y&%f<#J$5a^S zf4tCQ=BT>A5^Iyh$lHzfAxXPBH$iPhL_RRBE?l>$u$fgsjvR7c+m7mOjh{^{=+v}! zFN*X_lOe(^=xG;1WdpML{{n@^JAjU7({J>%Fx9^Z#G5A`slO^$bk6s|6Lq#kYJKLAlN{tR=o?nM<-7v%M{iz<{Z4tVD7Rr)~Vy?d#4j z%==+5w|RpSw7RF>CoLN@^RPJatWAjJ5+)+ZJE!Ju2hDo8*h-Md>)FHDB!bQ|Li{$F zBSsF>0$a#Ma{tpCfN*rzpjNDC(UY&8A#FH=fdLLnEgqn0!MA7L_gi%gSd%$DGZE~^ z9btI>?+)880nQ4J4Xt2V(3jy(T?v}|+S%1KNemg1F3y9S$t{~3V3Dz8Y@R#=bSHRI zy$@))nNRr~mDcof7Xz1v2A-GcPC!k4tngC#EhSbE;@}F=6gdo#G+vPBIAGyJ00<7> zb~yESYKSboQ`!BJmc8dxatTHc@HRRm;+I*)db^A0ob4&V+`GEH8lj!=QL&6$m}GsZ(~Ov)jV zzn3DP+Bxt3*z=S9%=s!rC#gT6KT943I!;)KcAdy}vXIFyZV`p2@;*!W98UXcq1C-W zea5BKjboX=we`FUVl{)8v(hrzh>(ipI|Z>&;kVtH#=&P|53=kL6GPuoaqvuv6F1yN zSVioGd(D++gT`>X1LKvtu^U6S!&t;z+Ty#IfrP%EL0S>Xk1vE?pD@)W^TkFJD)63Q zW$mtTWJU^l;ELl=A?D_y3s%jUY@MkKKQ&?F^mQ1Ac)D7T`&xZx!5Dq(v$OmG>-642 zP7B!3Ki}Y6+eDCvTkOIpkQrf0)+j0L-lI^Piy{A+jszLWu~lH(Yr;#(2#PJr%I8s_m6&o=TO>WbvM?(7Z-2rhG>G5iNThFQK8D@h1x>hg~^I9RN zueB1~0adB{l9=XkE*e=Fy8ycZ9%U#^XwG&bYz5SQ8sP{G-ky&UEP2<00uVQb&`#eF zZ5kn1@+_+9q180pK1;}52mG8(y2bh7^3uw=M%B(mb))4oYDQ`$i#UYH7FP6DB{EV( zQCD;vsqpg+`1Wfm9??|HZSGVYaRC=mp;V^c_h!Ru9|ED5L@KwYLpe_U{XVr$*~0QV z^AoT`LFw%_>@sX=dwxqCLOKxs9#iJi35n0f4L%gph{Fkgr4At{3k2RFtY$R}qaR-Id&TmvCU~6BmE?2c%A7@8Tq# z)3<88sm)?J+({0k%>>fIcG%cYL@TE1TpIHs$}u!6`rG)3_4d-H%kF=$1#H^{(%X(H!PZDWta$B+GncnbA_9V^#$LF{r zb!-uur3=Ub3mY}(zz6hFGU7dR#6)4~l(dbcOSLQd#uZ-o3tKu>sUFQ}%!)LOJznCS ztR8#i>+0chpw(+sDAg>dn^70DkOj0si_oq5zR>oZ_rs!k7{k;Q+pFA`O)zo%1C%}r z(`ePx9f^I}Z;o?<_TahHuSgTo2cqu;df;r;6V`Azx zf!CVmR~|WnpWFE)8Yes3N3A5^qN!1Vx!JmJ%Dukvaw}Dl`i`%A>GM;?m~VinF_&P6 zfo(ist+(H;_Jx(V4if4s$C~oPC#d|QAneG~BL{DWfU!Xc{Y{#y)3;)}Jk%a|b%Cyq z3vIG0aM3R@_ir*<)=pREE6JiV6eksky=HDQP|7fmoMLxtsub>ho2ds$-%eI!uVV#ig84?IzVaK|_s1=uHKr)0UXg*|vJs3~5v`S>_=@%Cqckf~>!g0OsBJIIWEs`BT0 z{6a+;VvAYS8#ri8Ar27Yr+Y`woXq=r7+x|ylmQ-^iA3ij#KZ`~VZIVx()`*cCHZ{B zS2^Eet@_pKL3bzQA;?orJQDSF*D&;#m*A^9D5X1B&HI=6uu_-ws#HEO2aZwc{{BDR zd}Oz=%Gn6Y?Zr5AB_3?BbLf!h8)sU77BtR~YYaJ9dDxkS*jvKx@NN}1T$1>jGf+qj z?*6d)deVnjwZfN;e8giwMf7aN$r8pdp09BQ$tzblMEXhhhq`AbXOuu^P@dGBLxFJP{oT5MUin`qDyD`a+w14Uf+W0yEn zAH=XXWs=RkDK>%>QIgGCDnTai%IOzIX-I#=HW@{m1ljkdb_WD?mrj*$N|kNhl_fI5 z#^53rq-G{0o>BS-30Z0C%nY~TDDPX-B99ig5Uu7+G+Dkew41+0oo>6T6`Hq%P$2;w zkKekJtW(pzU*@R6uI?TommqIsHzQFunYIQ8MFvk@OLo&$#;L zur?;zM!)Z}HUgsbHSF%a*?oC@ls*64i>i^#)yKIVGxu(;0-*6of4iNG}A?r_+MZ z{+Bg$sfn=p?hnpM(aPeUB2(Kw69D^O5l*kr+>v2j+e4XyzBO0P!Br5}qq z_Y^~M3pI4z7Pst|HvsH=EOy!Ja$|rV)SXTgn*-lq+>Y(y#Fj)gN67J6NA-Syn?^wU zSt3xLD|Da(-vSv?J7`h+pkDlmSUT0vTBn^TWmCE7qPVqpl%JzALp|VXGIo^^wYPdW zfI?1t@Miy(b{ZWH4}Fs+eSW5w%(2G;1|~p$i+MQwMbI+^>I+t|aaa;~hVYO^erc<= z+hAUXC3OVLr>DVO+xfEOFgHF{S3^(mXLGJ_)} zUW|7oS5-2{LPcC;*{NBv9voD1ozv!qmQFd&QIzF4%qygtP#wd)k?YqSOo7T4m3xnT z_c1Yv>qt9^q^$hIa-9_NpEJl+NQo8Encn#X7i2pbo;d-1ksj~MHZ*M1m?Gp%ooQ<6 z5)?|)W-4)xx|F44#Z(_#CSnKTd~va^71&z$Zo07^(8+nHID#9CdXfjowdGnuV}h+X z0ZIm2bDhjop7{1z_Hin)e3iTU3T|IgyGF$l51%kD-qYLm?PxbSYIVL-ejAByCSi`J zffw~@V}C3zT)oCdK@z%WTYRPeVp2CfD%w9v0w8Ri=ANE*BtS>iuiqgdjA3ldn*nLH_KvY|CI}~Dd(n=# z>0=e*P2BC^bu-Pon`XIDQa38pN#c`?>=7 zd~RDb@==$vILgls){|;B)wQD(#%GpXoKT3u7NFPMfJ!1zgvzf%aB-@ZE(c?9+Ka?1 zNd*V@o#s7()UAp5I|A(Ynw2YF?O4N-uF$Tc6`FiE6)Wx?hgh3kOlNgI>KLe86Q?*n zc+|+6Ks}B#g~NG++fhC!`Dh6gB12?QpT>`Z)q34o-{suRgPQQ7&Y}W?lb`3UGO9*> z-f_otJAr^VUqF(#@A$EUn8MYA`eI>(0P6cZ$f?RNV-hak&8b}Nh4ewz`tuWc5+>ez z5JM9^(67JFf9!KzvY(G}PF|4~ZpzO4XnR0%pgpWy)$P0pw*kdU7wD~J-VH>IAI)zr zfMsLg*5bj4AM{Jl zWBIV!wslY@RFYGXt?Hbh2=n`8HFlrIbkfPqEICi7NmIi*Q^RCu-({nPheDfVPz6Ml z8Jd@)<=T7Kk}g;H*mPV9#2zDpSfF%r-#R40@{)4?E&$$#gvb!6fS6)hj^Mt=&+B$g1#-robcu?=dbT>#^sCx-f4PJ(-F1m~IL32;?Sa9JZ-PA(Sohah?Mp$76Fd$l~FG(QKo zdRu1FdKcxaD(z-y`_ua{i%(9i87vn9pu>2g$c`&<%}ZYnh`iOAD6nXBqkO}GE)?fh zy@wfJleYStkLIv^!tJxEeS7N=hhp08*+c~;TB1~f9 zWBcH~qwul>h2ea>gbseDN-3y8IJNTJ5>0LuyXd4RAIM_-i@>lOF3&t&g;P$`u?2GAt24m6 z_k$kXYv}vBE#8O&pb$)gwgyhgb5`F+P@BGog4^CQt5>(4J(gTi1b6dZvsrPtbKBQ` z-XzD%^(lD_=&yBkvWfKRtDF3_2-udEhnpA~*DJ{(4JqK4y$L$e+Cw3LNbv>-_ma2m z`AUwb7({MWxtBGrh_@OLW$}oAeqVTMM)sHWDBFiFaz3Y|3Pe`9A6*jed8$E%N6VYI z==`j$hr1uE?mF3UCQ^BlKPNSLFfu<;R%n*)pCM1YGS=|!Onq2I7hw|3U@&8M1MmE; zWQ%Gj!T3nJuY{y>`X+n{N3I zm5k?^^=!>CP6qNU))Qt}c`^ewJ&VXATy-}>WpJKq`YbH$QrM&CqSb6+2`Cr|Ki9RM zL$+a1`wHG1{Py0j76Iz>@!+XhE5=}`q?A_u-sDlJh)>7iPIjlG$6eSHNOVxs@tf|; z-ZZ2bdPIpI0HsDQ1O)D;Z5)qbo$90nOy(wXEUXFOCnpdTk2&+20OEMBI35{G=-=G? zz1G)@h+N=#tg3;nBcY8)rJSjYJv3Cs*!pOL(HlA2*H_Nyy6zREA09LV_c4Q?{T+6r zMwWzilB{MMS4GiB22=e$xznI262S47(zi>_JGea^dn|1vm+5xy6X2#)BH?|(d}pH zeMEk+>boyxx%o{_j(A;m{_)(Y4u?Yd49jyxc!@D>XYq zZW6o`tDwH~~i0SZS!*eYjyH9^XK{eVH$ z$H51_0+u7gevXBwY<^*-UpJ2rLSDD^jZnU;cwCi)12U-2C#)J?OrFp#WN%oWCCNvt zeUKPNY%UN>lSkT$!A!d*_f{v{n^<9Xr^IlzwA6P$KsAtq?!G7NpjQr^Gc3jvt0Rs4 z8NvNS`i+^6N6^eyKb7yg?6Y}V;kjD3IZ7XyoW^YxX_-sRC0NwuF9W487e@>RpN0?H zqIrpLA1a(Z)!*W*T<<%_=;CQfCvC4p@Nw|@SyqH)k$AN6i*EwIMCwM<5+JMF-HwL< zw_6)VQ}aA-32?;NKy3$(k?wz#IrzN1E8 zP10PaBIe!AHW>F5xQ%Mz7O`(-4If23eLfc%9x$l?^gXlMb*Df?Rc=2UgLkE;7%Ea> z$ZfCQv0C8(??)qJRbt)x?rE1y_CyRD3h&{kK zC9xjl5_#unz2! zJV3Bt^3!HY&5ds2w+2V!zO>j0cUR@8H4W<65OY9lOo(v;r**HD&>4+_$hSU+1KuE>b6cbu@-D!7a*gGH8{E5_<>?_?9W3F z3!ONyhX;{&$$k`;IS1{n=i4!Hp?yr}<8E$P6ty>iR6UpVy%A)1mYJ1up`cKFKzKFX z=xx$7r*r|yAys&|ERLj|gvJVuq}1A3oZYvhB=ohn5TfyWf5gNE+Wp9n5u}SW$7)`F zPWY@e1Ubqfwj|S25Pr{OvMV3j*EbfR0e8OgV_uuHw=o1g++TO?A+AYE9<=>e9_6r$ ze*8>(yV2!i`J_^f6F7?TX3oY{&*W5c9=2beQLvL-lUQ7+^uXHYMy;-|7Zh-Mf@V8& zu?b?8eCFHutb-YY*v=P&tZ3=|DmW(Ts&rB+>vj(3-8YlFxLg<9eFPEk6aZ%onpfngZD|@WuS3sh`$*z`g?oz4 zx^w?T1a$HChsLGUhVP>O?`2f!= zib}1iKE02?7f1zZC};%0FAJ926#BLNm%)O6=s6f$IWqt9!33|t|KS5cPEPU!UfX~K z01*G}!}QCuJZ?n_iWN2R1ZItF%!_lGo_xm2R%|ar(#w}Db>;QSV~k9_mxsSkQ&mO# zsRNtogs0<>yQ7o8YfggoDMFIUYri(+fqS{`i=X=Th~#hG{Y6jn*TwKS#&`PfLt(es z5pj4py;a zD`bs0KOwDV&1H_@$@8ZT7%@s?%X!{#ZX{fNy&r4G0##~#(FR3cm`4VN$V9O|iEOGw z_*fXA>2ujFKgB*{vjVmGWD7-`87GF`0ys>y%uNLlD)JS!7`N-s$IeDee4UN-QaM=0 z6*Dpd({IXy#6aahY`WkNQYo0*)*&EvvZG-_R=cjZeUyyCeC4llUd!vlvZz~9Nw7-u zWl!pn4PIg)>4RL)3U7sK1VRinV zla-~q^Y%^i{-1Lce!`z@z^R#KBf)b-w6ViE(Y-6yL5aW?C zEn~xnM|AB}p(rwls(7!tHT-Gf&vyFF8XDFylr6L3-@{)=DNW*Jr%Xn`M7|BQ4}k{1PRfvRV+F}) zRA+A9A2p3a$b7_%gL0okkRByXq7=%VI=9T1>yp%|Pw!p^QAgYKQ6SZEB_alzSrw=RwMQs0*)C z%FWd$_#k>Dd{pK^#uwlV|9pa{3Gxo8s#q5U;IFOT`l?Y(?Q-+A1`ZTP=8voJJp&Y^ zAs{gU|EVE=?=Ntd0U!XR;O}7)$bag+KO6Yp3)Qa%0030*2aO2w-(~A}(!Uq3Ux+_R z+5e6CW0?J4WUqdq{;*$UzYIJ|6&!5sewE4J`OZx>ZLGja=?*TG|8oA5kLJH&`gV4| z^7HR#F*coW-M`Rie-QmE+HUZ_|0XrGbuj)XI2t)Xg9hw~3?~0IB7WJQ7pTP$F4*VY# z@$af(q?+$Bq5}XWR^UwdlmD-l_{jc>`oG)wJ6vLg{%{+t*g80Ta4UbZzw~m6l7KrqB>Gr@8 z{jvXYG4J Date: Wed, 19 Nov 2025 11:49:22 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 小米便签泛读报告.docx | Bin 140825 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 小米便签泛读报告.docx diff --git a/小米便签泛读报告.docx b/小米便签泛读报告.docx deleted file mode 100644 index 8b562ee51a01f1dd171e589bb67fed12634ea2f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140825 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%0AV@*fogsKn)UlS8OQ~m4rCIN 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 Date: Wed, 19 Nov 2025 11:50:56 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../小米便签泛读报告.docx | Bin 0 -> 140825 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 小米便签泛读报告/小米便签泛读报告.docx diff --git a/小米便签泛读报告/小米便签泛读报告.docx b/小米便签泛读报告/小米便签泛读报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..8b562ee51a01f1dd171e589bb67fed12634ea2f2 GIT binary patch literal 140825 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%0AV@*fogsKn)UlS8OQ~m4rCIN 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 Date: Sun, 23 Nov 2025 10:42:36 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=B1=BB=E7=9A=84?= =?UTF-8?q?=E7=A7=8D=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../小米便签泛读报告.docx | Bin 140825 -> 143939 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/小米便签泛读报告/小米便签泛读报告.docx b/小米便签泛读报告/小米便签泛读报告.docx index 8b562ee51a01f1dd171e589bb67fed12634ea2f2..9e974ca1230352ce458d8d296b9cfbe182c315a2 100644 GIT binary patch delta 14332 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 Date: Sun, 23 Nov 2025 11:01:42 +0800 Subject: [PATCH 09/19] 10 --- doc/小米便签泛读报告.docx | Bin 161398 -> 17493 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/小米便签泛读报告.docx b/doc/小米便签泛读报告.docx index da8741c90b90dcb3ba82db4100fbfdcb025738ba..29510d54740b36c9bbf0aa074b540d216c07ea92 100644 GIT binary patch delta 4283 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
    x?@1Z+sfx&*PH3E#Ha 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

    wMxf4$8_xd7B)9xe0{suSw)W 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 Date: Sun, 23 Nov 2025 11:05:00 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../小米便签泛读报告.docx | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename {小米便签泛读报告 => doc}/小米便签泛读报告.docx (100%) diff --git a/小米便签泛读报告/小米便签泛读报告.docx b/doc/小米便签泛读报告.docx similarity index 100% rename from 小米便签泛读报告/小米便签泛读报告.docx rename to doc/小米便签泛读报告.docx -- 2.34.1 From 56664871b65b3ed3e04ec61521a129ce343e4b4a Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Sun, 23 Nov 2025 12:18:31 +0800 Subject: [PATCH 11/19] src --- src/net/micode/notes/data/Contact.java | 73 ++ src/net/micode/notes/data/Notes.java | 279 +++++ .../notes/data/NotesDatabaseHelper.java | 362 +++++++ src/net/micode/notes/data/NotesProvider.java | 305 ++++++ src/net/micode/notes/gtask/data/MetaData.java | 82 ++ src/net/micode/notes/gtask/data/Node.java | 101 ++ src/net/micode/notes/gtask/data/SqlData.java | 189 ++++ src/net/micode/notes/gtask/data/SqlNote.java | 505 +++++++++ src/net/micode/notes/gtask/data/Task.java | 351 +++++++ src/net/micode/notes/gtask/data/TaskList.java | 343 +++++++ .../exception/ActionFailureException.java | 33 + .../exception/NetworkFailureException.java | 33 + .../notes/gtask/remote/GTaskASyncTask.java | 123 +++ .../notes/gtask/remote/GTaskClient.java | 585 +++++++++++ .../notes/gtask/remote/GTaskManager.java | 800 +++++++++++++++ .../notes/gtask/remote/GTaskSyncService.java | 128 +++ src/net/micode/notes/model/Note.java | 253 +++++ src/net/micode/notes/model/WorkingNote.java | 368 +++++++ src/net/micode/notes/tool/BackupUtils.java | 344 +++++++ src/net/micode/notes/tool/DataUtils.java | 295 ++++++ .../micode/notes/tool/GTaskStringUtils.java | 113 +++ src/net/micode/notes/tool/ResourceParser.java | 181 ++++ .../micode/notes/ui/AlarmAlertActivity.java | 158 +++ .../micode/notes/ui/AlarmInitReceiver.java | 65 ++ src/net/micode/notes/ui/AlarmReceiver.java | 30 + src/net/micode/notes/ui/DateTimePicker.java | 485 +++++++++ .../micode/notes/ui/DateTimePickerDialog.java | 90 ++ src/net/micode/notes/ui/DropdownMenu.java | 61 ++ .../micode/notes/ui/FoldersListAdapter.java | 80 ++ src/net/micode/notes/ui/NoteEditActivity.java | 873 ++++++++++++++++ src/net/micode/notes/ui/NoteEditText.java | 217 ++++ src/net/micode/notes/ui/NoteItemData.java | 224 ++++ .../micode/notes/ui/NotesListActivity.java | 954 ++++++++++++++++++ src/net/micode/notes/ui/NotesListAdapter.java | 184 ++++ src/net/micode/notes/ui/NotesListItem.java | 122 +++ .../notes/ui/NotesPreferenceActivity.java | 388 +++++++ .../notes/widget/NoteWidgetProvider.java | 132 +++ .../notes/widget/NoteWidgetProvider_2x.java | 47 + .../notes/widget/NoteWidgetProvider_4x.java | 46 + 39 files changed, 10002 insertions(+) create mode 100644 src/net/micode/notes/data/Contact.java create mode 100644 src/net/micode/notes/data/Notes.java create mode 100644 src/net/micode/notes/data/NotesDatabaseHelper.java create mode 100644 src/net/micode/notes/data/NotesProvider.java create mode 100644 src/net/micode/notes/gtask/data/MetaData.java create mode 100644 src/net/micode/notes/gtask/data/Node.java create mode 100644 src/net/micode/notes/gtask/data/SqlData.java create mode 100644 src/net/micode/notes/gtask/data/SqlNote.java create mode 100644 src/net/micode/notes/gtask/data/Task.java create mode 100644 src/net/micode/notes/gtask/data/TaskList.java create mode 100644 src/net/micode/notes/gtask/exception/ActionFailureException.java create mode 100644 src/net/micode/notes/gtask/exception/NetworkFailureException.java create mode 100644 src/net/micode/notes/gtask/remote/GTaskASyncTask.java create mode 100644 src/net/micode/notes/gtask/remote/GTaskClient.java create mode 100644 src/net/micode/notes/gtask/remote/GTaskManager.java create mode 100644 src/net/micode/notes/gtask/remote/GTaskSyncService.java create mode 100644 src/net/micode/notes/model/Note.java create mode 100644 src/net/micode/notes/model/WorkingNote.java create mode 100644 src/net/micode/notes/tool/BackupUtils.java create mode 100644 src/net/micode/notes/tool/DataUtils.java create mode 100644 src/net/micode/notes/tool/GTaskStringUtils.java create mode 100644 src/net/micode/notes/tool/ResourceParser.java create mode 100644 src/net/micode/notes/ui/AlarmAlertActivity.java create mode 100644 src/net/micode/notes/ui/AlarmInitReceiver.java create mode 100644 src/net/micode/notes/ui/AlarmReceiver.java create mode 100644 src/net/micode/notes/ui/DateTimePicker.java create mode 100644 src/net/micode/notes/ui/DateTimePickerDialog.java create mode 100644 src/net/micode/notes/ui/DropdownMenu.java create mode 100644 src/net/micode/notes/ui/FoldersListAdapter.java create mode 100644 src/net/micode/notes/ui/NoteEditActivity.java create mode 100644 src/net/micode/notes/ui/NoteEditText.java create mode 100644 src/net/micode/notes/ui/NoteItemData.java create mode 100644 src/net/micode/notes/ui/NotesListActivity.java create mode 100644 src/net/micode/notes/ui/NotesListAdapter.java create mode 100644 src/net/micode/notes/ui/NotesListItem.java create mode 100644 src/net/micode/notes/ui/NotesPreferenceActivity.java create mode 100644 src/net/micode/notes/widget/NoteWidgetProvider.java create mode 100644 src/net/micode/notes/widget/NoteWidgetProvider_2x.java create mode 100644 src/net/micode/notes/widget/NoteWidgetProvider_4x.java diff --git a/src/net/micode/notes/data/Contact.java b/src/net/micode/notes/data/Contact.java new file mode 100644 index 0000000..d97ac5d --- /dev/null +++ b/src/net/micode/notes/data/Contact.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.data; + +import android.content.Context; +import android.database.Cursor; +import android.provider.ContactsContract.CommonDataKinds.Phone; +import android.provider.ContactsContract.Data; +import android.telephony.PhoneNumberUtils; +import android.util.Log; + +import java.util.HashMap; + +public class Contact { + private static HashMap sContactCache; + private static final String TAG = "Contact"; + + private static final String CALLER_ID_SELECTION = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER + + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'" + + " AND " + Data.RAW_CONTACT_ID + " IN " + + "(SELECT raw_contact_id " + + " FROM phone_lookup" + + " WHERE min_match = '+')"; + + public static String getContact(Context context, String phoneNumber) { + if(sContactCache == null) { + sContactCache = new HashMap(); + } + + if(sContactCache.containsKey(phoneNumber)) { + return sContactCache.get(phoneNumber); + } + + String selection = CALLER_ID_SELECTION.replace("+", + PhoneNumberUtils.toCallerIDMinMatch(phoneNumber)); + Cursor cursor = context.getContentResolver().query( + Data.CONTENT_URI, + new String [] { Phone.DISPLAY_NAME }, + selection, + new String[] { phoneNumber }, + null); + + if (cursor != null && cursor.moveToFirst()) { + try { + String name = cursor.getString(0); + sContactCache.put(phoneNumber, name); + return name; + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, " Cursor get string error " + e.toString()); + return null; + } finally { + cursor.close(); + } + } else { + Log.d(TAG, "No contact matched with number:" + phoneNumber); + return null; + } + } +} diff --git a/src/net/micode/notes/data/Notes.java b/src/net/micode/notes/data/Notes.java new file mode 100644 index 0000000..f240604 --- /dev/null +++ b/src/net/micode/notes/data/Notes.java @@ -0,0 +1,279 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.data; + +import android.net.Uri; +public class Notes { + public static final String AUTHORITY = "micode_notes"; + public static final String TAG = "Notes"; + public static final int TYPE_NOTE = 0; + public static final int TYPE_FOLDER = 1; + public static final int TYPE_SYSTEM = 2; + + /** + * Following IDs are system folders' identifiers + * {@link Notes#ID_ROOT_FOLDER } is default folder + * {@link Notes#ID_TEMPARAY_FOLDER } is for notes belonging no folder + * {@link Notes#ID_CALL_RECORD_FOLDER} is to store call records + */ + public static final int ID_ROOT_FOLDER = 0; + public static final int ID_TEMPARAY_FOLDER = -1; + public static final int ID_CALL_RECORD_FOLDER = -2; + public static final int ID_TRASH_FOLER = -3; + + public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date"; + public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id"; + public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id"; + public static final String INTENT_EXTRA_WIDGET_TYPE = "net.micode.notes.widget_type"; + public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id"; + public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date"; + + public static final int TYPE_WIDGET_INVALIDE = -1; + public static final int TYPE_WIDGET_2X = 0; + public static final int TYPE_WIDGET_4X = 1; + + public static class DataConstants { + public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; + public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; + } + + /** + * Uri to query all notes and folders + */ + public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note"); + + /** + * Uri to query data + */ + public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); + + public interface NoteColumns { + /** + * The unique ID for a row + *

    Type: INTEGER (long)

    + */ + public static final String ID = "_id"; + + /** + * The parent's id for note or folder + *

    Type: INTEGER (long)

    + */ + public static final String PARENT_ID = "parent_id"; + + /** + * Created data for note or folder + *

    Type: INTEGER (long)

    + */ + public static final String CREATED_DATE = "created_date"; + + /** + * Latest modified date + *

    Type: INTEGER (long)

    + */ + public static final String MODIFIED_DATE = "modified_date"; + + + /** + * Alert date + *

    Type: INTEGER (long)

    + */ + public static final String ALERTED_DATE = "alert_date"; + + /** + * Folder's name or text content of note + *

    Type: TEXT

    + */ + public static final String SNIPPET = "snippet"; + + /** + * Note's widget id + *

    Type: INTEGER (long)

    + */ + public static final String WIDGET_ID = "widget_id"; + + /** + * Note's widget type + *

    Type: INTEGER (long)

    + */ + public static final String WIDGET_TYPE = "widget_type"; + + /** + * Note's background color's id + *

    Type: INTEGER (long)

    + */ + public static final String BG_COLOR_ID = "bg_color_id"; + + /** + * For text note, it doesn't has attachment, for multi-media + * note, it has at least one attachment + *

    Type: INTEGER

    + */ + public static final String HAS_ATTACHMENT = "has_attachment"; + + /** + * Folder's count of notes + *

    Type: INTEGER (long)

    + */ + public static final String NOTES_COUNT = "notes_count"; + + /** + * The file type: folder or note + *

    Type: INTEGER

    + */ + public static final String TYPE = "type"; + + /** + * The last sync id + *

    Type: INTEGER (long)

    + */ + public static final String SYNC_ID = "sync_id"; + + /** + * Sign to indicate local modified or not + *

    Type: INTEGER

    + */ + public static final String LOCAL_MODIFIED = "local_modified"; + + /** + * Original parent id before moving into temporary folder + *

    Type : INTEGER

    + */ + public static final String ORIGIN_PARENT_ID = "origin_parent_id"; + + /** + * The gtask id + *

    Type : TEXT

    + */ + public static final String GTASK_ID = "gtask_id"; + + /** + * The version code + *

    Type : INTEGER (long)

    + */ + public static final String VERSION = "version"; + } + + public interface DataColumns { + /** + * The unique ID for a row + *

    Type: INTEGER (long)

    + */ + public static final String ID = "_id"; + + /** + * The MIME type of the item represented by this row. + *

    Type: Text

    + */ + public static final String MIME_TYPE = "mime_type"; + + /** + * The reference id to note that this data belongs to + *

    Type: INTEGER (long)

    + */ + public static final String NOTE_ID = "note_id"; + + /** + * Created data for note or folder + *

    Type: INTEGER (long)

    + */ + public static final String CREATED_DATE = "created_date"; + + /** + * Latest modified date + *

    Type: INTEGER (long)

    + */ + public static final String MODIFIED_DATE = "modified_date"; + + /** + * Data's content + *

    Type: TEXT

    + */ + public static final String CONTENT = "content"; + + + /** + * Generic data column, the meaning is {@link #MIMETYPE} specific, used for + * integer data type + *

    Type: INTEGER

    + */ + public static final String DATA1 = "data1"; + + /** + * Generic data column, the meaning is {@link #MIMETYPE} specific, used for + * integer data type + *

    Type: INTEGER

    + */ + public static final String DATA2 = "data2"; + + /** + * Generic data column, the meaning is {@link #MIMETYPE} specific, used for + * TEXT data type + *

    Type: TEXT

    + */ + public static final String DATA3 = "data3"; + + /** + * Generic data column, the meaning is {@link #MIMETYPE} specific, used for + * TEXT data type + *

    Type: TEXT

    + */ + public static final String DATA4 = "data4"; + + /** + * Generic data column, the meaning is {@link #MIMETYPE} specific, used for + * TEXT data type + *

    Type: TEXT

    + */ + public static final String DATA5 = "data5"; + } + + public static final class TextNote implements DataColumns { + /** + * Mode to indicate the text in check list mode or not + *

    Type: Integer 1:check list mode 0: normal mode

    + */ + public static final String MODE = DATA1; + + public static final int MODE_CHECK_LIST = 1; + + public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; + + public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; + + public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); + } + + public static final class CallNote implements DataColumns { + /** + * Call date for this record + *

    Type: INTEGER (long)

    + */ + public static final String CALL_DATE = DATA1; + + /** + * Phone number for this record + *

    Type: TEXT

    + */ + public static final String PHONE_NUMBER = DATA3; + + public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; + + public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; + + public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); + } +} diff --git a/src/net/micode/notes/data/NotesDatabaseHelper.java b/src/net/micode/notes/data/NotesDatabaseHelper.java new file mode 100644 index 0000000..ffe5d57 --- /dev/null +++ b/src/net/micode/notes/data/NotesDatabaseHelper.java @@ -0,0 +1,362 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.data; + +import android.content.ContentValues; +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; + +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; + + +public class NotesDatabaseHelper extends SQLiteOpenHelper { + private static final String DB_NAME = "note.db"; + + private static final int DB_VERSION = 4; + + public interface TABLE { + public static final String NOTE = "note"; + + public static final String DATA = "data"; + } + + private static final String TAG = "NotesDatabaseHelper"; + + private static NotesDatabaseHelper mInstance; + + private static final String CREATE_NOTE_TABLE_SQL = + "CREATE TABLE " + TABLE.NOTE + "(" + + NoteColumns.ID + " INTEGER PRIMARY KEY," + + NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," + + NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," + + NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + + ")"; + + private static final String CREATE_DATA_TABLE_SQL = + "CREATE TABLE " + TABLE.DATA + "(" + + DataColumns.ID + " INTEGER PRIMARY KEY," + + DataColumns.MIME_TYPE + " TEXT NOT NULL," + + DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," + + DataColumns.DATA1 + " INTEGER," + + DataColumns.DATA2 + " INTEGER," + + DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," + + DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + + DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + + ")"; + + private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = + "CREATE INDEX IF NOT EXISTS note_id_index ON " + + TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; + + /** + * Increase folder's note count when move note to the folder + */ + private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = + "CREATE TRIGGER increase_folder_count_on_update "+ + " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + + " END"; + + /** + * Decrease folder's note count when move note from folder + */ + private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = + "CREATE TRIGGER decrease_folder_count_on_update " + + " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + + " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + + " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + + " END"; + + /** + * Increase folder's note count when insert new note to the folder + */ + private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = + "CREATE TRIGGER increase_folder_count_on_insert " + + " AFTER INSERT ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + + " END"; + + /** + * Decrease folder's note count when delete note from the folder + */ + private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = + "CREATE TRIGGER decrease_folder_count_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + + " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + + " AND " + NoteColumns.NOTES_COUNT + ">0;" + + " END"; + + /** + * Update note's content when insert data with type {@link DataConstants#NOTE} + */ + private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER = + "CREATE TRIGGER update_note_content_on_insert " + + " AFTER INSERT ON " + TABLE.DATA + + " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + + " END"; + + /** + * Update note's content when data with {@link DataConstants#NOTE} type has changed + */ + private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER = + "CREATE TRIGGER update_note_content_on_update " + + " AFTER UPDATE ON " + TABLE.DATA + + " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + + " END"; + + /** + * Update note's content when data with {@link DataConstants#NOTE} type has deleted + */ + private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER = + "CREATE TRIGGER update_note_content_on_delete " + + " AFTER delete ON " + TABLE.DATA + + " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=''" + + " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + + " END"; + + /** + * Delete datas belong to note which has been deleted + */ + private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER = + "CREATE TRIGGER delete_data_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN" + + " DELETE FROM " + TABLE.DATA + + " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + /** + * Delete notes belong to folder which has been deleted + */ + private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER = + "CREATE TRIGGER folder_delete_notes_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN" + + " DELETE FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + /** + * Move notes belong to folder which has been moved to trash folder + */ + private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = + "CREATE TRIGGER folder_move_notes_on_trash " + + " AFTER UPDATE ON " + TABLE.NOTE + + " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + public NotesDatabaseHelper(Context context) { + super(context, DB_NAME, null, DB_VERSION); + } + + public void createNoteTable(SQLiteDatabase db) { + db.execSQL(CREATE_NOTE_TABLE_SQL); + reCreateNoteTableTriggers(db); + createSystemFolder(db); + Log.d(TAG, "note table has been created"); + } + + private void reCreateNoteTableTriggers(SQLiteDatabase db) { + db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); + db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); + db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS delete_data_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_insert"); + db.execSQL("DROP TRIGGER IF EXISTS folder_delete_notes_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS folder_move_notes_on_trash"); + + db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); + db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); + db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER); + db.execSQL(NOTE_DELETE_DATA_ON_DELETE_TRIGGER); + db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER); + db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER); + db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); + } + + private void createSystemFolder(SQLiteDatabase db) { + ContentValues values = new ContentValues(); + + /** + * call record foler for call notes + */ + values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + + /** + * root folder which is default folder + */ + values.clear(); + values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + + /** + * temporary folder which is used for moving note + */ + values.clear(); + values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + + /** + * create trash folder + */ + values.clear(); + values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + } + + public void createDataTable(SQLiteDatabase db) { + db.execSQL(CREATE_DATA_TABLE_SQL); + reCreateDataTableTriggers(db); + db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL); + Log.d(TAG, "data table has been created"); + } + + private void reCreateDataTableTriggers(SQLiteDatabase db) { + db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert"); + db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update"); + db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete"); + + db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER); + db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER); + db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); + } + + static synchronized NotesDatabaseHelper getInstance(Context context) { + if (mInstance == null) { + mInstance = new NotesDatabaseHelper(context); + } + return mInstance; + } + + @Override + public void onCreate(SQLiteDatabase db) { + createNoteTable(db); + createDataTable(db); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + boolean reCreateTriggers = false; + boolean skipV2 = false; + + if (oldVersion == 1) { + upgradeToV2(db); + skipV2 = true; // this upgrade including the upgrade from v2 to v3 + oldVersion++; + } + + if (oldVersion == 2 && !skipV2) { + upgradeToV3(db); + reCreateTriggers = true; + oldVersion++; + } + + if (oldVersion == 3) { + upgradeToV4(db); + oldVersion++; + } + + if (reCreateTriggers) { + reCreateNoteTableTriggers(db); + reCreateDataTableTriggers(db); + } + + if (oldVersion != newVersion) { + throw new IllegalStateException("Upgrade notes database to version " + newVersion + + "fails"); + } + } + + private void upgradeToV2(SQLiteDatabase db) { + db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); + db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); + createNoteTable(db); + createDataTable(db); + } + + private void upgradeToV3(SQLiteDatabase db) { + // drop unused triggers + db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert"); + db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_update"); + // add a column for gtask id + db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID + + " TEXT NOT NULL DEFAULT ''"); + // add a trash system folder + ContentValues values = new ContentValues(); + values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + } + + private void upgradeToV4(SQLiteDatabase db) { + db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + + " INTEGER NOT NULL DEFAULT 0"); + } +} diff --git a/src/net/micode/notes/data/NotesProvider.java b/src/net/micode/notes/data/NotesProvider.java new file mode 100644 index 0000000..edb0a60 --- /dev/null +++ b/src/net/micode/notes/data/NotesProvider.java @@ -0,0 +1,305 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.data; + + +import android.app.SearchManager; +import android.content.ContentProvider; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Intent; +import android.content.UriMatcher; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.R; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.NotesDatabaseHelper.TABLE; + + +public class NotesProvider extends ContentProvider { + private static final UriMatcher mMatcher; + + private NotesDatabaseHelper mHelper; + + private static final String TAG = "NotesProvider"; + + private static final int URI_NOTE = 1; + private static final int URI_NOTE_ITEM = 2; + private static final int URI_DATA = 3; + private static final int URI_DATA_ITEM = 4; + + private static final int URI_SEARCH = 5; + private static final int URI_SEARCH_SUGGEST = 6; + + static { + mMatcher = new UriMatcher(UriMatcher.NO_MATCH); + mMatcher.addURI(Notes.AUTHORITY, "note", URI_NOTE); + mMatcher.addURI(Notes.AUTHORITY, "note/#", URI_NOTE_ITEM); + mMatcher.addURI(Notes.AUTHORITY, "data", URI_DATA); + mMatcher.addURI(Notes.AUTHORITY, "data/#", URI_DATA_ITEM); + mMatcher.addURI(Notes.AUTHORITY, "search", URI_SEARCH); + mMatcher.addURI(Notes.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY, URI_SEARCH_SUGGEST); + mMatcher.addURI(Notes.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*", URI_SEARCH_SUGGEST); + } + + /** + * x'0A' represents the '\n' character in sqlite. For title and content in the search result, + * we will trim '\n' and white space in order to show more information. + */ + private static final String NOTES_SEARCH_PROJECTION = NoteColumns.ID + "," + + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_1 + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_2 + "," + + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + "," + + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + "," + + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA; + + private static String NOTES_SNIPPET_SEARCH_QUERY = "SELECT " + NOTES_SEARCH_PROJECTION + + " FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.SNIPPET + " LIKE ?" + + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE; + + @Override + public boolean onCreate() { + mHelper = NotesDatabaseHelper.getInstance(getContext()); + return true; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + Cursor c = null; + SQLiteDatabase db = mHelper.getReadableDatabase(); + String id = null; + switch (mMatcher.match(uri)) { + case URI_NOTE: + c = db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null, + sortOrder); + break; + case URI_NOTE_ITEM: + id = uri.getPathSegments().get(1); + c = db.query(TABLE.NOTE, projection, NoteColumns.ID + "=" + id + + parseSelection(selection), selectionArgs, null, null, sortOrder); + break; + case URI_DATA: + c = db.query(TABLE.DATA, projection, selection, selectionArgs, null, null, + sortOrder); + break; + case URI_DATA_ITEM: + id = uri.getPathSegments().get(1); + c = db.query(TABLE.DATA, projection, DataColumns.ID + "=" + id + + parseSelection(selection), selectionArgs, null, null, sortOrder); + break; + case URI_SEARCH: + case URI_SEARCH_SUGGEST: + if (sortOrder != null || projection != null) { + throw new IllegalArgumentException( + "do not specify sortOrder, selection, selectionArgs, or projection" + "with this query"); + } + + String searchString = null; + if (mMatcher.match(uri) == URI_SEARCH_SUGGEST) { + if (uri.getPathSegments().size() > 1) { + searchString = uri.getPathSegments().get(1); + } + } else { + searchString = uri.getQueryParameter("pattern"); + } + + if (TextUtils.isEmpty(searchString)) { + return null; + } + + try { + searchString = String.format("%%%s%%", searchString); + c = db.rawQuery(NOTES_SNIPPET_SEARCH_QUERY, + new String[] { searchString }); + } catch (IllegalStateException ex) { + Log.e(TAG, "got exception: " + ex.toString()); + } + break; + default: + throw new IllegalArgumentException("Unknown URI " + uri); + } + if (c != null) { + c.setNotificationUri(getContext().getContentResolver(), uri); + } + return c; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + SQLiteDatabase db = mHelper.getWritableDatabase(); + long dataId = 0, noteId = 0, insertedId = 0; + switch (mMatcher.match(uri)) { + case URI_NOTE: + insertedId = noteId = db.insert(TABLE.NOTE, null, values); + break; + case URI_DATA: + if (values.containsKey(DataColumns.NOTE_ID)) { + noteId = values.getAsLong(DataColumns.NOTE_ID); + } else { + Log.d(TAG, "Wrong data format without note id:" + values.toString()); + } + insertedId = dataId = db.insert(TABLE.DATA, null, values); + break; + default: + throw new IllegalArgumentException("Unknown URI " + uri); + } + // Notify the note uri + if (noteId > 0) { + getContext().getContentResolver().notifyChange( + ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null); + } + + // Notify the data uri + if (dataId > 0) { + getContext().getContentResolver().notifyChange( + ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null); + } + + return ContentUris.withAppendedId(uri, insertedId); + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + int count = 0; + String id = null; + SQLiteDatabase db = mHelper.getWritableDatabase(); + boolean deleteData = false; + switch (mMatcher.match(uri)) { + case URI_NOTE: + selection = "(" + selection + ") AND " + NoteColumns.ID + ">0 "; + count = db.delete(TABLE.NOTE, selection, selectionArgs); + break; + case URI_NOTE_ITEM: + id = uri.getPathSegments().get(1); + /** + * ID that smaller than 0 is system folder which is not allowed to + * trash + */ + long noteId = Long.valueOf(id); + if (noteId <= 0) { + break; + } + count = db.delete(TABLE.NOTE, + NoteColumns.ID + "=" + id + parseSelection(selection), selectionArgs); + break; + case URI_DATA: + count = db.delete(TABLE.DATA, selection, selectionArgs); + deleteData = true; + break; + case URI_DATA_ITEM: + id = uri.getPathSegments().get(1); + count = db.delete(TABLE.DATA, + DataColumns.ID + "=" + id + parseSelection(selection), selectionArgs); + deleteData = true; + break; + default: + throw new IllegalArgumentException("Unknown URI " + uri); + } + if (count > 0) { + if (deleteData) { + getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); + } + getContext().getContentResolver().notifyChange(uri, null); + } + return count; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + int count = 0; + String id = null; + SQLiteDatabase db = mHelper.getWritableDatabase(); + boolean updateData = false; + switch (mMatcher.match(uri)) { + case URI_NOTE: + increaseNoteVersion(-1, selection, selectionArgs); + count = db.update(TABLE.NOTE, values, selection, selectionArgs); + break; + case URI_NOTE_ITEM: + id = uri.getPathSegments().get(1); + increaseNoteVersion(Long.valueOf(id), selection, selectionArgs); + count = db.update(TABLE.NOTE, values, NoteColumns.ID + "=" + id + + parseSelection(selection), selectionArgs); + break; + case URI_DATA: + count = db.update(TABLE.DATA, values, selection, selectionArgs); + updateData = true; + break; + case URI_DATA_ITEM: + id = uri.getPathSegments().get(1); + count = db.update(TABLE.DATA, values, DataColumns.ID + "=" + id + + parseSelection(selection), selectionArgs); + updateData = true; + break; + default: + throw new IllegalArgumentException("Unknown URI " + uri); + } + + if (count > 0) { + if (updateData) { + getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); + } + getContext().getContentResolver().notifyChange(uri, null); + } + return count; + } + + private String parseSelection(String selection) { + return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""); + } + + private void increaseNoteVersion(long id, String selection, String[] selectionArgs) { + StringBuilder sql = new StringBuilder(120); + sql.append("UPDATE "); + sql.append(TABLE.NOTE); + sql.append(" SET "); + sql.append(NoteColumns.VERSION); + sql.append("=" + NoteColumns.VERSION + "+1 "); + + if (id > 0 || !TextUtils.isEmpty(selection)) { + sql.append(" WHERE "); + } + if (id > 0) { + sql.append(NoteColumns.ID + "=" + String.valueOf(id)); + } + if (!TextUtils.isEmpty(selection)) { + String selectString = id > 0 ? parseSelection(selection) : selection; + for (String args : selectionArgs) { + selectString = selectString.replaceFirst("\\?", args); + } + sql.append(selectString); + } + + mHelper.getWritableDatabase().execSQL(sql.toString()); + } + + @Override + public String getType(Uri uri) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/net/micode/notes/gtask/data/MetaData.java b/src/net/micode/notes/gtask/data/MetaData.java new file mode 100644 index 0000000..3a2050b --- /dev/null +++ b/src/net/micode/notes/gtask/data/MetaData.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; +import android.util.Log; + +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONException; +import org.json.JSONObject; + + +public class MetaData extends Task { + private final static String TAG = MetaData.class.getSimpleName(); + + private String mRelatedGid = null; + + public void setMeta(String gid, JSONObject metaInfo) { + try { + metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); + } catch (JSONException e) { + Log.e(TAG, "failed to put related gid"); + } + setNotes(metaInfo.toString()); + setName(GTaskStringUtils.META_NOTE_NAME); + } + + public String getRelatedGid() { + return mRelatedGid; + } + + @Override + public boolean isWorthSaving() { + return getNotes() != null; + } + + @Override + public void setContentByRemoteJSON(JSONObject js) { + super.setContentByRemoteJSON(js); + if (getNotes() != null) { + try { + JSONObject metaInfo = new JSONObject(getNotes().trim()); + mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID); + } catch (JSONException e) { + Log.w(TAG, "failed to get related gid"); + mRelatedGid = null; + } + } + } + + @Override + public void setContentByLocalJSON(JSONObject js) { + // this function should not be called + throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called"); + } + + @Override + public JSONObject getLocalJSONFromContent() { + throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called"); + } + + @Override + public int getSyncAction(Cursor c) { + throw new IllegalAccessError("MetaData:getSyncAction should not be called"); + } + +} diff --git a/src/net/micode/notes/gtask/data/Node.java b/src/net/micode/notes/gtask/data/Node.java new file mode 100644 index 0000000..63950e0 --- /dev/null +++ b/src/net/micode/notes/gtask/data/Node.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; + +import org.json.JSONObject; + +public abstract class Node { + public static final int SYNC_ACTION_NONE = 0; + + public static final int SYNC_ACTION_ADD_REMOTE = 1; + + public static final int SYNC_ACTION_ADD_LOCAL = 2; + + public static final int SYNC_ACTION_DEL_REMOTE = 3; + + public static final int SYNC_ACTION_DEL_LOCAL = 4; + + public static final int SYNC_ACTION_UPDATE_REMOTE = 5; + + public static final int SYNC_ACTION_UPDATE_LOCAL = 6; + + public static final int SYNC_ACTION_UPDATE_CONFLICT = 7; + + public static final int SYNC_ACTION_ERROR = 8; + + private String mGid; + + private String mName; + + private long mLastModified; + + private boolean mDeleted; + + public Node() { + mGid = null; + mName = ""; + mLastModified = 0; + mDeleted = false; + } + + public abstract JSONObject getCreateAction(int actionId); + + public abstract JSONObject getUpdateAction(int actionId); + + public abstract void setContentByRemoteJSON(JSONObject js); + + public abstract void setContentByLocalJSON(JSONObject js); + + public abstract JSONObject getLocalJSONFromContent(); + + public abstract int getSyncAction(Cursor c); + + public void setGid(String gid) { + this.mGid = gid; + } + + public void setName(String name) { + this.mName = name; + } + + public void setLastModified(long lastModified) { + this.mLastModified = lastModified; + } + + public void setDeleted(boolean deleted) { + this.mDeleted = deleted; + } + + public String getGid() { + return this.mGid; + } + + public String getName() { + return this.mName; + } + + public long getLastModified() { + return this.mLastModified; + } + + public boolean getDeleted() { + return this.mDeleted; + } + +} diff --git a/src/net/micode/notes/gtask/data/SqlData.java b/src/net/micode/notes/gtask/data/SqlData.java new file mode 100644 index 0000000..d3ec3be --- /dev/null +++ b/src/net/micode/notes/gtask/data/SqlData.java @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.NotesDatabaseHelper.TABLE; +import net.micode.notes.gtask.exception.ActionFailureException; + +import org.json.JSONException; +import org.json.JSONObject; + + +public class SqlData { + private static final String TAG = SqlData.class.getSimpleName(); + + private static final int INVALID_ID = -99999; + + public static final String[] PROJECTION_DATA = new String[] { + DataColumns.ID, DataColumns.MIME_TYPE, DataColumns.CONTENT, DataColumns.DATA1, + DataColumns.DATA3 + }; + + public static final int DATA_ID_COLUMN = 0; + + public static final int DATA_MIME_TYPE_COLUMN = 1; + + public static final int DATA_CONTENT_COLUMN = 2; + + public static final int DATA_CONTENT_DATA_1_COLUMN = 3; + + public static final int DATA_CONTENT_DATA_3_COLUMN = 4; + + private ContentResolver mContentResolver; + + private boolean mIsCreate; + + private long mDataId; + + private String mDataMimeType; + + private String mDataContent; + + private long mDataContentData1; + + private String mDataContentData3; + + private ContentValues mDiffDataValues; + + public SqlData(Context context) { + mContentResolver = context.getContentResolver(); + mIsCreate = true; + mDataId = INVALID_ID; + mDataMimeType = DataConstants.NOTE; + mDataContent = ""; + mDataContentData1 = 0; + mDataContentData3 = ""; + mDiffDataValues = new ContentValues(); + } + + public SqlData(Context context, Cursor c) { + mContentResolver = context.getContentResolver(); + mIsCreate = false; + loadFromCursor(c); + mDiffDataValues = new ContentValues(); + } + + private void loadFromCursor(Cursor c) { + mDataId = c.getLong(DATA_ID_COLUMN); + mDataMimeType = c.getString(DATA_MIME_TYPE_COLUMN); + mDataContent = c.getString(DATA_CONTENT_COLUMN); + mDataContentData1 = c.getLong(DATA_CONTENT_DATA_1_COLUMN); + mDataContentData3 = c.getString(DATA_CONTENT_DATA_3_COLUMN); + } + + public void setContent(JSONObject js) throws JSONException { + long dataId = js.has(DataColumns.ID) ? js.getLong(DataColumns.ID) : INVALID_ID; + if (mIsCreate || mDataId != dataId) { + mDiffDataValues.put(DataColumns.ID, dataId); + } + mDataId = dataId; + + String dataMimeType = js.has(DataColumns.MIME_TYPE) ? js.getString(DataColumns.MIME_TYPE) + : DataConstants.NOTE; + if (mIsCreate || !mDataMimeType.equals(dataMimeType)) { + mDiffDataValues.put(DataColumns.MIME_TYPE, dataMimeType); + } + mDataMimeType = dataMimeType; + + String dataContent = js.has(DataColumns.CONTENT) ? js.getString(DataColumns.CONTENT) : ""; + if (mIsCreate || !mDataContent.equals(dataContent)) { + mDiffDataValues.put(DataColumns.CONTENT, dataContent); + } + mDataContent = dataContent; + + long dataContentData1 = js.has(DataColumns.DATA1) ? js.getLong(DataColumns.DATA1) : 0; + if (mIsCreate || mDataContentData1 != dataContentData1) { + mDiffDataValues.put(DataColumns.DATA1, dataContentData1); + } + mDataContentData1 = dataContentData1; + + String dataContentData3 = js.has(DataColumns.DATA3) ? js.getString(DataColumns.DATA3) : ""; + if (mIsCreate || !mDataContentData3.equals(dataContentData3)) { + mDiffDataValues.put(DataColumns.DATA3, dataContentData3); + } + mDataContentData3 = dataContentData3; + } + + public JSONObject getContent() throws JSONException { + if (mIsCreate) { + Log.e(TAG, "it seems that we haven't created this in database yet"); + return null; + } + JSONObject js = new JSONObject(); + js.put(DataColumns.ID, mDataId); + js.put(DataColumns.MIME_TYPE, mDataMimeType); + js.put(DataColumns.CONTENT, mDataContent); + js.put(DataColumns.DATA1, mDataContentData1); + js.put(DataColumns.DATA3, mDataContentData3); + return js; + } + + public void commit(long noteId, boolean validateVersion, long version) { + + if (mIsCreate) { + if (mDataId == INVALID_ID && mDiffDataValues.containsKey(DataColumns.ID)) { + mDiffDataValues.remove(DataColumns.ID); + } + + mDiffDataValues.put(DataColumns.NOTE_ID, noteId); + Uri uri = mContentResolver.insert(Notes.CONTENT_DATA_URI, mDiffDataValues); + try { + mDataId = Long.valueOf(uri.getPathSegments().get(1)); + } catch (NumberFormatException e) { + Log.e(TAG, "Get note id error :" + e.toString()); + throw new ActionFailureException("create note failed"); + } + } else { + if (mDiffDataValues.size() > 0) { + int result = 0; + if (!validateVersion) { + result = mContentResolver.update(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null); + } else { + result = mContentResolver.update(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, + " ? in (SELECT " + NoteColumns.ID + " FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.VERSION + "=?)", new String[] { + String.valueOf(noteId), String.valueOf(version) + }); + } + if (result == 0) { + Log.w(TAG, "there is no update. maybe user updates note when syncing"); + } + } + } + + mDiffDataValues.clear(); + mIsCreate = false; + } + + public long getId() { + return mDataId; + } +} diff --git a/src/net/micode/notes/gtask/data/SqlNote.java b/src/net/micode/notes/gtask/data/SqlNote.java new file mode 100644 index 0000000..79a4095 --- /dev/null +++ b/src/net/micode/notes/gtask/data/SqlNote.java @@ -0,0 +1,505 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.appwidget.AppWidgetManager; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.tool.GTaskStringUtils; +import net.micode.notes.tool.ResourceParser; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; + + +public class SqlNote { + private static final String TAG = SqlNote.class.getSimpleName(); + + private static final int INVALID_ID = -99999; + + public static final String[] PROJECTION_NOTE = new String[] { + NoteColumns.ID, NoteColumns.ALERTED_DATE, NoteColumns.BG_COLOR_ID, + NoteColumns.CREATED_DATE, NoteColumns.HAS_ATTACHMENT, NoteColumns.MODIFIED_DATE, + NoteColumns.NOTES_COUNT, NoteColumns.PARENT_ID, NoteColumns.SNIPPET, NoteColumns.TYPE, + NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE, NoteColumns.SYNC_ID, + NoteColumns.LOCAL_MODIFIED, NoteColumns.ORIGIN_PARENT_ID, NoteColumns.GTASK_ID, + NoteColumns.VERSION + }; + + public static final int ID_COLUMN = 0; + + public static final int ALERTED_DATE_COLUMN = 1; + + public static final int BG_COLOR_ID_COLUMN = 2; + + public static final int CREATED_DATE_COLUMN = 3; + + public static final int HAS_ATTACHMENT_COLUMN = 4; + + public static final int MODIFIED_DATE_COLUMN = 5; + + public static final int NOTES_COUNT_COLUMN = 6; + + public static final int PARENT_ID_COLUMN = 7; + + public static final int SNIPPET_COLUMN = 8; + + public static final int TYPE_COLUMN = 9; + + public static final int WIDGET_ID_COLUMN = 10; + + public static final int WIDGET_TYPE_COLUMN = 11; + + public static final int SYNC_ID_COLUMN = 12; + + public static final int LOCAL_MODIFIED_COLUMN = 13; + + public static final int ORIGIN_PARENT_ID_COLUMN = 14; + + public static final int GTASK_ID_COLUMN = 15; + + public static final int VERSION_COLUMN = 16; + + private Context mContext; + + private ContentResolver mContentResolver; + + private boolean mIsCreate; + + private long mId; + + private long mAlertDate; + + private int mBgColorId; + + private long mCreatedDate; + + private int mHasAttachment; + + private long mModifiedDate; + + private long mParentId; + + private String mSnippet; + + private int mType; + + private int mWidgetId; + + private int mWidgetType; + + private long mOriginParent; + + private long mVersion; + + private ContentValues mDiffNoteValues; + + private ArrayList mDataList; + + public SqlNote(Context context) { + mContext = context; + mContentResolver = context.getContentResolver(); + mIsCreate = true; + mId = INVALID_ID; + mAlertDate = 0; + mBgColorId = ResourceParser.getDefaultBgId(context); + mCreatedDate = System.currentTimeMillis(); + mHasAttachment = 0; + mModifiedDate = System.currentTimeMillis(); + mParentId = 0; + mSnippet = ""; + mType = Notes.TYPE_NOTE; + mWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; + mWidgetType = Notes.TYPE_WIDGET_INVALIDE; + mOriginParent = 0; + mVersion = 0; + mDiffNoteValues = new ContentValues(); + mDataList = new ArrayList(); + } + + public SqlNote(Context context, Cursor c) { + mContext = context; + mContentResolver = context.getContentResolver(); + mIsCreate = false; + loadFromCursor(c); + mDataList = new ArrayList(); + if (mType == Notes.TYPE_NOTE) + loadDataContent(); + mDiffNoteValues = new ContentValues(); + } + + public SqlNote(Context context, long id) { + mContext = context; + mContentResolver = context.getContentResolver(); + mIsCreate = false; + loadFromCursor(id); + mDataList = new ArrayList(); + if (mType == Notes.TYPE_NOTE) + loadDataContent(); + mDiffNoteValues = new ContentValues(); + + } + + private void loadFromCursor(long id) { + Cursor c = null; + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, PROJECTION_NOTE, "(_id=?)", + new String[] { + String.valueOf(id) + }, null); + if (c != null) { + c.moveToNext(); + loadFromCursor(c); + } else { + Log.w(TAG, "loadFromCursor: cursor = null"); + } + } finally { + if (c != null) + c.close(); + } + } + + private void loadFromCursor(Cursor c) { + mId = c.getLong(ID_COLUMN); + mAlertDate = c.getLong(ALERTED_DATE_COLUMN); + mBgColorId = c.getInt(BG_COLOR_ID_COLUMN); + mCreatedDate = c.getLong(CREATED_DATE_COLUMN); + mHasAttachment = c.getInt(HAS_ATTACHMENT_COLUMN); + mModifiedDate = c.getLong(MODIFIED_DATE_COLUMN); + mParentId = c.getLong(PARENT_ID_COLUMN); + mSnippet = c.getString(SNIPPET_COLUMN); + mType = c.getInt(TYPE_COLUMN); + mWidgetId = c.getInt(WIDGET_ID_COLUMN); + mWidgetType = c.getInt(WIDGET_TYPE_COLUMN); + mVersion = c.getLong(VERSION_COLUMN); + } + + private void loadDataContent() { + Cursor c = null; + mDataList.clear(); + try { + c = mContentResolver.query(Notes.CONTENT_DATA_URI, SqlData.PROJECTION_DATA, + "(note_id=?)", new String[] { + String.valueOf(mId) + }, null); + if (c != null) { + if (c.getCount() == 0) { + Log.w(TAG, "it seems that the note has not data"); + return; + } + while (c.moveToNext()) { + SqlData data = new SqlData(mContext, c); + mDataList.add(data); + } + } else { + Log.w(TAG, "loadDataContent: cursor = null"); + } + } finally { + if (c != null) + c.close(); + } + } + + public boolean setContent(JSONObject js) { + try { + JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { + Log.w(TAG, "cannot set system folder"); + } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { + // for folder we can only update the snnipet and type + String snippet = note.has(NoteColumns.SNIPPET) ? note + .getString(NoteColumns.SNIPPET) : ""; + if (mIsCreate || !mSnippet.equals(snippet)) { + mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); + } + mSnippet = snippet; + + int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) + : Notes.TYPE_NOTE; + if (mIsCreate || mType != type) { + mDiffNoteValues.put(NoteColumns.TYPE, type); + } + mType = type; + } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_NOTE) { + JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + long id = note.has(NoteColumns.ID) ? note.getLong(NoteColumns.ID) : INVALID_ID; + if (mIsCreate || mId != id) { + mDiffNoteValues.put(NoteColumns.ID, id); + } + mId = id; + + long alertDate = note.has(NoteColumns.ALERTED_DATE) ? note + .getLong(NoteColumns.ALERTED_DATE) : 0; + if (mIsCreate || mAlertDate != alertDate) { + mDiffNoteValues.put(NoteColumns.ALERTED_DATE, alertDate); + } + mAlertDate = alertDate; + + int bgColorId = note.has(NoteColumns.BG_COLOR_ID) ? note + .getInt(NoteColumns.BG_COLOR_ID) : ResourceParser.getDefaultBgId(mContext); + if (mIsCreate || mBgColorId != bgColorId) { + mDiffNoteValues.put(NoteColumns.BG_COLOR_ID, bgColorId); + } + mBgColorId = bgColorId; + + long createDate = note.has(NoteColumns.CREATED_DATE) ? note + .getLong(NoteColumns.CREATED_DATE) : System.currentTimeMillis(); + if (mIsCreate || mCreatedDate != createDate) { + mDiffNoteValues.put(NoteColumns.CREATED_DATE, createDate); + } + mCreatedDate = createDate; + + int hasAttachment = note.has(NoteColumns.HAS_ATTACHMENT) ? note + .getInt(NoteColumns.HAS_ATTACHMENT) : 0; + if (mIsCreate || mHasAttachment != hasAttachment) { + mDiffNoteValues.put(NoteColumns.HAS_ATTACHMENT, hasAttachment); + } + mHasAttachment = hasAttachment; + + long modifiedDate = note.has(NoteColumns.MODIFIED_DATE) ? note + .getLong(NoteColumns.MODIFIED_DATE) : System.currentTimeMillis(); + if (mIsCreate || mModifiedDate != modifiedDate) { + mDiffNoteValues.put(NoteColumns.MODIFIED_DATE, modifiedDate); + } + mModifiedDate = modifiedDate; + + long parentId = note.has(NoteColumns.PARENT_ID) ? note + .getLong(NoteColumns.PARENT_ID) : 0; + if (mIsCreate || mParentId != parentId) { + mDiffNoteValues.put(NoteColumns.PARENT_ID, parentId); + } + mParentId = parentId; + + String snippet = note.has(NoteColumns.SNIPPET) ? note + .getString(NoteColumns.SNIPPET) : ""; + if (mIsCreate || !mSnippet.equals(snippet)) { + mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); + } + mSnippet = snippet; + + int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) + : Notes.TYPE_NOTE; + if (mIsCreate || mType != type) { + mDiffNoteValues.put(NoteColumns.TYPE, type); + } + mType = type; + + int widgetId = note.has(NoteColumns.WIDGET_ID) ? note.getInt(NoteColumns.WIDGET_ID) + : AppWidgetManager.INVALID_APPWIDGET_ID; + if (mIsCreate || mWidgetId != widgetId) { + mDiffNoteValues.put(NoteColumns.WIDGET_ID, widgetId); + } + mWidgetId = widgetId; + + int widgetType = note.has(NoteColumns.WIDGET_TYPE) ? note + .getInt(NoteColumns.WIDGET_TYPE) : Notes.TYPE_WIDGET_INVALIDE; + if (mIsCreate || mWidgetType != widgetType) { + mDiffNoteValues.put(NoteColumns.WIDGET_TYPE, widgetType); + } + mWidgetType = widgetType; + + long originParent = note.has(NoteColumns.ORIGIN_PARENT_ID) ? note + .getLong(NoteColumns.ORIGIN_PARENT_ID) : 0; + if (mIsCreate || mOriginParent != originParent) { + mDiffNoteValues.put(NoteColumns.ORIGIN_PARENT_ID, originParent); + } + mOriginParent = originParent; + + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + SqlData sqlData = null; + if (data.has(DataColumns.ID)) { + long dataId = data.getLong(DataColumns.ID); + for (SqlData temp : mDataList) { + if (dataId == temp.getId()) { + sqlData = temp; + } + } + } + + if (sqlData == null) { + sqlData = new SqlData(mContext); + mDataList.add(sqlData); + } + + sqlData.setContent(data); + } + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return false; + } + return true; + } + + public JSONObject getContent() { + try { + JSONObject js = new JSONObject(); + + if (mIsCreate) { + Log.e(TAG, "it seems that we haven't created this in database yet"); + return null; + } + + JSONObject note = new JSONObject(); + if (mType == Notes.TYPE_NOTE) { + note.put(NoteColumns.ID, mId); + note.put(NoteColumns.ALERTED_DATE, mAlertDate); + note.put(NoteColumns.BG_COLOR_ID, mBgColorId); + note.put(NoteColumns.CREATED_DATE, mCreatedDate); + note.put(NoteColumns.HAS_ATTACHMENT, mHasAttachment); + note.put(NoteColumns.MODIFIED_DATE, mModifiedDate); + note.put(NoteColumns.PARENT_ID, mParentId); + note.put(NoteColumns.SNIPPET, mSnippet); + note.put(NoteColumns.TYPE, mType); + note.put(NoteColumns.WIDGET_ID, mWidgetId); + note.put(NoteColumns.WIDGET_TYPE, mWidgetType); + note.put(NoteColumns.ORIGIN_PARENT_ID, mOriginParent); + js.put(GTaskStringUtils.META_HEAD_NOTE, note); + + JSONArray dataArray = new JSONArray(); + for (SqlData sqlData : mDataList) { + JSONObject data = sqlData.getContent(); + if (data != null) { + dataArray.put(data); + } + } + js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); + } else if (mType == Notes.TYPE_FOLDER || mType == Notes.TYPE_SYSTEM) { + note.put(NoteColumns.ID, mId); + note.put(NoteColumns.TYPE, mType); + note.put(NoteColumns.SNIPPET, mSnippet); + js.put(GTaskStringUtils.META_HEAD_NOTE, note); + } + + return js; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + return null; + } + + public void setParentId(long id) { + mParentId = id; + mDiffNoteValues.put(NoteColumns.PARENT_ID, id); + } + + public void setGtaskId(String gid) { + mDiffNoteValues.put(NoteColumns.GTASK_ID, gid); + } + + public void setSyncId(long syncId) { + mDiffNoteValues.put(NoteColumns.SYNC_ID, syncId); + } + + public void resetLocalModified() { + mDiffNoteValues.put(NoteColumns.LOCAL_MODIFIED, 0); + } + + public long getId() { + return mId; + } + + public long getParentId() { + return mParentId; + } + + public String getSnippet() { + return mSnippet; + } + + public boolean isNoteType() { + return mType == Notes.TYPE_NOTE; + } + + public void commit(boolean validateVersion) { + if (mIsCreate) { + if (mId == INVALID_ID && mDiffNoteValues.containsKey(NoteColumns.ID)) { + mDiffNoteValues.remove(NoteColumns.ID); + } + + Uri uri = mContentResolver.insert(Notes.CONTENT_NOTE_URI, mDiffNoteValues); + try { + mId = Long.valueOf(uri.getPathSegments().get(1)); + } catch (NumberFormatException e) { + Log.e(TAG, "Get note id error :" + e.toString()); + throw new ActionFailureException("create note failed"); + } + if (mId == 0) { + throw new IllegalStateException("Create thread id failed"); + } + + if (mType == Notes.TYPE_NOTE) { + for (SqlData sqlData : mDataList) { + sqlData.commit(mId, false, -1); + } + } + } else { + if (mId <= 0 && mId != Notes.ID_ROOT_FOLDER && mId != Notes.ID_CALL_RECORD_FOLDER) { + Log.e(TAG, "No such note"); + throw new IllegalStateException("Try to update note with invalid id"); + } + if (mDiffNoteValues.size() > 0) { + mVersion ++; + int result = 0; + if (!validateVersion) { + result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" + + NoteColumns.ID + "=?)", new String[] { + String.valueOf(mId) + }); + } else { + result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" + + NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)", + new String[] { + String.valueOf(mId), String.valueOf(mVersion) + }); + } + if (result == 0) { + Log.w(TAG, "there is no update. maybe user updates note when syncing"); + } + } + + if (mType == Notes.TYPE_NOTE) { + for (SqlData sqlData : mDataList) { + sqlData.commit(mId, validateVersion, mVersion); + } + } + } + + // refresh local info + loadFromCursor(mId); + if (mType == Notes.TYPE_NOTE) + loadDataContent(); + + mDiffNoteValues.clear(); + mIsCreate = false; + } +} diff --git a/src/net/micode/notes/gtask/data/Task.java b/src/net/micode/notes/gtask/data/Task.java new file mode 100644 index 0000000..6a19454 --- /dev/null +++ b/src/net/micode/notes/gtask/data/Task.java @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + + +public class Task extends Node { + private static final String TAG = Task.class.getSimpleName(); + + private boolean mCompleted; + + private String mNotes; + + private JSONObject mMetaInfo; + + private Task mPriorSibling; + + private TaskList mParent; + + public Task() { + super(); + mCompleted = false; + mNotes = null; + mPriorSibling = null; + mParent = null; + mMetaInfo = null; + } + + public JSONObject getCreateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // index + js.put(GTaskStringUtils.GTASK_JSON_INDEX, mParent.getChildTaskIndex(this)); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); + entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, + GTaskStringUtils.GTASK_JSON_TYPE_TASK); + if (getNotes() != null) { + entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); + } + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + // parent_id + js.put(GTaskStringUtils.GTASK_JSON_PARENT_ID, mParent.getGid()); + + // dest_parent_type + js.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT_TYPE, + GTaskStringUtils.GTASK_JSON_TYPE_GROUP); + + // list_id + js.put(GTaskStringUtils.GTASK_JSON_LIST_ID, mParent.getGid()); + + // prior_sibling_id + if (mPriorSibling != null) { + js.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, mPriorSibling.getGid()); + } + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate task-create jsonobject"); + } + + return js; + } + + public JSONObject getUpdateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // id + js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + if (getNotes() != null) { + entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); + } + entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate task-update jsonobject"); + } + + return js; + } + + public void setContentByRemoteJSON(JSONObject js) { + if (js != null) { + try { + // id + if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { + setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); + } + + // last_modified + if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { + setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); + } + + // name + if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { + setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); + } + + // notes + if (js.has(GTaskStringUtils.GTASK_JSON_NOTES)) { + setNotes(js.getString(GTaskStringUtils.GTASK_JSON_NOTES)); + } + + // deleted + if (js.has(GTaskStringUtils.GTASK_JSON_DELETED)) { + setDeleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_DELETED)); + } + + // completed + if (js.has(GTaskStringUtils.GTASK_JSON_COMPLETED)) { + setCompleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_COMPLETED)); + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to get task content from jsonobject"); + } + } + } + + public void setContentByLocalJSON(JSONObject js) { + if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE) + || !js.has(GTaskStringUtils.META_HEAD_DATA)) { + Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); + } + + try { + JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + + if (note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) { + Log.e(TAG, "invalid type"); + return; + } + + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { + setName(data.getString(DataColumns.CONTENT)); + break; + } + } + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + } + + public JSONObject getLocalJSONFromContent() { + String name = getName(); + try { + if (mMetaInfo == null) { + // new task created from web + if (name == null) { + Log.w(TAG, "the note seems to be an empty one"); + return null; + } + + JSONObject js = new JSONObject(); + JSONObject note = new JSONObject(); + JSONArray dataArray = new JSONArray(); + JSONObject data = new JSONObject(); + data.put(DataColumns.CONTENT, name); + dataArray.put(data); + js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); + note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); + js.put(GTaskStringUtils.META_HEAD_NOTE, note); + return js; + } else { + // synced task + JSONObject note = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + JSONArray dataArray = mMetaInfo.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { + data.put(DataColumns.CONTENT, getName()); + break; + } + } + + note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); + return mMetaInfo; + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return null; + } + } + + public void setMetaInfo(MetaData metaData) { + if (metaData != null && metaData.getNotes() != null) { + try { + mMetaInfo = new JSONObject(metaData.getNotes()); + } catch (JSONException e) { + Log.w(TAG, e.toString()); + mMetaInfo = null; + } + } + } + + public int getSyncAction(Cursor c) { + try { + JSONObject noteInfo = null; + if (mMetaInfo != null && mMetaInfo.has(GTaskStringUtils.META_HEAD_NOTE)) { + noteInfo = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + } + + if (noteInfo == null) { + Log.w(TAG, "it seems that note meta has been deleted"); + return SYNC_ACTION_UPDATE_REMOTE; + } + + if (!noteInfo.has(NoteColumns.ID)) { + Log.w(TAG, "remote note id seems to be deleted"); + return SYNC_ACTION_UPDATE_LOCAL; + } + + // validate the note id now + if (c.getLong(SqlNote.ID_COLUMN) != noteInfo.getLong(NoteColumns.ID)) { + Log.w(TAG, "note id doesn't match"); + return SYNC_ACTION_UPDATE_LOCAL; + } + + if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { + // there is no local update + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // no update both side + return SYNC_ACTION_NONE; + } else { + // apply remote to local + return SYNC_ACTION_UPDATE_LOCAL; + } + } else { + // validate gtask id + if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { + Log.e(TAG, "gtask id doesn't match"); + return SYNC_ACTION_ERROR; + } + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // local modification only + return SYNC_ACTION_UPDATE_REMOTE; + } else { + return SYNC_ACTION_UPDATE_CONFLICT; + } + } + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + + return SYNC_ACTION_ERROR; + } + + public boolean isWorthSaving() { + return mMetaInfo != null || (getName() != null && getName().trim().length() > 0) + || (getNotes() != null && getNotes().trim().length() > 0); + } + + public void setCompleted(boolean completed) { + this.mCompleted = completed; + } + + public void setNotes(String notes) { + this.mNotes = notes; + } + + public void setPriorSibling(Task priorSibling) { + this.mPriorSibling = priorSibling; + } + + public void setParent(TaskList parent) { + this.mParent = parent; + } + + public boolean getCompleted() { + return this.mCompleted; + } + + public String getNotes() { + return this.mNotes; + } + + public Task getPriorSibling() { + return this.mPriorSibling; + } + + public TaskList getParent() { + return this.mParent; + } + +} diff --git a/src/net/micode/notes/gtask/data/TaskList.java b/src/net/micode/notes/gtask/data/TaskList.java new file mode 100644 index 0000000..4ea21c5 --- /dev/null +++ b/src/net/micode/notes/gtask/data/TaskList.java @@ -0,0 +1,343 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.data; + +import android.database.Cursor; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; + + +public class TaskList extends Node { + private static final String TAG = TaskList.class.getSimpleName(); + + private int mIndex; + + private ArrayList mChildren; + + public TaskList() { + super(); + mChildren = new ArrayList(); + mIndex = 1; + } + + public JSONObject getCreateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // index + js.put(GTaskStringUtils.GTASK_JSON_INDEX, mIndex); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); + entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, + GTaskStringUtils.GTASK_JSON_TYPE_GROUP); + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate tasklist-create jsonobject"); + } + + return js; + } + + public JSONObject getUpdateAction(int actionId) { + JSONObject js = new JSONObject(); + + try { + // action_type + js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); + + // action_id + js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); + + // id + js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); + + // entity_delta + JSONObject entity = new JSONObject(); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); + js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to generate tasklist-update jsonobject"); + } + + return js; + } + + public void setContentByRemoteJSON(JSONObject js) { + if (js != null) { + try { + // id + if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { + setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); + } + + // last_modified + if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { + setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); + } + + // name + if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { + setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); + } + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("fail to get tasklist content from jsonobject"); + } + } + } + + public void setContentByLocalJSON(JSONObject js) { + if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE)) { + Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); + } + + try { + JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + + if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { + String name = folder.getString(NoteColumns.SNIPPET); + setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + name); + } else if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { + if (folder.getLong(NoteColumns.ID) == Notes.ID_ROOT_FOLDER) + setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT); + else if (folder.getLong(NoteColumns.ID) == Notes.ID_CALL_RECORD_FOLDER) + setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + + GTaskStringUtils.FOLDER_CALL_NOTE); + else + Log.e(TAG, "invalid system folder"); + } else { + Log.e(TAG, "error type"); + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + } + + public JSONObject getLocalJSONFromContent() { + try { + JSONObject js = new JSONObject(); + JSONObject folder = new JSONObject(); + + String folderName = getName(); + if (getName().startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX)) + folderName = folderName.substring(GTaskStringUtils.MIUI_FOLDER_PREFFIX.length(), + folderName.length()); + folder.put(NoteColumns.SNIPPET, folderName); + if (folderName.equals(GTaskStringUtils.FOLDER_DEFAULT) + || folderName.equals(GTaskStringUtils.FOLDER_CALL_NOTE)) + folder.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + else + folder.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + + js.put(GTaskStringUtils.META_HEAD_NOTE, folder); + + return js; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return null; + } + } + + public int getSyncAction(Cursor c) { + try { + if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { + // there is no local update + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // no update both side + return SYNC_ACTION_NONE; + } else { + // apply remote to local + return SYNC_ACTION_UPDATE_LOCAL; + } + } else { + // validate gtask id + if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { + Log.e(TAG, "gtask id doesn't match"); + return SYNC_ACTION_ERROR; + } + if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { + // local modification only + return SYNC_ACTION_UPDATE_REMOTE; + } else { + // for folder conflicts, just apply local modification + return SYNC_ACTION_UPDATE_REMOTE; + } + } + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + } + + return SYNC_ACTION_ERROR; + } + + public int getChildTaskCount() { + return mChildren.size(); + } + + public boolean addChildTask(Task task) { + boolean ret = false; + if (task != null && !mChildren.contains(task)) { + ret = mChildren.add(task); + if (ret) { + // need to set prior sibling and parent + task.setPriorSibling(mChildren.isEmpty() ? null : mChildren + .get(mChildren.size() - 1)); + task.setParent(this); + } + } + return ret; + } + + public boolean addChildTask(Task task, int index) { + if (index < 0 || index > mChildren.size()) { + Log.e(TAG, "add child task: invalid index"); + return false; + } + + int pos = mChildren.indexOf(task); + if (task != null && pos == -1) { + mChildren.add(index, task); + + // update the task list + Task preTask = null; + Task afterTask = null; + if (index != 0) + preTask = mChildren.get(index - 1); + if (index != mChildren.size() - 1) + afterTask = mChildren.get(index + 1); + + task.setPriorSibling(preTask); + if (afterTask != null) + afterTask.setPriorSibling(task); + } + + return true; + } + + public boolean removeChildTask(Task task) { + boolean ret = false; + int index = mChildren.indexOf(task); + if (index != -1) { + ret = mChildren.remove(task); + + if (ret) { + // reset prior sibling and parent + task.setPriorSibling(null); + task.setParent(null); + + // update the task list + if (index != mChildren.size()) { + mChildren.get(index).setPriorSibling( + index == 0 ? null : mChildren.get(index - 1)); + } + } + } + return ret; + } + + public boolean moveChildTask(Task task, int index) { + + if (index < 0 || index >= mChildren.size()) { + Log.e(TAG, "move child task: invalid index"); + return false; + } + + int pos = mChildren.indexOf(task); + if (pos == -1) { + Log.e(TAG, "move child task: the task should in the list"); + return false; + } + + if (pos == index) + return true; + return (removeChildTask(task) && addChildTask(task, index)); + } + + public Task findChildTaskByGid(String gid) { + for (int i = 0; i < mChildren.size(); i++) { + Task t = mChildren.get(i); + if (t.getGid().equals(gid)) { + return t; + } + } + return null; + } + + public int getChildTaskIndex(Task task) { + return mChildren.indexOf(task); + } + + public Task getChildTaskByIndex(int index) { + if (index < 0 || index >= mChildren.size()) { + Log.e(TAG, "getTaskByIndex: invalid index"); + return null; + } + return mChildren.get(index); + } + + public Task getChilTaskByGid(String gid) { + for (Task task : mChildren) { + if (task.getGid().equals(gid)) + return task; + } + return null; + } + + public ArrayList getChildTaskList() { + return this.mChildren; + } + + public void setIndex(int index) { + this.mIndex = index; + } + + public int getIndex() { + return this.mIndex; + } +} diff --git a/src/net/micode/notes/gtask/exception/ActionFailureException.java b/src/net/micode/notes/gtask/exception/ActionFailureException.java new file mode 100644 index 0000000..15504be --- /dev/null +++ b/src/net/micode/notes/gtask/exception/ActionFailureException.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.exception; + +public class ActionFailureException extends RuntimeException { + private static final long serialVersionUID = 4425249765923293627L; + + public ActionFailureException() { + super(); + } + + public ActionFailureException(String paramString) { + super(paramString); + } + + public ActionFailureException(String paramString, Throwable paramThrowable) { + super(paramString, paramThrowable); + } +} diff --git a/src/net/micode/notes/gtask/exception/NetworkFailureException.java b/src/net/micode/notes/gtask/exception/NetworkFailureException.java new file mode 100644 index 0000000..b08cfb1 --- /dev/null +++ b/src/net/micode/notes/gtask/exception/NetworkFailureException.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.exception; + +public class NetworkFailureException extends Exception { + private static final long serialVersionUID = 2107610287180234136L; + + public NetworkFailureException() { + super(); + } + + public NetworkFailureException(String paramString) { + super(paramString); + } + + public NetworkFailureException(String paramString, Throwable paramThrowable) { + super(paramString, paramThrowable); + } +} diff --git a/src/net/micode/notes/gtask/remote/GTaskASyncTask.java b/src/net/micode/notes/gtask/remote/GTaskASyncTask.java new file mode 100644 index 0000000..b3b61e7 --- /dev/null +++ b/src/net/micode/notes/gtask/remote/GTaskASyncTask.java @@ -0,0 +1,123 @@ + +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.remote; + +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; + +import net.micode.notes.R; +import net.micode.notes.ui.NotesListActivity; +import net.micode.notes.ui.NotesPreferenceActivity; + + +public class GTaskASyncTask extends AsyncTask { + + private static int GTASK_SYNC_NOTIFICATION_ID = 5234235; + + public interface OnCompleteListener { + void onComplete(); + } + + private Context mContext; + + private NotificationManager mNotifiManager; + + private GTaskManager mTaskManager; + + private OnCompleteListener mOnCompleteListener; + + public GTaskASyncTask(Context context, OnCompleteListener listener) { + mContext = context; + mOnCompleteListener = listener; + mNotifiManager = (NotificationManager) mContext + .getSystemService(Context.NOTIFICATION_SERVICE); + mTaskManager = GTaskManager.getInstance(); + } + + public void cancelSync() { + mTaskManager.cancelSync(); + } + + public void publishProgess(String message) { + publishProgress(new String[] { + message + }); + } + + private void showNotification(int tickerId, String content) { + Notification notification = new Notification(R.drawable.notification, mContext + .getString(tickerId), System.currentTimeMillis()); + notification.defaults = Notification.DEFAULT_LIGHTS; + notification.flags = Notification.FLAG_AUTO_CANCEL; + PendingIntent pendingIntent; + if (tickerId != R.string.ticker_success) { + pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext, + NotesPreferenceActivity.class), 0); + + } else { + pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext, + NotesListActivity.class), 0); + } + notification.setLatestEventInfo(mContext, mContext.getString(R.string.app_name), content, + pendingIntent); + mNotifiManager.notify(GTASK_SYNC_NOTIFICATION_ID, notification); + } + + @Override + protected Integer doInBackground(Void... unused) { + publishProgess(mContext.getString(R.string.sync_progress_login, NotesPreferenceActivity + .getSyncAccountName(mContext))); + return mTaskManager.sync(mContext, this); + } + + @Override + protected void onProgressUpdate(String... progress) { + showNotification(R.string.ticker_syncing, progress[0]); + if (mContext instanceof GTaskSyncService) { + ((GTaskSyncService) mContext).sendBroadcast(progress[0]); + } + } + + @Override + protected void onPostExecute(Integer result) { + if (result == GTaskManager.STATE_SUCCESS) { + showNotification(R.string.ticker_success, mContext.getString( + R.string.success_sync_account, mTaskManager.getSyncAccount())); + NotesPreferenceActivity.setLastSyncTime(mContext, System.currentTimeMillis()); + } else if (result == GTaskManager.STATE_NETWORK_ERROR) { + showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_network)); + } else if (result == GTaskManager.STATE_INTERNAL_ERROR) { + showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_internal)); + } else if (result == GTaskManager.STATE_SYNC_CANCELLED) { + showNotification(R.string.ticker_cancel, mContext + .getString(R.string.error_sync_cancelled)); + } + if (mOnCompleteListener != null) { + new Thread(new Runnable() { + + public void run() { + mOnCompleteListener.onComplete(); + } + }).start(); + } + } +} diff --git a/src/net/micode/notes/gtask/remote/GTaskClient.java b/src/net/micode/notes/gtask/remote/GTaskClient.java new file mode 100644 index 0000000..c67dfdf --- /dev/null +++ b/src/net/micode/notes/gtask/remote/GTaskClient.java @@ -0,0 +1,585 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.remote; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.accounts.AccountManagerFuture; +import android.app.Activity; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.gtask.data.Node; +import net.micode.notes.gtask.data.Task; +import net.micode.notes.gtask.data.TaskList; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.gtask.exception.NetworkFailureException; +import net.micode.notes.tool.GTaskStringUtils; +import net.micode.notes.ui.NotesPreferenceActivity; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.cookie.Cookie; +import org.apache.http.impl.client.BasicCookieStore; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.params.BasicHttpParams; +import org.apache.http.params.HttpConnectionParams; +import org.apache.http.params.HttpParams; +import org.apache.http.params.HttpProtocolParams; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.LinkedList; +import java.util.List; +import java.util.zip.GZIPInputStream; +import java.util.zip.Inflater; +import java.util.zip.InflaterInputStream; + + +public class GTaskClient { + private static final String TAG = GTaskClient.class.getSimpleName(); + + private static final String GTASK_URL = "https://mail.google.com/tasks/"; + + private static final String GTASK_GET_URL = "https://mail.google.com/tasks/ig"; + + private static final String GTASK_POST_URL = "https://mail.google.com/tasks/r/ig"; + + private static GTaskClient mInstance = null; + + private DefaultHttpClient mHttpClient; + + private String mGetUrl; + + private String mPostUrl; + + private long mClientVersion; + + private boolean mLoggedin; + + private long mLastLoginTime; + + private int mActionId; + + private Account mAccount; + + private JSONArray mUpdateArray; + + private GTaskClient() { + mHttpClient = null; + mGetUrl = GTASK_GET_URL; + mPostUrl = GTASK_POST_URL; + mClientVersion = -1; + mLoggedin = false; + mLastLoginTime = 0; + mActionId = 1; + mAccount = null; + mUpdateArray = null; + } + + public static synchronized GTaskClient getInstance() { + if (mInstance == null) { + mInstance = new GTaskClient(); + } + return mInstance; + } + + public boolean login(Activity activity) { + // we suppose that the cookie would expire after 5 minutes + // then we need to re-login + final long interval = 1000 * 60 * 5; + if (mLastLoginTime + interval < System.currentTimeMillis()) { + mLoggedin = false; + } + + // need to re-login after account switch + if (mLoggedin + && !TextUtils.equals(getSyncAccount().name, NotesPreferenceActivity + .getSyncAccountName(activity))) { + mLoggedin = false; + } + + if (mLoggedin) { + Log.d(TAG, "already logged in"); + return true; + } + + mLastLoginTime = System.currentTimeMillis(); + String authToken = loginGoogleAccount(activity, false); + if (authToken == null) { + Log.e(TAG, "login google account failed"); + return false; + } + + // login with custom domain if necessary + if (!(mAccount.name.toLowerCase().endsWith("gmail.com") || mAccount.name.toLowerCase() + .endsWith("googlemail.com"))) { + StringBuilder url = new StringBuilder(GTASK_URL).append("a/"); + int index = mAccount.name.indexOf('@') + 1; + String suffix = mAccount.name.substring(index); + url.append(suffix + "/"); + mGetUrl = url.toString() + "ig"; + mPostUrl = url.toString() + "r/ig"; + + if (tryToLoginGtask(activity, authToken)) { + mLoggedin = true; + } + } + + // try to login with google official url + if (!mLoggedin) { + mGetUrl = GTASK_GET_URL; + mPostUrl = GTASK_POST_URL; + if (!tryToLoginGtask(activity, authToken)) { + return false; + } + } + + mLoggedin = true; + return true; + } + + private String loginGoogleAccount(Activity activity, boolean invalidateToken) { + String authToken; + AccountManager accountManager = AccountManager.get(activity); + Account[] accounts = accountManager.getAccountsByType("com.google"); + + if (accounts.length == 0) { + Log.e(TAG, "there is no available google account"); + return null; + } + + String accountName = NotesPreferenceActivity.getSyncAccountName(activity); + Account account = null; + for (Account a : accounts) { + if (a.name.equals(accountName)) { + account = a; + break; + } + } + if (account != null) { + mAccount = account; + } else { + Log.e(TAG, "unable to get an account with the same name in the settings"); + return null; + } + + // get the token now + AccountManagerFuture accountManagerFuture = accountManager.getAuthToken(account, + "goanna_mobile", null, activity, null, null); + try { + Bundle authTokenBundle = accountManagerFuture.getResult(); + authToken = authTokenBundle.getString(AccountManager.KEY_AUTHTOKEN); + if (invalidateToken) { + accountManager.invalidateAuthToken("com.google", authToken); + loginGoogleAccount(activity, false); + } + } catch (Exception e) { + Log.e(TAG, "get auth token failed"); + authToken = null; + } + + return authToken; + } + + private boolean tryToLoginGtask(Activity activity, String authToken) { + if (!loginGtask(authToken)) { + // maybe the auth token is out of date, now let's invalidate the + // token and try again + authToken = loginGoogleAccount(activity, true); + if (authToken == null) { + Log.e(TAG, "login google account failed"); + return false; + } + + if (!loginGtask(authToken)) { + Log.e(TAG, "login gtask failed"); + return false; + } + } + return true; + } + + private boolean loginGtask(String authToken) { + int timeoutConnection = 10000; + int timeoutSocket = 15000; + HttpParams httpParameters = new BasicHttpParams(); + HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); + HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); + mHttpClient = new DefaultHttpClient(httpParameters); + BasicCookieStore localBasicCookieStore = new BasicCookieStore(); + mHttpClient.setCookieStore(localBasicCookieStore); + HttpProtocolParams.setUseExpectContinue(mHttpClient.getParams(), false); + + // login gtask + try { + String loginUrl = mGetUrl + "?auth=" + authToken; + HttpGet httpGet = new HttpGet(loginUrl); + HttpResponse response = null; + response = mHttpClient.execute(httpGet); + + // get the cookie now + List cookies = mHttpClient.getCookieStore().getCookies(); + boolean hasAuthCookie = false; + for (Cookie cookie : cookies) { + if (cookie.getName().contains("GTL")) { + hasAuthCookie = true; + } + } + if (!hasAuthCookie) { + Log.w(TAG, "it seems that there is no auth cookie"); + } + + // get the client version + String resString = getResponseContent(response.getEntity()); + String jsBegin = "_setup("; + String jsEnd = ")}"; + int begin = resString.indexOf(jsBegin); + int end = resString.lastIndexOf(jsEnd); + String jsString = null; + if (begin != -1 && end != -1 && begin < end) { + jsString = resString.substring(begin + jsBegin.length(), end); + } + JSONObject js = new JSONObject(jsString); + mClientVersion = js.getLong("v"); + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return false; + } catch (Exception e) { + // simply catch all exceptions + Log.e(TAG, "httpget gtask_url failed"); + return false; + } + + return true; + } + + private int getActionId() { + return mActionId++; + } + + private HttpPost createHttpPost() { + HttpPost httpPost = new HttpPost(mPostUrl); + httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + httpPost.setHeader("AT", "1"); + return httpPost; + } + + private String getResponseContent(HttpEntity entity) throws IOException { + String contentEncoding = null; + if (entity.getContentEncoding() != null) { + contentEncoding = entity.getContentEncoding().getValue(); + Log.d(TAG, "encoding: " + contentEncoding); + } + + InputStream input = entity.getContent(); + if (contentEncoding != null && contentEncoding.equalsIgnoreCase("gzip")) { + input = new GZIPInputStream(entity.getContent()); + } else if (contentEncoding != null && contentEncoding.equalsIgnoreCase("deflate")) { + Inflater inflater = new Inflater(true); + input = new InflaterInputStream(entity.getContent(), inflater); + } + + try { + InputStreamReader isr = new InputStreamReader(input); + BufferedReader br = new BufferedReader(isr); + StringBuilder sb = new StringBuilder(); + + while (true) { + String buff = br.readLine(); + if (buff == null) { + return sb.toString(); + } + sb = sb.append(buff); + } + } finally { + input.close(); + } + } + + private JSONObject postRequest(JSONObject js) throws NetworkFailureException { + if (!mLoggedin) { + Log.e(TAG, "please login first"); + throw new ActionFailureException("not logged in"); + } + + HttpPost httpPost = createHttpPost(); + try { + LinkedList list = new LinkedList(); + list.add(new BasicNameValuePair("r", js.toString())); + UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, "UTF-8"); + httpPost.setEntity(entity); + + // execute the post + HttpResponse response = mHttpClient.execute(httpPost); + String jsString = getResponseContent(response.getEntity()); + return new JSONObject(jsString); + + } catch (ClientProtocolException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new NetworkFailureException("postRequest failed"); + } catch (IOException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new NetworkFailureException("postRequest failed"); + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("unable to convert response content to jsonobject"); + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("error occurs when posting request"); + } + } + + public void createTask(Task task) throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + + // action_list + actionList.put(task.getCreateAction(getActionId())); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + // post + JSONObject jsResponse = postRequest(jsPost); + JSONObject jsResult = (JSONObject) jsResponse.getJSONArray( + GTaskStringUtils.GTASK_JSON_RESULTS).get(0); + task.setGid(jsResult.getString(GTaskStringUtils.GTASK_JSON_NEW_ID)); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("create task: handing jsonobject failed"); + } + } + + public void createTaskList(TaskList tasklist) throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + + // action_list + actionList.put(tasklist.getCreateAction(getActionId())); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + // post + JSONObject jsResponse = postRequest(jsPost); + JSONObject jsResult = (JSONObject) jsResponse.getJSONArray( + GTaskStringUtils.GTASK_JSON_RESULTS).get(0); + tasklist.setGid(jsResult.getString(GTaskStringUtils.GTASK_JSON_NEW_ID)); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("create tasklist: handing jsonobject failed"); + } + } + + public void commitUpdate() throws NetworkFailureException { + if (mUpdateArray != null) { + try { + JSONObject jsPost = new JSONObject(); + + // action_list + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, mUpdateArray); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + postRequest(jsPost); + mUpdateArray = null; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("commit update: handing jsonobject failed"); + } + } + } + + public void addUpdateNode(Node node) throws NetworkFailureException { + if (node != null) { + // too many update items may result in an error + // set max to 10 items + if (mUpdateArray != null && mUpdateArray.length() > 10) { + commitUpdate(); + } + + if (mUpdateArray == null) + mUpdateArray = new JSONArray(); + mUpdateArray.put(node.getUpdateAction(getActionId())); + } + } + + public void moveTask(Task task, TaskList preParent, TaskList curParent) + throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + JSONObject action = new JSONObject(); + + // action_list + action.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_MOVE); + action.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, getActionId()); + action.put(GTaskStringUtils.GTASK_JSON_ID, task.getGid()); + if (preParent == curParent && task.getPriorSibling() != null) { + // put prioring_sibing_id only if moving within the tasklist and + // it is not the first one + action.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, task.getPriorSibling()); + } + action.put(GTaskStringUtils.GTASK_JSON_SOURCE_LIST, preParent.getGid()); + action.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT, curParent.getGid()); + if (preParent != curParent) { + // put the dest_list only if moving between tasklists + action.put(GTaskStringUtils.GTASK_JSON_DEST_LIST, curParent.getGid()); + } + actionList.put(action); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + postRequest(jsPost); + + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("move task: handing jsonobject failed"); + } + } + + public void deleteNode(Node node) throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + + // action_list + node.setDeleted(true); + actionList.put(node.getUpdateAction(getActionId())); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + postRequest(jsPost); + mUpdateArray = null; + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("delete node: handing jsonobject failed"); + } + } + + public JSONArray getTaskLists() throws NetworkFailureException { + if (!mLoggedin) { + Log.e(TAG, "please login first"); + throw new ActionFailureException("not logged in"); + } + + try { + HttpGet httpGet = new HttpGet(mGetUrl); + HttpResponse response = null; + response = mHttpClient.execute(httpGet); + + // get the task list + String resString = getResponseContent(response.getEntity()); + String jsBegin = "_setup("; + String jsEnd = ")}"; + int begin = resString.indexOf(jsBegin); + int end = resString.lastIndexOf(jsEnd); + String jsString = null; + if (begin != -1 && end != -1 && begin < end) { + jsString = resString.substring(begin + jsBegin.length(), end); + } + JSONObject js = new JSONObject(jsString); + return js.getJSONObject("t").getJSONArray(GTaskStringUtils.GTASK_JSON_LISTS); + } catch (ClientProtocolException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new NetworkFailureException("gettasklists: httpget failed"); + } catch (IOException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new NetworkFailureException("gettasklists: httpget failed"); + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("get task lists: handing jasonobject failed"); + } + } + + public JSONArray getTaskList(String listGid) throws NetworkFailureException { + commitUpdate(); + try { + JSONObject jsPost = new JSONObject(); + JSONArray actionList = new JSONArray(); + JSONObject action = new JSONObject(); + + // action_list + action.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, + GTaskStringUtils.GTASK_JSON_ACTION_TYPE_GETALL); + action.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, getActionId()); + action.put(GTaskStringUtils.GTASK_JSON_LIST_ID, listGid); + action.put(GTaskStringUtils.GTASK_JSON_GET_DELETED, false); + actionList.put(action); + jsPost.put(GTaskStringUtils.GTASK_JSON_ACTION_LIST, actionList); + + // client_version + jsPost.put(GTaskStringUtils.GTASK_JSON_CLIENT_VERSION, mClientVersion); + + JSONObject jsResponse = postRequest(jsPost); + return jsResponse.getJSONArray(GTaskStringUtils.GTASK_JSON_TASKS); + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("get task list: handing jsonobject failed"); + } + } + + public Account getSyncAccount() { + return mAccount; + } + + public void resetUpdateArray() { + mUpdateArray = null; + } +} diff --git a/src/net/micode/notes/gtask/remote/GTaskManager.java b/src/net/micode/notes/gtask/remote/GTaskManager.java new file mode 100644 index 0000000..d2b4082 --- /dev/null +++ b/src/net/micode/notes/gtask/remote/GTaskManager.java @@ -0,0 +1,800 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.remote; + +import android.app.Activity; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.util.Log; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.data.MetaData; +import net.micode.notes.gtask.data.Node; +import net.micode.notes.gtask.data.SqlNote; +import net.micode.notes.gtask.data.Task; +import net.micode.notes.gtask.data.TaskList; +import net.micode.notes.gtask.exception.ActionFailureException; +import net.micode.notes.gtask.exception.NetworkFailureException; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.GTaskStringUtils; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; + + +public class GTaskManager { + private static final String TAG = GTaskManager.class.getSimpleName(); + + public static final int STATE_SUCCESS = 0; + + public static final int STATE_NETWORK_ERROR = 1; + + public static final int STATE_INTERNAL_ERROR = 2; + + public static final int STATE_SYNC_IN_PROGRESS = 3; + + public static final int STATE_SYNC_CANCELLED = 4; + + private static GTaskManager mInstance = null; + + private Activity mActivity; + + private Context mContext; + + private ContentResolver mContentResolver; + + private boolean mSyncing; + + private boolean mCancelled; + + private HashMap mGTaskListHashMap; + + private HashMap mGTaskHashMap; + + private HashMap mMetaHashMap; + + private TaskList mMetaList; + + private HashSet mLocalDeleteIdMap; + + private HashMap mGidToNid; + + private HashMap mNidToGid; + + private GTaskManager() { + mSyncing = false; + mCancelled = false; + mGTaskListHashMap = new HashMap(); + mGTaskHashMap = new HashMap(); + mMetaHashMap = new HashMap(); + mMetaList = null; + mLocalDeleteIdMap = new HashSet(); + mGidToNid = new HashMap(); + mNidToGid = new HashMap(); + } + + public static synchronized GTaskManager getInstance() { + if (mInstance == null) { + mInstance = new GTaskManager(); + } + return mInstance; + } + + public synchronized void setActivityContext(Activity activity) { + // used for getting authtoken + mActivity = activity; + } + + public int sync(Context context, GTaskASyncTask asyncTask) { + if (mSyncing) { + Log.d(TAG, "Sync is in progress"); + return STATE_SYNC_IN_PROGRESS; + } + mContext = context; + mContentResolver = mContext.getContentResolver(); + mSyncing = true; + mCancelled = false; + mGTaskListHashMap.clear(); + mGTaskHashMap.clear(); + mMetaHashMap.clear(); + mLocalDeleteIdMap.clear(); + mGidToNid.clear(); + mNidToGid.clear(); + + try { + GTaskClient client = GTaskClient.getInstance(); + client.resetUpdateArray(); + + // login google task + if (!mCancelled) { + if (!client.login(mActivity)) { + throw new NetworkFailureException("login google task failed"); + } + } + + // get the task list from google + asyncTask.publishProgess(mContext.getString(R.string.sync_progress_init_list)); + initGTaskList(); + + // do content sync work + asyncTask.publishProgess(mContext.getString(R.string.sync_progress_syncing)); + syncContent(); + } catch (NetworkFailureException e) { + Log.e(TAG, e.toString()); + return STATE_NETWORK_ERROR; + } catch (ActionFailureException e) { + Log.e(TAG, e.toString()); + return STATE_INTERNAL_ERROR; + } catch (Exception e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + return STATE_INTERNAL_ERROR; + } finally { + mGTaskListHashMap.clear(); + mGTaskHashMap.clear(); + mMetaHashMap.clear(); + mLocalDeleteIdMap.clear(); + mGidToNid.clear(); + mNidToGid.clear(); + mSyncing = false; + } + + return mCancelled ? STATE_SYNC_CANCELLED : STATE_SUCCESS; + } + + private void initGTaskList() throws NetworkFailureException { + if (mCancelled) + return; + GTaskClient client = GTaskClient.getInstance(); + try { + JSONArray jsTaskLists = client.getTaskLists(); + + // init meta list first + mMetaList = null; + for (int i = 0; i < jsTaskLists.length(); i++) { + JSONObject object = jsTaskLists.getJSONObject(i); + String gid = object.getString(GTaskStringUtils.GTASK_JSON_ID); + String name = object.getString(GTaskStringUtils.GTASK_JSON_NAME); + + if (name + .equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_META)) { + mMetaList = new TaskList(); + mMetaList.setContentByRemoteJSON(object); + + // load meta data + JSONArray jsMetas = client.getTaskList(gid); + for (int j = 0; j < jsMetas.length(); j++) { + object = (JSONObject) jsMetas.getJSONObject(j); + MetaData metaData = new MetaData(); + metaData.setContentByRemoteJSON(object); + if (metaData.isWorthSaving()) { + mMetaList.addChildTask(metaData); + if (metaData.getGid() != null) { + mMetaHashMap.put(metaData.getRelatedGid(), metaData); + } + } + } + } + } + + // create meta list if not existed + if (mMetaList == null) { + mMetaList = new TaskList(); + mMetaList.setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + + GTaskStringUtils.FOLDER_META); + GTaskClient.getInstance().createTaskList(mMetaList); + } + + // init task list + for (int i = 0; i < jsTaskLists.length(); i++) { + JSONObject object = jsTaskLists.getJSONObject(i); + String gid = object.getString(GTaskStringUtils.GTASK_JSON_ID); + String name = object.getString(GTaskStringUtils.GTASK_JSON_NAME); + + if (name.startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX) + && !name.equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX + + GTaskStringUtils.FOLDER_META)) { + TaskList tasklist = new TaskList(); + tasklist.setContentByRemoteJSON(object); + mGTaskListHashMap.put(gid, tasklist); + mGTaskHashMap.put(gid, tasklist); + + // load tasks + JSONArray jsTasks = client.getTaskList(gid); + for (int j = 0; j < jsTasks.length(); j++) { + object = (JSONObject) jsTasks.getJSONObject(j); + gid = object.getString(GTaskStringUtils.GTASK_JSON_ID); + Task task = new Task(); + task.setContentByRemoteJSON(object); + if (task.isWorthSaving()) { + task.setMetaInfo(mMetaHashMap.get(gid)); + tasklist.addChildTask(task); + mGTaskHashMap.put(gid, task); + } + } + } + } + } catch (JSONException e) { + Log.e(TAG, e.toString()); + e.printStackTrace(); + throw new ActionFailureException("initGTaskList: handing JSONObject failed"); + } + } + + private void syncContent() throws NetworkFailureException { + int syncType; + Cursor c = null; + String gid; + Node node; + + mLocalDeleteIdMap.clear(); + + if (mCancelled) { + return; + } + + // for local deleted note + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, + "(type<>? AND parent_id=?)", new String[] { + String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER) + }, null); + if (c != null) { + while (c.moveToNext()) { + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + doContentSync(Node.SYNC_ACTION_DEL_REMOTE, node, c); + } + + mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN)); + } + } else { + Log.w(TAG, "failed to query trash folder"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // sync folder first + syncFolder(); + + // for note existing in database + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, + "(type=? AND parent_id<>?)", new String[] { + String.valueOf(Notes.TYPE_NOTE), String.valueOf(Notes.ID_TRASH_FOLER) + }, NoteColumns.TYPE + " DESC"); + if (c != null) { + while (c.moveToNext()) { + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + mGidToNid.put(gid, c.getLong(SqlNote.ID_COLUMN)); + mNidToGid.put(c.getLong(SqlNote.ID_COLUMN), gid); + syncType = node.getSyncAction(c); + } else { + if (c.getString(SqlNote.GTASK_ID_COLUMN).trim().length() == 0) { + // local add + syncType = Node.SYNC_ACTION_ADD_REMOTE; + } else { + // remote delete + syncType = Node.SYNC_ACTION_DEL_LOCAL; + } + } + doContentSync(syncType, node, c); + } + } else { + Log.w(TAG, "failed to query existing note in database"); + } + + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // go through remaining items + Iterator> iter = mGTaskHashMap.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + node = entry.getValue(); + doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null); + } + + // mCancelled can be set by another thread, so we neet to check one by + // one + // clear local delete table + if (!mCancelled) { + if (!DataUtils.batchDeleteNotes(mContentResolver, mLocalDeleteIdMap)) { + throw new ActionFailureException("failed to batch-delete local deleted notes"); + } + } + + // refresh local sync id + if (!mCancelled) { + GTaskClient.getInstance().commitUpdate(); + refreshLocalSyncId(); + } + + } + + private void syncFolder() throws NetworkFailureException { + Cursor c = null; + String gid; + Node node; + int syncType; + + if (mCancelled) { + return; + } + + // for root folder + try { + c = mContentResolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, + Notes.ID_ROOT_FOLDER), SqlNote.PROJECTION_NOTE, null, null, null); + if (c != null) { + c.moveToNext(); + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + mGidToNid.put(gid, (long) Notes.ID_ROOT_FOLDER); + mNidToGid.put((long) Notes.ID_ROOT_FOLDER, gid); + // for system folder, only update remote name if necessary + if (!node.getName().equals( + GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT)) + doContentSync(Node.SYNC_ACTION_UPDATE_REMOTE, node, c); + } else { + doContentSync(Node.SYNC_ACTION_ADD_REMOTE, node, c); + } + } else { + Log.w(TAG, "failed to query root folder"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // for call-note folder + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, "(_id=?)", + new String[] { + String.valueOf(Notes.ID_CALL_RECORD_FOLDER) + }, null); + if (c != null) { + if (c.moveToNext()) { + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + mGidToNid.put(gid, (long) Notes.ID_CALL_RECORD_FOLDER); + mNidToGid.put((long) Notes.ID_CALL_RECORD_FOLDER, gid); + // for system folder, only update remote name if + // necessary + if (!node.getName().equals( + GTaskStringUtils.MIUI_FOLDER_PREFFIX + + GTaskStringUtils.FOLDER_CALL_NOTE)) + doContentSync(Node.SYNC_ACTION_UPDATE_REMOTE, node, c); + } else { + doContentSync(Node.SYNC_ACTION_ADD_REMOTE, node, c); + } + } + } else { + Log.w(TAG, "failed to query call note folder"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // for local existing folders + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, + "(type=? AND parent_id<>?)", new String[] { + String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER) + }, NoteColumns.TYPE + " DESC"); + if (c != null) { + while (c.moveToNext()) { + gid = c.getString(SqlNote.GTASK_ID_COLUMN); + node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + mGidToNid.put(gid, c.getLong(SqlNote.ID_COLUMN)); + mNidToGid.put(c.getLong(SqlNote.ID_COLUMN), gid); + syncType = node.getSyncAction(c); + } else { + if (c.getString(SqlNote.GTASK_ID_COLUMN).trim().length() == 0) { + // local add + syncType = Node.SYNC_ACTION_ADD_REMOTE; + } else { + // remote delete + syncType = Node.SYNC_ACTION_DEL_LOCAL; + } + } + doContentSync(syncType, node, c); + } + } else { + Log.w(TAG, "failed to query existing folder"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + + // for remote add folders + Iterator> iter = mGTaskListHashMap.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + gid = entry.getKey(); + node = entry.getValue(); + if (mGTaskHashMap.containsKey(gid)) { + mGTaskHashMap.remove(gid); + doContentSync(Node.SYNC_ACTION_ADD_LOCAL, node, null); + } + } + + if (!mCancelled) + GTaskClient.getInstance().commitUpdate(); + } + + private void doContentSync(int syncType, Node node, Cursor c) throws NetworkFailureException { + if (mCancelled) { + return; + } + + MetaData meta; + switch (syncType) { + case Node.SYNC_ACTION_ADD_LOCAL: + addLocalNode(node); + break; + case Node.SYNC_ACTION_ADD_REMOTE: + addRemoteNode(node, c); + break; + case Node.SYNC_ACTION_DEL_LOCAL: + meta = mMetaHashMap.get(c.getString(SqlNote.GTASK_ID_COLUMN)); + if (meta != null) { + GTaskClient.getInstance().deleteNode(meta); + } + mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN)); + break; + case Node.SYNC_ACTION_DEL_REMOTE: + meta = mMetaHashMap.get(node.getGid()); + if (meta != null) { + GTaskClient.getInstance().deleteNode(meta); + } + GTaskClient.getInstance().deleteNode(node); + break; + case Node.SYNC_ACTION_UPDATE_LOCAL: + updateLocalNode(node, c); + break; + case Node.SYNC_ACTION_UPDATE_REMOTE: + updateRemoteNode(node, c); + break; + case Node.SYNC_ACTION_UPDATE_CONFLICT: + // merging both modifications maybe a good idea + // right now just use local update simply + updateRemoteNode(node, c); + break; + case Node.SYNC_ACTION_NONE: + break; + case Node.SYNC_ACTION_ERROR: + default: + throw new ActionFailureException("unkown sync action type"); + } + } + + private void addLocalNode(Node node) throws NetworkFailureException { + if (mCancelled) { + return; + } + + SqlNote sqlNote; + if (node instanceof TaskList) { + if (node.getName().equals( + GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT)) { + sqlNote = new SqlNote(mContext, Notes.ID_ROOT_FOLDER); + } else if (node.getName().equals( + GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_CALL_NOTE)) { + sqlNote = new SqlNote(mContext, Notes.ID_CALL_RECORD_FOLDER); + } else { + sqlNote = new SqlNote(mContext); + sqlNote.setContent(node.getLocalJSONFromContent()); + sqlNote.setParentId(Notes.ID_ROOT_FOLDER); + } + } else { + sqlNote = new SqlNote(mContext); + JSONObject js = node.getLocalJSONFromContent(); + try { + if (js.has(GTaskStringUtils.META_HEAD_NOTE)) { + JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + if (note.has(NoteColumns.ID)) { + long id = note.getLong(NoteColumns.ID); + if (DataUtils.existInNoteDatabase(mContentResolver, id)) { + // the id is not available, have to create a new one + note.remove(NoteColumns.ID); + } + } + } + + if (js.has(GTaskStringUtils.META_HEAD_DATA)) { + JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + for (int i = 0; i < dataArray.length(); i++) { + JSONObject data = dataArray.getJSONObject(i); + if (data.has(DataColumns.ID)) { + long dataId = data.getLong(DataColumns.ID); + if (DataUtils.existInDataDatabase(mContentResolver, dataId)) { + // the data id is not available, have to create + // a new one + data.remove(DataColumns.ID); + } + } + } + + } + } catch (JSONException e) { + Log.w(TAG, e.toString()); + e.printStackTrace(); + } + sqlNote.setContent(js); + + Long parentId = mGidToNid.get(((Task) node).getParent().getGid()); + if (parentId == null) { + Log.e(TAG, "cannot find task's parent id locally"); + throw new ActionFailureException("cannot add local node"); + } + sqlNote.setParentId(parentId.longValue()); + } + + // create the local node + sqlNote.setGtaskId(node.getGid()); + sqlNote.commit(false); + + // update gid-nid mapping + mGidToNid.put(node.getGid(), sqlNote.getId()); + mNidToGid.put(sqlNote.getId(), node.getGid()); + + // update meta + updateRemoteMeta(node.getGid(), sqlNote); + } + + private void updateLocalNode(Node node, Cursor c) throws NetworkFailureException { + if (mCancelled) { + return; + } + + SqlNote sqlNote; + // update the note locally + sqlNote = new SqlNote(mContext, c); + sqlNote.setContent(node.getLocalJSONFromContent()); + + Long parentId = (node instanceof Task) ? mGidToNid.get(((Task) node).getParent().getGid()) + : new Long(Notes.ID_ROOT_FOLDER); + if (parentId == null) { + Log.e(TAG, "cannot find task's parent id locally"); + throw new ActionFailureException("cannot update local node"); + } + sqlNote.setParentId(parentId.longValue()); + sqlNote.commit(true); + + // update meta info + updateRemoteMeta(node.getGid(), sqlNote); + } + + private void addRemoteNode(Node node, Cursor c) throws NetworkFailureException { + if (mCancelled) { + return; + } + + SqlNote sqlNote = new SqlNote(mContext, c); + Node n; + + // update remotely + if (sqlNote.isNoteType()) { + Task task = new Task(); + task.setContentByLocalJSON(sqlNote.getContent()); + + String parentGid = mNidToGid.get(sqlNote.getParentId()); + if (parentGid == null) { + Log.e(TAG, "cannot find task's parent tasklist"); + throw new ActionFailureException("cannot add remote task"); + } + mGTaskListHashMap.get(parentGid).addChildTask(task); + + GTaskClient.getInstance().createTask(task); + n = (Node) task; + + // add meta + updateRemoteMeta(task.getGid(), sqlNote); + } else { + TaskList tasklist = null; + + // we need to skip folder if it has already existed + String folderName = GTaskStringUtils.MIUI_FOLDER_PREFFIX; + if (sqlNote.getId() == Notes.ID_ROOT_FOLDER) + folderName += GTaskStringUtils.FOLDER_DEFAULT; + else if (sqlNote.getId() == Notes.ID_CALL_RECORD_FOLDER) + folderName += GTaskStringUtils.FOLDER_CALL_NOTE; + else + folderName += sqlNote.getSnippet(); + + Iterator> iter = mGTaskListHashMap.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + String gid = entry.getKey(); + TaskList list = entry.getValue(); + + if (list.getName().equals(folderName)) { + tasklist = list; + if (mGTaskHashMap.containsKey(gid)) { + mGTaskHashMap.remove(gid); + } + break; + } + } + + // no match we can add now + if (tasklist == null) { + tasklist = new TaskList(); + tasklist.setContentByLocalJSON(sqlNote.getContent()); + GTaskClient.getInstance().createTaskList(tasklist); + mGTaskListHashMap.put(tasklist.getGid(), tasklist); + } + n = (Node) tasklist; + } + + // update local note + sqlNote.setGtaskId(n.getGid()); + sqlNote.commit(false); + sqlNote.resetLocalModified(); + sqlNote.commit(true); + + // gid-id mapping + mGidToNid.put(n.getGid(), sqlNote.getId()); + mNidToGid.put(sqlNote.getId(), n.getGid()); + } + + private void updateRemoteNode(Node node, Cursor c) throws NetworkFailureException { + if (mCancelled) { + return; + } + + SqlNote sqlNote = new SqlNote(mContext, c); + + // update remotely + node.setContentByLocalJSON(sqlNote.getContent()); + GTaskClient.getInstance().addUpdateNode(node); + + // update meta + updateRemoteMeta(node.getGid(), sqlNote); + + // move task if necessary + if (sqlNote.isNoteType()) { + Task task = (Task) node; + TaskList preParentList = task.getParent(); + + String curParentGid = mNidToGid.get(sqlNote.getParentId()); + if (curParentGid == null) { + Log.e(TAG, "cannot find task's parent tasklist"); + throw new ActionFailureException("cannot update remote task"); + } + TaskList curParentList = mGTaskListHashMap.get(curParentGid); + + if (preParentList != curParentList) { + preParentList.removeChildTask(task); + curParentList.addChildTask(task); + GTaskClient.getInstance().moveTask(task, preParentList, curParentList); + } + } + + // clear local modified flag + sqlNote.resetLocalModified(); + sqlNote.commit(true); + } + + private void updateRemoteMeta(String gid, SqlNote sqlNote) throws NetworkFailureException { + if (sqlNote != null && sqlNote.isNoteType()) { + MetaData metaData = mMetaHashMap.get(gid); + if (metaData != null) { + metaData.setMeta(gid, sqlNote.getContent()); + GTaskClient.getInstance().addUpdateNode(metaData); + } else { + metaData = new MetaData(); + metaData.setMeta(gid, sqlNote.getContent()); + mMetaList.addChildTask(metaData); + mMetaHashMap.put(gid, metaData); + GTaskClient.getInstance().createTask(metaData); + } + } + } + + private void refreshLocalSyncId() throws NetworkFailureException { + if (mCancelled) { + return; + } + + // get the latest gtask list + mGTaskHashMap.clear(); + mGTaskListHashMap.clear(); + mMetaHashMap.clear(); + initGTaskList(); + + Cursor c = null; + try { + c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, + "(type<>? AND parent_id<>?)", new String[] { + String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER) + }, NoteColumns.TYPE + " DESC"); + if (c != null) { + while (c.moveToNext()) { + String gid = c.getString(SqlNote.GTASK_ID_COLUMN); + Node node = mGTaskHashMap.get(gid); + if (node != null) { + mGTaskHashMap.remove(gid); + ContentValues values = new ContentValues(); + values.put(NoteColumns.SYNC_ID, node.getLastModified()); + mContentResolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, + c.getLong(SqlNote.ID_COLUMN)), values, null, null); + } else { + Log.e(TAG, "something is missed"); + throw new ActionFailureException( + "some local items don't have gid after sync"); + } + } + } else { + Log.w(TAG, "failed to query local note to refresh sync id"); + } + } finally { + if (c != null) { + c.close(); + c = null; + } + } + } + + public String getSyncAccount() { + return GTaskClient.getInstance().getSyncAccount().name; + } + + public void cancelSync() { + mCancelled = true; + } +} diff --git a/src/net/micode/notes/gtask/remote/GTaskSyncService.java b/src/net/micode/notes/gtask/remote/GTaskSyncService.java new file mode 100644 index 0000000..cca36f7 --- /dev/null +++ b/src/net/micode/notes/gtask/remote/GTaskSyncService.java @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.gtask.remote; + +import android.app.Activity; +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.IBinder; + +public class GTaskSyncService extends Service { + public final static String ACTION_STRING_NAME = "sync_action_type"; + + public final static int ACTION_START_SYNC = 0; + + public final static int ACTION_CANCEL_SYNC = 1; + + public final static int ACTION_INVALID = 2; + + public final static String GTASK_SERVICE_BROADCAST_NAME = "net.micode.notes.gtask.remote.gtask_sync_service"; + + public final static String GTASK_SERVICE_BROADCAST_IS_SYNCING = "isSyncing"; + + public final static String GTASK_SERVICE_BROADCAST_PROGRESS_MSG = "progressMsg"; + + private static GTaskASyncTask mSyncTask = null; + + private static String mSyncProgress = ""; + + private void startSync() { + if (mSyncTask == null) { + mSyncTask = new GTaskASyncTask(this, new GTaskASyncTask.OnCompleteListener() { + public void onComplete() { + mSyncTask = null; + sendBroadcast(""); + stopSelf(); + } + }); + sendBroadcast(""); + mSyncTask.execute(); + } + } + + private void cancelSync() { + if (mSyncTask != null) { + mSyncTask.cancelSync(); + } + } + + @Override + public void onCreate() { + mSyncTask = null; + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + Bundle bundle = intent.getExtras(); + if (bundle != null && bundle.containsKey(ACTION_STRING_NAME)) { + switch (bundle.getInt(ACTION_STRING_NAME, ACTION_INVALID)) { + case ACTION_START_SYNC: + startSync(); + break; + case ACTION_CANCEL_SYNC: + cancelSync(); + break; + default: + break; + } + return START_STICKY; + } + return super.onStartCommand(intent, flags, startId); + } + + @Override + public void onLowMemory() { + if (mSyncTask != null) { + mSyncTask.cancelSync(); + } + } + + public IBinder onBind(Intent intent) { + return null; + } + + public void sendBroadcast(String msg) { + mSyncProgress = msg; + Intent intent = new Intent(GTASK_SERVICE_BROADCAST_NAME); + intent.putExtra(GTASK_SERVICE_BROADCAST_IS_SYNCING, mSyncTask != null); + intent.putExtra(GTASK_SERVICE_BROADCAST_PROGRESS_MSG, msg); + sendBroadcast(intent); + } + + public static void startSync(Activity activity) { + GTaskManager.getInstance().setActivityContext(activity); + Intent intent = new Intent(activity, GTaskSyncService.class); + intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_START_SYNC); + activity.startService(intent); + } + + public static void cancelSync(Context context) { + Intent intent = new Intent(context, GTaskSyncService.class); + intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_CANCEL_SYNC); + context.startService(intent); + } + + public static boolean isSyncing() { + return mSyncTask != null; + } + + public static String getProgressString() { + return mSyncProgress; + } +} diff --git a/src/net/micode/notes/model/Note.java b/src/net/micode/notes/model/Note.java new file mode 100644 index 0000000..6706cf6 --- /dev/null +++ b/src/net/micode/notes/model/Note.java @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.model; +import android.content.ContentProviderOperation; +import android.content.ContentProviderResult; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.content.OperationApplicationException; +import android.net.Uri; +import android.os.RemoteException; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.CallNote; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.Notes.TextNote; + +import java.util.ArrayList; + + +public class Note { + private ContentValues mNoteDiffValues; + private NoteData mNoteData; + private static final String TAG = "Note"; + /** + * Create a new note id for adding a new note to databases + */ + public static synchronized long getNewNoteId(Context context, long folderId) { + // Create a new note in the database + ContentValues values = new ContentValues(); + long createdTime = System.currentTimeMillis(); + values.put(NoteColumns.CREATED_DATE, createdTime); + values.put(NoteColumns.MODIFIED_DATE, createdTime); + values.put(NoteColumns.TYPE, Notes.TYPE_NOTE); + values.put(NoteColumns.LOCAL_MODIFIED, 1); + values.put(NoteColumns.PARENT_ID, folderId); + Uri uri = context.getContentResolver().insert(Notes.CONTENT_NOTE_URI, values); + + long noteId = 0; + try { + noteId = Long.valueOf(uri.getPathSegments().get(1)); + } catch (NumberFormatException e) { + Log.e(TAG, "Get note id error :" + e.toString()); + noteId = 0; + } + if (noteId == -1) { + throw new IllegalStateException("Wrong note id:" + noteId); + } + return noteId; + } + + public Note() { + mNoteDiffValues = new ContentValues(); + mNoteData = new NoteData(); + } + + public void setNoteValue(String key, String value) { + mNoteDiffValues.put(key, value); + mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); + mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); + } + + public void setTextData(String key, String value) { + mNoteData.setTextData(key, value); + } + + public void setTextDataId(long id) { + mNoteData.setTextDataId(id); + } + + public long getTextDataId() { + return mNoteData.mTextDataId; + } + + public void setCallDataId(long id) { + mNoteData.setCallDataId(id); + } + + public void setCallData(String key, String value) { + mNoteData.setCallData(key, value); + } + + public boolean isLocalModified() { + return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified(); + } + + public boolean syncNote(Context context, long noteId) { + if (noteId <= 0) { + throw new IllegalArgumentException("Wrong note id:" + noteId); + } + + if (!isLocalModified()) { + return true; + } + + /** + * In theory, once data changed, the note should be updated on {@link NoteColumns#LOCAL_MODIFIED} and + * {@link NoteColumns#MODIFIED_DATE}. For data safety, though update note fails, we also update the + * note data info + */ + if (context.getContentResolver().update( + ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), mNoteDiffValues, null, + null) == 0) { + Log.e(TAG, "Update note error, should not happen"); + // Do not return, fall through + } + mNoteDiffValues.clear(); + + if (mNoteData.isLocalModified() + && (mNoteData.pushIntoContentResolver(context, noteId) == null)) { + return false; + } + + return true; + } + + private class NoteData { + private long mTextDataId; + + private ContentValues mTextDataValues; + + private long mCallDataId; + + private ContentValues mCallDataValues; + + private static final String TAG = "NoteData"; + + public NoteData() { + mTextDataValues = new ContentValues(); + mCallDataValues = new ContentValues(); + mTextDataId = 0; + mCallDataId = 0; + } + + boolean isLocalModified() { + return mTextDataValues.size() > 0 || mCallDataValues.size() > 0; + } + + void setTextDataId(long id) { + if(id <= 0) { + throw new IllegalArgumentException("Text data id should larger than 0"); + } + mTextDataId = id; + } + + void setCallDataId(long id) { + if (id <= 0) { + throw new IllegalArgumentException("Call data id should larger than 0"); + } + mCallDataId = id; + } + + void setCallData(String key, String value) { + mCallDataValues.put(key, value); + mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); + mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); + } + + void setTextData(String key, String value) { + mTextDataValues.put(key, value); + mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); + mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); + } + + Uri pushIntoContentResolver(Context context, long noteId) { + /** + * Check for safety + */ + if (noteId <= 0) { + throw new IllegalArgumentException("Wrong note id:" + noteId); + } + + ArrayList operationList = new ArrayList(); + ContentProviderOperation.Builder builder = null; + + if(mTextDataValues.size() > 0) { + mTextDataValues.put(DataColumns.NOTE_ID, noteId); + if (mTextDataId == 0) { + mTextDataValues.put(DataColumns.MIME_TYPE, TextNote.CONTENT_ITEM_TYPE); + Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, + mTextDataValues); + try { + setTextDataId(Long.valueOf(uri.getPathSegments().get(1))); + } catch (NumberFormatException e) { + Log.e(TAG, "Insert new text data fail with noteId" + noteId); + mTextDataValues.clear(); + return null; + } + } else { + builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mTextDataId)); + builder.withValues(mTextDataValues); + operationList.add(builder.build()); + } + mTextDataValues.clear(); + } + + if(mCallDataValues.size() > 0) { + mCallDataValues.put(DataColumns.NOTE_ID, noteId); + if (mCallDataId == 0) { + mCallDataValues.put(DataColumns.MIME_TYPE, CallNote.CONTENT_ITEM_TYPE); + Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, + mCallDataValues); + try { + setCallDataId(Long.valueOf(uri.getPathSegments().get(1))); + } catch (NumberFormatException e) { + Log.e(TAG, "Insert new call data fail with noteId" + noteId); + mCallDataValues.clear(); + return null; + } + } else { + builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( + Notes.CONTENT_DATA_URI, mCallDataId)); + builder.withValues(mCallDataValues); + operationList.add(builder.build()); + } + mCallDataValues.clear(); + } + + if (operationList.size() > 0) { + try { + ContentProviderResult[] results = context.getContentResolver().applyBatch( + Notes.AUTHORITY, operationList); + return (results == null || results.length == 0 || results[0] == null) ? null + : ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId); + } catch (RemoteException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + return null; + } catch (OperationApplicationException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + return null; + } + } + return null; + } + } +} diff --git a/src/net/micode/notes/model/WorkingNote.java b/src/net/micode/notes/model/WorkingNote.java new file mode 100644 index 0000000..be081e4 --- /dev/null +++ b/src/net/micode/notes/model/WorkingNote.java @@ -0,0 +1,368 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.model; + +import android.appwidget.AppWidgetManager; +import android.content.ContentUris; +import android.content.Context; +import android.database.Cursor; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.CallNote; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.Notes.TextNote; +import net.micode.notes.tool.ResourceParser.NoteBgResources; + + +public class WorkingNote { + // Note for the working note + private Note mNote; + // Note Id + private long mNoteId; + // Note content + private String mContent; + // Note mode + private int mMode; + + private long mAlertDate; + + private long mModifiedDate; + + private int mBgColorId; + + private int mWidgetId; + + private int mWidgetType; + + private long mFolderId; + + private Context mContext; + + private static final String TAG = "WorkingNote"; + + private boolean mIsDeleted; + + private NoteSettingChangedListener mNoteSettingStatusListener; + + public static final String[] DATA_PROJECTION = new String[] { + DataColumns.ID, + DataColumns.CONTENT, + DataColumns.MIME_TYPE, + DataColumns.DATA1, + DataColumns.DATA2, + DataColumns.DATA3, + DataColumns.DATA4, + }; + + public static final String[] NOTE_PROJECTION = new String[] { + NoteColumns.PARENT_ID, + NoteColumns.ALERTED_DATE, + NoteColumns.BG_COLOR_ID, + NoteColumns.WIDGET_ID, + NoteColumns.WIDGET_TYPE, + NoteColumns.MODIFIED_DATE + }; + + private static final int DATA_ID_COLUMN = 0; + + private static final int DATA_CONTENT_COLUMN = 1; + + private static final int DATA_MIME_TYPE_COLUMN = 2; + + private static final int DATA_MODE_COLUMN = 3; + + private static final int NOTE_PARENT_ID_COLUMN = 0; + + private static final int NOTE_ALERTED_DATE_COLUMN = 1; + + private static final int NOTE_BG_COLOR_ID_COLUMN = 2; + + private static final int NOTE_WIDGET_ID_COLUMN = 3; + + private static final int NOTE_WIDGET_TYPE_COLUMN = 4; + + private static final int NOTE_MODIFIED_DATE_COLUMN = 5; + + // New note construct + private WorkingNote(Context context, long folderId) { + mContext = context; + mAlertDate = 0; + mModifiedDate = System.currentTimeMillis(); + mFolderId = folderId; + mNote = new Note(); + mNoteId = 0; + mIsDeleted = false; + mMode = 0; + mWidgetType = Notes.TYPE_WIDGET_INVALIDE; + } + + // Existing note construct + private WorkingNote(Context context, long noteId, long folderId) { + mContext = context; + mNoteId = noteId; + mFolderId = folderId; + mIsDeleted = false; + mNote = new Note(); + loadNote(); + } + + private void loadNote() { + Cursor cursor = mContext.getContentResolver().query( + ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mNoteId), NOTE_PROJECTION, null, + null, null); + + if (cursor != null) { + if (cursor.moveToFirst()) { + mFolderId = cursor.getLong(NOTE_PARENT_ID_COLUMN); + mBgColorId = cursor.getInt(NOTE_BG_COLOR_ID_COLUMN); + mWidgetId = cursor.getInt(NOTE_WIDGET_ID_COLUMN); + mWidgetType = cursor.getInt(NOTE_WIDGET_TYPE_COLUMN); + mAlertDate = cursor.getLong(NOTE_ALERTED_DATE_COLUMN); + mModifiedDate = cursor.getLong(NOTE_MODIFIED_DATE_COLUMN); + } + cursor.close(); + } else { + Log.e(TAG, "No note with id:" + mNoteId); + throw new IllegalArgumentException("Unable to find note with id " + mNoteId); + } + loadNoteData(); + } + + private void loadNoteData() { + Cursor cursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, DATA_PROJECTION, + DataColumns.NOTE_ID + "=?", new String[] { + String.valueOf(mNoteId) + }, null); + + if (cursor != null) { + if (cursor.moveToFirst()) { + do { + String type = cursor.getString(DATA_MIME_TYPE_COLUMN); + if (DataConstants.NOTE.equals(type)) { + mContent = cursor.getString(DATA_CONTENT_COLUMN); + mMode = cursor.getInt(DATA_MODE_COLUMN); + mNote.setTextDataId(cursor.getLong(DATA_ID_COLUMN)); + } else if (DataConstants.CALL_NOTE.equals(type)) { + mNote.setCallDataId(cursor.getLong(DATA_ID_COLUMN)); + } else { + Log.d(TAG, "Wrong note type with type:" + type); + } + } while (cursor.moveToNext()); + } + cursor.close(); + } else { + Log.e(TAG, "No data with id:" + mNoteId); + throw new IllegalArgumentException("Unable to find note's data with id " + mNoteId); + } + } + + public static WorkingNote createEmptyNote(Context context, long folderId, int widgetId, + int widgetType, int defaultBgColorId) { + WorkingNote note = new WorkingNote(context, folderId); + note.setBgColorId(defaultBgColorId); + note.setWidgetId(widgetId); + note.setWidgetType(widgetType); + return note; + } + + public static WorkingNote load(Context context, long id) { + return new WorkingNote(context, id, 0); + } + + public synchronized boolean saveNote() { + if (isWorthSaving()) { + if (!existInDatabase()) { + if ((mNoteId = Note.getNewNoteId(mContext, mFolderId)) == 0) { + Log.e(TAG, "Create new note fail with id:" + mNoteId); + return false; + } + } + + mNote.syncNote(mContext, mNoteId); + + /** + * Update widget content if there exist any widget of this note + */ + if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && mWidgetType != Notes.TYPE_WIDGET_INVALIDE + && mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onWidgetChanged(); + } + return true; + } else { + return false; + } + } + + public boolean existInDatabase() { + return mNoteId > 0; + } + + private boolean isWorthSaving() { + if (mIsDeleted || (!existInDatabase() && TextUtils.isEmpty(mContent)) + || (existInDatabase() && !mNote.isLocalModified())) { + return false; + } else { + return true; + } + } + + public void setOnSettingStatusChangedListener(NoteSettingChangedListener l) { + mNoteSettingStatusListener = l; + } + + public void setAlertDate(long date, boolean set) { + if (date != mAlertDate) { + mAlertDate = date; + mNote.setNoteValue(NoteColumns.ALERTED_DATE, String.valueOf(mAlertDate)); + } + if (mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onClockAlertChanged(date, set); + } + } + + public void markDeleted(boolean mark) { + mIsDeleted = mark; + if (mWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && mWidgetType != Notes.TYPE_WIDGET_INVALIDE && mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onWidgetChanged(); + } + } + + public void setBgColorId(int id) { + if (id != mBgColorId) { + mBgColorId = id; + if (mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onBackgroundColorChanged(); + } + mNote.setNoteValue(NoteColumns.BG_COLOR_ID, String.valueOf(id)); + } + } + + public void setCheckListMode(int mode) { + if (mMode != mode) { + if (mNoteSettingStatusListener != null) { + mNoteSettingStatusListener.onCheckListModeChanged(mMode, mode); + } + mMode = mode; + mNote.setTextData(TextNote.MODE, String.valueOf(mMode)); + } + } + + public void setWidgetType(int type) { + if (type != mWidgetType) { + mWidgetType = type; + mNote.setNoteValue(NoteColumns.WIDGET_TYPE, String.valueOf(mWidgetType)); + } + } + + public void setWidgetId(int id) { + if (id != mWidgetId) { + mWidgetId = id; + mNote.setNoteValue(NoteColumns.WIDGET_ID, String.valueOf(mWidgetId)); + } + } + + public void setWorkingText(String text) { + if (!TextUtils.equals(mContent, text)) { + mContent = text; + mNote.setTextData(DataColumns.CONTENT, mContent); + } + } + + public void convertToCallNote(String phoneNumber, long callDate) { + mNote.setCallData(CallNote.CALL_DATE, String.valueOf(callDate)); + mNote.setCallData(CallNote.PHONE_NUMBER, phoneNumber); + mNote.setNoteValue(NoteColumns.PARENT_ID, String.valueOf(Notes.ID_CALL_RECORD_FOLDER)); + } + + public boolean hasClockAlert() { + return (mAlertDate > 0 ? true : false); + } + + public String getContent() { + return mContent; + } + + public long getAlertDate() { + return mAlertDate; + } + + public long getModifiedDate() { + return mModifiedDate; + } + + public int getBgColorResId() { + return NoteBgResources.getNoteBgResource(mBgColorId); + } + + public int getBgColorId() { + return mBgColorId; + } + + public int getTitleBgResId() { + return NoteBgResources.getNoteTitleBgResource(mBgColorId); + } + + public int getCheckListMode() { + return mMode; + } + + public long getNoteId() { + return mNoteId; + } + + public long getFolderId() { + return mFolderId; + } + + public int getWidgetId() { + return mWidgetId; + } + + public int getWidgetType() { + return mWidgetType; + } + + public interface NoteSettingChangedListener { + /** + * Called when the background color of current note has just changed + */ + void onBackgroundColorChanged(); + + /** + * Called when user set clock + */ + void onClockAlertChanged(long date, boolean set); + + /** + * Call when user create note from widget + */ + void onWidgetChanged(); + + /** + * Call when switch between check list mode and normal mode + * @param oldMode is previous mode before change + * @param newMode is new mode + */ + void onCheckListModeChanged(int oldMode, int newMode); + } +} diff --git a/src/net/micode/notes/tool/BackupUtils.java b/src/net/micode/notes/tool/BackupUtils.java new file mode 100644 index 0000000..39f6ec4 --- /dev/null +++ b/src/net/micode/notes/tool/BackupUtils.java @@ -0,0 +1,344 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.tool; + +import android.content.Context; +import android.database.Cursor; +import android.os.Environment; +import android.text.TextUtils; +import android.text.format.DateFormat; +import android.util.Log; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.DataConstants; +import net.micode.notes.data.Notes.NoteColumns; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.PrintStream; + + +public class BackupUtils { + private static final String TAG = "BackupUtils"; + // Singleton stuff + private static BackupUtils sInstance; + + public static synchronized BackupUtils getInstance(Context context) { + if (sInstance == null) { + sInstance = new BackupUtils(context); + } + return sInstance; + } + + /** + * Following states are signs to represents backup or restore + * status + */ + // Currently, the sdcard is not mounted + public static final int STATE_SD_CARD_UNMOUONTED = 0; + // The backup file not exist + public static final int STATE_BACKUP_FILE_NOT_EXIST = 1; + // The data is not well formated, may be changed by other programs + public static final int STATE_DATA_DESTROIED = 2; + // Some run-time exception which causes restore or backup fails + public static final int STATE_SYSTEM_ERROR = 3; + // Backup or restore success + public static final int STATE_SUCCESS = 4; + + private TextExport mTextExport; + + private BackupUtils(Context context) { + mTextExport = new TextExport(context); + } + + private static boolean externalStorageAvailable() { + return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); + } + + public int exportToText() { + return mTextExport.exportToText(); + } + + public String getExportedTextFileName() { + return mTextExport.mFileName; + } + + public String getExportedTextFileDir() { + return mTextExport.mFileDirectory; + } + + private static class TextExport { + private static final String[] NOTE_PROJECTION = { + NoteColumns.ID, + NoteColumns.MODIFIED_DATE, + NoteColumns.SNIPPET, + NoteColumns.TYPE + }; + + private static final int NOTE_COLUMN_ID = 0; + + private static final int NOTE_COLUMN_MODIFIED_DATE = 1; + + private static final int NOTE_COLUMN_SNIPPET = 2; + + private static final String[] DATA_PROJECTION = { + DataColumns.CONTENT, + DataColumns.MIME_TYPE, + DataColumns.DATA1, + DataColumns.DATA2, + DataColumns.DATA3, + DataColumns.DATA4, + }; + + private static final int DATA_COLUMN_CONTENT = 0; + + private static final int DATA_COLUMN_MIME_TYPE = 1; + + private static final int DATA_COLUMN_CALL_DATE = 2; + + private static final int DATA_COLUMN_PHONE_NUMBER = 4; + + private final String [] TEXT_FORMAT; + private static final int FORMAT_FOLDER_NAME = 0; + private static final int FORMAT_NOTE_DATE = 1; + private static final int FORMAT_NOTE_CONTENT = 2; + + private Context mContext; + private String mFileName; + private String mFileDirectory; + + public TextExport(Context context) { + TEXT_FORMAT = context.getResources().getStringArray(R.array.format_for_exported_note); + mContext = context; + mFileName = ""; + mFileDirectory = ""; + } + + private String getFormat(int id) { + return TEXT_FORMAT[id]; + } + + /** + * Export the folder identified by folder id to text + */ + private void exportFolderToText(String folderId, PrintStream ps) { + // Query notes belong to this folder + Cursor notesCursor = mContext.getContentResolver().query(Notes.CONTENT_NOTE_URI, + NOTE_PROJECTION, NoteColumns.PARENT_ID + "=?", new String[] { + folderId + }, null); + + if (notesCursor != null) { + if (notesCursor.moveToFirst()) { + do { + // Print note's last modified date + ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( + mContext.getString(R.string.format_datetime_mdhm), + notesCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); + // Query data belong to this note + String noteId = notesCursor.getString(NOTE_COLUMN_ID); + exportNoteToText(noteId, ps); + } while (notesCursor.moveToNext()); + } + notesCursor.close(); + } + } + + /** + * Export note identified by id to a print stream + */ + private void exportNoteToText(String noteId, PrintStream ps) { + Cursor dataCursor = mContext.getContentResolver().query(Notes.CONTENT_DATA_URI, + DATA_PROJECTION, DataColumns.NOTE_ID + "=?", new String[] { + noteId + }, null); + + if (dataCursor != null) { + if (dataCursor.moveToFirst()) { + do { + String mimeType = dataCursor.getString(DATA_COLUMN_MIME_TYPE); + if (DataConstants.CALL_NOTE.equals(mimeType)) { + // Print phone number + String phoneNumber = dataCursor.getString(DATA_COLUMN_PHONE_NUMBER); + long callDate = dataCursor.getLong(DATA_COLUMN_CALL_DATE); + String location = dataCursor.getString(DATA_COLUMN_CONTENT); + + if (!TextUtils.isEmpty(phoneNumber)) { + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), + phoneNumber)); + } + // Print call date + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), DateFormat + .format(mContext.getString(R.string.format_datetime_mdhm), + callDate))); + // Print call attachment location + if (!TextUtils.isEmpty(location)) { + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), + location)); + } + } else if (DataConstants.NOTE.equals(mimeType)) { + String content = dataCursor.getString(DATA_COLUMN_CONTENT); + if (!TextUtils.isEmpty(content)) { + ps.println(String.format(getFormat(FORMAT_NOTE_CONTENT), + content)); + } + } + } while (dataCursor.moveToNext()); + } + dataCursor.close(); + } + // print a line separator between note + try { + ps.write(new byte[] { + Character.LINE_SEPARATOR, Character.LETTER_NUMBER + }); + } catch (IOException e) { + Log.e(TAG, e.toString()); + } + } + + /** + * Note will be exported as text which is user readable + */ + public int exportToText() { + if (!externalStorageAvailable()) { + Log.d(TAG, "Media was not mounted"); + return STATE_SD_CARD_UNMOUONTED; + } + + PrintStream ps = getExportToTextPrintStream(); + if (ps == null) { + Log.e(TAG, "get print stream error"); + return STATE_SYSTEM_ERROR; + } + // First export folder and its notes + Cursor folderCursor = mContext.getContentResolver().query( + Notes.CONTENT_NOTE_URI, + NOTE_PROJECTION, + "(" + NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + " AND " + + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + ") OR " + + NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER, null, null); + + if (folderCursor != null) { + if (folderCursor.moveToFirst()) { + do { + // Print folder's name + String folderName = ""; + if(folderCursor.getLong(NOTE_COLUMN_ID) == Notes.ID_CALL_RECORD_FOLDER) { + folderName = mContext.getString(R.string.call_record_folder_name); + } else { + folderName = folderCursor.getString(NOTE_COLUMN_SNIPPET); + } + if (!TextUtils.isEmpty(folderName)) { + ps.println(String.format(getFormat(FORMAT_FOLDER_NAME), folderName)); + } + String folderId = folderCursor.getString(NOTE_COLUMN_ID); + exportFolderToText(folderId, ps); + } while (folderCursor.moveToNext()); + } + folderCursor.close(); + } + + // Export notes in root's folder + Cursor noteCursor = mContext.getContentResolver().query( + Notes.CONTENT_NOTE_URI, + NOTE_PROJECTION, + NoteColumns.TYPE + "=" + +Notes.TYPE_NOTE + " AND " + NoteColumns.PARENT_ID + + "=0", null, null); + + if (noteCursor != null) { + if (noteCursor.moveToFirst()) { + do { + ps.println(String.format(getFormat(FORMAT_NOTE_DATE), DateFormat.format( + mContext.getString(R.string.format_datetime_mdhm), + noteCursor.getLong(NOTE_COLUMN_MODIFIED_DATE)))); + // Query data belong to this note + String noteId = noteCursor.getString(NOTE_COLUMN_ID); + exportNoteToText(noteId, ps); + } while (noteCursor.moveToNext()); + } + noteCursor.close(); + } + ps.close(); + + return STATE_SUCCESS; + } + + /** + * Get a print stream pointed to the file {@generateExportedTextFile} + */ + private PrintStream getExportToTextPrintStream() { + File file = generateFileMountedOnSDcard(mContext, R.string.file_path, + R.string.file_name_txt_format); + if (file == null) { + Log.e(TAG, "create file to exported failed"); + return null; + } + mFileName = file.getName(); + mFileDirectory = mContext.getString(R.string.file_path); + PrintStream ps = null; + try { + FileOutputStream fos = new FileOutputStream(file); + ps = new PrintStream(fos); + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } catch (NullPointerException e) { + e.printStackTrace(); + return null; + } + return ps; + } + } + + /** + * Generate the text file to store imported data + */ + private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { + StringBuilder sb = new StringBuilder(); + sb.append(Environment.getExternalStorageDirectory()); + sb.append(context.getString(filePathResId)); + File filedir = new File(sb.toString()); + sb.append(context.getString( + fileNameFormatResId, + DateFormat.format(context.getString(R.string.format_date_ymd), + System.currentTimeMillis()))); + File file = new File(sb.toString()); + + try { + if (!filedir.exists()) { + filedir.mkdir(); + } + if (!file.exists()) { + file.createNewFile(); + } + return file; + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } +} + + diff --git a/src/net/micode/notes/tool/DataUtils.java b/src/net/micode/notes/tool/DataUtils.java new file mode 100644 index 0000000..2a14982 --- /dev/null +++ b/src/net/micode/notes/tool/DataUtils.java @@ -0,0 +1,295 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.tool; + +import android.content.ContentProviderOperation; +import android.content.ContentProviderResult; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.OperationApplicationException; +import android.database.Cursor; +import android.os.RemoteException; +import android.util.Log; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.CallNote; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute; + +import java.util.ArrayList; +import java.util.HashSet; + + +public class DataUtils { + public static final String TAG = "DataUtils"; + public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) { + if (ids == null) { + Log.d(TAG, "the ids is null"); + return true; + } + if (ids.size() == 0) { + Log.d(TAG, "no id is in the hashset"); + return true; + } + + ArrayList operationList = new ArrayList(); + for (long id : ids) { + if(id == Notes.ID_ROOT_FOLDER) { + Log.e(TAG, "Don't delete system folder root"); + continue; + } + ContentProviderOperation.Builder builder = ContentProviderOperation + .newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); + operationList.add(builder.build()); + } + try { + ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); + if (results == null || results.length == 0 || results[0] == null) { + Log.d(TAG, "delete notes failed, ids:" + ids.toString()); + return false; + } + return true; + } catch (RemoteException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } catch (OperationApplicationException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } + return false; + } + + public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.PARENT_ID, desFolderId); + values.put(NoteColumns.ORIGIN_PARENT_ID, srcFolderId); + values.put(NoteColumns.LOCAL_MODIFIED, 1); + resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null); + } + + public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids, + long folderId) { + if (ids == null) { + Log.d(TAG, "the ids is null"); + return true; + } + + ArrayList operationList = new ArrayList(); + for (long id : ids) { + ContentProviderOperation.Builder builder = ContentProviderOperation + .newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id)); + builder.withValue(NoteColumns.PARENT_ID, folderId); + builder.withValue(NoteColumns.LOCAL_MODIFIED, 1); + operationList.add(builder.build()); + } + + try { + ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList); + if (results == null || results.length == 0 || results[0] == null) { + Log.d(TAG, "delete notes failed, ids:" + ids.toString()); + return false; + } + return true; + } catch (RemoteException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } catch (OperationApplicationException e) { + Log.e(TAG, String.format("%s: %s", e.toString(), e.getMessage())); + } + return false; + } + + /** + * Get the all folder count except system folders {@link Notes#TYPE_SYSTEM}} + */ + public static int getUserFolderCount(ContentResolver resolver) { + Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI, + new String[] { "COUNT(*)" }, + NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>?", + new String[] { String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)}, + null); + + int count = 0; + if(cursor != null) { + if(cursor.moveToFirst()) { + try { + count = cursor.getInt(0); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, "get folder count failed:" + e.toString()); + } finally { + cursor.close(); + } + } + } + return count; + } + + public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) { + Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), + null, + NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER, + new String [] {String.valueOf(type)}, + null); + + boolean exist = false; + if (cursor != null) { + if (cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) { + Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), + null, null, null, null); + + boolean exist = false; + if (cursor != null) { + if (cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static boolean existInDataDatabase(ContentResolver resolver, long dataId) { + Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), + null, null, null, null); + + boolean exist = false; + if (cursor != null) { + if (cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static boolean checkVisibleFolderName(ContentResolver resolver, String name) { + Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null, + NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + + " AND " + NoteColumns.SNIPPET + "=?", + new String[] { name }, null); + boolean exist = false; + if(cursor != null) { + if(cursor.getCount() > 0) { + exist = true; + } + cursor.close(); + } + return exist; + } + + public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) { + Cursor c = resolver.query(Notes.CONTENT_NOTE_URI, + new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE }, + NoteColumns.PARENT_ID + "=?", + new String[] { String.valueOf(folderId) }, + null); + + HashSet set = null; + if (c != null) { + if (c.moveToFirst()) { + set = new HashSet(); + do { + try { + AppWidgetAttribute widget = new AppWidgetAttribute(); + widget.widgetId = c.getInt(0); + widget.widgetType = c.getInt(1); + set.add(widget); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, e.toString()); + } + } while (c.moveToNext()); + } + c.close(); + } + return set; + } + + public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) { + Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, + new String [] { CallNote.PHONE_NUMBER }, + CallNote.NOTE_ID + "=? AND " + CallNote.MIME_TYPE + "=?", + new String [] { String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE }, + null); + + if (cursor != null && cursor.moveToFirst()) { + try { + return cursor.getString(0); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, "Get call number fails " + e.toString()); + } finally { + cursor.close(); + } + } + return ""; + } + + public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, long callDate) { + Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, + new String [] { CallNote.NOTE_ID }, + CallNote.CALL_DATE + "=? AND " + CallNote.MIME_TYPE + "=? AND PHONE_NUMBERS_EQUAL(" + + CallNote.PHONE_NUMBER + ",?)", + new String [] { String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber }, + null); + + if (cursor != null) { + if (cursor.moveToFirst()) { + try { + return cursor.getLong(0); + } catch (IndexOutOfBoundsException e) { + Log.e(TAG, "Get call note id fails " + e.toString()); + } + } + cursor.close(); + } + return 0; + } + + public static String getSnippetById(ContentResolver resolver, long noteId) { + Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, + new String [] { NoteColumns.SNIPPET }, + NoteColumns.ID + "=?", + new String [] { String.valueOf(noteId)}, + null); + + if (cursor != null) { + String snippet = ""; + if (cursor.moveToFirst()) { + snippet = cursor.getString(0); + } + cursor.close(); + return snippet; + } + throw new IllegalArgumentException("Note is not found with id: " + noteId); + } + + public static String getFormattedSnippet(String snippet) { + if (snippet != null) { + snippet = snippet.trim(); + int index = snippet.indexOf('\n'); + if (index != -1) { + snippet = snippet.substring(0, index); + } + } + return snippet; + } +} diff --git a/src/net/micode/notes/tool/GTaskStringUtils.java b/src/net/micode/notes/tool/GTaskStringUtils.java new file mode 100644 index 0000000..666b729 --- /dev/null +++ b/src/net/micode/notes/tool/GTaskStringUtils.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.tool; + +public class GTaskStringUtils { + + public final static String GTASK_JSON_ACTION_ID = "action_id"; + + public final static String GTASK_JSON_ACTION_LIST = "action_list"; + + public final static String GTASK_JSON_ACTION_TYPE = "action_type"; + + public final static String GTASK_JSON_ACTION_TYPE_CREATE = "create"; + + public final static String GTASK_JSON_ACTION_TYPE_GETALL = "get_all"; + + public final static String GTASK_JSON_ACTION_TYPE_MOVE = "move"; + + public final static String GTASK_JSON_ACTION_TYPE_UPDATE = "update"; + + public final static String GTASK_JSON_CREATOR_ID = "creator_id"; + + public final static String GTASK_JSON_CHILD_ENTITY = "child_entity"; + + public final static String GTASK_JSON_CLIENT_VERSION = "client_version"; + + public final static String GTASK_JSON_COMPLETED = "completed"; + + public final static String GTASK_JSON_CURRENT_LIST_ID = "current_list_id"; + + public final static String GTASK_JSON_DEFAULT_LIST_ID = "default_list_id"; + + public final static String GTASK_JSON_DELETED = "deleted"; + + public final static String GTASK_JSON_DEST_LIST = "dest_list"; + + public final static String GTASK_JSON_DEST_PARENT = "dest_parent"; + + public final static String GTASK_JSON_DEST_PARENT_TYPE = "dest_parent_type"; + + public final static String GTASK_JSON_ENTITY_DELTA = "entity_delta"; + + public final static String GTASK_JSON_ENTITY_TYPE = "entity_type"; + + public final static String GTASK_JSON_GET_DELETED = "get_deleted"; + + public final static String GTASK_JSON_ID = "id"; + + public final static String GTASK_JSON_INDEX = "index"; + + public final static String GTASK_JSON_LAST_MODIFIED = "last_modified"; + + public final static String GTASK_JSON_LATEST_SYNC_POINT = "latest_sync_point"; + + public final static String GTASK_JSON_LIST_ID = "list_id"; + + public final static String GTASK_JSON_LISTS = "lists"; + + public final static String GTASK_JSON_NAME = "name"; + + public final static String GTASK_JSON_NEW_ID = "new_id"; + + public final static String GTASK_JSON_NOTES = "notes"; + + public final static String GTASK_JSON_PARENT_ID = "parent_id"; + + public final static String GTASK_JSON_PRIOR_SIBLING_ID = "prior_sibling_id"; + + public final static String GTASK_JSON_RESULTS = "results"; + + public final static String GTASK_JSON_SOURCE_LIST = "source_list"; + + public final static String GTASK_JSON_TASKS = "tasks"; + + public final static String GTASK_JSON_TYPE = "type"; + + public final static String GTASK_JSON_TYPE_GROUP = "GROUP"; + + public final static String GTASK_JSON_TYPE_TASK = "TASK"; + + public final static String GTASK_JSON_USER = "user"; + + public final static String MIUI_FOLDER_PREFFIX = "[MIUI_Notes]"; + + public final static String FOLDER_DEFAULT = "Default"; + + public final static String FOLDER_CALL_NOTE = "Call_Note"; + + public final static String FOLDER_META = "METADATA"; + + public final static String META_HEAD_GTASK_ID = "meta_gid"; + + public final static String META_HEAD_NOTE = "meta_note"; + + public final static String META_HEAD_DATA = "meta_data"; + + public final static String META_NOTE_NAME = "[META INFO] DON'T UPDATE AND DELETE"; + +} diff --git a/src/net/micode/notes/tool/ResourceParser.java b/src/net/micode/notes/tool/ResourceParser.java new file mode 100644 index 0000000..1ad3ad6 --- /dev/null +++ b/src/net/micode/notes/tool/ResourceParser.java @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.tool; + +import android.content.Context; +import android.preference.PreferenceManager; + +import net.micode.notes.R; +import net.micode.notes.ui.NotesPreferenceActivity; + +public class ResourceParser { + + public static final int YELLOW = 0; + public static final int BLUE = 1; + public static final int WHITE = 2; + public static final int GREEN = 3; + public static final int RED = 4; + + public static final int BG_DEFAULT_COLOR = YELLOW; + + public static final int TEXT_SMALL = 0; + public static final int TEXT_MEDIUM = 1; + public static final int TEXT_LARGE = 2; + public static final int TEXT_SUPER = 3; + + public static final int BG_DEFAULT_FONT_SIZE = TEXT_MEDIUM; + + public static class NoteBgResources { + private final static int [] BG_EDIT_RESOURCES = new int [] { + R.drawable.edit_yellow, + R.drawable.edit_blue, + R.drawable.edit_white, + R.drawable.edit_green, + R.drawable.edit_red + }; + + private final static int [] BG_EDIT_TITLE_RESOURCES = new int [] { + R.drawable.edit_title_yellow, + R.drawable.edit_title_blue, + R.drawable.edit_title_white, + R.drawable.edit_title_green, + R.drawable.edit_title_red + }; + + public static int getNoteBgResource(int id) { + return BG_EDIT_RESOURCES[id]; + } + + public static int getNoteTitleBgResource(int id) { + return BG_EDIT_TITLE_RESOURCES[id]; + } + } + + public static int getDefaultBgId(Context context) { + if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean( + NotesPreferenceActivity.PREFERENCE_SET_BG_COLOR_KEY, false)) { + return (int) (Math.random() * NoteBgResources.BG_EDIT_RESOURCES.length); + } else { + return BG_DEFAULT_COLOR; + } + } + + public static class NoteItemBgResources { + private final static int [] BG_FIRST_RESOURCES = new int [] { + R.drawable.list_yellow_up, + R.drawable.list_blue_up, + R.drawable.list_white_up, + R.drawable.list_green_up, + R.drawable.list_red_up + }; + + private final static int [] BG_NORMAL_RESOURCES = new int [] { + R.drawable.list_yellow_middle, + R.drawable.list_blue_middle, + R.drawable.list_white_middle, + R.drawable.list_green_middle, + R.drawable.list_red_middle + }; + + private final static int [] BG_LAST_RESOURCES = new int [] { + R.drawable.list_yellow_down, + R.drawable.list_blue_down, + R.drawable.list_white_down, + R.drawable.list_green_down, + R.drawable.list_red_down, + }; + + private final static int [] BG_SINGLE_RESOURCES = new int [] { + R.drawable.list_yellow_single, + R.drawable.list_blue_single, + R.drawable.list_white_single, + R.drawable.list_green_single, + R.drawable.list_red_single + }; + + public static int getNoteBgFirstRes(int id) { + return BG_FIRST_RESOURCES[id]; + } + + public static int getNoteBgLastRes(int id) { + return BG_LAST_RESOURCES[id]; + } + + public static int getNoteBgSingleRes(int id) { + return BG_SINGLE_RESOURCES[id]; + } + + public static int getNoteBgNormalRes(int id) { + return BG_NORMAL_RESOURCES[id]; + } + + public static int getFolderBgRes() { + return R.drawable.list_folder; + } + } + + public static class WidgetBgResources { + private final static int [] BG_2X_RESOURCES = new int [] { + R.drawable.widget_2x_yellow, + R.drawable.widget_2x_blue, + R.drawable.widget_2x_white, + R.drawable.widget_2x_green, + R.drawable.widget_2x_red, + }; + + public static int getWidget2xBgResource(int id) { + return BG_2X_RESOURCES[id]; + } + + private final static int [] BG_4X_RESOURCES = new int [] { + R.drawable.widget_4x_yellow, + R.drawable.widget_4x_blue, + R.drawable.widget_4x_white, + R.drawable.widget_4x_green, + R.drawable.widget_4x_red + }; + + public static int getWidget4xBgResource(int id) { + return BG_4X_RESOURCES[id]; + } + } + + public static class TextAppearanceResources { + private final static int [] TEXTAPPEARANCE_RESOURCES = new int [] { + R.style.TextAppearanceNormal, + R.style.TextAppearanceMedium, + R.style.TextAppearanceLarge, + R.style.TextAppearanceSuper + }; + + public static int getTexAppearanceResource(int id) { + /** + * HACKME: Fix bug of store the resource id in shared preference. + * The id may larger than the length of resources, in this case, + * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE} + */ + if (id >= TEXTAPPEARANCE_RESOURCES.length) { + return BG_DEFAULT_FONT_SIZE; + } + return TEXTAPPEARANCE_RESOURCES[id]; + } + + public static int getResourcesSize() { + return TEXTAPPEARANCE_RESOURCES.length; + } + } +} diff --git a/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/net/micode/notes/ui/AlarmAlertActivity.java new file mode 100644 index 0000000..85723be --- /dev/null +++ b/src/net/micode/notes/ui/AlarmAlertActivity.java @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.content.DialogInterface.OnDismissListener; +import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.media.RingtoneManager; +import android.net.Uri; +import android.os.Bundle; +import android.os.PowerManager; +import android.provider.Settings; +import android.view.Window; +import android.view.WindowManager; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.DataUtils; + +import java.io.IOException; + + +public class AlarmAlertActivity extends Activity implements OnClickListener, OnDismissListener { + private long mNoteId; + private String mSnippet; + private static final int SNIPPET_PREW_MAX_LEN = 60; + MediaPlayer mPlayer; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestWindowFeature(Window.FEATURE_NO_TITLE); + + final Window win = getWindow(); + win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); + + if (!isScreenOn()) { + win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON + | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON + | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR); + } + + Intent intent = getIntent(); + + try { + mNoteId = Long.valueOf(intent.getData().getPathSegments().get(1)); + mSnippet = DataUtils.getSnippetById(this.getContentResolver(), mNoteId); + mSnippet = mSnippet.length() > SNIPPET_PREW_MAX_LEN ? mSnippet.substring(0, + SNIPPET_PREW_MAX_LEN) + getResources().getString(R.string.notelist_string_info) + : mSnippet; + } catch (IllegalArgumentException e) { + e.printStackTrace(); + return; + } + + mPlayer = new MediaPlayer(); + if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) { + showActionDialog(); + playAlarmSound(); + } else { + finish(); + } + } + + private boolean isScreenOn() { + PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); + return pm.isScreenOn(); + } + + private void playAlarmSound() { + Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM); + + int silentModeStreams = Settings.System.getInt(getContentResolver(), + Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); + + if ((silentModeStreams & (1 << AudioManager.STREAM_ALARM)) != 0) { + mPlayer.setAudioStreamType(silentModeStreams); + } else { + mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); + } + try { + mPlayer.setDataSource(this, url); + mPlayer.prepare(); + mPlayer.setLooping(true); + mPlayer.start(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalStateException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private void showActionDialog() { + AlertDialog.Builder dialog = new AlertDialog.Builder(this); + dialog.setTitle(R.string.app_name); + dialog.setMessage(mSnippet); + dialog.setPositiveButton(R.string.notealert_ok, this); + if (isScreenOn()) { + dialog.setNegativeButton(R.string.notealert_enter, this); + } + dialog.show().setOnDismissListener(this); + } + + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_NEGATIVE: + Intent intent = new Intent(this, NoteEditActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.putExtra(Intent.EXTRA_UID, mNoteId); + startActivity(intent); + break; + default: + break; + } + } + + public void onDismiss(DialogInterface dialog) { + stopAlarmSound(); + finish(); + } + + private void stopAlarmSound() { + if (mPlayer != null) { + mPlayer.stop(); + mPlayer.release(); + mPlayer = null; + } + } +} diff --git a/src/net/micode/notes/ui/AlarmInitReceiver.java b/src/net/micode/notes/ui/AlarmInitReceiver.java new file mode 100644 index 0000000..f221202 --- /dev/null +++ b/src/net/micode/notes/ui/AlarmInitReceiver.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.ContentUris; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; + +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; + + +public class AlarmInitReceiver extends BroadcastReceiver { + + private static final String [] PROJECTION = new String [] { + NoteColumns.ID, + NoteColumns.ALERTED_DATE + }; + + private static final int COLUMN_ID = 0; + private static final int COLUMN_ALERTED_DATE = 1; + + @Override + public void onReceive(Context context, Intent intent) { + long currentDate = System.currentTimeMillis(); + Cursor c = context.getContentResolver().query(Notes.CONTENT_NOTE_URI, + PROJECTION, + NoteColumns.ALERTED_DATE + ">? AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE, + new String[] { String.valueOf(currentDate) }, + null); + + if (c != null) { + if (c.moveToFirst()) { + do { + long alertDate = c.getLong(COLUMN_ALERTED_DATE); + Intent sender = new Intent(context, AlarmReceiver.class); + sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID))); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, 0); + AlarmManager alermManager = (AlarmManager) context + .getSystemService(Context.ALARM_SERVICE); + alermManager.set(AlarmManager.RTC_WAKEUP, alertDate, pendingIntent); + } while (c.moveToNext()); + } + c.close(); + } + } +} diff --git a/src/net/micode/notes/ui/AlarmReceiver.java b/src/net/micode/notes/ui/AlarmReceiver.java new file mode 100644 index 0000000..54e503b --- /dev/null +++ b/src/net/micode/notes/ui/AlarmReceiver.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +public class AlarmReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + intent.setClass(context, AlarmAlertActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); + } +} diff --git a/src/net/micode/notes/ui/DateTimePicker.java b/src/net/micode/notes/ui/DateTimePicker.java new file mode 100644 index 0000000..496b0cd --- /dev/null +++ b/src/net/micode/notes/ui/DateTimePicker.java @@ -0,0 +1,485 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import java.text.DateFormatSymbols; +import java.util.Calendar; + +import net.micode.notes.R; + + +import android.content.Context; +import android.text.format.DateFormat; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.NumberPicker; + +public class DateTimePicker extends FrameLayout { + + private static final boolean DEFAULT_ENABLE_STATE = true; + + private static final int HOURS_IN_HALF_DAY = 12; + private static final int HOURS_IN_ALL_DAY = 24; + private static final int DAYS_IN_ALL_WEEK = 7; + private static final int DATE_SPINNER_MIN_VAL = 0; + private static final int DATE_SPINNER_MAX_VAL = DAYS_IN_ALL_WEEK - 1; + private static final int HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW = 0; + private static final int HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW = 23; + private static final int HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW = 1; + private static final int HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW = 12; + private static final int MINUT_SPINNER_MIN_VAL = 0; + private static final int MINUT_SPINNER_MAX_VAL = 59; + private static final int AMPM_SPINNER_MIN_VAL = 0; + private static final int AMPM_SPINNER_MAX_VAL = 1; + + private final NumberPicker mDateSpinner; + private final NumberPicker mHourSpinner; + private final NumberPicker mMinuteSpinner; + private final NumberPicker mAmPmSpinner; + private Calendar mDate; + + private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK]; + + private boolean mIsAm; + + private boolean mIs24HourView; + + private boolean mIsEnabled = DEFAULT_ENABLE_STATE; + + private boolean mInitialising; + + private OnDateTimeChangedListener mOnDateTimeChangedListener; + + private NumberPicker.OnValueChangeListener mOnDateChangedListener = new NumberPicker.OnValueChangeListener() { + @Override + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + mDate.add(Calendar.DAY_OF_YEAR, newVal - oldVal); + updateDateControl(); + onDateTimeChanged(); + } + }; + + private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() { + @Override + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + boolean isDateChanged = false; + Calendar cal = Calendar.getInstance(); + if (!mIs24HourView) { + if (!mIsAm && oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY) { + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, 1); + isDateChanged = true; + } else if (mIsAm && oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, -1); + isDateChanged = true; + } + if (oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY || + oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { + mIsAm = !mIsAm; + updateAmPmControl(); + } + } else { + if (oldVal == HOURS_IN_ALL_DAY - 1 && newVal == 0) { + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, 1); + isDateChanged = true; + } else if (oldVal == 0 && newVal == HOURS_IN_ALL_DAY - 1) { + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, -1); + isDateChanged = true; + } + } + int newHour = mHourSpinner.getValue() % HOURS_IN_HALF_DAY + (mIsAm ? 0 : HOURS_IN_HALF_DAY); + mDate.set(Calendar.HOUR_OF_DAY, newHour); + onDateTimeChanged(); + if (isDateChanged) { + setCurrentYear(cal.get(Calendar.YEAR)); + setCurrentMonth(cal.get(Calendar.MONTH)); + setCurrentDay(cal.get(Calendar.DAY_OF_MONTH)); + } + } + }; + + private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() { + @Override + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + int minValue = mMinuteSpinner.getMinValue(); + int maxValue = mMinuteSpinner.getMaxValue(); + int offset = 0; + if (oldVal == maxValue && newVal == minValue) { + offset += 1; + } else if (oldVal == minValue && newVal == maxValue) { + offset -= 1; + } + if (offset != 0) { + mDate.add(Calendar.HOUR_OF_DAY, offset); + mHourSpinner.setValue(getCurrentHour()); + updateDateControl(); + int newHour = getCurrentHourOfDay(); + if (newHour >= HOURS_IN_HALF_DAY) { + mIsAm = false; + updateAmPmControl(); + } else { + mIsAm = true; + updateAmPmControl(); + } + } + mDate.set(Calendar.MINUTE, newVal); + onDateTimeChanged(); + } + }; + + private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() { + @Override + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + mIsAm = !mIsAm; + if (mIsAm) { + mDate.add(Calendar.HOUR_OF_DAY, -HOURS_IN_HALF_DAY); + } else { + mDate.add(Calendar.HOUR_OF_DAY, HOURS_IN_HALF_DAY); + } + updateAmPmControl(); + onDateTimeChanged(); + } + }; + + public interface OnDateTimeChangedListener { + void onDateTimeChanged(DateTimePicker view, int year, int month, + int dayOfMonth, int hourOfDay, int minute); + } + + public DateTimePicker(Context context) { + this(context, System.currentTimeMillis()); + } + + public DateTimePicker(Context context, long date) { + this(context, date, DateFormat.is24HourFormat(context)); + } + + public DateTimePicker(Context context, long date, boolean is24HourView) { + super(context); + mDate = Calendar.getInstance(); + mInitialising = true; + mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY; + inflate(context, R.layout.datetime_picker, this); + + mDateSpinner = (NumberPicker) findViewById(R.id.date); + mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL); + mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL); + mDateSpinner.setOnValueChangedListener(mOnDateChangedListener); + + mHourSpinner = (NumberPicker) findViewById(R.id.hour); + mHourSpinner.setOnValueChangedListener(mOnHourChangedListener); + mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); + mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL); + mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL); + mMinuteSpinner.setOnLongPressUpdateInterval(100); + mMinuteSpinner.setOnValueChangedListener(mOnMinuteChangedListener); + + String[] stringsForAmPm = new DateFormatSymbols().getAmPmStrings(); + mAmPmSpinner = (NumberPicker) findViewById(R.id.amPm); + mAmPmSpinner.setMinValue(AMPM_SPINNER_MIN_VAL); + mAmPmSpinner.setMaxValue(AMPM_SPINNER_MAX_VAL); + mAmPmSpinner.setDisplayedValues(stringsForAmPm); + mAmPmSpinner.setOnValueChangedListener(mOnAmPmChangedListener); + + // update controls to initial state + updateDateControl(); + updateHourControl(); + updateAmPmControl(); + + set24HourView(is24HourView); + + // set to current time + setCurrentDate(date); + + setEnabled(isEnabled()); + + // set the content descriptions + mInitialising = false; + } + + @Override + public void setEnabled(boolean enabled) { + if (mIsEnabled == enabled) { + return; + } + super.setEnabled(enabled); + mDateSpinner.setEnabled(enabled); + mMinuteSpinner.setEnabled(enabled); + mHourSpinner.setEnabled(enabled); + mAmPmSpinner.setEnabled(enabled); + mIsEnabled = enabled; + } + + @Override + public boolean isEnabled() { + return mIsEnabled; + } + + /** + * Get the current date in millis + * + * @return the current date in millis + */ + public long getCurrentDateInTimeMillis() { + return mDate.getTimeInMillis(); + } + + /** + * Set the current date + * + * @param date The current date in millis + */ + public void setCurrentDate(long date) { + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(date); + setCurrentDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), + cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE)); + } + + /** + * Set the current date + * + * @param year The current year + * @param month The current month + * @param dayOfMonth The current dayOfMonth + * @param hourOfDay The current hourOfDay + * @param minute The current minute + */ + public void setCurrentDate(int year, int month, + int dayOfMonth, int hourOfDay, int minute) { + setCurrentYear(year); + setCurrentMonth(month); + setCurrentDay(dayOfMonth); + setCurrentHour(hourOfDay); + setCurrentMinute(minute); + } + + /** + * Get current year + * + * @return The current year + */ + public int getCurrentYear() { + return mDate.get(Calendar.YEAR); + } + + /** + * Set current year + * + * @param year The current year + */ + public void setCurrentYear(int year) { + if (!mInitialising && year == getCurrentYear()) { + return; + } + mDate.set(Calendar.YEAR, year); + updateDateControl(); + onDateTimeChanged(); + } + + /** + * Get current month in the year + * + * @return The current month in the year + */ + public int getCurrentMonth() { + return mDate.get(Calendar.MONTH); + } + + /** + * Set current month in the year + * + * @param month The month in the year + */ + public void setCurrentMonth(int month) { + if (!mInitialising && month == getCurrentMonth()) { + return; + } + mDate.set(Calendar.MONTH, month); + updateDateControl(); + onDateTimeChanged(); + } + + /** + * Get current day of the month + * + * @return The day of the month + */ + public int getCurrentDay() { + return mDate.get(Calendar.DAY_OF_MONTH); + } + + /** + * Set current day of the month + * + * @param dayOfMonth The day of the month + */ + public void setCurrentDay(int dayOfMonth) { + if (!mInitialising && dayOfMonth == getCurrentDay()) { + return; + } + mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); + updateDateControl(); + onDateTimeChanged(); + } + + /** + * Get current hour in 24 hour mode, in the range (0~23) + * @return The current hour in 24 hour mode + */ + public int getCurrentHourOfDay() { + return mDate.get(Calendar.HOUR_OF_DAY); + } + + private int getCurrentHour() { + if (mIs24HourView){ + return getCurrentHourOfDay(); + } else { + int hour = getCurrentHourOfDay(); + if (hour > HOURS_IN_HALF_DAY) { + return hour - HOURS_IN_HALF_DAY; + } else { + return hour == 0 ? HOURS_IN_HALF_DAY : hour; + } + } + } + + /** + * Set current hour in 24 hour mode, in the range (0~23) + * + * @param hourOfDay + */ + public void setCurrentHour(int hourOfDay) { + if (!mInitialising && hourOfDay == getCurrentHourOfDay()) { + return; + } + mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); + if (!mIs24HourView) { + if (hourOfDay >= HOURS_IN_HALF_DAY) { + mIsAm = false; + if (hourOfDay > HOURS_IN_HALF_DAY) { + hourOfDay -= HOURS_IN_HALF_DAY; + } + } else { + mIsAm = true; + if (hourOfDay == 0) { + hourOfDay = HOURS_IN_HALF_DAY; + } + } + updateAmPmControl(); + } + mHourSpinner.setValue(hourOfDay); + onDateTimeChanged(); + } + + /** + * Get currentMinute + * + * @return The Current Minute + */ + public int getCurrentMinute() { + return mDate.get(Calendar.MINUTE); + } + + /** + * Set current minute + */ + public void setCurrentMinute(int minute) { + if (!mInitialising && minute == getCurrentMinute()) { + return; + } + mMinuteSpinner.setValue(minute); + mDate.set(Calendar.MINUTE, minute); + onDateTimeChanged(); + } + + /** + * @return true if this is in 24 hour view else false. + */ + public boolean is24HourView () { + return mIs24HourView; + } + + /** + * Set whether in 24 hour or AM/PM mode. + * + * @param is24HourView True for 24 hour mode. False for AM/PM mode. + */ + public void set24HourView(boolean is24HourView) { + if (mIs24HourView == is24HourView) { + return; + } + mIs24HourView = is24HourView; + mAmPmSpinner.setVisibility(is24HourView ? View.GONE : View.VISIBLE); + int hour = getCurrentHourOfDay(); + updateHourControl(); + setCurrentHour(hour); + updateAmPmControl(); + } + + private void updateDateControl() { + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(mDate.getTimeInMillis()); + cal.add(Calendar.DAY_OF_YEAR, -DAYS_IN_ALL_WEEK / 2 - 1); + mDateSpinner.setDisplayedValues(null); + for (int i = 0; i < DAYS_IN_ALL_WEEK; ++i) { + cal.add(Calendar.DAY_OF_YEAR, 1); + mDateDisplayValues[i] = (String) DateFormat.format("MM.dd EEEE", cal); + } + mDateSpinner.setDisplayedValues(mDateDisplayValues); + mDateSpinner.setValue(DAYS_IN_ALL_WEEK / 2); + mDateSpinner.invalidate(); + } + + private void updateAmPmControl() { + if (mIs24HourView) { + mAmPmSpinner.setVisibility(View.GONE); + } else { + int index = mIsAm ? Calendar.AM : Calendar.PM; + mAmPmSpinner.setValue(index); + mAmPmSpinner.setVisibility(View.VISIBLE); + } + } + + private void updateHourControl() { + if (mIs24HourView) { + mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW); + mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW); + } else { + mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW); + mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW); + } + } + + /** + * Set the callback that indicates the 'Set' button has been pressed. + * @param callback the callback, if null will do nothing + */ + public void setOnDateTimeChangedListener(OnDateTimeChangedListener callback) { + mOnDateTimeChangedListener = callback; + } + + private void onDateTimeChanged() { + if (mOnDateTimeChangedListener != null) { + mOnDateTimeChangedListener.onDateTimeChanged(this, getCurrentYear(), + getCurrentMonth(), getCurrentDay(), getCurrentHourOfDay(), getCurrentMinute()); + } + } +} diff --git a/src/net/micode/notes/ui/DateTimePickerDialog.java b/src/net/micode/notes/ui/DateTimePickerDialog.java new file mode 100644 index 0000000..2c47ba4 --- /dev/null +++ b/src/net/micode/notes/ui/DateTimePickerDialog.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import java.util.Calendar; + +import net.micode.notes.R; +import net.micode.notes.ui.DateTimePicker; +import net.micode.notes.ui.DateTimePicker.OnDateTimeChangedListener; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.text.format.DateFormat; +import android.text.format.DateUtils; + +public class DateTimePickerDialog extends AlertDialog implements OnClickListener { + + private Calendar mDate = Calendar.getInstance(); + private boolean mIs24HourView; + private OnDateTimeSetListener mOnDateTimeSetListener; + private DateTimePicker mDateTimePicker; + + public interface OnDateTimeSetListener { + void OnDateTimeSet(AlertDialog dialog, long date); + } + + public DateTimePickerDialog(Context context, long date) { + super(context); + mDateTimePicker = new DateTimePicker(context); + setView(mDateTimePicker); + mDateTimePicker.setOnDateTimeChangedListener(new OnDateTimeChangedListener() { + public void onDateTimeChanged(DateTimePicker view, int year, int month, + int dayOfMonth, int hourOfDay, int minute) { + mDate.set(Calendar.YEAR, year); + mDate.set(Calendar.MONTH, month); + mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); + mDate.set(Calendar.HOUR_OF_DAY, hourOfDay); + mDate.set(Calendar.MINUTE, minute); + updateTitle(mDate.getTimeInMillis()); + } + }); + mDate.setTimeInMillis(date); + mDate.set(Calendar.SECOND, 0); + mDateTimePicker.setCurrentDate(mDate.getTimeInMillis()); + setButton(context.getString(R.string.datetime_dialog_ok), this); + setButton2(context.getString(R.string.datetime_dialog_cancel), (OnClickListener)null); + set24HourView(DateFormat.is24HourFormat(this.getContext())); + updateTitle(mDate.getTimeInMillis()); + } + + public void set24HourView(boolean is24HourView) { + mIs24HourView = is24HourView; + } + + public void setOnDateTimeSetListener(OnDateTimeSetListener callBack) { + mOnDateTimeSetListener = callBack; + } + + private void updateTitle(long date) { + int flag = + DateUtils.FORMAT_SHOW_YEAR | + DateUtils.FORMAT_SHOW_DATE | + DateUtils.FORMAT_SHOW_TIME; + flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR; + setTitle(DateUtils.formatDateTime(this.getContext(), date, flag)); + } + + public void onClick(DialogInterface arg0, int arg1) { + if (mOnDateTimeSetListener != null) { + mOnDateTimeSetListener.OnDateTimeSet(this, mDate.getTimeInMillis()); + } + } + +} \ No newline at end of file diff --git a/src/net/micode/notes/ui/DropdownMenu.java b/src/net/micode/notes/ui/DropdownMenu.java new file mode 100644 index 0000000..613dc74 --- /dev/null +++ b/src/net/micode/notes/ui/DropdownMenu.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.PopupMenu; +import android.widget.PopupMenu.OnMenuItemClickListener; + +import net.micode.notes.R; + +public class DropdownMenu { + private Button mButton; + private PopupMenu mPopupMenu; + private Menu mMenu; + + public DropdownMenu(Context context, Button button, int menuId) { + mButton = button; + mButton.setBackgroundResource(R.drawable.dropdown_icon); + mPopupMenu = new PopupMenu(context, mButton); + mMenu = mPopupMenu.getMenu(); + mPopupMenu.getMenuInflater().inflate(menuId, mMenu); + mButton.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + mPopupMenu.show(); + } + }); + } + + public void setOnDropdownMenuItemClickListener(OnMenuItemClickListener listener) { + if (mPopupMenu != null) { + mPopupMenu.setOnMenuItemClickListener(listener); + } + } + + public MenuItem findItem(int id) { + return mMenu.findItem(id); + } + + public void setTitle(CharSequence title) { + mButton.setText(title); + } +} diff --git a/src/net/micode/notes/ui/FoldersListAdapter.java b/src/net/micode/notes/ui/FoldersListAdapter.java new file mode 100644 index 0000000..96b77da --- /dev/null +++ b/src/net/micode/notes/ui/FoldersListAdapter.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; +import android.widget.LinearLayout; +import android.widget.TextView; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; + + +public class FoldersListAdapter extends CursorAdapter { + public static final String [] PROJECTION = { + NoteColumns.ID, + NoteColumns.SNIPPET + }; + + public static final int ID_COLUMN = 0; + public static final int NAME_COLUMN = 1; + + public FoldersListAdapter(Context context, Cursor c) { + super(context, c); + // TODO Auto-generated constructor stub + } + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return new FolderListItem(context); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + if (view instanceof FolderListItem) { + String folderName = (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context + .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); + ((FolderListItem) view).bind(folderName); + } + } + + public String getFolderName(Context context, int position) { + Cursor cursor = (Cursor) getItem(position); + return (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context + .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); + } + + private class FolderListItem extends LinearLayout { + private TextView mName; + + public FolderListItem(Context context) { + super(context); + inflate(context, R.layout.folder_list_item, this); + mName = (TextView) findViewById(R.id.tv_folder_name); + } + + public void bind(String name) { + mName.setText(name); + } + } + +} diff --git a/src/net/micode/notes/ui/NoteEditActivity.java b/src/net/micode/notes/ui/NoteEditActivity.java new file mode 100644 index 0000000..96a9ff8 --- /dev/null +++ b/src/net/micode/notes/ui/NoteEditActivity.java @@ -0,0 +1,873 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.app.Activity; +import android.app.AlarmManager; +import android.app.AlertDialog; +import android.app.PendingIntent; +import android.app.SearchManager; +import android.appwidget.AppWidgetManager; +import android.content.ContentUris; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.graphics.Paint; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.TextUtils; +import android.text.format.DateUtils; +import android.text.style.BackgroundColorSpan; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.WindowManager; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.TextNote; +import net.micode.notes.model.WorkingNote; +import net.micode.notes.model.WorkingNote.NoteSettingChangedListener; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.ResourceParser; +import net.micode.notes.tool.ResourceParser.TextAppearanceResources; +import net.micode.notes.ui.DateTimePickerDialog.OnDateTimeSetListener; +import net.micode.notes.ui.NoteEditText.OnTextViewChangeListener; +import net.micode.notes.widget.NoteWidgetProvider_2x; +import net.micode.notes.widget.NoteWidgetProvider_4x; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +public class NoteEditActivity extends Activity implements OnClickListener, + NoteSettingChangedListener, OnTextViewChangeListener { + private class HeadViewHolder { + public TextView tvModified; + + public ImageView ivAlertIcon; + + public TextView tvAlertDate; + + public ImageView ibSetBgColor; + } + + private static final Map sBgSelectorBtnsMap = new HashMap(); + static { + sBgSelectorBtnsMap.put(R.id.iv_bg_yellow, ResourceParser.YELLOW); + sBgSelectorBtnsMap.put(R.id.iv_bg_red, ResourceParser.RED); + sBgSelectorBtnsMap.put(R.id.iv_bg_blue, ResourceParser.BLUE); + sBgSelectorBtnsMap.put(R.id.iv_bg_green, ResourceParser.GREEN); + sBgSelectorBtnsMap.put(R.id.iv_bg_white, ResourceParser.WHITE); + } + + private static final Map sBgSelectorSelectionMap = new HashMap(); + static { + sBgSelectorSelectionMap.put(ResourceParser.YELLOW, R.id.iv_bg_yellow_select); + sBgSelectorSelectionMap.put(ResourceParser.RED, R.id.iv_bg_red_select); + sBgSelectorSelectionMap.put(ResourceParser.BLUE, R.id.iv_bg_blue_select); + sBgSelectorSelectionMap.put(ResourceParser.GREEN, R.id.iv_bg_green_select); + sBgSelectorSelectionMap.put(ResourceParser.WHITE, R.id.iv_bg_white_select); + } + + private static final Map sFontSizeBtnsMap = new HashMap(); + static { + sFontSizeBtnsMap.put(R.id.ll_font_large, ResourceParser.TEXT_LARGE); + sFontSizeBtnsMap.put(R.id.ll_font_small, ResourceParser.TEXT_SMALL); + sFontSizeBtnsMap.put(R.id.ll_font_normal, ResourceParser.TEXT_MEDIUM); + sFontSizeBtnsMap.put(R.id.ll_font_super, ResourceParser.TEXT_SUPER); + } + + private static final Map sFontSelectorSelectionMap = new HashMap(); + static { + sFontSelectorSelectionMap.put(ResourceParser.TEXT_LARGE, R.id.iv_large_select); + sFontSelectorSelectionMap.put(ResourceParser.TEXT_SMALL, R.id.iv_small_select); + sFontSelectorSelectionMap.put(ResourceParser.TEXT_MEDIUM, R.id.iv_medium_select); + sFontSelectorSelectionMap.put(ResourceParser.TEXT_SUPER, R.id.iv_super_select); + } + + private static final String TAG = "NoteEditActivity"; + + private HeadViewHolder mNoteHeaderHolder; + + private View mHeadViewPanel; + + private View mNoteBgColorSelector; + + private View mFontSizeSelector; + + private EditText mNoteEditor; + + private View mNoteEditorPanel; + + private WorkingNote mWorkingNote; + + private SharedPreferences mSharedPrefs; + private int mFontSizeId; + + private static final String PREFERENCE_FONT_SIZE = "pref_font_size"; + + private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10; + + public static final String TAG_CHECKED = String.valueOf('\u221A'); + public static final String TAG_UNCHECKED = String.valueOf('\u25A1'); + + private LinearLayout mEditTextList; + + private String mUserQuery; + private Pattern mPattern; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + this.setContentView(R.layout.note_edit); + + if (savedInstanceState == null && !initActivityState(getIntent())) { + finish(); + return; + } + initResources(); + } + + /** + * Current activity may be killed when the memory is low. Once it is killed, for another time + * user load this activity, we should restore the former state + */ + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + if (savedInstanceState != null && savedInstanceState.containsKey(Intent.EXTRA_UID)) { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.putExtra(Intent.EXTRA_UID, savedInstanceState.getLong(Intent.EXTRA_UID)); + if (!initActivityState(intent)) { + finish(); + return; + } + Log.d(TAG, "Restoring from killed activity"); + } + } + + private boolean initActivityState(Intent intent) { + /** + * If the user specified the {@link Intent#ACTION_VIEW} but not provided with id, + * then jump to the NotesListActivity + */ + mWorkingNote = null; + if (TextUtils.equals(Intent.ACTION_VIEW, intent.getAction())) { + long noteId = intent.getLongExtra(Intent.EXTRA_UID, 0); + mUserQuery = ""; + + /** + * Starting from the searched result + */ + if (intent.hasExtra(SearchManager.EXTRA_DATA_KEY)) { + noteId = Long.parseLong(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY)); + mUserQuery = intent.getStringExtra(SearchManager.USER_QUERY); + } + + if (!DataUtils.visibleInNoteDatabase(getContentResolver(), noteId, Notes.TYPE_NOTE)) { + Intent jump = new Intent(this, NotesListActivity.class); + startActivity(jump); + showToast(R.string.error_note_not_exist); + finish(); + return false; + } else { + mWorkingNote = WorkingNote.load(this, noteId); + if (mWorkingNote == null) { + Log.e(TAG, "load note failed with note id" + noteId); + finish(); + return false; + } + } + getWindow().setSoftInputMode( + WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN + | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + } else if(TextUtils.equals(Intent.ACTION_INSERT_OR_EDIT, intent.getAction())) { + // New note + long folderId = intent.getLongExtra(Notes.INTENT_EXTRA_FOLDER_ID, 0); + int widgetId = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID); + int widgetType = intent.getIntExtra(Notes.INTENT_EXTRA_WIDGET_TYPE, + Notes.TYPE_WIDGET_INVALIDE); + int bgResId = intent.getIntExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, + ResourceParser.getDefaultBgId(this)); + + // Parse call-record note + String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); + long callDate = intent.getLongExtra(Notes.INTENT_EXTRA_CALL_DATE, 0); + if (callDate != 0 && phoneNumber != null) { + if (TextUtils.isEmpty(phoneNumber)) { + Log.w(TAG, "The call record number is null"); + } + long noteId = 0; + if ((noteId = DataUtils.getNoteIdByPhoneNumberAndCallDate(getContentResolver(), + phoneNumber, callDate)) > 0) { + mWorkingNote = WorkingNote.load(this, noteId); + if (mWorkingNote == null) { + Log.e(TAG, "load call note failed with note id" + noteId); + finish(); + return false; + } + } else { + mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, + widgetType, bgResId); + mWorkingNote.convertToCallNote(phoneNumber, callDate); + } + } else { + mWorkingNote = WorkingNote.createEmptyNote(this, folderId, widgetId, widgetType, + bgResId); + } + + getWindow().setSoftInputMode( + WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE + | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + } else { + Log.e(TAG, "Intent not specified action, should not support"); + finish(); + return false; + } + mWorkingNote.setOnSettingStatusChangedListener(this); + return true; + } + + @Override + protected void onResume() { + super.onResume(); + initNoteScreen(); + } + + private void initNoteScreen() { + mNoteEditor.setTextAppearance(this, TextAppearanceResources + .getTexAppearanceResource(mFontSizeId)); + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + switchToListMode(mWorkingNote.getContent()); + } else { + mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); + mNoteEditor.setSelection(mNoteEditor.getText().length()); + } + for (Integer id : sBgSelectorSelectionMap.keySet()) { + findViewById(sBgSelectorSelectionMap.get(id)).setVisibility(View.GONE); + } + mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); + mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); + + mNoteHeaderHolder.tvModified.setText(DateUtils.formatDateTime(this, + mWorkingNote.getModifiedDate(), DateUtils.FORMAT_SHOW_DATE + | DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME + | DateUtils.FORMAT_SHOW_YEAR)); + + /** + * TODO: Add the menu for setting alert. Currently disable it because the DateTimePicker + * is not ready + */ + showAlertHeader(); + } + + private void showAlertHeader() { + if (mWorkingNote.hasClockAlert()) { + long time = System.currentTimeMillis(); + if (time > mWorkingNote.getAlertDate()) { + mNoteHeaderHolder.tvAlertDate.setText(R.string.note_alert_expired); + } else { + mNoteHeaderHolder.tvAlertDate.setText(DateUtils.getRelativeTimeSpanString( + mWorkingNote.getAlertDate(), time, DateUtils.MINUTE_IN_MILLIS)); + } + mNoteHeaderHolder.tvAlertDate.setVisibility(View.VISIBLE); + mNoteHeaderHolder.ivAlertIcon.setVisibility(View.VISIBLE); + } else { + mNoteHeaderHolder.tvAlertDate.setVisibility(View.GONE); + mNoteHeaderHolder.ivAlertIcon.setVisibility(View.GONE); + }; + } + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + initActivityState(intent); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + /** + * For new note without note id, we should firstly save it to + * generate a id. If the editing note is not worth saving, there + * is no id which is equivalent to create new note + */ + if (!mWorkingNote.existInDatabase()) { + saveNote(); + } + outState.putLong(Intent.EXTRA_UID, mWorkingNote.getNoteId()); + Log.d(TAG, "Save working note id: " + mWorkingNote.getNoteId() + " onSaveInstanceState"); + } + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + if (mNoteBgColorSelector.getVisibility() == View.VISIBLE + && !inRangeOfView(mNoteBgColorSelector, ev)) { + mNoteBgColorSelector.setVisibility(View.GONE); + return true; + } + + if (mFontSizeSelector.getVisibility() == View.VISIBLE + && !inRangeOfView(mFontSizeSelector, ev)) { + mFontSizeSelector.setVisibility(View.GONE); + return true; + } + return super.dispatchTouchEvent(ev); + } + + private boolean inRangeOfView(View view, MotionEvent ev) { + int []location = new int[2]; + view.getLocationOnScreen(location); + int x = location[0]; + int y = location[1]; + if (ev.getX() < x + || ev.getX() > (x + view.getWidth()) + || ev.getY() < y + || ev.getY() > (y + view.getHeight())) { + return false; + } + return true; + } + + private void initResources() { + mHeadViewPanel = findViewById(R.id.note_title); + mNoteHeaderHolder = new HeadViewHolder(); + mNoteHeaderHolder.tvModified = (TextView) findViewById(R.id.tv_modified_date); + mNoteHeaderHolder.ivAlertIcon = (ImageView) findViewById(R.id.iv_alert_icon); + mNoteHeaderHolder.tvAlertDate = (TextView) findViewById(R.id.tv_alert_date); + mNoteHeaderHolder.ibSetBgColor = (ImageView) findViewById(R.id.btn_set_bg_color); + mNoteHeaderHolder.ibSetBgColor.setOnClickListener(this); + mNoteEditor = (EditText) findViewById(R.id.note_edit_view); + mNoteEditorPanel = findViewById(R.id.sv_note_edit); + mNoteBgColorSelector = findViewById(R.id.note_bg_color_selector); + for (int id : sBgSelectorBtnsMap.keySet()) { + ImageView iv = (ImageView) findViewById(id); + iv.setOnClickListener(this); + } + + mFontSizeSelector = findViewById(R.id.font_size_selector); + for (int id : sFontSizeBtnsMap.keySet()) { + View view = findViewById(id); + view.setOnClickListener(this); + }; + mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); + mFontSizeId = mSharedPrefs.getInt(PREFERENCE_FONT_SIZE, ResourceParser.BG_DEFAULT_FONT_SIZE); + /** + * HACKME: Fix bug of store the resource id in shared preference. + * The id may larger than the length of resources, in this case, + * return the {@link ResourceParser#BG_DEFAULT_FONT_SIZE} + */ + if(mFontSizeId >= TextAppearanceResources.getResourcesSize()) { + mFontSizeId = ResourceParser.BG_DEFAULT_FONT_SIZE; + } + mEditTextList = (LinearLayout) findViewById(R.id.note_edit_list); + } + + @Override + protected void onPause() { + super.onPause(); + if(saveNote()) { + Log.d(TAG, "Note data was saved with length:" + mWorkingNote.getContent().length()); + } + clearSettingState(); + } + + private void updateWidget() { + Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); + if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_2X) { + intent.setClass(this, NoteWidgetProvider_2x.class); + } else if (mWorkingNote.getWidgetType() == Notes.TYPE_WIDGET_4X) { + intent.setClass(this, NoteWidgetProvider_4x.class); + } else { + Log.e(TAG, "Unspported widget type"); + return; + } + + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { + mWorkingNote.getWidgetId() + }); + + sendBroadcast(intent); + setResult(RESULT_OK, intent); + } + + public void onClick(View v) { + int id = v.getId(); + if (id == R.id.btn_set_bg_color) { + mNoteBgColorSelector.setVisibility(View.VISIBLE); + findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( + - View.VISIBLE); + } else if (sBgSelectorBtnsMap.containsKey(id)) { + findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( + View.GONE); + mWorkingNote.setBgColorId(sBgSelectorBtnsMap.get(id)); + mNoteBgColorSelector.setVisibility(View.GONE); + } else if (sFontSizeBtnsMap.containsKey(id)) { + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.GONE); + mFontSizeId = sFontSizeBtnsMap.get(id); + mSharedPrefs.edit().putInt(PREFERENCE_FONT_SIZE, mFontSizeId).commit(); + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + getWorkingText(); + switchToListMode(mWorkingNote.getContent()); + } else { + mNoteEditor.setTextAppearance(this, + TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); + } + mFontSizeSelector.setVisibility(View.GONE); + } + } + + @Override + public void onBackPressed() { + if(clearSettingState()) { + return; + } + + saveNote(); + super.onBackPressed(); + } + + private boolean clearSettingState() { + if (mNoteBgColorSelector.getVisibility() == View.VISIBLE) { + mNoteBgColorSelector.setVisibility(View.GONE); + return true; + } else if (mFontSizeSelector.getVisibility() == View.VISIBLE) { + mFontSizeSelector.setVisibility(View.GONE); + return true; + } + return false; + } + + public void onBackgroundColorChanged() { + findViewById(sBgSelectorSelectionMap.get(mWorkingNote.getBgColorId())).setVisibility( + View.VISIBLE); + mNoteEditorPanel.setBackgroundResource(mWorkingNote.getBgColorResId()); + mHeadViewPanel.setBackgroundResource(mWorkingNote.getTitleBgResId()); + } + + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + if (isFinishing()) { + return true; + } + clearSettingState(); + menu.clear(); + if (mWorkingNote.getFolderId() == Notes.ID_CALL_RECORD_FOLDER) { + getMenuInflater().inflate(R.menu.call_note_edit, menu); + } else { + getMenuInflater().inflate(R.menu.note_edit, menu); + } + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_normal_mode); + } else { + menu.findItem(R.id.menu_list_mode).setTitle(R.string.menu_list_mode); + } + if (mWorkingNote.hasClockAlert()) { + menu.findItem(R.id.menu_alert).setVisible(false); + } else { + menu.findItem(R.id.menu_delete_remind).setVisible(false); + } + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_new_note: + createNewNote(); + break; + case R.id.menu_delete: + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(getString(R.string.alert_title_delete)); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(getString(R.string.alert_message_delete_note)); + builder.setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + deleteCurrentNote(); + finish(); + } + }); + builder.setNegativeButton(android.R.string.cancel, null); + builder.show(); + break; + case R.id.menu_font_size: + mFontSizeSelector.setVisibility(View.VISIBLE); + findViewById(sFontSelectorSelectionMap.get(mFontSizeId)).setVisibility(View.VISIBLE); + break; + case R.id.menu_list_mode: + mWorkingNote.setCheckListMode(mWorkingNote.getCheckListMode() == 0 ? + TextNote.MODE_CHECK_LIST : 0); + break; + case R.id.menu_share: + getWorkingText(); + sendTo(this, mWorkingNote.getContent()); + break; + case R.id.menu_send_to_desktop: + sendToDesktop(); + break; + case R.id.menu_alert: + setReminder(); + break; + case R.id.menu_delete_remind: + mWorkingNote.setAlertDate(0, false); + break; + default: + break; + } + return true; + } + + private void setReminder() { + DateTimePickerDialog d = new DateTimePickerDialog(this, System.currentTimeMillis()); + d.setOnDateTimeSetListener(new OnDateTimeSetListener() { + public void OnDateTimeSet(AlertDialog dialog, long date) { + mWorkingNote.setAlertDate(date , true); + } + }); + d.show(); + } + + /** + * Share note to apps that support {@link Intent#ACTION_SEND} action + * and {@text/plain} type + */ + private void sendTo(Context context, String info) { + Intent intent = new Intent(Intent.ACTION_SEND); + intent.putExtra(Intent.EXTRA_TEXT, info); + intent.setType("text/plain"); + context.startActivity(intent); + } + + private void createNewNote() { + // Firstly, save current editing notes + saveNote(); + + // For safety, start a new NoteEditActivity + finish(); + Intent intent = new Intent(this, NoteEditActivity.class); + intent.setAction(Intent.ACTION_INSERT_OR_EDIT); + intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mWorkingNote.getFolderId()); + startActivity(intent); + } + + private void deleteCurrentNote() { + if (mWorkingNote.existInDatabase()) { + HashSet ids = new HashSet(); + long id = mWorkingNote.getNoteId(); + if (id != Notes.ID_ROOT_FOLDER) { + ids.add(id); + } else { + Log.d(TAG, "Wrong note id, should not happen"); + } + if (!isSyncMode()) { + if (!DataUtils.batchDeleteNotes(getContentResolver(), ids)) { + Log.e(TAG, "Delete Note error"); + } + } else { + if (!DataUtils.batchMoveToFolder(getContentResolver(), ids, Notes.ID_TRASH_FOLER)) { + Log.e(TAG, "Move notes to trash folder error, should not happens"); + } + } + } + mWorkingNote.markDeleted(true); + } + + private boolean isSyncMode() { + return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; + } + + public void onClockAlertChanged(long date, boolean set) { + /** + * User could set clock to an unsaved note, so before setting the + * alert clock, we should save the note first + */ + if (!mWorkingNote.existInDatabase()) { + saveNote(); + } + if (mWorkingNote.getNoteId() > 0) { + Intent intent = new Intent(this, AlarmReceiver.class); + intent.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, mWorkingNote.getNoteId())); + PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); + AlarmManager alarmManager = ((AlarmManager) getSystemService(ALARM_SERVICE)); + showAlertHeader(); + if(!set) { + alarmManager.cancel(pendingIntent); + } else { + alarmManager.set(AlarmManager.RTC_WAKEUP, date, pendingIntent); + } + } else { + /** + * There is the condition that user has input nothing (the note is + * not worthy saving), we have no note id, remind the user that he + * should input something + */ + Log.e(TAG, "Clock alert setting error"); + showToast(R.string.error_note_empty_for_clock); + } + } + + public void onWidgetChanged() { + updateWidget(); + } + + public void onEditTextDelete(int index, String text) { + int childCount = mEditTextList.getChildCount(); + if (childCount == 1) { + return; + } + + for (int i = index + 1; i < childCount; i++) { + ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) + .setIndex(i - 1); + } + + mEditTextList.removeViewAt(index); + NoteEditText edit = null; + if(index == 0) { + edit = (NoteEditText) mEditTextList.getChildAt(0).findViewById( + R.id.et_edit_text); + } else { + edit = (NoteEditText) mEditTextList.getChildAt(index - 1).findViewById( + R.id.et_edit_text); + } + int length = edit.length(); + edit.append(text); + edit.requestFocus(); + edit.setSelection(length); + } + + public void onEditTextEnter(int index, String text) { + /** + * Should not happen, check for debug + */ + if(index > mEditTextList.getChildCount()) { + Log.e(TAG, "Index out of mEditTextList boundrary, should not happen"); + } + + View view = getListItem(text, index); + mEditTextList.addView(view, index); + NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); + edit.requestFocus(); + edit.setSelection(0); + for (int i = index + 1; i < mEditTextList.getChildCount(); i++) { + ((NoteEditText) mEditTextList.getChildAt(i).findViewById(R.id.et_edit_text)) + .setIndex(i); + } + } + + private void switchToListMode(String text) { + mEditTextList.removeAllViews(); + String[] items = text.split("\n"); + int index = 0; + for (String item : items) { + if(!TextUtils.isEmpty(item)) { + mEditTextList.addView(getListItem(item, index)); + index++; + } + } + mEditTextList.addView(getListItem("", index)); + mEditTextList.getChildAt(index).findViewById(R.id.et_edit_text).requestFocus(); + + mNoteEditor.setVisibility(View.GONE); + mEditTextList.setVisibility(View.VISIBLE); + } + + private Spannable getHighlightQueryResult(String fullText, String userQuery) { + SpannableString spannable = new SpannableString(fullText == null ? "" : fullText); + if (!TextUtils.isEmpty(userQuery)) { + mPattern = Pattern.compile(userQuery); + Matcher m = mPattern.matcher(fullText); + int start = 0; + while (m.find(start)) { + spannable.setSpan( + new BackgroundColorSpan(this.getResources().getColor( + R.color.user_query_highlight)), m.start(), m.end(), + Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + start = m.end(); + } + } + return spannable; + } + + private View getListItem(String item, int index) { + View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null); + final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); + edit.setTextAppearance(this, TextAppearanceResources.getTexAppearanceResource(mFontSizeId)); + CheckBox cb = ((CheckBox) view.findViewById(R.id.cb_edit_item)); + cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (isChecked) { + edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + } else { + edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + } + } + }); + + if (item.startsWith(TAG_CHECKED)) { + cb.setChecked(true); + edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + item = item.substring(TAG_CHECKED.length(), item.length()).trim(); + } else if (item.startsWith(TAG_UNCHECKED)) { + cb.setChecked(false); + edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + item = item.substring(TAG_UNCHECKED.length(), item.length()).trim(); + } + + edit.setOnTextViewChangeListener(this); + edit.setIndex(index); + edit.setText(getHighlightQueryResult(item, mUserQuery)); + return view; + } + + public void onTextChange(int index, boolean hasText) { + if (index >= mEditTextList.getChildCount()) { + Log.e(TAG, "Wrong index, should not happen"); + return; + } + if(hasText) { + mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.VISIBLE); + } else { + mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE); + } + } + + public void onCheckListModeChanged(int oldMode, int newMode) { + if (newMode == TextNote.MODE_CHECK_LIST) { + switchToListMode(mNoteEditor.getText().toString()); + } else { + if (!getWorkingText()) { + mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ", + "")); + } + mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery)); + mEditTextList.setVisibility(View.GONE); + mNoteEditor.setVisibility(View.VISIBLE); + } + } + + private boolean getWorkingText() { + boolean hasChecked = false; + if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < mEditTextList.getChildCount(); i++) { + View view = mEditTextList.getChildAt(i); + NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text); + if (!TextUtils.isEmpty(edit.getText())) { + if (((CheckBox) view.findViewById(R.id.cb_edit_item)).isChecked()) { + sb.append(TAG_CHECKED).append(" ").append(edit.getText()).append("\n"); + hasChecked = true; + } else { + sb.append(TAG_UNCHECKED).append(" ").append(edit.getText()).append("\n"); + } + } + } + mWorkingNote.setWorkingText(sb.toString()); + } else { + mWorkingNote.setWorkingText(mNoteEditor.getText().toString()); + } + return hasChecked; + } + + private boolean saveNote() { + getWorkingText(); + boolean saved = mWorkingNote.saveNote(); + if (saved) { + /** + * There are two modes from List view to edit view, open one note, + * create/edit a node. Opening node requires to the original + * position in the list when back from edit view, while creating a + * new node requires to the top of the list. This code + * {@link #RESULT_OK} is used to identify the create/edit state + */ + setResult(RESULT_OK); + } + return saved; + } + + private void sendToDesktop() { + /** + * Before send message to home, we should make sure that current + * editing note is exists in databases. So, for new note, firstly + * save it + */ + if (!mWorkingNote.existInDatabase()) { + saveNote(); + } + + if (mWorkingNote.getNoteId() > 0) { + Intent sender = new Intent(); + Intent shortcutIntent = new Intent(this, NoteEditActivity.class); + shortcutIntent.setAction(Intent.ACTION_VIEW); + shortcutIntent.putExtra(Intent.EXTRA_UID, mWorkingNote.getNoteId()); + sender.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); + sender.putExtra(Intent.EXTRA_SHORTCUT_NAME, + makeShortcutIconTitle(mWorkingNote.getContent())); + sender.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, + Intent.ShortcutIconResource.fromContext(this, R.drawable.icon_app)); + sender.putExtra("duplicate", true); + sender.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); + showToast(R.string.info_note_enter_desktop); + sendBroadcast(sender); + } else { + /** + * There is the condition that user has input nothing (the note is + * not worthy saving), we have no note id, remind the user that he + * should input something + */ + Log.e(TAG, "Send to desktop error"); + showToast(R.string.error_note_empty_for_send_to_desktop); + } + } + + private String makeShortcutIconTitle(String content) { + content = content.replace(TAG_CHECKED, ""); + content = content.replace(TAG_UNCHECKED, ""); + return content.length() > SHORTCUT_ICON_TITLE_MAX_LEN ? content.substring(0, + SHORTCUT_ICON_TITLE_MAX_LEN) : content; + } + + private void showToast(int resId) { + showToast(resId, Toast.LENGTH_SHORT); + } + + private void showToast(int resId, int duration) { + Toast.makeText(this, resId, duration).show(); + } +} diff --git a/src/net/micode/notes/ui/NoteEditText.java b/src/net/micode/notes/ui/NoteEditText.java new file mode 100644 index 0000000..2afe2a8 --- /dev/null +++ b/src/net/micode/notes/ui/NoteEditText.java @@ -0,0 +1,217 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.graphics.Rect; +import android.text.Layout; +import android.text.Selection; +import android.text.Spanned; +import android.text.TextUtils; +import android.text.style.URLSpan; +import android.util.AttributeSet; +import android.util.Log; +import android.view.ContextMenu; +import android.view.KeyEvent; +import android.view.MenuItem; +import android.view.MenuItem.OnMenuItemClickListener; +import android.view.MotionEvent; +import android.widget.EditText; + +import net.micode.notes.R; + +import java.util.HashMap; +import java.util.Map; + +public class NoteEditText extends EditText { + private static final String TAG = "NoteEditText"; + private int mIndex; + private int mSelectionStartBeforeDelete; + + private static final String SCHEME_TEL = "tel:" ; + private static final String SCHEME_HTTP = "http:" ; + private static final String SCHEME_EMAIL = "mailto:" ; + + private static final Map sSchemaActionResMap = new HashMap(); + static { + sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel); + sSchemaActionResMap.put(SCHEME_HTTP, R.string.note_link_web); + sSchemaActionResMap.put(SCHEME_EMAIL, R.string.note_link_email); + } + + /** + * Call by the {@link NoteEditActivity} to delete or add edit text + */ + public interface OnTextViewChangeListener { + /** + * Delete current edit text when {@link KeyEvent#KEYCODE_DEL} happens + * and the text is null + */ + void onEditTextDelete(int index, String text); + + /** + * Add edit text after current edit text when {@link KeyEvent#KEYCODE_ENTER} + * happen + */ + void onEditTextEnter(int index, String text); + + /** + * Hide or show item option when text change + */ + void onTextChange(int index, boolean hasText); + } + + private OnTextViewChangeListener mOnTextViewChangeListener; + + public NoteEditText(Context context) { + super(context, null); + mIndex = 0; + } + + public void setIndex(int index) { + mIndex = index; + } + + public void setOnTextViewChangeListener(OnTextViewChangeListener listener) { + mOnTextViewChangeListener = listener; + } + + public NoteEditText(Context context, AttributeSet attrs) { + super(context, attrs, android.R.attr.editTextStyle); + } + + public NoteEditText(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + // TODO Auto-generated constructor stub + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + + int x = (int) event.getX(); + int y = (int) event.getY(); + x -= getTotalPaddingLeft(); + y -= getTotalPaddingTop(); + x += getScrollX(); + y += getScrollY(); + + Layout layout = getLayout(); + int line = layout.getLineForVertical(y); + int off = layout.getOffsetForHorizontal(line, x); + Selection.setSelection(getText(), off); + break; + } + + return super.onTouchEvent(event); + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + switch (keyCode) { + case KeyEvent.KEYCODE_ENTER: + if (mOnTextViewChangeListener != null) { + return false; + } + break; + case KeyEvent.KEYCODE_DEL: + mSelectionStartBeforeDelete = getSelectionStart(); + break; + default: + break; + } + return super.onKeyDown(keyCode, event); + } + + @Override + public boolean onKeyUp(int keyCode, KeyEvent event) { + switch(keyCode) { + case KeyEvent.KEYCODE_DEL: + if (mOnTextViewChangeListener != null) { + if (0 == mSelectionStartBeforeDelete && mIndex != 0) { + mOnTextViewChangeListener.onEditTextDelete(mIndex, getText().toString()); + return true; + } + } else { + Log.d(TAG, "OnTextViewChangeListener was not seted"); + } + break; + case KeyEvent.KEYCODE_ENTER: + if (mOnTextViewChangeListener != null) { + int selectionStart = getSelectionStart(); + String text = getText().subSequence(selectionStart, length()).toString(); + setText(getText().subSequence(0, selectionStart)); + mOnTextViewChangeListener.onEditTextEnter(mIndex + 1, text); + } else { + Log.d(TAG, "OnTextViewChangeListener was not seted"); + } + break; + default: + break; + } + return super.onKeyUp(keyCode, event); + } + + @Override + protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { + if (mOnTextViewChangeListener != null) { + if (!focused && TextUtils.isEmpty(getText())) { + mOnTextViewChangeListener.onTextChange(mIndex, false); + } else { + mOnTextViewChangeListener.onTextChange(mIndex, true); + } + } + super.onFocusChanged(focused, direction, previouslyFocusedRect); + } + + @Override + protected void onCreateContextMenu(ContextMenu menu) { + if (getText() instanceof Spanned) { + int selStart = getSelectionStart(); + int selEnd = getSelectionEnd(); + + int min = Math.min(selStart, selEnd); + int max = Math.max(selStart, selEnd); + + final URLSpan[] urls = ((Spanned) getText()).getSpans(min, max, URLSpan.class); + if (urls.length == 1) { + int defaultResId = 0; + for(String schema: sSchemaActionResMap.keySet()) { + if(urls[0].getURL().indexOf(schema) >= 0) { + defaultResId = sSchemaActionResMap.get(schema); + break; + } + } + + if (defaultResId == 0) { + defaultResId = R.string.note_link_other; + } + + menu.add(0, 0, 0, defaultResId).setOnMenuItemClickListener( + new OnMenuItemClickListener() { + public boolean onMenuItemClick(MenuItem item) { + // goto a new intent + urls[0].onClick(NoteEditText.this); + return true; + } + }); + } + } + super.onCreateContextMenu(menu); + } +} diff --git a/src/net/micode/notes/ui/NoteItemData.java b/src/net/micode/notes/ui/NoteItemData.java new file mode 100644 index 0000000..0f5a878 --- /dev/null +++ b/src/net/micode/notes/ui/NoteItemData.java @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.text.TextUtils; + +import net.micode.notes.data.Contact; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.tool.DataUtils; + + +public class NoteItemData { + static final String [] PROJECTION = new String [] { + NoteColumns.ID, + NoteColumns.ALERTED_DATE, + NoteColumns.BG_COLOR_ID, + NoteColumns.CREATED_DATE, + NoteColumns.HAS_ATTACHMENT, + NoteColumns.MODIFIED_DATE, + NoteColumns.NOTES_COUNT, + NoteColumns.PARENT_ID, + NoteColumns.SNIPPET, + NoteColumns.TYPE, + NoteColumns.WIDGET_ID, + NoteColumns.WIDGET_TYPE, + }; + + private static final int ID_COLUMN = 0; + private static final int ALERTED_DATE_COLUMN = 1; + private static final int BG_COLOR_ID_COLUMN = 2; + private static final int CREATED_DATE_COLUMN = 3; + private static final int HAS_ATTACHMENT_COLUMN = 4; + private static final int MODIFIED_DATE_COLUMN = 5; + private static final int NOTES_COUNT_COLUMN = 6; + private static final int PARENT_ID_COLUMN = 7; + private static final int SNIPPET_COLUMN = 8; + private static final int TYPE_COLUMN = 9; + private static final int WIDGET_ID_COLUMN = 10; + private static final int WIDGET_TYPE_COLUMN = 11; + + private long mId; + private long mAlertDate; + private int mBgColorId; + private long mCreatedDate; + private boolean mHasAttachment; + private long mModifiedDate; + private int mNotesCount; + private long mParentId; + private String mSnippet; + private int mType; + private int mWidgetId; + private int mWidgetType; + private String mName; + private String mPhoneNumber; + + private boolean mIsLastItem; + private boolean mIsFirstItem; + private boolean mIsOnlyOneItem; + private boolean mIsOneNoteFollowingFolder; + private boolean mIsMultiNotesFollowingFolder; + + public NoteItemData(Context context, Cursor cursor) { + mId = cursor.getLong(ID_COLUMN); + mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN); + mBgColorId = cursor.getInt(BG_COLOR_ID_COLUMN); + mCreatedDate = cursor.getLong(CREATED_DATE_COLUMN); + mHasAttachment = (cursor.getInt(HAS_ATTACHMENT_COLUMN) > 0) ? true : false; + mModifiedDate = cursor.getLong(MODIFIED_DATE_COLUMN); + mNotesCount = cursor.getInt(NOTES_COUNT_COLUMN); + mParentId = cursor.getLong(PARENT_ID_COLUMN); + mSnippet = cursor.getString(SNIPPET_COLUMN); + mSnippet = mSnippet.replace(NoteEditActivity.TAG_CHECKED, "").replace( + NoteEditActivity.TAG_UNCHECKED, ""); + mType = cursor.getInt(TYPE_COLUMN); + mWidgetId = cursor.getInt(WIDGET_ID_COLUMN); + mWidgetType = cursor.getInt(WIDGET_TYPE_COLUMN); + + mPhoneNumber = ""; + if (mParentId == Notes.ID_CALL_RECORD_FOLDER) { + mPhoneNumber = DataUtils.getCallNumberByNoteId(context.getContentResolver(), mId); + if (!TextUtils.isEmpty(mPhoneNumber)) { + mName = Contact.getContact(context, mPhoneNumber); + if (mName == null) { + mName = mPhoneNumber; + } + } + } + + if (mName == null) { + mName = ""; + } + checkPostion(cursor); + } + + private void checkPostion(Cursor cursor) { + mIsLastItem = cursor.isLast() ? true : false; + mIsFirstItem = cursor.isFirst() ? true : false; + mIsOnlyOneItem = (cursor.getCount() == 1); + mIsMultiNotesFollowingFolder = false; + mIsOneNoteFollowingFolder = false; + + if (mType == Notes.TYPE_NOTE && !mIsFirstItem) { + int position = cursor.getPosition(); + if (cursor.moveToPrevious()) { + if (cursor.getInt(TYPE_COLUMN) == Notes.TYPE_FOLDER + || cursor.getInt(TYPE_COLUMN) == Notes.TYPE_SYSTEM) { + if (cursor.getCount() > (position + 1)) { + mIsMultiNotesFollowingFolder = true; + } else { + mIsOneNoteFollowingFolder = true; + } + } + if (!cursor.moveToNext()) { + throw new IllegalStateException("cursor move to previous but can't move back"); + } + } + } + } + + public boolean isOneFollowingFolder() { + return mIsOneNoteFollowingFolder; + } + + public boolean isMultiFollowingFolder() { + return mIsMultiNotesFollowingFolder; + } + + public boolean isLast() { + return mIsLastItem; + } + + public String getCallName() { + return mName; + } + + public boolean isFirst() { + return mIsFirstItem; + } + + public boolean isSingle() { + return mIsOnlyOneItem; + } + + public long getId() { + return mId; + } + + public long getAlertDate() { + return mAlertDate; + } + + public long getCreatedDate() { + return mCreatedDate; + } + + public boolean hasAttachment() { + return mHasAttachment; + } + + public long getModifiedDate() { + return mModifiedDate; + } + + public int getBgColorId() { + return mBgColorId; + } + + public long getParentId() { + return mParentId; + } + + public int getNotesCount() { + return mNotesCount; + } + + public long getFolderId () { + return mParentId; + } + + public int getType() { + return mType; + } + + public int getWidgetType() { + return mWidgetType; + } + + public int getWidgetId() { + return mWidgetId; + } + + public String getSnippet() { + return mSnippet; + } + + public boolean hasAlert() { + return (mAlertDate > 0); + } + + public boolean isCallRecord() { + return (mParentId == Notes.ID_CALL_RECORD_FOLDER && !TextUtils.isEmpty(mPhoneNumber)); + } + + public static int getNoteType(Cursor cursor) { + return cursor.getInt(TYPE_COLUMN); + } +} diff --git a/src/net/micode/notes/ui/NotesListActivity.java b/src/net/micode/notes/ui/NotesListActivity.java new file mode 100644 index 0000000..e843aec --- /dev/null +++ b/src/net/micode/notes/ui/NotesListActivity.java @@ -0,0 +1,954 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.appwidget.AppWidgetManager; +import android.content.AsyncQueryHandler; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.database.Cursor; +import android.os.AsyncTask; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.util.Log; +import android.view.ActionMode; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.Display; +import android.view.HapticFeedbackConstants; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MenuItem.OnMenuItemClickListener; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.View.OnCreateContextMenuListener; +import android.view.View.OnTouchListener; +import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.AdapterView.OnItemLongClickListener; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.PopupMenu; +import android.widget.TextView; +import android.widget.Toast; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.remote.GTaskSyncService; +import net.micode.notes.model.WorkingNote; +import net.micode.notes.tool.BackupUtils; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.ResourceParser; +import net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute; +import net.micode.notes.widget.NoteWidgetProvider_2x; +import net.micode.notes.widget.NoteWidgetProvider_4x; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.HashSet; + +public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener { + private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0; + + private static final int FOLDER_LIST_QUERY_TOKEN = 1; + + private static final int MENU_FOLDER_DELETE = 0; + + private static final int MENU_FOLDER_VIEW = 1; + + private static final int MENU_FOLDER_CHANGE_NAME = 2; + + private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction"; + + private enum ListEditState { + NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER + }; + + private ListEditState mState; + + private BackgroundQueryHandler mBackgroundQueryHandler; + + private NotesListAdapter mNotesListAdapter; + + private ListView mNotesListView; + + private Button mAddNewNote; + + private boolean mDispatch; + + private int mOriginY; + + private int mDispatchY; + + private TextView mTitleBar; + + private long mCurrentFolderId; + + private ContentResolver mContentResolver; + + private ModeCallback mModeCallBack; + + private static final String TAG = "NotesListActivity"; + + public static final int NOTES_LISTVIEW_SCROLL_RATE = 30; + + private NoteItemData mFocusNoteDataItem; + + private static final String NORMAL_SELECTION = NoteColumns.PARENT_ID + "=?"; + + private static final String ROOT_FOLDER_SELECTION = "(" + NoteColumns.TYPE + "<>" + + Notes.TYPE_SYSTEM + " AND " + NoteColumns.PARENT_ID + "=?)" + " OR (" + + NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER + " AND " + + NoteColumns.NOTES_COUNT + ">0)"; + + private final static int REQUEST_CODE_OPEN_NODE = 102; + private final static int REQUEST_CODE_NEW_NODE = 103; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.note_list); + initResources(); + + /** + * Insert an introduction when user firstly use this application + */ + setAppInfoFromRawRes(); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == RESULT_OK + && (requestCode == REQUEST_CODE_OPEN_NODE || requestCode == REQUEST_CODE_NEW_NODE)) { + mNotesListAdapter.changeCursor(null); + } else { + super.onActivityResult(requestCode, resultCode, data); + } + } + + private void setAppInfoFromRawRes() { + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); + if (!sp.getBoolean(PREFERENCE_ADD_INTRODUCTION, false)) { + StringBuilder sb = new StringBuilder(); + InputStream in = null; + try { + in = getResources().openRawResource(R.raw.introduction); + if (in != null) { + InputStreamReader isr = new InputStreamReader(in); + BufferedReader br = new BufferedReader(isr); + char [] buf = new char[1024]; + int len = 0; + while ((len = br.read(buf)) > 0) { + sb.append(buf, 0, len); + } + } else { + Log.e(TAG, "Read introduction file error"); + return; + } + } catch (IOException e) { + e.printStackTrace(); + return; + } finally { + if(in != null) { + try { + in.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + + WorkingNote note = WorkingNote.createEmptyNote(this, Notes.ID_ROOT_FOLDER, + AppWidgetManager.INVALID_APPWIDGET_ID, Notes.TYPE_WIDGET_INVALIDE, + ResourceParser.RED); + note.setWorkingText(sb.toString()); + if (note.saveNote()) { + sp.edit().putBoolean(PREFERENCE_ADD_INTRODUCTION, true).commit(); + } else { + Log.e(TAG, "Save introduction note error"); + return; + } + } + } + + @Override + protected void onStart() { + super.onStart(); + startAsyncNotesListQuery(); + } + + private void initResources() { + mContentResolver = this.getContentResolver(); + mBackgroundQueryHandler = new BackgroundQueryHandler(this.getContentResolver()); + mCurrentFolderId = Notes.ID_ROOT_FOLDER; + mNotesListView = (ListView) findViewById(R.id.notes_list); + mNotesListView.addFooterView(LayoutInflater.from(this).inflate(R.layout.note_list_footer, null), + null, false); + mNotesListView.setOnItemClickListener(new OnListItemClickListener()); + mNotesListView.setOnItemLongClickListener(this); + mNotesListAdapter = new NotesListAdapter(this); + mNotesListView.setAdapter(mNotesListAdapter); + mAddNewNote = (Button) findViewById(R.id.btn_new_note); + mAddNewNote.setOnClickListener(this); + mAddNewNote.setOnTouchListener(new NewNoteOnTouchListener()); + mDispatch = false; + mDispatchY = 0; + mOriginY = 0; + mTitleBar = (TextView) findViewById(R.id.tv_title_bar); + mState = ListEditState.NOTE_LIST; + mModeCallBack = new ModeCallback(); + } + + private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener { + private DropdownMenu mDropDownMenu; + private ActionMode mActionMode; + private MenuItem mMoveMenu; + + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + getMenuInflater().inflate(R.menu.note_list_options, menu); + menu.findItem(R.id.delete).setOnMenuItemClickListener(this); + mMoveMenu = menu.findItem(R.id.move); + if (mFocusNoteDataItem.getParentId() == Notes.ID_CALL_RECORD_FOLDER + || DataUtils.getUserFolderCount(mContentResolver) == 0) { + mMoveMenu.setVisible(false); + } else { + mMoveMenu.setVisible(true); + mMoveMenu.setOnMenuItemClickListener(this); + } + mActionMode = mode; + mNotesListAdapter.setChoiceMode(true); + mNotesListView.setLongClickable(false); + mAddNewNote.setVisibility(View.GONE); + + View customView = LayoutInflater.from(NotesListActivity.this).inflate( + R.layout.note_list_dropdown_menu, null); + mode.setCustomView(customView); + mDropDownMenu = new DropdownMenu(NotesListActivity.this, + (Button) customView.findViewById(R.id.selection_menu), + R.menu.note_list_dropdown); + mDropDownMenu.setOnDropdownMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){ + public boolean onMenuItemClick(MenuItem item) { + mNotesListAdapter.selectAll(!mNotesListAdapter.isAllSelected()); + updateMenu(); + return true; + } + + }); + return true; + } + + private void updateMenu() { + int selectedCount = mNotesListAdapter.getSelectedCount(); + // Update dropdown menu + String format = getResources().getString(R.string.menu_select_title, selectedCount); + mDropDownMenu.setTitle(format); + MenuItem item = mDropDownMenu.findItem(R.id.action_select_all); + if (item != null) { + if (mNotesListAdapter.isAllSelected()) { + item.setChecked(true); + item.setTitle(R.string.menu_deselect_all); + } else { + item.setChecked(false); + item.setTitle(R.string.menu_select_all); + } + } + } + + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + // TODO Auto-generated method stub + return false; + } + + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + // TODO Auto-generated method stub + return false; + } + + public void onDestroyActionMode(ActionMode mode) { + mNotesListAdapter.setChoiceMode(false); + mNotesListView.setLongClickable(true); + mAddNewNote.setVisibility(View.VISIBLE); + } + + public void finishActionMode() { + mActionMode.finish(); + } + + public void onItemCheckedStateChanged(ActionMode mode, int position, long id, + boolean checked) { + mNotesListAdapter.setCheckedItem(position, checked); + updateMenu(); + } + + public boolean onMenuItemClick(MenuItem item) { + if (mNotesListAdapter.getSelectedCount() == 0) { + Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none), + Toast.LENGTH_SHORT).show(); + return true; + } + + switch (item.getItemId()) { + case R.id.delete: + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(getString(R.string.alert_title_delete)); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(getString(R.string.alert_message_delete_notes, + mNotesListAdapter.getSelectedCount())); + builder.setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + batchDelete(); + } + }); + builder.setNegativeButton(android.R.string.cancel, null); + builder.show(); + break; + case R.id.move: + startQueryDestinationFolders(); + break; + default: + return false; + } + return true; + } + } + + private class NewNoteOnTouchListener implements OnTouchListener { + + public boolean onTouch(View v, MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: { + Display display = getWindowManager().getDefaultDisplay(); + int screenHeight = display.getHeight(); + int newNoteViewHeight = mAddNewNote.getHeight(); + int start = screenHeight - newNoteViewHeight; + int eventY = start + (int) event.getY(); + /** + * Minus TitleBar's height + */ + if (mState == ListEditState.SUB_FOLDER) { + eventY -= mTitleBar.getHeight(); + start -= mTitleBar.getHeight(); + } + /** + * HACKME:When click the transparent part of "New Note" button, dispatch + * the event to the list view behind this button. The transparent part of + * "New Note" button could be expressed by formula y=-0.12x+94(Unit:pixel) + * and the line top of the button. The coordinate based on left of the "New + * Note" button. The 94 represents maximum height of the transparent part. + * Notice that, if the background of the button changes, the formula should + * also change. This is very bad, just for the UI designer's strong requirement. + */ + if (event.getY() < (event.getX() * (-0.12) + 94)) { + View view = mNotesListView.getChildAt(mNotesListView.getChildCount() - 1 + - mNotesListView.getFooterViewsCount()); + if (view != null && view.getBottom() > start + && (view.getTop() < (start + 94))) { + mOriginY = (int) event.getY(); + mDispatchY = eventY; + event.setLocation(event.getX(), mDispatchY); + mDispatch = true; + return mNotesListView.dispatchTouchEvent(event); + } + } + break; + } + case MotionEvent.ACTION_MOVE: { + if (mDispatch) { + mDispatchY += (int) event.getY() - mOriginY; + event.setLocation(event.getX(), mDispatchY); + return mNotesListView.dispatchTouchEvent(event); + } + break; + } + default: { + if (mDispatch) { + event.setLocation(event.getX(), mDispatchY); + mDispatch = false; + return mNotesListView.dispatchTouchEvent(event); + } + break; + } + } + return false; + } + + }; + + private void startAsyncNotesListQuery() { + String selection = (mCurrentFolderId == Notes.ID_ROOT_FOLDER) ? ROOT_FOLDER_SELECTION + : NORMAL_SELECTION; + mBackgroundQueryHandler.startQuery(FOLDER_NOTE_LIST_QUERY_TOKEN, null, + Notes.CONTENT_NOTE_URI, NoteItemData.PROJECTION, selection, new String[] { + String.valueOf(mCurrentFolderId) + }, NoteColumns.TYPE + " DESC," + NoteColumns.MODIFIED_DATE + " DESC"); + } + + private final class BackgroundQueryHandler extends AsyncQueryHandler { + public BackgroundQueryHandler(ContentResolver contentResolver) { + super(contentResolver); + } + + @Override + protected void onQueryComplete(int token, Object cookie, Cursor cursor) { + switch (token) { + case FOLDER_NOTE_LIST_QUERY_TOKEN: + mNotesListAdapter.changeCursor(cursor); + break; + case FOLDER_LIST_QUERY_TOKEN: + if (cursor != null && cursor.getCount() > 0) { + showFolderListMenu(cursor); + } else { + Log.e(TAG, "Query folder failed"); + } + break; + default: + return; + } + } + } + + private void showFolderListMenu(Cursor cursor) { + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(R.string.menu_title_select_folder); + final FoldersListAdapter adapter = new FoldersListAdapter(this, cursor); + builder.setAdapter(adapter, new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, int which) { + DataUtils.batchMoveToFolder(mContentResolver, + mNotesListAdapter.getSelectedItemIds(), adapter.getItemId(which)); + Toast.makeText( + NotesListActivity.this, + getString(R.string.format_move_notes_to_folder, + mNotesListAdapter.getSelectedCount(), + adapter.getFolderName(NotesListActivity.this, which)), + Toast.LENGTH_SHORT).show(); + mModeCallBack.finishActionMode(); + } + }); + builder.show(); + } + + private void createNewNote() { + Intent intent = new Intent(this, NoteEditActivity.class); + intent.setAction(Intent.ACTION_INSERT_OR_EDIT); + intent.putExtra(Notes.INTENT_EXTRA_FOLDER_ID, mCurrentFolderId); + this.startActivityForResult(intent, REQUEST_CODE_NEW_NODE); + } + + private void batchDelete() { + new AsyncTask>() { + protected HashSet doInBackground(Void... unused) { + HashSet widgets = mNotesListAdapter.getSelectedWidget(); + if (!isSyncMode()) { + // if not synced, delete notes directly + if (DataUtils.batchDeleteNotes(mContentResolver, mNotesListAdapter + .getSelectedItemIds())) { + } else { + Log.e(TAG, "Delete notes error, should not happens"); + } + } else { + // in sync mode, we'll move the deleted note into the trash + // folder + if (!DataUtils.batchMoveToFolder(mContentResolver, mNotesListAdapter + .getSelectedItemIds(), Notes.ID_TRASH_FOLER)) { + Log.e(TAG, "Move notes to trash folder error, should not happens"); + } + } + return widgets; + } + + @Override + protected void onPostExecute(HashSet widgets) { + if (widgets != null) { + for (AppWidgetAttribute widget : widgets) { + if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) { + updateWidget(widget.widgetId, widget.widgetType); + } + } + } + mModeCallBack.finishActionMode(); + } + }.execute(); + } + + private void deleteFolder(long folderId) { + if (folderId == Notes.ID_ROOT_FOLDER) { + Log.e(TAG, "Wrong folder id, should not happen " + folderId); + return; + } + + HashSet ids = new HashSet(); + ids.add(folderId); + HashSet widgets = DataUtils.getFolderNoteWidget(mContentResolver, + folderId); + if (!isSyncMode()) { + // if not synced, delete folder directly + DataUtils.batchDeleteNotes(mContentResolver, ids); + } else { + // in sync mode, we'll move the deleted folder into the trash folder + DataUtils.batchMoveToFolder(mContentResolver, ids, Notes.ID_TRASH_FOLER); + } + if (widgets != null) { + for (AppWidgetAttribute widget : widgets) { + if (widget.widgetId != AppWidgetManager.INVALID_APPWIDGET_ID + && widget.widgetType != Notes.TYPE_WIDGET_INVALIDE) { + updateWidget(widget.widgetId, widget.widgetType); + } + } + } + } + + private void openNode(NoteItemData data) { + Intent intent = new Intent(this, NoteEditActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.putExtra(Intent.EXTRA_UID, data.getId()); + this.startActivityForResult(intent, REQUEST_CODE_OPEN_NODE); + } + + private void openFolder(NoteItemData data) { + mCurrentFolderId = data.getId(); + startAsyncNotesListQuery(); + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { + mState = ListEditState.CALL_RECORD_FOLDER; + mAddNewNote.setVisibility(View.GONE); + } else { + mState = ListEditState.SUB_FOLDER; + } + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { + mTitleBar.setText(R.string.call_record_folder_name); + } else { + mTitleBar.setText(data.getSnippet()); + } + mTitleBar.setVisibility(View.VISIBLE); + } + + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_new_note: + createNewNote(); + break; + default: + break; + } + } + + private void showSoftInput() { + InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (inputMethodManager != null) { + inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); + } + } + + private void hideSoftInput(View view) { + InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + private void showCreateOrModifyFolderDialog(final boolean create) { + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit_text, null); + final EditText etName = (EditText) view.findViewById(R.id.et_foler_name); + showSoftInput(); + if (!create) { + if (mFocusNoteDataItem != null) { + etName.setText(mFocusNoteDataItem.getSnippet()); + builder.setTitle(getString(R.string.menu_folder_change_name)); + } else { + Log.e(TAG, "The long click data item is null"); + return; + } + } else { + etName.setText(""); + builder.setTitle(this.getString(R.string.menu_create_folder)); + } + + builder.setPositiveButton(android.R.string.ok, null); + builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + hideSoftInput(etName); + } + }); + + final Dialog dialog = builder.setView(view).show(); + final Button positive = (Button)dialog.findViewById(android.R.id.button1); + positive.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + hideSoftInput(etName); + String name = etName.getText().toString(); + if (DataUtils.checkVisibleFolderName(mContentResolver, name)) { + Toast.makeText(NotesListActivity.this, getString(R.string.folder_exist, name), + Toast.LENGTH_LONG).show(); + etName.setSelection(0, etName.length()); + return; + } + if (!create) { + if (!TextUtils.isEmpty(name)) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.SNIPPET, name); + values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + values.put(NoteColumns.LOCAL_MODIFIED, 1); + mContentResolver.update(Notes.CONTENT_NOTE_URI, values, NoteColumns.ID + + "=?", new String[] { + String.valueOf(mFocusNoteDataItem.getId()) + }); + } + } else if (!TextUtils.isEmpty(name)) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.SNIPPET, name); + values.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + mContentResolver.insert(Notes.CONTENT_NOTE_URI, values); + } + dialog.dismiss(); + } + }); + + if (TextUtils.isEmpty(etName.getText())) { + positive.setEnabled(false); + } + /** + * When the name edit text is null, disable the positive button + */ + etName.addTextChangedListener(new TextWatcher() { + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + // TODO Auto-generated method stub + + } + + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (TextUtils.isEmpty(etName.getText())) { + positive.setEnabled(false); + } else { + positive.setEnabled(true); + } + } + + public void afterTextChanged(Editable s) { + // TODO Auto-generated method stub + + } + }); + } + + @Override + public void onBackPressed() { + switch (mState) { + case SUB_FOLDER: + mCurrentFolderId = Notes.ID_ROOT_FOLDER; + mState = ListEditState.NOTE_LIST; + startAsyncNotesListQuery(); + mTitleBar.setVisibility(View.GONE); + break; + case CALL_RECORD_FOLDER: + mCurrentFolderId = Notes.ID_ROOT_FOLDER; + mState = ListEditState.NOTE_LIST; + mAddNewNote.setVisibility(View.VISIBLE); + mTitleBar.setVisibility(View.GONE); + startAsyncNotesListQuery(); + break; + case NOTE_LIST: + super.onBackPressed(); + break; + default: + break; + } + } + + private void updateWidget(int appWidgetId, int appWidgetType) { + Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); + if (appWidgetType == Notes.TYPE_WIDGET_2X) { + intent.setClass(this, NoteWidgetProvider_2x.class); + } else if (appWidgetType == Notes.TYPE_WIDGET_4X) { + intent.setClass(this, NoteWidgetProvider_4x.class); + } else { + Log.e(TAG, "Unspported widget type"); + return; + } + + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { + appWidgetId + }); + + sendBroadcast(intent); + setResult(RESULT_OK, intent); + } + + private final OnCreateContextMenuListener mFolderOnCreateContextMenuListener = new OnCreateContextMenuListener() { + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { + if (mFocusNoteDataItem != null) { + menu.setHeaderTitle(mFocusNoteDataItem.getSnippet()); + menu.add(0, MENU_FOLDER_VIEW, 0, R.string.menu_folder_view); + menu.add(0, MENU_FOLDER_DELETE, 0, R.string.menu_folder_delete); + menu.add(0, MENU_FOLDER_CHANGE_NAME, 0, R.string.menu_folder_change_name); + } + } + }; + + @Override + public void onContextMenuClosed(Menu menu) { + if (mNotesListView != null) { + mNotesListView.setOnCreateContextMenuListener(null); + } + super.onContextMenuClosed(menu); + } + + @Override + public boolean onContextItemSelected(MenuItem item) { + if (mFocusNoteDataItem == null) { + Log.e(TAG, "The long click data item is null"); + return false; + } + switch (item.getItemId()) { + case MENU_FOLDER_VIEW: + openFolder(mFocusNoteDataItem); + break; + case MENU_FOLDER_DELETE: + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(getString(R.string.alert_title_delete)); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(getString(R.string.alert_message_delete_folder)); + builder.setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + deleteFolder(mFocusNoteDataItem.getId()); + } + }); + builder.setNegativeButton(android.R.string.cancel, null); + builder.show(); + break; + case MENU_FOLDER_CHANGE_NAME: + showCreateOrModifyFolderDialog(false); + break; + default: + break; + } + + return true; + } + + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + menu.clear(); + if (mState == ListEditState.NOTE_LIST) { + getMenuInflater().inflate(R.menu.note_list, menu); + // set sync or sync_cancel + menu.findItem(R.id.menu_sync).setTitle( + GTaskSyncService.isSyncing() ? R.string.menu_sync_cancel : R.string.menu_sync); + } else if (mState == ListEditState.SUB_FOLDER) { + getMenuInflater().inflate(R.menu.sub_folder, menu); + } else if (mState == ListEditState.CALL_RECORD_FOLDER) { + getMenuInflater().inflate(R.menu.call_record_folder, menu); + } else { + Log.e(TAG, "Wrong state:" + mState); + } + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_new_folder: { + showCreateOrModifyFolderDialog(true); + break; + } + case R.id.menu_export_text: { + exportNoteToText(); + break; + } + case R.id.menu_sync: { + if (isSyncMode()) { + if (TextUtils.equals(item.getTitle(), getString(R.string.menu_sync))) { + GTaskSyncService.startSync(this); + } else { + GTaskSyncService.cancelSync(this); + } + } else { + startPreferenceActivity(); + } + break; + } + case R.id.menu_setting: { + startPreferenceActivity(); + break; + } + case R.id.menu_new_note: { + createNewNote(); + break; + } + case R.id.menu_search: + onSearchRequested(); + break; + default: + break; + } + return true; + } + + @Override + public boolean onSearchRequested() { + startSearch(null, false, null /* appData */, false); + return true; + } + + private void exportNoteToText() { + final BackupUtils backup = BackupUtils.getInstance(NotesListActivity.this); + new AsyncTask() { + + @Override + protected Integer doInBackground(Void... unused) { + return backup.exportToText(); + } + + @Override + protected void onPostExecute(Integer result) { + if (result == BackupUtils.STATE_SD_CARD_UNMOUONTED) { + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(NotesListActivity.this + .getString(R.string.failed_sdcard_export)); + builder.setMessage(NotesListActivity.this + .getString(R.string.error_sdcard_unmounted)); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } else if (result == BackupUtils.STATE_SUCCESS) { + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(NotesListActivity.this + .getString(R.string.success_sdcard_export)); + builder.setMessage(NotesListActivity.this.getString( + R.string.format_exported_file_location, backup + .getExportedTextFileName(), backup.getExportedTextFileDir())); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } else if (result == BackupUtils.STATE_SYSTEM_ERROR) { + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(NotesListActivity.this + .getString(R.string.failed_sdcard_export)); + builder.setMessage(NotesListActivity.this + .getString(R.string.error_sdcard_export)); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } + } + + }.execute(); + } + + private boolean isSyncMode() { + return NotesPreferenceActivity.getSyncAccountName(this).trim().length() > 0; + } + + private void startPreferenceActivity() { + Activity from = getParent() != null ? getParent() : this; + Intent intent = new Intent(from, NotesPreferenceActivity.class); + from.startActivityIfNeeded(intent, -1); + } + + private class OnListItemClickListener implements OnItemClickListener { + + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (view instanceof NotesListItem) { + NoteItemData item = ((NotesListItem) view).getItemData(); + if (mNotesListAdapter.isInChoiceMode()) { + if (item.getType() == Notes.TYPE_NOTE) { + position = position - mNotesListView.getHeaderViewsCount(); + mModeCallBack.onItemCheckedStateChanged(null, position, id, + !mNotesListAdapter.isSelectedItem(position)); + } + return; + } + + switch (mState) { + case NOTE_LIST: + if (item.getType() == Notes.TYPE_FOLDER + || item.getType() == Notes.TYPE_SYSTEM) { + openFolder(item); + } else if (item.getType() == Notes.TYPE_NOTE) { + openNode(item); + } else { + Log.e(TAG, "Wrong note type in NOTE_LIST"); + } + break; + case SUB_FOLDER: + case CALL_RECORD_FOLDER: + if (item.getType() == Notes.TYPE_NOTE) { + openNode(item); + } else { + Log.e(TAG, "Wrong note type in SUB_FOLDER"); + } + break; + default: + break; + } + } + } + + } + + private void startQueryDestinationFolders() { + String selection = NoteColumns.TYPE + "=? AND " + NoteColumns.PARENT_ID + "<>? AND " + NoteColumns.ID + "<>?"; + selection = (mState == ListEditState.NOTE_LIST) ? selection: + "(" + selection + ") OR (" + NoteColumns.ID + "=" + Notes.ID_ROOT_FOLDER + ")"; + + mBackgroundQueryHandler.startQuery(FOLDER_LIST_QUERY_TOKEN, + null, + Notes.CONTENT_NOTE_URI, + FoldersListAdapter.PROJECTION, + selection, + new String[] { + String.valueOf(Notes.TYPE_FOLDER), + String.valueOf(Notes.ID_TRASH_FOLER), + String.valueOf(mCurrentFolderId) + }, + NoteColumns.MODIFIED_DATE + " DESC"); + } + + public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { + if (view instanceof NotesListItem) { + mFocusNoteDataItem = ((NotesListItem) view).getItemData(); + if (mFocusNoteDataItem.getType() == Notes.TYPE_NOTE && !mNotesListAdapter.isInChoiceMode()) { + if (mNotesListView.startActionMode(mModeCallBack) != null) { + mModeCallBack.onItemCheckedStateChanged(null, position, id, true); + mNotesListView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + } else { + Log.e(TAG, "startActionMode fails"); + } + } else if (mFocusNoteDataItem.getType() == Notes.TYPE_FOLDER) { + mNotesListView.setOnCreateContextMenuListener(mFolderOnCreateContextMenuListener); + } + } + return false; + } +} diff --git a/src/net/micode/notes/ui/NotesListAdapter.java b/src/net/micode/notes/ui/NotesListAdapter.java new file mode 100644 index 0000000..51c9cb9 --- /dev/null +++ b/src/net/micode/notes/ui/NotesListAdapter.java @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.database.Cursor; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; + +import net.micode.notes.data.Notes; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; + + +public class NotesListAdapter extends CursorAdapter { + private static final String TAG = "NotesListAdapter"; + private Context mContext; + private HashMap mSelectedIndex; + private int mNotesCount; + private boolean mChoiceMode; + + public static class AppWidgetAttribute { + public int widgetId; + public int widgetType; + }; + + public NotesListAdapter(Context context) { + super(context, null); + mSelectedIndex = new HashMap(); + mContext = context; + mNotesCount = 0; + } + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return new NotesListItem(context); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + if (view instanceof NotesListItem) { + NoteItemData itemData = new NoteItemData(context, cursor); + ((NotesListItem) view).bind(context, itemData, mChoiceMode, + isSelectedItem(cursor.getPosition())); + } + } + + public void setCheckedItem(final int position, final boolean checked) { + mSelectedIndex.put(position, checked); + notifyDataSetChanged(); + } + + public boolean isInChoiceMode() { + return mChoiceMode; + } + + public void setChoiceMode(boolean mode) { + mSelectedIndex.clear(); + mChoiceMode = mode; + } + + public void selectAll(boolean checked) { + Cursor cursor = getCursor(); + for (int i = 0; i < getCount(); i++) { + if (cursor.moveToPosition(i)) { + if (NoteItemData.getNoteType(cursor) == Notes.TYPE_NOTE) { + setCheckedItem(i, checked); + } + } + } + } + + public HashSet getSelectedItemIds() { + HashSet itemSet = new HashSet(); + for (Integer position : mSelectedIndex.keySet()) { + if (mSelectedIndex.get(position) == true) { + Long id = getItemId(position); + if (id == Notes.ID_ROOT_FOLDER) { + Log.d(TAG, "Wrong item id, should not happen"); + } else { + itemSet.add(id); + } + } + } + + return itemSet; + } + + public HashSet getSelectedWidget() { + HashSet itemSet = new HashSet(); + for (Integer position : mSelectedIndex.keySet()) { + if (mSelectedIndex.get(position) == true) { + Cursor c = (Cursor) getItem(position); + if (c != null) { + AppWidgetAttribute widget = new AppWidgetAttribute(); + NoteItemData item = new NoteItemData(mContext, c); + widget.widgetId = item.getWidgetId(); + widget.widgetType = item.getWidgetType(); + itemSet.add(widget); + /** + * Don't close cursor here, only the adapter could close it + */ + } else { + Log.e(TAG, "Invalid cursor"); + return null; + } + } + } + return itemSet; + } + + public int getSelectedCount() { + Collection values = mSelectedIndex.values(); + if (null == values) { + return 0; + } + Iterator iter = values.iterator(); + int count = 0; + while (iter.hasNext()) { + if (true == iter.next()) { + count++; + } + } + return count; + } + + public boolean isAllSelected() { + int checkedCount = getSelectedCount(); + return (checkedCount != 0 && checkedCount == mNotesCount); + } + + public boolean isSelectedItem(final int position) { + if (null == mSelectedIndex.get(position)) { + return false; + } + return mSelectedIndex.get(position); + } + + @Override + protected void onContentChanged() { + super.onContentChanged(); + calcNotesCount(); + } + + @Override + public void changeCursor(Cursor cursor) { + super.changeCursor(cursor); + calcNotesCount(); + } + + private void calcNotesCount() { + mNotesCount = 0; + for (int i = 0; i < getCount(); i++) { + Cursor c = (Cursor) getItem(i); + if (c != null) { + if (NoteItemData.getNoteType(c) == Notes.TYPE_NOTE) { + mNotesCount++; + } + } else { + Log.e(TAG, "Invalid cursor"); + return; + } + } + } +} diff --git a/src/net/micode/notes/ui/NotesListItem.java b/src/net/micode/notes/ui/NotesListItem.java new file mode 100644 index 0000000..1221e80 --- /dev/null +++ b/src/net/micode/notes/ui/NotesListItem.java @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.content.Context; +import android.text.format.DateUtils; +import android.view.View; +import android.widget.CheckBox; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.DataUtils; +import net.micode.notes.tool.ResourceParser.NoteItemBgResources; + + +public class NotesListItem extends LinearLayout { + private ImageView mAlert; + private TextView mTitle; + private TextView mTime; + private TextView mCallName; + private NoteItemData mItemData; + private CheckBox mCheckBox; + + public NotesListItem(Context context) { + super(context); + inflate(context, R.layout.note_item, this); + mAlert = (ImageView) findViewById(R.id.iv_alert_icon); + mTitle = (TextView) findViewById(R.id.tv_title); + mTime = (TextView) findViewById(R.id.tv_time); + mCallName = (TextView) findViewById(R.id.tv_name); + mCheckBox = (CheckBox) findViewById(android.R.id.checkbox); + } + + public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) { + if (choiceMode && data.getType() == Notes.TYPE_NOTE) { + mCheckBox.setVisibility(View.VISIBLE); + mCheckBox.setChecked(checked); + } else { + mCheckBox.setVisibility(View.GONE); + } + + mItemData = data; + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { + mCallName.setVisibility(View.GONE); + mAlert.setVisibility(View.VISIBLE); + mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + mTitle.setText(context.getString(R.string.call_record_folder_name) + + context.getString(R.string.format_folder_files_count, data.getNotesCount())); + mAlert.setImageResource(R.drawable.call_record); + } else if (data.getParentId() == Notes.ID_CALL_RECORD_FOLDER) { + mCallName.setVisibility(View.VISIBLE); + mCallName.setText(data.getCallName()); + mTitle.setTextAppearance(context,R.style.TextAppearanceSecondaryItem); + mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + if (data.hasAlert()) { + mAlert.setImageResource(R.drawable.clock); + mAlert.setVisibility(View.VISIBLE); + } else { + mAlert.setVisibility(View.GONE); + } + } else { + mCallName.setVisibility(View.GONE); + mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + + if (data.getType() == Notes.TYPE_FOLDER) { + mTitle.setText(data.getSnippet() + + context.getString(R.string.format_folder_files_count, + data.getNotesCount())); + mAlert.setVisibility(View.GONE); + } else { + mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); + if (data.hasAlert()) { + mAlert.setImageResource(R.drawable.clock); + mAlert.setVisibility(View.VISIBLE); + } else { + mAlert.setVisibility(View.GONE); + } + } + } + mTime.setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); + + setBackground(data); + } + + private void setBackground(NoteItemData data) { + int id = data.getBgColorId(); + if (data.getType() == Notes.TYPE_NOTE) { + if (data.isSingle() || data.isOneFollowingFolder()) { + setBackgroundResource(NoteItemBgResources.getNoteBgSingleRes(id)); + } else if (data.isLast()) { + setBackgroundResource(NoteItemBgResources.getNoteBgLastRes(id)); + } else if (data.isFirst() || data.isMultiFollowingFolder()) { + setBackgroundResource(NoteItemBgResources.getNoteBgFirstRes(id)); + } else { + setBackgroundResource(NoteItemBgResources.getNoteBgNormalRes(id)); + } + } else { + setBackgroundResource(NoteItemBgResources.getFolderBgRes()); + } + } + + public NoteItemData getItemData() { + return mItemData; + } +} diff --git a/src/net/micode/notes/ui/NotesPreferenceActivity.java b/src/net/micode/notes/ui/NotesPreferenceActivity.java new file mode 100644 index 0000000..07c5f7e --- /dev/null +++ b/src/net/micode/notes/ui/NotesPreferenceActivity.java @@ -0,0 +1,388 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.ui; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.app.ActionBar; +import android.app.AlertDialog; +import android.content.BroadcastReceiver; +import android.content.ContentValues; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceActivity; +import android.preference.PreferenceCategory; +import android.text.TextUtils; +import android.text.format.DateFormat; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.gtask.remote.GTaskSyncService; + + +public class NotesPreferenceActivity extends PreferenceActivity { + public static final String PREFERENCE_NAME = "notes_preferences"; + + public static final String PREFERENCE_SYNC_ACCOUNT_NAME = "pref_key_account_name"; + + public static final String PREFERENCE_LAST_SYNC_TIME = "pref_last_sync_time"; + + public static final String PREFERENCE_SET_BG_COLOR_KEY = "pref_key_bg_random_appear"; + + private static final String PREFERENCE_SYNC_ACCOUNT_KEY = "pref_sync_account_key"; + + private static final String AUTHORITIES_FILTER_KEY = "authorities"; + + private PreferenceCategory mAccountCategory; + + private GTaskReceiver mReceiver; + + private Account[] mOriAccounts; + + private boolean mHasAddedAccount; + + @Override + protected void onCreate(Bundle icicle) { + super.onCreate(icicle); + + /* using the app icon for navigation */ + getActionBar().setDisplayHomeAsUpEnabled(true); + + addPreferencesFromResource(R.xml.preferences); + mAccountCategory = (PreferenceCategory) findPreference(PREFERENCE_SYNC_ACCOUNT_KEY); + mReceiver = new GTaskReceiver(); + IntentFilter filter = new IntentFilter(); + filter.addAction(GTaskSyncService.GTASK_SERVICE_BROADCAST_NAME); + registerReceiver(mReceiver, filter); + + mOriAccounts = null; + View header = LayoutInflater.from(this).inflate(R.layout.settings_header, null); + getListView().addHeaderView(header, null, true); + } + + @Override + protected void onResume() { + super.onResume(); + + // need to set sync account automatically if user has added a new + // account + if (mHasAddedAccount) { + Account[] accounts = getGoogleAccounts(); + if (mOriAccounts != null && accounts.length > mOriAccounts.length) { + for (Account accountNew : accounts) { + boolean found = false; + for (Account accountOld : mOriAccounts) { + if (TextUtils.equals(accountOld.name, accountNew.name)) { + found = true; + break; + } + } + if (!found) { + setSyncAccount(accountNew.name); + break; + } + } + } + } + + refreshUI(); + } + + @Override + protected void onDestroy() { + if (mReceiver != null) { + unregisterReceiver(mReceiver); + } + super.onDestroy(); + } + + private void loadAccountPreference() { + mAccountCategory.removeAll(); + + Preference accountPref = new Preference(this); + final String defaultAccount = getSyncAccountName(this); + accountPref.setTitle(getString(R.string.preferences_account_title)); + accountPref.setSummary(getString(R.string.preferences_account_summary)); + accountPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { + public boolean onPreferenceClick(Preference preference) { + if (!GTaskSyncService.isSyncing()) { + if (TextUtils.isEmpty(defaultAccount)) { + // the first time to set account + showSelectAccountAlertDialog(); + } else { + // if the account has already been set, we need to promp + // user about the risk + showChangeAccountConfirmAlertDialog(); + } + } else { + Toast.makeText(NotesPreferenceActivity.this, + R.string.preferences_toast_cannot_change_account, Toast.LENGTH_SHORT) + .show(); + } + return true; + } + }); + + mAccountCategory.addPreference(accountPref); + } + + private void loadSyncButton() { + Button syncButton = (Button) findViewById(R.id.preference_sync_button); + TextView lastSyncTimeView = (TextView) findViewById(R.id.prefenerece_sync_status_textview); + + // set button state + if (GTaskSyncService.isSyncing()) { + syncButton.setText(getString(R.string.preferences_button_sync_cancel)); + syncButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + GTaskSyncService.cancelSync(NotesPreferenceActivity.this); + } + }); + } else { + syncButton.setText(getString(R.string.preferences_button_sync_immediately)); + syncButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + GTaskSyncService.startSync(NotesPreferenceActivity.this); + } + }); + } + syncButton.setEnabled(!TextUtils.isEmpty(getSyncAccountName(this))); + + // set last sync time + if (GTaskSyncService.isSyncing()) { + lastSyncTimeView.setText(GTaskSyncService.getProgressString()); + lastSyncTimeView.setVisibility(View.VISIBLE); + } else { + long lastSyncTime = getLastSyncTime(this); + if (lastSyncTime != 0) { + lastSyncTimeView.setText(getString(R.string.preferences_last_sync_time, + DateFormat.format(getString(R.string.preferences_last_sync_time_format), + lastSyncTime))); + lastSyncTimeView.setVisibility(View.VISIBLE); + } else { + lastSyncTimeView.setVisibility(View.GONE); + } + } + } + + private void refreshUI() { + loadAccountPreference(); + loadSyncButton(); + } + + private void showSelectAccountAlertDialog() { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + + View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); + TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); + titleTextView.setText(getString(R.string.preferences_dialog_select_account_title)); + TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); + subtitleTextView.setText(getString(R.string.preferences_dialog_select_account_tips)); + + dialogBuilder.setCustomTitle(titleView); + dialogBuilder.setPositiveButton(null, null); + + Account[] accounts = getGoogleAccounts(); + String defAccount = getSyncAccountName(this); + + mOriAccounts = accounts; + mHasAddedAccount = false; + + if (accounts.length > 0) { + CharSequence[] items = new CharSequence[accounts.length]; + final CharSequence[] itemMapping = items; + int checkedItem = -1; + int index = 0; + for (Account account : accounts) { + if (TextUtils.equals(account.name, defAccount)) { + checkedItem = index; + } + items[index++] = account.name; + } + dialogBuilder.setSingleChoiceItems(items, checkedItem, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + setSyncAccount(itemMapping[which].toString()); + dialog.dismiss(); + refreshUI(); + } + }); + } + + View addAccountView = LayoutInflater.from(this).inflate(R.layout.add_account_text, null); + dialogBuilder.setView(addAccountView); + + final AlertDialog dialog = dialogBuilder.show(); + addAccountView.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + mHasAddedAccount = true; + Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS"); + intent.putExtra(AUTHORITIES_FILTER_KEY, new String[] { + "gmail-ls" + }); + startActivityForResult(intent, -1); + dialog.dismiss(); + } + }); + } + + private void showChangeAccountConfirmAlertDialog() { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + + View titleView = LayoutInflater.from(this).inflate(R.layout.account_dialog_title, null); + TextView titleTextView = (TextView) titleView.findViewById(R.id.account_dialog_title); + titleTextView.setText(getString(R.string.preferences_dialog_change_account_title, + getSyncAccountName(this))); + TextView subtitleTextView = (TextView) titleView.findViewById(R.id.account_dialog_subtitle); + subtitleTextView.setText(getString(R.string.preferences_dialog_change_account_warn_msg)); + dialogBuilder.setCustomTitle(titleView); + + CharSequence[] menuItemArray = new CharSequence[] { + getString(R.string.preferences_menu_change_account), + getString(R.string.preferences_menu_remove_account), + getString(R.string.preferences_menu_cancel) + }; + dialogBuilder.setItems(menuItemArray, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + if (which == 0) { + showSelectAccountAlertDialog(); + } else if (which == 1) { + removeSyncAccount(); + refreshUI(); + } + } + }); + dialogBuilder.show(); + } + + private Account[] getGoogleAccounts() { + AccountManager accountManager = AccountManager.get(this); + return accountManager.getAccountsByType("com.google"); + } + + private void setSyncAccount(String account) { + if (!getSyncAccountName(this).equals(account)) { + SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + if (account != null) { + editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, account); + } else { + editor.putString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); + } + editor.commit(); + + // clean up last sync time + setLastSyncTime(this, 0); + + // clean up local gtask related info + new Thread(new Runnable() { + public void run() { + ContentValues values = new ContentValues(); + values.put(NoteColumns.GTASK_ID, ""); + values.put(NoteColumns.SYNC_ID, 0); + getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); + } + }).start(); + + Toast.makeText(NotesPreferenceActivity.this, + getString(R.string.preferences_toast_success_set_accout, account), + Toast.LENGTH_SHORT).show(); + } + } + + private void removeSyncAccount() { + SharedPreferences settings = getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + if (settings.contains(PREFERENCE_SYNC_ACCOUNT_NAME)) { + editor.remove(PREFERENCE_SYNC_ACCOUNT_NAME); + } + if (settings.contains(PREFERENCE_LAST_SYNC_TIME)) { + editor.remove(PREFERENCE_LAST_SYNC_TIME); + } + editor.commit(); + + // clean up local gtask related info + new Thread(new Runnable() { + public void run() { + ContentValues values = new ContentValues(); + values.put(NoteColumns.GTASK_ID, ""); + values.put(NoteColumns.SYNC_ID, 0); + getContentResolver().update(Notes.CONTENT_NOTE_URI, values, null, null); + } + }).start(); + } + + public static String getSyncAccountName(Context context) { + SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + return settings.getString(PREFERENCE_SYNC_ACCOUNT_NAME, ""); + } + + public static void setLastSyncTime(Context context, long time) { + SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = settings.edit(); + editor.putLong(PREFERENCE_LAST_SYNC_TIME, time); + editor.commit(); + } + + public static long getLastSyncTime(Context context) { + SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, + Context.MODE_PRIVATE); + return settings.getLong(PREFERENCE_LAST_SYNC_TIME, 0); + } + + private class GTaskReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + refreshUI(); + if (intent.getBooleanExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_IS_SYNCING, false)) { + TextView syncStatus = (TextView) findViewById(R.id.prefenerece_sync_status_textview); + syncStatus.setText(intent + .getStringExtra(GTaskSyncService.GTASK_SERVICE_BROADCAST_PROGRESS_MSG)); + } + + } + } + + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + Intent intent = new Intent(this, NotesListActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + return true; + default: + return false; + } + } +} diff --git a/src/net/micode/notes/widget/NoteWidgetProvider.java b/src/net/micode/notes/widget/NoteWidgetProvider.java new file mode 100644 index 0000000..ec6f819 --- /dev/null +++ b/src/net/micode/notes/widget/NoteWidgetProvider.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.widget; +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.util.Log; +import android.widget.RemoteViews; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.tool.ResourceParser; +import net.micode.notes.ui.NoteEditActivity; +import net.micode.notes.ui.NotesListActivity; + +public abstract class NoteWidgetProvider extends AppWidgetProvider { + public static final String [] PROJECTION = new String [] { + NoteColumns.ID, + NoteColumns.BG_COLOR_ID, + NoteColumns.SNIPPET + }; + + public static final int COLUMN_ID = 0; + public static final int COLUMN_BG_COLOR_ID = 1; + public static final int COLUMN_SNIPPET = 2; + + private static final String TAG = "NoteWidgetProvider"; + + @Override + public void onDeleted(Context context, int[] appWidgetIds) { + ContentValues values = new ContentValues(); + values.put(NoteColumns.WIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); + for (int i = 0; i < appWidgetIds.length; i++) { + context.getContentResolver().update(Notes.CONTENT_NOTE_URI, + values, + NoteColumns.WIDGET_ID + "=?", + new String[] { String.valueOf(appWidgetIds[i])}); + } + } + + private Cursor getNoteWidgetInfo(Context context, int widgetId) { + return context.getContentResolver().query(Notes.CONTENT_NOTE_URI, + PROJECTION, + NoteColumns.WIDGET_ID + "=? AND " + NoteColumns.PARENT_ID + "<>?", + new String[] { String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLER) }, + null); + } + + protected void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + update(context, appWidgetManager, appWidgetIds, false); + } + + private void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, + boolean privacyMode) { + for (int i = 0; i < appWidgetIds.length; i++) { + if (appWidgetIds[i] != AppWidgetManager.INVALID_APPWIDGET_ID) { + int bgId = ResourceParser.getDefaultBgId(context); + String snippet = ""; + Intent intent = new Intent(context, NoteEditActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); + intent.putExtra(Notes.INTENT_EXTRA_WIDGET_ID, appWidgetIds[i]); + intent.putExtra(Notes.INTENT_EXTRA_WIDGET_TYPE, getWidgetType()); + + Cursor c = getNoteWidgetInfo(context, appWidgetIds[i]); + if (c != null && c.moveToFirst()) { + if (c.getCount() > 1) { + Log.e(TAG, "Multiple message with same widget id:" + appWidgetIds[i]); + c.close(); + return; + } + snippet = c.getString(COLUMN_SNIPPET); + bgId = c.getInt(COLUMN_BG_COLOR_ID); + intent.putExtra(Intent.EXTRA_UID, c.getLong(COLUMN_ID)); + intent.setAction(Intent.ACTION_VIEW); + } else { + snippet = context.getResources().getString(R.string.widget_havenot_content); + intent.setAction(Intent.ACTION_INSERT_OR_EDIT); + } + + if (c != null) { + c.close(); + } + + RemoteViews rv = new RemoteViews(context.getPackageName(), getLayoutId()); + rv.setImageViewResource(R.id.widget_bg_image, getBgResourceId(bgId)); + intent.putExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, bgId); + /** + * Generate the pending intent to start host for the widget + */ + PendingIntent pendingIntent = null; + if (privacyMode) { + rv.setTextViewText(R.id.widget_text, + context.getString(R.string.widget_under_visit_mode)); + pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], new Intent( + context, NotesListActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); + } else { + rv.setTextViewText(R.id.widget_text, snippet); + pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], intent, + PendingIntent.FLAG_UPDATE_CURRENT); + } + + rv.setOnClickPendingIntent(R.id.widget_text, pendingIntent); + appWidgetManager.updateAppWidget(appWidgetIds[i], rv); + } + } + } + + protected abstract int getBgResourceId(int bgId); + + protected abstract int getLayoutId(); + + protected abstract int getWidgetType(); +} diff --git a/src/net/micode/notes/widget/NoteWidgetProvider_2x.java b/src/net/micode/notes/widget/NoteWidgetProvider_2x.java new file mode 100644 index 0000000..adcb2f7 --- /dev/null +++ b/src/net/micode/notes/widget/NoteWidgetProvider_2x.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.widget; + +import android.appwidget.AppWidgetManager; +import android.content.Context; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.ResourceParser; + + +public class NoteWidgetProvider_2x extends NoteWidgetProvider { + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + super.update(context, appWidgetManager, appWidgetIds); + } + + @Override + protected int getLayoutId() { + return R.layout.widget_2x; + } + + @Override + protected int getBgResourceId(int bgId) { + return ResourceParser.WidgetBgResources.getWidget2xBgResource(bgId); + } + + @Override + protected int getWidgetType() { + return Notes.TYPE_WIDGET_2X; + } +} diff --git a/src/net/micode/notes/widget/NoteWidgetProvider_4x.java b/src/net/micode/notes/widget/NoteWidgetProvider_4x.java new file mode 100644 index 0000000..c12a02e --- /dev/null +++ b/src/net/micode/notes/widget/NoteWidgetProvider_4x.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.widget; + +import android.appwidget.AppWidgetManager; +import android.content.Context; + +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.tool.ResourceParser; + + +public class NoteWidgetProvider_4x extends NoteWidgetProvider { + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + super.update(context, appWidgetManager, appWidgetIds); + } + + protected int getLayoutId() { + return R.layout.widget_4x; + } + + @Override + protected int getBgResourceId(int bgId) { + return ResourceParser.WidgetBgResources.getWidget4xBgResource(bgId); + } + + @Override + protected int getWidgetType() { + return Notes.TYPE_WIDGET_4X; + } +} -- 2.34.1 From a9bfe5c21b8d0be807667df479712f03db657794 Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Sun, 23 Nov 2025 12:38:14 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/小米便签泛读报告.docx | Bin 143979 -> 144110 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/小米便签泛读报告.docx b/doc/小米便签泛读报告.docx index 8f4fb55400314f2b45e850f8f29c8e3c26e4cbd1..4ee25d82c3fc05489ec3161f1abadba56c87771b 100644 GIT binary patch delta 9202 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�Rd?!Q$!gx2{QDxwzSlXeqd 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 UG6FaOjhDbO0w@N_Edl@l0HHrF>Hq)$ -- 2.34.1 From 588b3337e36e07f6195d522c43823bf1b445dc1d Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Mon, 24 Nov 2025 00:00:53 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/小米便签泛读报告.docx | Bin 144110 -> 198530 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/小米便签泛读报告.docx b/doc/小米便签泛读报告.docx index 4ee25d82c3fc05489ec3161f1abadba56c87771b..99b7c30dc9f0649be6c9e04e4601e1fa818147b1 100644 GIT binary patch delta 70793 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 delta 15984 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 -- 2.34.1 From 3e8280d8c82f0cf6eb141240cd3020638c935349 Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Mon, 24 Nov 2025 01:11:49 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E7=B1=BB=E5=85=B3=E7=B3=BB=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/小米便签泛读报告.docx | Bin 198530 -> 428086 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/小米便签泛读报告.docx b/doc/小米便签泛读报告.docx index 99b7c30dc9f0649be6c9e04e4601e1fa818147b1..7de8526715bdd6f8f783748dd0b31b2c36e378af 100644 GIT binary patch delta 242439 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%0ACi(t-l|={fN?S&vD3dR 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 Yn5F>(AVtOp!v`~g1_SF3_;&*Pe?EEIl>h($ delta 11235 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 -- 2.34.1 From 8284dcf164e46998f94a2a75db2e40678c4ad663 Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Mon, 24 Nov 2025 09:53:15 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E5=AE=8C=E6=95=B4=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/小米便签泛读报告.docx | Bin 428086 -> 432002 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/小米便签泛读报告.docx b/doc/小米便签泛读报告.docx index 7de8526715bdd6f8f783748dd0b31b2c36e378af..7bb237743169df501ffb319b0cab27eb5df264e2 100644 GIT binary patch delta 18574 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 delta 14660 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 Date: Wed, 3 Dec 2025 19:37:27 +0800 Subject: [PATCH 16/19] 123 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9ce45f8..0a99726 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # XiaoMiNotes +123 + -- 2.34.1 From af8aecc17ae7512bf0c7f4e372d9c47a7f581aa9 Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Tue, 23 Dec 2025 19:43:34 +0800 Subject: [PATCH 17/19] =?UTF-8?q?contact=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/Contact.java | 80 +++++++++++++++++++++++++++++++++---------- 1 file changed, 62 insertions(+), 18 deletions(-) diff --git a/src/data/Contact.java b/src/data/Contact.java index d97ac5d..9aae708 100644 --- a/src/data/Contact.java +++ b/src/data/Contact.java @@ -14,60 +14,104 @@ * limitations under the License. */ -package net.micode.notes.data; +package net.micode.notes.data; // 属于小米便签的数据层包,专门处理数据相关操作 -import android.content.Context; -import android.database.Cursor; -import android.provider.ContactsContract.CommonDataKinds.Phone; -import android.provider.ContactsContract.Data; -import android.telephony.PhoneNumberUtils; -import android.util.Log; +import android.content.Context; // Android上下文,用于访问应用资源 +import android.database.Cursor; // 数据库查询结果集,用于遍历查询结果 +import android.provider.ContactsContract.CommonDataKinds.Phone; // 通讯录电话号码相关常量 +import android.provider.ContactsContract.Data; // 通讯录数据相关常量 +import android.telephony.PhoneNumberUtils; // 电话号码工具类,用于格式化比较号码 +import android.util.Log; // Android日志工具 -import java.util.HashMap; +import java.util.HashMap; // HashMap集合,用于缓存联系人信息 +/** + * Contact 类 - 联系人工具类 + * + * 功能:根据电话号码查询通讯录获取联系人姓名 + * 设计模式:使用单例模式和缓存机制优化性能 + * 技术特点: + * 1. 使用Android ContentProvider访问系统通讯录 + * 2. 实现LRU缓存机制避免重复查询 + * 3. 使用电话号码模糊匹配算法 + */ public class Contact { + // 静态联系人缓存:使用HashMap存储<电话号码, 联系人姓名>键值对 + // 使用静态变量实现应用级别的缓存,减少对通讯录的频繁访问 private static HashMap sContactCache; + + // 日志标签,用于调试和问题追踪 private static final String TAG = "Contact"; + // 查询条件语句模板:用于构建查询通讯录的SQL WHERE条件 + // 注意:这里使用"+"作为占位符,后面会被替换为最小匹配位数 + // PHONE_NUMBERS_EQUAL()是Android提供的特殊函数,用于电话号码匹配 private static final String CALLER_ID_SELECTION = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER - + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'" - + " AND " + Data.RAW_CONTACT_ID + " IN " + + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'" + + " AND " + Data.RAW_CONTACT_ID + " IN " + "(SELECT raw_contact_id " - + " FROM phone_lookup" - + " WHERE min_match = '+')"; + + " FROM phone_lookup" // phone_lookup是Android系统的电话号码查询优化表 + + " WHERE min_match = '+')"; // "+"是占位符,会被替换为实际的最小匹配位数 + /** + * 根据电话号码获取联系人姓名 + * + * @param context Android上下文,用于访问ContentResolver + * @param phoneNumber 要查询的电话号码 + * @return 联系人姓名,如果未找到则返回null + * + * 方法逻辑: + * 1. 首先检查缓存中是否已有该号码对应的联系人 + * 2. 如果缓存未命中,查询系统通讯录 + * 3. 将查询结果存入缓存 + * 4. 返回查询结果 + */ public static String getContact(Context context, String phoneNumber) { + // 延迟初始化缓存:第一次使用时才创建HashMap if(sContactCache == null) { sContactCache = new HashMap(); } + // 检查缓存:如果缓存中已有该号码,直接返回缓存的联系人姓名 if(sContactCache.containsKey(phoneNumber)) { return sContactCache.get(phoneNumber); } + // 构建查询条件:替换占位符"+"为电话号码的最小匹配位数 + // PhoneNumberUtils.toCallerIDMinMatch()计算电话号码的最小匹配位数 String selection = CALLER_ID_SELECTION.replace("+", PhoneNumberUtils.toCallerIDMinMatch(phoneNumber)); + + // 通过ContentResolver查询系统通讯录 + // Data.CONTENT_URI:通讯录数据的统一资源标识符 + // 查询条件:电话号码匹配且数据类型为电话号码 Cursor cursor = context.getContentResolver().query( - Data.CONTENT_URI, - new String [] { Phone.DISPLAY_NAME }, - selection, - new String[] { phoneNumber }, - null); + Data.CONTENT_URI, // 通讯录数据URI + new String [] { Phone.DISPLAY_NAME }, // 只查询显示名字段 + selection, // 查询条件 + new String[] { phoneNumber }, // 查询参数:电话号码 + null); // 排序条件:不排序 + // 处理查询结果 if (cursor != null && cursor.moveToFirst()) { try { + // 获取第一条结果的联系人姓名 String name = cursor.getString(0); + // 将结果存入缓存 sContactCache.put(phoneNumber, name); return name; } catch (IndexOutOfBoundsException e) { + // 捕获数组越界异常,记录错误日志 Log.e(TAG, " Cursor get string error " + e.toString()); return null; } finally { + // 无论是否成功,都必须关闭Cursor释放资源 cursor.close(); } } else { + // 没有找到匹配的联系人,记录调试日志 Log.d(TAG, "No contact matched with number:" + phoneNumber); return null; } } -} +} \ No newline at end of file -- 2.34.1 From a738b689c2513f0783770d3090848d5f29e64fb1 Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Tue, 23 Dec 2025 19:56:51 +0800 Subject: [PATCH 18/19] =?UTF-8?q?data-Notes=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/net/micode/notes/data/Notes.java | 234 ++++++++++++++++----------- 1 file changed, 137 insertions(+), 97 deletions(-) diff --git a/src/net/micode/notes/data/Notes.java b/src/net/micode/notes/data/Notes.java index f240604..cc08310 100644 --- a/src/net/micode/notes/data/Notes.java +++ b/src/net/micode/notes/data/Notes.java @@ -14,27 +14,50 @@ * limitations under the License. */ -package net.micode.notes.data; +package net.micode.notes.data; // 数据层包,定义便签应用的数据模型和数据库架构 -import android.net.Uri; +import android.net.Uri; // Android URI类,用于ContentProvider的URI定义 + +/** + * Notes 类 - 便签应用的核心常量定义类 + * + * 功能:定义便签应用的所有常量,包括: + * 1. 数据库表和列定义 + * 2. ContentProvider的URI + * 3. Intent的Extra键 + * 4. 便签类型和系统文件夹ID + * 5. 小部件相关常量 + * + * 设计模式:常量接口模式 + 嵌套类分层设计 + * 技术特点: + * 1. 使用接口定义数据库列名,实现清晰的列名管理 + * 2. 使用嵌套类组织不同类型的便签数据 + * 3. 提供完整的ContentProvider URI定义 + */ public class Notes { + // ContentProvider的授权标识符,用于构建URI public static final String AUTHORITY = "micode_notes"; + + // 日志标签 public static final String TAG = "Notes"; - public static final int TYPE_NOTE = 0; - public static final int TYPE_FOLDER = 1; - public static final int TYPE_SYSTEM = 2; + + // 便签类型常量 + public static final int TYPE_NOTE = 0; // 普通便签 + public static final int TYPE_FOLDER = 1; // 文件夹 + public static final int TYPE_SYSTEM = 2; // 系统文件夹 /** - * Following IDs are system folders' identifiers - * {@link Notes#ID_ROOT_FOLDER } is default folder - * {@link Notes#ID_TEMPARAY_FOLDER } is for notes belonging no folder - * {@link Notes#ID_CALL_RECORD_FOLDER} is to store call records + * 以下是系统文件夹的标识符 + * {@link Notes#ID_ROOT_FOLDER } 是默认文件夹 + * {@link Notes#ID_TEMPARAY_FOLDER } 用于存放没有文件夹的便签 + * {@link Notes#ID_CALL_RECORD_FOLDER} 用于存储通话记录 */ - public static final int ID_ROOT_FOLDER = 0; - public static final int ID_TEMPARAY_FOLDER = -1; - public static final int ID_CALL_RECORD_FOLDER = -2; - public static final int ID_TRASH_FOLER = -3; + public static final int ID_ROOT_FOLDER = 0; // 根目录 + public static final int ID_TEMPARAY_FOLDER = -1; // 临时文件夹(暂存区) + public static final int ID_CALL_RECORD_FOLDER = -2; // 通话记录文件夹 + public static final int ID_TRASH_FOLER = -3; // 回收站文件夹(注意拼写错误:FOLDER) + // Intent Extra键常量,用于Activity/Fragment间数据传递 public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date"; public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id"; public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id"; @@ -42,238 +65,255 @@ public class Notes { public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id"; public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date"; - public static final int TYPE_WIDGET_INVALIDE = -1; - public static final int TYPE_WIDGET_2X = 0; - public static final int TYPE_WIDGET_4X = 1; + // 小部件类型常量 + public static final int TYPE_WIDGET_INVALIDE = -1; // 无效的小部件类型 + public static final int TYPE_WIDGET_2X = 0; // 2x2小部件 + public static final int TYPE_WIDGET_4X = 1; // 4x4小部件 + /** + * DataConstants 内部类 - 数据类型常量定义 + * 定义便签数据的MIME类型 + */ public static class DataConstants { - public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; - public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; + public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; // 普通便签类型 + public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; // 通话记录便签类型 } /** - * Uri to query all notes and folders + * 查询所有便签和文件夹的URI + * content://micode_notes/note */ public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note"); /** - * Uri to query data + * 查询便签数据的URI + * content://micode_notes/data */ public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); + /** + * NoteColumns 接口 - 便签表(notes表)的列定义 + * 使用接口而不是类来定义列名,避免实例化,符合Android数据库设计规范 + */ public interface NoteColumns { /** - * The unique ID for a row - *

    Type: INTEGER (long)

    + * 行的唯一ID + *

    类型: INTEGER (长整型)

    */ public static final String ID = "_id"; /** - * The parent's id for note or folder - *

    Type: INTEGER (long)

    + * 便签或文件夹的父节点ID + *

    类型: INTEGER (长整型)

    */ public static final String PARENT_ID = "parent_id"; /** - * Created data for note or folder - *

    Type: INTEGER (long)

    + * 便签或文件夹的创建日期 + *

    类型: INTEGER (长整型)

    */ public static final String CREATED_DATE = "created_date"; /** - * Latest modified date - *

    Type: INTEGER (long)

    + * 最后修改日期 + *

    类型: INTEGER (长整型)

    */ public static final String MODIFIED_DATE = "modified_date"; - /** - * Alert date - *

    Type: INTEGER (long)

    + * 提醒日期 + *

    类型: INTEGER (长整型)

    */ public static final String ALERTED_DATE = "alert_date"; /** - * Folder's name or text content of note - *

    Type: TEXT

    + * 文件夹名称或便签的文本内容摘要 + *

    类型: TEXT

    */ public static final String SNIPPET = "snippet"; /** - * Note's widget id - *

    Type: INTEGER (long)

    + * 便签对应的小部件ID + *

    类型: INTEGER (长整型)

    */ public static final String WIDGET_ID = "widget_id"; /** - * Note's widget type - *

    Type: INTEGER (long)

    + * 便签对应的小部件类型 + *

    类型: INTEGER (长整型)

    */ public static final String WIDGET_TYPE = "widget_type"; /** - * Note's background color's id - *

    Type: INTEGER (long)

    + * 便签背景颜色的ID + *

    类型: INTEGER (长整型)

    */ public static final String BG_COLOR_ID = "bg_color_id"; /** - * For text note, it doesn't has attachment, for multi-media - * note, it has at least one attachment - *

    Type: INTEGER

    + * 是否有附件:文本便签没有附件,多媒体便签至少有一个附件 + *

    类型: INTEGER

    */ public static final String HAS_ATTACHMENT = "has_attachment"; /** - * Folder's count of notes - *

    Type: INTEGER (long)

    + * 文件夹中的便签数量 + *

    类型: INTEGER (长整型)

    */ public static final String NOTES_COUNT = "notes_count"; /** - * The file type: folder or note - *

    Type: INTEGER

    + * 文件类型:文件夹或便签 + *

    类型: INTEGER

    */ public static final String TYPE = "type"; /** - * The last sync id - *

    Type: INTEGER (long)

    + * 最后同步ID,用于数据同步 + *

    类型: INTEGER (长整型)

    */ public static final String SYNC_ID = "sync_id"; /** - * Sign to indicate local modified or not - *

    Type: INTEGER

    + * 本地修改标记:表示数据是否在本地被修改过 + *

    类型: INTEGER

    */ public static final String LOCAL_MODIFIED = "local_modified"; /** - * Original parent id before moving into temporary folder - *

    Type : INTEGER

    + * 移动到临时文件夹前的原始父节点ID + *

    类型: INTEGER

    */ public static final String ORIGIN_PARENT_ID = "origin_parent_id"; /** - * The gtask id - *

    Type : TEXT

    + * Google Tasks的ID(如果与Google Tasks同步) + *

    类型: TEXT

    */ public static final String GTASK_ID = "gtask_id"; /** - * The version code - *

    Type : INTEGER (long)

    + * 版本号 + *

    类型: INTEGER (长整型)

    */ public static final String VERSION = "version"; } + /** + * DataColumns 接口 - 便签数据表(data表)的列定义 + * 这个表存储便签的具体内容数据,采用EAV(实体-属性-值)模型设计 + */ public interface DataColumns { /** - * The unique ID for a row - *

    Type: INTEGER (long)

    + * 行的唯一ID + *

    类型: INTEGER (长整型)

    */ public static final String ID = "_id"; /** - * The MIME type of the item represented by this row. - *

    Type: Text

    + * 该行所代表项目的MIME类型 + *

    类型: TEXT

    */ public static final String MIME_TYPE = "mime_type"; /** - * The reference id to note that this data belongs to - *

    Type: INTEGER (long)

    + * 该数据所属便签的引用ID + *

    类型: INTEGER (长整型)

    */ public static final String NOTE_ID = "note_id"; /** - * Created data for note or folder - *

    Type: INTEGER (long)

    + * 数据创建日期 + *

    类型: INTEGER (长整型)

    */ public static final String CREATED_DATE = "created_date"; /** - * Latest modified date - *

    Type: INTEGER (long)

    + * 最后修改日期 + *

    类型: INTEGER (长整型)

    */ public static final String MODIFIED_DATE = "modified_date"; /** - * Data's content - *

    Type: TEXT

    + * 数据内容 + *

    类型: TEXT

    */ public static final String CONTENT = "content"; - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * integer data type - *

    Type: INTEGER

    + * 通用数据列,含义由{@link #MIME_TYPE}决定,用于整数数据类型 + *

    类型: INTEGER

    */ public static final String DATA1 = "data1"; /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * integer data type - *

    Type: INTEGER

    + * 通用数据列,含义由{@link #MIME_TYPE}决定,用于整数数据类型 + *

    类型: INTEGER

    */ public static final String DATA2 = "data2"; /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * TEXT data type - *

    Type: TEXT

    + * 通用数据列,含义由{@link #MIME_TYPE}决定,用于TEXT数据类型 + *

    类型: TEXT

    */ public static final String DATA3 = "data3"; /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * TEXT data type - *

    Type: TEXT

    + * 通用数据列,含义由{@link #MIME_TYPE}决定,用于TEXT数据类型 + *

    类型: TEXT

    */ public static final String DATA4 = "data4"; /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * TEXT data type - *

    Type: TEXT

    + * 通用数据列,含义由{@link #MIME_TYPE}决定,用于TEXT数据类型 + *

    类型: TEXT

    */ public static final String DATA5 = "data5"; } + /** + * TextNote 内部类 - 文本便签的特定列定义 + * 继承自DataColumns,复用基础列定义,添加文本便签特有的列 + */ public static final class TextNote implements DataColumns { /** - * Mode to indicate the text in check list mode or not - *

    Type: Integer 1:check list mode 0: normal mode

    + * 模式:表示文本是否为清单模式 + *

    类型: Integer 1:清单模式 0:普通模式

    */ - public static final String MODE = DATA1; + public static final String MODE = DATA1; // 重用DATA1列 - public static final int MODE_CHECK_LIST = 1; + public static final int MODE_CHECK_LIST = 1; // 清单模式的值 + // ContentProvider MIME类型定义 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; - public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; + // 文本便签的专用URI public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); } + /** + * CallNote 内部类 - 通话记录便签的特定列定义 + * 继承自DataColumns,复用基础列定义,添加通话记录便签特有的列 + */ public static final class CallNote implements DataColumns { /** - * Call date for this record - *

    Type: INTEGER (long)

    + * 通话记录的通话日期 + *

    类型: INTEGER (长整型)

    */ - public static final String CALL_DATE = DATA1; + public static final String CALL_DATE = DATA1; // 重用DATA1列 /** - * Phone number for this record - *

    Type: TEXT

    + * 通话记录的电话号码 + *

    类型: TEXT

    */ - public static final String PHONE_NUMBER = DATA3; + public static final String PHONE_NUMBER = DATA3; // 重用DATA3列 + // ContentProvider MIME类型定义 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; - public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; + // 通话记录便签的专用URI public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); } -} +} \ No newline at end of file -- 2.34.1 From 5b602d49aef4d39d2ffe9616a1f82f709a0902b0 Mon Sep 17 00:00:00 2001 From: ZxR <3193291180@qq.com> Date: Tue, 23 Dec 2025 23:41:17 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/net/micode/notes/data/Contact.java | 3 - src/net/micode/notes/data/Notes.java | 249 +------- .../notes/data/NotesDatabaseHelper.java | 385 +++++++------ src/net/micode/notes/data/NotesProvider.java | 177 ++++-- src/net/micode/notes/gtask/data/MetaData.java | 66 ++- src/net/micode/notes/gtask/data/Node.java | 120 +++- src/net/micode/notes/gtask/data/SqlData.java | 128 +++-- src/net/micode/notes/gtask/data/SqlNote.java | 531 ++++++++++-------- src/net/micode/notes/gtask/data/Task.java | 208 +++++-- src/net/micode/notes/gtask/data/TaskList.java | 175 ++++-- 10 files changed, 1178 insertions(+), 864 deletions(-) diff --git a/src/net/micode/notes/data/Contact.java b/src/net/micode/notes/data/Contact.java index 9aae708..df62799 100644 --- a/src/net/micode/notes/data/Contact.java +++ b/src/net/micode/notes/data/Contact.java @@ -27,7 +27,6 @@ import java.util.HashMap; // HashMap集合,用于缓存联系人信息 /** * Contact 类 - 联系人工具类 - * * 功能:根据电话号码查询通讯录获取联系人姓名 * 设计模式:使用单例模式和缓存机制优化性能 * 技术特点: @@ -55,11 +54,9 @@ public class Contact { /** * 根据电话号码获取联系人姓名 - * * @param context Android上下文,用于访问ContentResolver * @param phoneNumber 要查询的电话号码 * @return 联系人姓名,如果未找到则返回null - * * 方法逻辑: * 1. 首先检查缓存中是否已有该号码对应的联系人 * 2. 如果缓存未命中,查询系统通讯录 diff --git a/src/net/micode/notes/data/Notes.java b/src/net/micode/notes/data/Notes.java index cc08310..24c05c0 100644 --- a/src/net/micode/notes/data/Notes.java +++ b/src/net/micode/notes/data/Notes.java @@ -14,50 +14,31 @@ * limitations under the License. */ -package net.micode.notes.data; // 数据层包,定义便签应用的数据模型和数据库架构 +package net.micode.notes.data; -import android.net.Uri; // Android URI类,用于ContentProvider的URI定义 +import android.net.Uri; /** * Notes 类 - 便签应用的核心常量定义类 - * - * 功能:定义便签应用的所有常量,包括: - * 1. 数据库表和列定义 - * 2. ContentProvider的URI - * 3. Intent的Extra键 - * 4. 便签类型和系统文件夹ID - * 5. 小部件相关常量 - * - * 设计模式:常量接口模式 + 嵌套类分层设计 - * 技术特点: - * 1. 使用接口定义数据库列名,实现清晰的列名管理 - * 2. 使用嵌套类组织不同类型的便签数据 - * 3. 提供完整的ContentProvider URI定义 + * 包含数据库表定义、ContentProvider URI、Intent键、便签类型等常量 + * 采用接口定义列名和嵌套类分层设计 */ public class Notes { - // ContentProvider的授权标识符,用于构建URI public static final String AUTHORITY = "micode_notes"; - - // 日志标签 public static final String TAG = "Notes"; - // 便签类型常量 - public static final int TYPE_NOTE = 0; // 普通便签 - public static final int TYPE_FOLDER = 1; // 文件夹 - public static final int TYPE_SYSTEM = 2; // 系统文件夹 + // 便签类型 + public static final int TYPE_NOTE = 0; + public static final int TYPE_FOLDER = 1; + public static final int TYPE_SYSTEM = 2; - /** - * 以下是系统文件夹的标识符 - * {@link Notes#ID_ROOT_FOLDER } 是默认文件夹 - * {@link Notes#ID_TEMPARAY_FOLDER } 用于存放没有文件夹的便签 - * {@link Notes#ID_CALL_RECORD_FOLDER} 用于存储通话记录 - */ - public static final int ID_ROOT_FOLDER = 0; // 根目录 - public static final int ID_TEMPARAY_FOLDER = -1; // 临时文件夹(暂存区) - public static final int ID_CALL_RECORD_FOLDER = -2; // 通话记录文件夹 - public static final int ID_TRASH_FOLER = -3; // 回收站文件夹(注意拼写错误:FOLDER) + // 系统文件夹ID + public static final int ID_ROOT_FOLDER = 0; + public static final int ID_TEMPARAY_FOLDER = -1; + public static final int ID_CALL_RECORD_FOLDER = -2; + public static final int ID_TRASH_FOLER = -3; - // Intent Extra键常量,用于Activity/Fragment间数据传递 + // Intent Extra键 public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date"; public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id"; public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id"; @@ -65,255 +46,83 @@ public class Notes { public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id"; public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date"; - // 小部件类型常量 - public static final int TYPE_WIDGET_INVALIDE = -1; // 无效的小部件类型 - public static final int TYPE_WIDGET_2X = 0; // 2x2小部件 - public static final int TYPE_WIDGET_4X = 1; // 4x4小部件 + // 小部件类型 + public static final int TYPE_WIDGET_INVALIDE = -1; + public static final int TYPE_WIDGET_2X = 0; + public static final int TYPE_WIDGET_4X = 1; /** - * DataConstants 内部类 - 数据类型常量定义 - * 定义便签数据的MIME类型 + * DataConstants - 数据类型常量 */ public static class DataConstants { - public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; // 普通便签类型 - public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; // 通话记录便签类型 + public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; + public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; } - /** - * 查询所有便签和文件夹的URI - * content://micode_notes/note - */ public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note"); - - /** - * 查询便签数据的URI - * content://micode_notes/data - */ public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); /** - * NoteColumns 接口 - 便签表(notes表)的列定义 - * 使用接口而不是类来定义列名,避免实例化,符合Android数据库设计规范 + * NoteColumns - 便签表列定义 */ public interface NoteColumns { - /** - * 行的唯一ID - *

    类型: INTEGER (长整型)

    - */ public static final String ID = "_id"; - - /** - * 便签或文件夹的父节点ID - *

    类型: INTEGER (长整型)

    - */ public static final String PARENT_ID = "parent_id"; - - /** - * 便签或文件夹的创建日期 - *

    类型: INTEGER (长整型)

    - */ public static final String CREATED_DATE = "created_date"; - - /** - * 最后修改日期 - *

    类型: INTEGER (长整型)

    - */ public static final String MODIFIED_DATE = "modified_date"; - - /** - * 提醒日期 - *

    类型: INTEGER (长整型)

    - */ public static final String ALERTED_DATE = "alert_date"; - - /** - * 文件夹名称或便签的文本内容摘要 - *

    类型: TEXT

    - */ public static final String SNIPPET = "snippet"; - - /** - * 便签对应的小部件ID - *

    类型: INTEGER (长整型)

    - */ public static final String WIDGET_ID = "widget_id"; - - /** - * 便签对应的小部件类型 - *

    类型: INTEGER (长整型)

    - */ public static final String WIDGET_TYPE = "widget_type"; - - /** - * 便签背景颜色的ID - *

    类型: INTEGER (长整型)

    - */ public static final String BG_COLOR_ID = "bg_color_id"; - - /** - * 是否有附件:文本便签没有附件,多媒体便签至少有一个附件 - *

    类型: INTEGER

    - */ public static final String HAS_ATTACHMENT = "has_attachment"; - - /** - * 文件夹中的便签数量 - *

    类型: INTEGER (长整型)

    - */ public static final String NOTES_COUNT = "notes_count"; - - /** - * 文件类型:文件夹或便签 - *

    类型: INTEGER

    - */ public static final String TYPE = "type"; - - /** - * 最后同步ID,用于数据同步 - *

    类型: INTEGER (长整型)

    - */ public static final String SYNC_ID = "sync_id"; - - /** - * 本地修改标记:表示数据是否在本地被修改过 - *

    类型: INTEGER

    - */ public static final String LOCAL_MODIFIED = "local_modified"; - - /** - * 移动到临时文件夹前的原始父节点ID - *

    类型: INTEGER

    - */ public static final String ORIGIN_PARENT_ID = "origin_parent_id"; - - /** - * Google Tasks的ID(如果与Google Tasks同步) - *

    类型: TEXT

    - */ public static final String GTASK_ID = "gtask_id"; - - /** - * 版本号 - *

    类型: INTEGER (长整型)

    - */ public static final String VERSION = "version"; } /** - * DataColumns 接口 - 便签数据表(data表)的列定义 - * 这个表存储便签的具体内容数据,采用EAV(实体-属性-值)模型设计 + * DataColumns - 便签数据表列定义,采用EAV模型 */ public interface DataColumns { - /** - * 行的唯一ID - *

    类型: INTEGER (长整型)

    - */ public static final String ID = "_id"; - - /** - * 该行所代表项目的MIME类型 - *

    类型: TEXT

    - */ public static final String MIME_TYPE = "mime_type"; - - /** - * 该数据所属便签的引用ID - *

    类型: INTEGER (长整型)

    - */ public static final String NOTE_ID = "note_id"; - - /** - * 数据创建日期 - *

    类型: INTEGER (长整型)

    - */ public static final String CREATED_DATE = "created_date"; - - /** - * 最后修改日期 - *

    类型: INTEGER (长整型)

    - */ public static final String MODIFIED_DATE = "modified_date"; - - /** - * 数据内容 - *

    类型: TEXT

    - */ public static final String CONTENT = "content"; - - /** - * 通用数据列,含义由{@link #MIME_TYPE}决定,用于整数数据类型 - *

    类型: INTEGER

    - */ public static final String DATA1 = "data1"; - - /** - * 通用数据列,含义由{@link #MIME_TYPE}决定,用于整数数据类型 - *

    类型: INTEGER

    - */ public static final String DATA2 = "data2"; - - /** - * 通用数据列,含义由{@link #MIME_TYPE}决定,用于TEXT数据类型 - *

    类型: TEXT

    - */ public static final String DATA3 = "data3"; - - /** - * 通用数据列,含义由{@link #MIME_TYPE}决定,用于TEXT数据类型 - *

    类型: TEXT

    - */ public static final String DATA4 = "data4"; - - /** - * 通用数据列,含义由{@link #MIME_TYPE}决定,用于TEXT数据类型 - *

    类型: TEXT

    - */ public static final String DATA5 = "data5"; } /** - * TextNote 内部类 - 文本便签的特定列定义 - * 继承自DataColumns,复用基础列定义,添加文本便签特有的列 + * TextNote - 文本便签的特定列定义 */ public static final class TextNote implements DataColumns { - /** - * 模式:表示文本是否为清单模式 - *

    类型: Integer 1:清单模式 0:普通模式

    - */ - public static final String MODE = DATA1; // 重用DATA1列 - - public static final int MODE_CHECK_LIST = 1; // 清单模式的值 + public static final String MODE = DATA1; // 1:清单模式 0:普通模式 + public static final int MODE_CHECK_LIST = 1; - // ContentProvider MIME类型定义 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; - - // 文本便签的专用URI public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); } /** - * CallNote 内部类 - 通话记录便签的特定列定义 - * 继承自DataColumns,复用基础列定义,添加通话记录便签特有的列 + * CallNote - 通话记录便签的特定列定义 */ public static final class CallNote implements DataColumns { - /** - * 通话记录的通话日期 - *

    类型: INTEGER (长整型)

    - */ - public static final String CALL_DATE = DATA1; // 重用DATA1列 + public static final String CALL_DATE = DATA1; // 通话日期 + public static final String PHONE_NUMBER = DATA3; // 电话号码 - /** - * 通话记录的电话号码 - *

    类型: TEXT

    - */ - public static final String PHONE_NUMBER = DATA3; // 重用DATA3列 - - // ContentProvider MIME类型定义 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; - - // 通话记录便签的专用URI public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); } } \ No newline at end of file diff --git a/src/net/micode/notes/data/NotesDatabaseHelper.java b/src/net/micode/notes/data/NotesDatabaseHelper.java index ffe5d57..826bdf2 100644 --- a/src/net/micode/notes/data/NotesDatabaseHelper.java +++ b/src/net/micode/notes/data/NotesDatabaseHelper.java @@ -26,190 +26,188 @@ import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.DataConstants; import net.micode.notes.data.Notes.NoteColumns; - +/** + * NotesDatabaseHelper 类 - 便签数据库辅助类 + * + * 功能:管理便签应用的SQLite数据库创建和版本升级 + * 继承自SQLiteOpenHelper,实现数据库的创建、升级和初始化 + * 包含note表和data表,以及相关的触发器定义 + */ public class NotesDatabaseHelper extends SQLiteOpenHelper { + // 数据库名称 private static final String DB_NAME = "note.db"; - + // 数据库版本号,用于数据库升级管理 private static final int DB_VERSION = 4; + // 表名常量接口 public interface TABLE { - public static final String NOTE = "note"; - - public static final String DATA = "data"; + public static final String NOTE = "note"; // 便签主表 + public static final String DATA = "data"; // 便签数据表 } - private static final String TAG = "NotesDatabaseHelper"; + private static final String TAG = "NotesDatabaseHelper"; // 日志标签 - private static NotesDatabaseHelper mInstance; + private static NotesDatabaseHelper mInstance; // 单例实例 + // 创建note表的SQL语句 private static final String CREATE_NOTE_TABLE_SQL = - "CREATE TABLE " + TABLE.NOTE + "(" + - NoteColumns.ID + " INTEGER PRIMARY KEY," + - NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," + - NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," + - NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + - NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + - ")"; - + "CREATE TABLE " + TABLE.NOTE + "(" + + NoteColumns.ID + " INTEGER PRIMARY KEY," + + NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," + + NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," + + NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + + ")"; + + // 创建data表的SQL语句 private static final String CREATE_DATA_TABLE_SQL = - "CREATE TABLE " + TABLE.DATA + "(" + - DataColumns.ID + " INTEGER PRIMARY KEY," + - DataColumns.MIME_TYPE + " TEXT NOT NULL," + - DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," + - DataColumns.DATA1 + " INTEGER," + - DataColumns.DATA2 + " INTEGER," + - DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," + - DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + - DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + - ")"; - + "CREATE TABLE " + TABLE.DATA + "(" + + DataColumns.ID + " INTEGER PRIMARY KEY," + + DataColumns.MIME_TYPE + " TEXT NOT NULL," + + DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," + + NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," + + DataColumns.DATA1 + " INTEGER," + + DataColumns.DATA2 + " INTEGER," + + DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," + + DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + + DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + + ")"; + + // 创建data表note_id索引的SQL语句 private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = - "CREATE INDEX IF NOT EXISTS note_id_index ON " + - TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; + "CREATE INDEX IF NOT EXISTS note_id_index ON " + + TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; - /** - * Increase folder's note count when move note to the folder - */ + // 触发器:当更新便签的父文件夹时,增加目标文件夹的便签计数 private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = - "CREATE TRIGGER increase_folder_count_on_update "+ - " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + - " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + - " END"; - - /** - * Decrease folder's note count when move note from folder - */ + "CREATE TRIGGER increase_folder_count_on_update "+ + " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + + " END"; + + // 触发器:当更新便签的父文件夹时,减少原文件夹的便签计数 private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = - "CREATE TRIGGER decrease_folder_count_on_update " + - " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + - " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + - " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + - " END"; - - /** - * Increase folder's note count when insert new note to the folder - */ + "CREATE TRIGGER decrease_folder_count_on_update " + + " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + + " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + + " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + + " END"; + + // 触发器:当插入新便签时,增加父文件夹的便签计数 private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = - "CREATE TRIGGER increase_folder_count_on_insert " + - " AFTER INSERT ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + - " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + - " END"; - - /** - * Decrease folder's note count when delete note from the folder - */ + "CREATE TRIGGER increase_folder_count_on_insert " + + " AFTER INSERT ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + + " END"; + + // 触发器:当删除便签时,减少父文件夹的便签计数 private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = - "CREATE TRIGGER decrease_folder_count_on_delete " + - " AFTER DELETE ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + - " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + - " AND " + NoteColumns.NOTES_COUNT + ">0;" + - " END"; - - /** - * Update note's content when insert data with type {@link DataConstants#NOTE} - */ + "CREATE TRIGGER decrease_folder_count_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + + " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + + " AND " + NoteColumns.NOTES_COUNT + ">0;" + + " END"; + + // 触发器:当插入数据且类型为普通便签时,更新便签的snippet字段 private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER = - "CREATE TRIGGER update_note_content_on_insert " + - " AFTER INSERT ON " + TABLE.DATA + - " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + - " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + - " END"; - - /** - * Update note's content when data with {@link DataConstants#NOTE} type has changed - */ + "CREATE TRIGGER update_note_content_on_insert " + + " AFTER INSERT ON " + TABLE.DATA + + " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + + " END"; + + // 触发器:当更新数据且类型为普通便签时,更新便签的snippet字段 private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER = - "CREATE TRIGGER update_note_content_on_update " + - " AFTER UPDATE ON " + TABLE.DATA + - " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + - " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + - " END"; - - /** - * Update note's content when data with {@link DataConstants#NOTE} type has deleted - */ + "CREATE TRIGGER update_note_content_on_update " + + " AFTER UPDATE ON " + TABLE.DATA + + " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + + " END"; + + // 触发器:当删除数据且类型为普通便签时,清空便签的snippet字段 private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER = - "CREATE TRIGGER update_note_content_on_delete " + - " AFTER delete ON " + TABLE.DATA + - " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.SNIPPET + "=''" + - " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + - " END"; - - /** - * Delete datas belong to note which has been deleted - */ + "CREATE TRIGGER update_note_content_on_delete " + + " AFTER delete ON " + TABLE.DATA + + " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=''" + + " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + + " END"; + + // 触发器:当删除便签时,同步删除该便签的所有数据 private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER = - "CREATE TRIGGER delete_data_on_delete " + - " AFTER DELETE ON " + TABLE.NOTE + - " BEGIN" + - " DELETE FROM " + TABLE.DATA + - " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + - " END"; - - /** - * Delete notes belong to folder which has been deleted - */ + "CREATE TRIGGER delete_data_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN" + + " DELETE FROM " + TABLE.DATA + + " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + // 触发器:当删除文件夹时,同步删除该文件夹下的所有便签(级联删除) private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER = - "CREATE TRIGGER folder_delete_notes_on_delete " + - " AFTER DELETE ON " + TABLE.NOTE + - " BEGIN" + - " DELETE FROM " + TABLE.NOTE + - " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END"; + "CREATE TRIGGER folder_delete_notes_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN" + + " DELETE FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + // 触发器:当文件夹被移动到回收站时,将该文件夹下的所有便签也移动到回收站 + private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = + "CREATE TRIGGER folder_move_notes_on_trash " + + " AFTER UPDATE ON " + TABLE.NOTE + + " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + + " END"; /** - * Move notes belong to folder which has been moved to trash folder + * 构造方法 + * @param context Android上下文 */ - private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = - "CREATE TRIGGER folder_move_notes_on_trash " + - " AFTER UPDATE ON " + TABLE.NOTE + - " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + - " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END"; - public NotesDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } + /** + * 创建note表及其触发器和系统文件夹 + * @param db SQLiteDatabase对象 + */ public void createNoteTable(SQLiteDatabase db) { db.execSQL(CREATE_NOTE_TABLE_SQL); reCreateNoteTableTriggers(db); @@ -217,6 +215,10 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { Log.d(TAG, "note table has been created"); } + /** + * 重新创建note表的所有触发器(先删除后创建) + * @param db SQLiteDatabase对象 + */ private void reCreateNoteTableTriggers(SQLiteDatabase db) { db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); @@ -235,41 +237,41 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); } + /** + * 创建系统文件夹(通话记录文件夹、根文件夹、临时文件夹、回收站文件夹) + * @param db SQLiteDatabase对象 + */ private void createSystemFolder(SQLiteDatabase db) { ContentValues values = new ContentValues(); - /** - * call record foler for call notes - */ + // 通话记录文件夹 values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); - /** - * root folder which is default folder - */ + // 根文件夹(默认文件夹) values.clear(); values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); - /** - * temporary folder which is used for moving note - */ + // 临时文件夹(用于移动便签时的暂存) values.clear(); values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); - /** - * create trash folder - */ + // 回收站文件夹 values.clear(); values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); } + /** + * 创建data表及其触发器和索引 + * @param db SQLiteDatabase对象 + */ public void createDataTable(SQLiteDatabase db) { db.execSQL(CREATE_DATA_TABLE_SQL); reCreateDataTableTriggers(db); @@ -277,6 +279,10 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { Log.d(TAG, "data table has been created"); } + /** + * 重新创建data表的所有触发器(先删除后创建) + * @param db SQLiteDatabase对象 + */ private void reCreateDataTableTriggers(SQLiteDatabase db) { db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert"); db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update"); @@ -287,6 +293,11 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); } + /** + * 获取单例实例(线程安全) + * @param context Android上下文 + * @return NotesDatabaseHelper单例实例 + */ static synchronized NotesDatabaseHelper getInstance(Context context) { if (mInstance == null) { mInstance = new NotesDatabaseHelper(context); @@ -294,45 +305,64 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { return mInstance; } + /** + * 数据库首次创建时调用,创建所有表和触发器 + * @param db SQLiteDatabase对象 + */ @Override public void onCreate(SQLiteDatabase db) { createNoteTable(db); createDataTable(db); } + /** + * 数据库升级时调用,根据旧版本号逐步升级 + * @param db SQLiteDatabase对象 + * @param oldVersion 旧版本号 + * @param newVersion 新版本号 + */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { boolean reCreateTriggers = false; boolean skipV2 = false; + // 从版本1升级到版本2 if (oldVersion == 1) { upgradeToV2(db); - skipV2 = true; // this upgrade including the upgrade from v2 to v3 + skipV2 = true; // 此次升级已包含从v2到v3的升级 oldVersion++; } + // 从版本2升级到版本3(如果未跳过) if (oldVersion == 2 && !skipV2) { upgradeToV3(db); reCreateTriggers = true; oldVersion++; } + // 从版本3升级到版本4 if (oldVersion == 3) { upgradeToV4(db); oldVersion++; } + // 如果需要,重新创建触发器 if (reCreateTriggers) { reCreateNoteTableTriggers(db); reCreateDataTableTriggers(db); } + // 如果版本号不匹配,抛出异常 if (oldVersion != newVersion) { throw new IllegalStateException("Upgrade notes database to version " + newVersion + "fails"); } } + /** + * 升级到版本2:删除旧表并重新创建 + * @param db SQLiteDatabase对象 + */ private void upgradeToV2(SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); @@ -340,23 +370,34 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { createDataTable(db); } + /** + * 升级到版本3: + * 1. 删除不再使用的触发器 + * 2. 添加gtask_id列 + * 3. 添加回收站系统文件夹 + * @param db SQLiteDatabase对象 + */ private void upgradeToV3(SQLiteDatabase db) { - // drop unused triggers + // 删除不再使用的触发器 db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert"); db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_delete"); db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_update"); - // add a column for gtask id + // 添加gtask_id列 db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''"); - // add a trash system folder + // 添加回收站系统文件夹 ContentValues values = new ContentValues(); values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); } + /** + * 升级到版本4:添加version列 + * @param db SQLiteDatabase对象 + */ private void upgradeToV4(SQLiteDatabase db) { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0"); } -} +} \ No newline at end of file diff --git a/src/net/micode/notes/data/NotesProvider.java b/src/net/micode/notes/data/NotesProvider.java index edb0a60..6e71154 100644 --- a/src/net/micode/notes/data/NotesProvider.java +++ b/src/net/micode/notes/data/NotesProvider.java @@ -16,7 +16,6 @@ package net.micode.notes.data; - import android.app.SearchManager; import android.content.ContentProvider; import android.content.ContentUris; @@ -34,22 +33,28 @@ import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.data.NotesDatabaseHelper.TABLE; - +/** + * NotesProvider 类 - 便签应用的ContentProvider + * + * 功能:为便签应用提供数据访问接口,通过ContentProvider机制实现数据共享 + * 继承自ContentProvider,实现对note表和data表的CRUD操作,并支持搜索功能 + */ public class NotesProvider extends ContentProvider { - private static final UriMatcher mMatcher; - - private NotesDatabaseHelper mHelper; + private static final UriMatcher mMatcher; // URI匹配器,用于匹配不同的URI请求 - private static final String TAG = "NotesProvider"; + private NotesDatabaseHelper mHelper; // 数据库帮助类实例 - private static final int URI_NOTE = 1; - private static final int URI_NOTE_ITEM = 2; - private static final int URI_DATA = 3; - private static final int URI_DATA_ITEM = 4; + private static final String TAG = "NotesProvider"; // 日志标签 - private static final int URI_SEARCH = 5; - private static final int URI_SEARCH_SUGGEST = 6; + // URI匹配常量定义 + private static final int URI_NOTE = 1; // 匹配note表所有记录 + private static final int URI_NOTE_ITEM = 2; // 匹配note表单条记录 + private static final int URI_DATA = 3; // 匹配data表所有记录 + private static final int URI_DATA_ITEM = 4; // 匹配data表单条记录 + private static final int URI_SEARCH = 5; // 匹配搜索请求 + private static final int URI_SEARCH_SUGGEST = 6; // 匹配搜索建议请求 + // 静态初始化块:初始化URI匹配器,添加各种URI模式 static { mMatcher = new UriMatcher(UriMatcher.NO_MATCH); mMatcher.addURI(Notes.AUTHORITY, "note", URI_NOTE); @@ -62,76 +67,92 @@ public class NotesProvider extends ContentProvider { } /** - * x'0A' represents the '\n' character in sqlite. For title and content in the search result, - * we will trim '\n' and white space in order to show more information. + * 搜索投影字段定义: + * x'0A' 表示SQLite中的换行符'\n' + * 对于搜索结果中的标题和内容,我们将修剪'\n'和空格以显示更多信息 */ private static final String NOTES_SEARCH_PROJECTION = NoteColumns.ID + "," - + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + "," - + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_1 + "," - + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_2 + "," - + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + "," - + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + "," - + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA; + + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_1 + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_2 + "," + + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + "," + + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + "," + + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA; + // 便签片段搜索查询语句 private static String NOTES_SNIPPET_SEARCH_QUERY = "SELECT " + NOTES_SEARCH_PROJECTION - + " FROM " + TABLE.NOTE - + " WHERE " + NoteColumns.SNIPPET + " LIKE ?" - + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER - + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE; + + " FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.SNIPPET + " LIKE ?" // 模糊匹配搜索条件 + + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER // 排除回收站中的便签 + + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE; // 只搜索普通便签类型 + /** + * ContentProvider创建时调用,初始化数据库帮助类 + * @return true表示初始化成功 + */ @Override public boolean onCreate() { mHelper = NotesDatabaseHelper.getInstance(getContext()); return true; } + /** + * 查询方法,根据URI匹配不同的查询逻辑 + * @param uri 请求的URI + * @param projection 要返回的列 + * @param selection 查询条件 + * @param selectionArgs 查询参数 + * @param sortOrder 排序方式 + * @return 查询结果的Cursor对象 + */ @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, - String sortOrder) { + String sortOrder) { Cursor c = null; SQLiteDatabase db = mHelper.getReadableDatabase(); String id = null; switch (mMatcher.match(uri)) { - case URI_NOTE: + case URI_NOTE: // 查询note表所有记录 c = db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null, sortOrder); break; - case URI_NOTE_ITEM: - id = uri.getPathSegments().get(1); + case URI_NOTE_ITEM: // 查询note表单条记录 + id = uri.getPathSegments().get(1); // 从URI路径段中获取ID c = db.query(TABLE.NOTE, projection, NoteColumns.ID + "=" + id + parseSelection(selection), selectionArgs, null, null, sortOrder); break; - case URI_DATA: + case URI_DATA: // 查询data表所有记录 c = db.query(TABLE.DATA, projection, selection, selectionArgs, null, null, sortOrder); break; - case URI_DATA_ITEM: + case URI_DATA_ITEM: // 查询data表单条记录 id = uri.getPathSegments().get(1); c = db.query(TABLE.DATA, projection, DataColumns.ID + "=" + id + parseSelection(selection), selectionArgs, null, null, sortOrder); break; case URI_SEARCH: - case URI_SEARCH_SUGGEST: + case URI_SEARCH_SUGGEST: // 处理搜索和搜索建议请求 if (sortOrder != null || projection != null) { throw new IllegalArgumentException( "do not specify sortOrder, selection, selectionArgs, or projection" + "with this query"); } String searchString = null; + // 根据URI类型获取搜索字符串 if (mMatcher.match(uri) == URI_SEARCH_SUGGEST) { if (uri.getPathSegments().size() > 1) { searchString = uri.getPathSegments().get(1); } } else { - searchString = uri.getQueryParameter("pattern"); + searchString = uri.getQueryParameter("pattern"); // 从查询参数获取搜索模式 } if (TextUtils.isEmpty(searchString)) { - return null; + return null; // 搜索字符串为空则返回null } try { - searchString = String.format("%%%s%%", searchString); + searchString = String.format("%%%s%%", searchString); // 添加通配符进行模糊匹配 c = db.rawQuery(NOTES_SNIPPET_SEARCH_QUERY, new String[] { searchString }); } catch (IllegalStateException ex) { @@ -141,21 +162,28 @@ public class NotesProvider extends ContentProvider { default: throw new IllegalArgumentException("Unknown URI " + uri); } + // 设置通知URI,以便在数据变化时能够通知观察者 if (c != null) { c.setNotificationUri(getContext().getContentResolver(), uri); } return c; } + /** + * 插入数据方法 + * @param uri 请求的URI + * @param values 要插入的数据 + * @return 插入数据的新URI + */ @Override public Uri insert(Uri uri, ContentValues values) { SQLiteDatabase db = mHelper.getWritableDatabase(); long dataId = 0, noteId = 0, insertedId = 0; switch (mMatcher.match(uri)) { - case URI_NOTE: + case URI_NOTE: // 插入note表记录 insertedId = noteId = db.insert(TABLE.NOTE, null, values); break; - case URI_DATA: + case URI_DATA: // 插入data表记录 if (values.containsKey(DataColumns.NOTE_ID)) { noteId = values.getAsLong(DataColumns.NOTE_ID); } else { @@ -166,50 +194,57 @@ public class NotesProvider extends ContentProvider { default: throw new IllegalArgumentException("Unknown URI " + uri); } - // Notify the note uri + // 通知note URI的数据变化 if (noteId > 0) { getContext().getContentResolver().notifyChange( ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null); } - // Notify the data uri + // 通知data URI的数据变化 if (dataId > 0) { getContext().getContentResolver().notifyChange( ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null); } + // 返回新插入数据的URI return ContentUris.withAppendedId(uri, insertedId); } + /** + * 删除数据方法 + * @param uri 请求的URI + * @param selection 删除条件 + * @param selectionArgs 删除参数 + * @return 删除的记录数 + */ @Override public int delete(Uri uri, String selection, String[] selectionArgs) { int count = 0; String id = null; SQLiteDatabase db = mHelper.getWritableDatabase(); - boolean deleteData = false; + boolean deleteData = false; // 标记是否删除data表数据 switch (mMatcher.match(uri)) { - case URI_NOTE: + case URI_NOTE: // 删除note表记录(系统文件夹不允许删除) selection = "(" + selection + ") AND " + NoteColumns.ID + ">0 "; count = db.delete(TABLE.NOTE, selection, selectionArgs); break; - case URI_NOTE_ITEM: + case URI_NOTE_ITEM: // 删除note表单条记录 id = uri.getPathSegments().get(1); /** - * ID that smaller than 0 is system folder which is not allowed to - * trash + * ID小于0的是系统文件夹,不允许删除 */ long noteId = Long.valueOf(id); if (noteId <= 0) { - break; + break; // 系统文件夹不删除 } count = db.delete(TABLE.NOTE, NoteColumns.ID + "=" + id + parseSelection(selection), selectionArgs); break; - case URI_DATA: + case URI_DATA: // 删除data表记录 count = db.delete(TABLE.DATA, selection, selectionArgs); deleteData = true; break; - case URI_DATA_ITEM: + case URI_DATA_ITEM: // 删除data表单条记录 id = uri.getPathSegments().get(1); count = db.delete(TABLE.DATA, DataColumns.ID + "=" + id + parseSelection(selection), selectionArgs); @@ -218,8 +253,10 @@ public class NotesProvider extends ContentProvider { default: throw new IllegalArgumentException("Unknown URI " + uri); } + // 如果删除了记录,通知数据变化 if (count > 0) { if (deleteData) { + // 删除data表数据时需要通知note URI getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); } getContext().getContentResolver().notifyChange(uri, null); @@ -227,28 +264,36 @@ public class NotesProvider extends ContentProvider { return count; } + /** + * 更新数据方法 + * @param uri 请求的URI + * @param values 更新的数据 + * @param selection 更新条件 + * @param selectionArgs 更新参数 + * @return 更新的记录数 + */ @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int count = 0; String id = null; SQLiteDatabase db = mHelper.getWritableDatabase(); - boolean updateData = false; + boolean updateData = false; // 标记是否更新data表数据 switch (mMatcher.match(uri)) { - case URI_NOTE: - increaseNoteVersion(-1, selection, selectionArgs); + case URI_NOTE: // 更新note表记录 + increaseNoteVersion(-1, selection, selectionArgs); // 增加版本号 count = db.update(TABLE.NOTE, values, selection, selectionArgs); break; - case URI_NOTE_ITEM: + case URI_NOTE_ITEM: // 更新note表单条记录 id = uri.getPathSegments().get(1); - increaseNoteVersion(Long.valueOf(id), selection, selectionArgs); + increaseNoteVersion(Long.valueOf(id), selection, selectionArgs); // 增加版本号 count = db.update(TABLE.NOTE, values, NoteColumns.ID + "=" + id + parseSelection(selection), selectionArgs); break; - case URI_DATA: + case URI_DATA: // 更新data表记录 count = db.update(TABLE.DATA, values, selection, selectionArgs); updateData = true; break; - case URI_DATA_ITEM: + case URI_DATA_ITEM: // 更新data表单条记录 id = uri.getPathSegments().get(1); count = db.update(TABLE.DATA, values, DataColumns.ID + "=" + id + parseSelection(selection), selectionArgs); @@ -258,8 +303,10 @@ public class NotesProvider extends ContentProvider { throw new IllegalArgumentException("Unknown URI " + uri); } + // 如果更新了记录,通知数据变化 if (count > 0) { if (updateData) { + // 更新data表数据时需要通知note URI getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); } getContext().getContentResolver().notifyChange(uri, null); @@ -267,18 +314,30 @@ public class NotesProvider extends ContentProvider { return count; } + /** + * 解析选择条件,将传入的条件转换为AND连接的条件 + * @param selection 原始选择条件 + * @return 解析后的选择条件字符串 + */ private String parseSelection(String selection) { return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""); } + /** + * 增加便签版本号 + * @param id 便签ID(大于0)或-1表示更新所有匹配的记录 + * @param selection 更新条件 + * @param selectionArgs 更新参数 + */ private void increaseNoteVersion(long id, String selection, String[] selectionArgs) { StringBuilder sql = new StringBuilder(120); sql.append("UPDATE "); sql.append(TABLE.NOTE); sql.append(" SET "); sql.append(NoteColumns.VERSION); - sql.append("=" + NoteColumns.VERSION + "+1 "); + sql.append("=" + NoteColumns.VERSION + "+1 "); // 版本号加1 + // 构建WHERE子句 if (id > 0 || !TextUtils.isEmpty(selection)) { sql.append(" WHERE "); } @@ -287,19 +346,25 @@ public class NotesProvider extends ContentProvider { } if (!TextUtils.isEmpty(selection)) { String selectString = id > 0 ? parseSelection(selection) : selection; + // 替换参数占位符 for (String args : selectionArgs) { selectString = selectString.replaceFirst("\\?", args); } sql.append(selectString); } + // 执行SQL语句 mHelper.getWritableDatabase().execSQL(sql.toString()); } + /** + * 获取URI对应的MIME类型(暂未实现) + * @param uri 请求的URI + * @return MIME类型字符串 + */ @Override public String getType(Uri uri) { // TODO Auto-generated method stub return null; } - -} +} \ No newline at end of file diff --git a/src/net/micode/notes/gtask/data/MetaData.java b/src/net/micode/notes/gtask/data/MetaData.java index 3a2050b..e30d451 100644 --- a/src/net/micode/notes/gtask/data/MetaData.java +++ b/src/net/micode/notes/gtask/data/MetaData.java @@ -24,59 +24,101 @@ import net.micode.notes.tool.GTaskStringUtils; import org.json.JSONException; import org.json.JSONObject; - +/** + * MetaData 类 - 元数据实体类 + * + * 功能:用于存储和管理与Google Tasks同步相关的元数据信息 + * 继承自Task类,专门处理便签与Google Tasks的关联关系 + * 设计为不可直接调用的辅助类,主要存储关联的Google Task ID + */ public class MetaData extends Task { - private final static String TAG = MetaData.class.getSimpleName(); + private final static String TAG = MetaData.class.getSimpleName(); // 日志标签 - private String mRelatedGid = null; + private String mRelatedGid = null; // 关联的Google Task ID + /** + * 设置元数据 + * @param gid Google Task的ID + * @param metaInfo 包含元信息的JSONObject对象 + */ public void setMeta(String gid, JSONObject metaInfo) { try { + // 将Google Task ID添加到元信息中 metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); } catch (JSONException e) { - Log.e(TAG, "failed to put related gid"); + Log.e(TAG, "failed to put related gid"); // 记录错误日志 } - setNotes(metaInfo.toString()); - setName(GTaskStringUtils.META_NOTE_NAME); + setNotes(metaInfo.toString()); // 将JSON字符串设置为便签内容 + setName(GTaskStringUtils.META_NOTE_NAME); // 设置元数据便签的名称 } + /** + * 获取关联的Google Task ID + * @return 关联的Google Task ID,如果不存在则返回null + */ public String getRelatedGid() { return mRelatedGid; } + /** + * 判断是否值得保存(是否有有效的便签内容) + * @return 如果有便签内容则返回true,否则返回false + */ @Override public boolean isWorthSaving() { return getNotes() != null; } + /** + * 从远程JSON数据设置内容(从Google Tasks服务器获取) + * @param js 包含远程数据的JSONObject对象 + */ @Override public void setContentByRemoteJSON(JSONObject js) { - super.setContentByRemoteJSON(js); + super.setContentByRemoteJSON(js); // 调用父类方法设置基础内容 if (getNotes() != null) { try { + // 解析便签内容为JSON,提取关联的Google Task ID JSONObject metaInfo = new JSONObject(getNotes().trim()); mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID); } catch (JSONException e) { - Log.w(TAG, "failed to get related gid"); - mRelatedGid = null; + Log.w(TAG, "failed to get related gid"); // 记录警告日志 + mRelatedGid = null; // 解析失败时设为null } } } + /** + * 从本地JSON数据设置内容(禁止调用) + * @param js 本地JSON数据 + * @throws IllegalAccessError 始终抛出此异常,表示此方法不应被调用 + */ @Override public void setContentByLocalJSON(JSONObject js) { - // this function should not be called + // 此方法不应被调用,MetaData不从本地JSON设置内容 throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called"); } + /** + * 从内容获取本地JSON数据(禁止调用) + * @return 本地JSON数据 + * @throws IllegalAccessError 始终抛出此异常,表示此方法不应被调用 + */ @Override public JSONObject getLocalJSONFromContent() { + // 此方法不应被调用,MetaData不生成本地JSON throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called"); } + /** + * 获取同步操作(禁止调用) + * @param c 数据库游标 + * @return 同步操作类型 + * @throws IllegalAccessError 始终抛出此异常,表示此方法不应被调用 + */ @Override public int getSyncAction(Cursor c) { + // 此方法不应被调用,MetaData不处理同步操作 throw new IllegalAccessError("MetaData:getSyncAction should not be called"); } - -} +} \ No newline at end of file diff --git a/src/net/micode/notes/gtask/data/Node.java b/src/net/micode/notes/gtask/data/Node.java index 63950e0..344be2e 100644 --- a/src/net/micode/notes/gtask/data/Node.java +++ b/src/net/micode/notes/gtask/data/Node.java @@ -20,33 +20,34 @@ import android.database.Cursor; import org.json.JSONObject; +/** + * Node 类 - 数据节点的抽象基类 + * + * 功能:定义与Google Tasks同步的数据节点的通用属性和行为 + * 这是一个抽象类,为便签同步提供基础框架,包含同步操作状态码和基本数据字段 + * 采用模板方法模式,具体的数据节点(如Task、MetaData等)需要实现抽象方法 + */ public abstract class Node { - public static final int SYNC_ACTION_NONE = 0; - - public static final int SYNC_ACTION_ADD_REMOTE = 1; - - public static final int SYNC_ACTION_ADD_LOCAL = 2; - - public static final int SYNC_ACTION_DEL_REMOTE = 3; - - public static final int SYNC_ACTION_DEL_LOCAL = 4; - - public static final int SYNC_ACTION_UPDATE_REMOTE = 5; - - public static final int SYNC_ACTION_UPDATE_LOCAL = 6; - - public static final int SYNC_ACTION_UPDATE_CONFLICT = 7; - - public static final int SYNC_ACTION_ERROR = 8; - - private String mGid; - - private String mName; - - private long mLastModified; - - private boolean mDeleted; - + // 同步操作状态码定义 + public static final int SYNC_ACTION_NONE = 0; // 无需同步 + public static final int SYNC_ACTION_ADD_REMOTE = 1; // 添加数据到远程 + public static final int SYNC_ACTION_ADD_LOCAL = 2; // 添加数据到本地 + public static final int SYNC_ACTION_DEL_REMOTE = 3; // 删除远程数据 + public static final int SYNC_ACTION_DEL_LOCAL = 4; // 删除本地数据 + public static final int SYNC_ACTION_UPDATE_REMOTE = 5; // 更新远程数据 + public static final int SYNC_ACTION_UPDATE_LOCAL = 6; // 更新本地数据 + public static final int SYNC_ACTION_UPDATE_CONFLICT = 7;// 更新冲突 + public static final int SYNC_ACTION_ERROR = 8; // 同步错误 + + // 节点属性字段 + private String mGid; // Google Task ID(全局唯一标识) + private String mName; // 节点名称 + private long mLastModified; // 最后修改时间戳 + private boolean mDeleted; // 删除标记 + + /** + * 默认构造函数,初始化节点属性 + */ public Node() { mGid = null; mName = ""; @@ -54,48 +55,111 @@ public abstract class Node { mDeleted = false; } + // =============== 抽象方法定义 =============== + // 这些方法需要子类根据具体的数据类型来实现 + + /** + * 获取创建操作的JSON数据 + * @param actionId 操作ID + * @return 包含创建操作数据的JSONObject + */ public abstract JSONObject getCreateAction(int actionId); + /** + * 获取更新操作的JSON数据 + * @param actionId 操作ID + * @return 包含更新操作数据的JSONObject + */ public abstract JSONObject getUpdateAction(int actionId); + /** + * 从远程JSON数据设置节点内容(从Google Tasks服务器获取) + * @param js 包含远程数据的JSONObject + */ public abstract void setContentByRemoteJSON(JSONObject js); + /** + * 从本地JSON数据设置节点内容(从本地数据库获取) + * @param js 包含本地数据的JSONObject + */ public abstract void setContentByLocalJSON(JSONObject js); + /** + * 从节点内容生成本地JSON数据(用于本地存储) + * @return 包含本地数据的JSONObject + */ public abstract JSONObject getLocalJSONFromContent(); + /** + * 根据数据库游标确定同步操作类型 + * @param c 数据库查询结果的Cursor + * @return 同步操作状态码(SYNC_ACTION_*) + */ public abstract int getSyncAction(Cursor c); + // =============== Getter和Setter方法 =============== + + /** + * 设置Google Task ID + * @param gid Google Task的全局唯一标识 + */ public void setGid(String gid) { this.mGid = gid; } + /** + * 设置节点名称 + * @param name 节点名称 + */ public void setName(String name) { this.mName = name; } + /** + * 设置最后修改时间戳 + * @param lastModified 最后修改时间戳(毫秒) + */ public void setLastModified(long lastModified) { this.mLastModified = lastModified; } + /** + * 设置删除标记 + * @param deleted true表示节点已删除,false表示节点有效 + */ public void setDeleted(boolean deleted) { this.mDeleted = deleted; } + /** + * 获取Google Task ID + * @return Google Task的全局唯一标识 + */ public String getGid() { return this.mGid; } + /** + * 获取节点名称 + * @return 节点名称 + */ public String getName() { return this.mName; } + /** + * 获取最后修改时间戳 + * @return 最后修改时间戳(毫秒) + */ public long getLastModified() { return this.mLastModified; } + /** + * 获取删除标记 + * @return true表示节点已删除,false表示节点有效 + */ public boolean getDeleted() { return this.mDeleted; } - -} +} \ No newline at end of file diff --git a/src/net/micode/notes/gtask/data/SqlData.java b/src/net/micode/notes/gtask/data/SqlData.java index d3ec3be..77a98c4 100644 --- a/src/net/micode/notes/gtask/data/SqlData.java +++ b/src/net/micode/notes/gtask/data/SqlData.java @@ -34,61 +34,71 @@ import net.micode.notes.gtask.exception.ActionFailureException; import org.json.JSONException; import org.json.JSONObject; - +/** + * SqlData 类 - 数据库数据操作类 + * + * 功能:封装对便签数据表(data表)的CRUD操作,提供JSON数据与数据库记录的转换 + * 用于在本地数据库和Google Tasks同步之间进行数据映射和转换 + * 实现数据的差异更新和版本控制,提高同步效率 + */ public class SqlData { - private static final String TAG = SqlData.class.getSimpleName(); + private static final String TAG = SqlData.class.getSimpleName(); // 日志标签 - private static final int INVALID_ID = -99999; + private static final int INVALID_ID = -99999; // 无效ID标识 + // 数据表查询字段投影 public static final String[] PROJECTION_DATA = new String[] { DataColumns.ID, DataColumns.MIME_TYPE, DataColumns.CONTENT, DataColumns.DATA1, DataColumns.DATA3 }; - public static final int DATA_ID_COLUMN = 0; - - public static final int DATA_MIME_TYPE_COLUMN = 1; - - public static final int DATA_CONTENT_COLUMN = 2; - - public static final int DATA_CONTENT_DATA_1_COLUMN = 3; - - public static final int DATA_CONTENT_DATA_3_COLUMN = 4; - - private ContentResolver mContentResolver; - - private boolean mIsCreate; - - private long mDataId; - - private String mDataMimeType; - - private String mDataContent; - - private long mDataContentData1; - - private String mDataContentData3; - - private ContentValues mDiffDataValues; - + // 字段索引常量 + public static final int DATA_ID_COLUMN = 0; // ID字段索引 + public static final int DATA_MIME_TYPE_COLUMN = 1; // MIME类型字段索引 + public static final int DATA_CONTENT_COLUMN = 2; // 内容字段索引 + public static final int DATA_CONTENT_DATA_1_COLUMN = 3;// DATA1字段索引 + public static final int DATA_CONTENT_DATA_3_COLUMN = 4;// DATA3字段索引 + + private ContentResolver mContentResolver; // 内容解析器,用于访问ContentProvider + private boolean mIsCreate; // 创建标记:true表示新数据,false表示已存在数据 + private long mDataId; // 数据ID + private String mDataMimeType; // 数据MIME类型 + private String mDataContent; // 数据内容 + private long mDataContentData1; // 数据DATA1字段值 + private String mDataContentData3; // 数据DATA3字段值 + private ContentValues mDiffDataValues; // 差异数据值,用于记录需要更新的字段 + + /** + * 构造函数:创建新的SqlData对象(用于创建新数据) + * @param context Android上下文 + */ public SqlData(Context context) { mContentResolver = context.getContentResolver(); - mIsCreate = true; - mDataId = INVALID_ID; - mDataMimeType = DataConstants.NOTE; - mDataContent = ""; - mDataContentData1 = 0; - mDataContentData3 = ""; - mDiffDataValues = new ContentValues(); + mIsCreate = true; // 标记为新数据 + mDataId = INVALID_ID; // 初始化ID为无效值 + mDataMimeType = DataConstants.NOTE; // 默认MIME类型为普通便签 + mDataContent = ""; // 初始化内容为空 + mDataContentData1 = 0; // 初始化DATA1为0 + mDataContentData3 = ""; // 初始化DATA3为空 + mDiffDataValues = new ContentValues(); // 创建差异值容器 } + /** + * 构造函数:从数据库游标创建SqlData对象(用于加载已有数据) + * @param context Android上下文 + * @param c 数据库查询结果的Cursor + */ public SqlData(Context context, Cursor c) { mContentResolver = context.getContentResolver(); - mIsCreate = false; - loadFromCursor(c); - mDiffDataValues = new ContentValues(); + mIsCreate = false; // 标记为已有数据 + loadFromCursor(c); // 从游标加载数据 + mDiffDataValues = new ContentValues(); // 创建差异值容器 } + /** + * 从数据库游标加载数据到内存字段 + * @param c 数据库查询结果的Cursor + */ private void loadFromCursor(Cursor c) { mDataId = c.getLong(DATA_ID_COLUMN); mDataMimeType = c.getString(DATA_MIME_TYPE_COLUMN); @@ -97,13 +107,20 @@ public class SqlData { mDataContentData3 = c.getString(DATA_CONTENT_DATA_3_COLUMN); } + /** + * 从JSON对象设置数据内容,并记录变更的字段 + * @param js 包含数据的JSONObject + * @throws JSONException JSON解析异常 + */ public void setContent(JSONObject js) throws JSONException { + // 处理数据ID long dataId = js.has(DataColumns.ID) ? js.getLong(DataColumns.ID) : INVALID_ID; if (mIsCreate || mDataId != dataId) { mDiffDataValues.put(DataColumns.ID, dataId); } mDataId = dataId; + // 处理MIME类型 String dataMimeType = js.has(DataColumns.MIME_TYPE) ? js.getString(DataColumns.MIME_TYPE) : DataConstants.NOTE; if (mIsCreate || !mDataMimeType.equals(dataMimeType)) { @@ -111,18 +128,21 @@ public class SqlData { } mDataMimeType = dataMimeType; + // 处理内容 String dataContent = js.has(DataColumns.CONTENT) ? js.getString(DataColumns.CONTENT) : ""; if (mIsCreate || !mDataContent.equals(dataContent)) { mDiffDataValues.put(DataColumns.CONTENT, dataContent); } mDataContent = dataContent; + // 处理DATA1字段 long dataContentData1 = js.has(DataColumns.DATA1) ? js.getLong(DataColumns.DATA1) : 0; if (mIsCreate || mDataContentData1 != dataContentData1) { mDiffDataValues.put(DataColumns.DATA1, dataContentData1); } mDataContentData1 = dataContentData1; + // 处理DATA3字段 String dataContentData3 = js.has(DataColumns.DATA3) ? js.getString(DataColumns.DATA3) : ""; if (mIsCreate || !mDataContentData3.equals(dataContentData3)) { mDiffDataValues.put(DataColumns.DATA3, dataContentData3); @@ -130,11 +150,17 @@ public class SqlData { mDataContentData3 = dataContentData3; } + /** + * 获取当前数据的JSON表示 + * @return 包含数据的JSONObject,如果是新数据则返回null + * @throws JSONException JSON创建异常 + */ public JSONObject getContent() throws JSONException { if (mIsCreate) { Log.e(TAG, "it seems that we haven't created this in database yet"); return null; } + // 创建JSON对象并添加所有字段 JSONObject js = new JSONObject(); js.put(DataColumns.ID, mDataId); js.put(DataColumns.MIME_TYPE, mDataMimeType); @@ -144,30 +170,41 @@ public class SqlData { return js; } + /** + * 提交数据到数据库 + * @param noteId 关联的便签ID + * @param validateVersion 是否验证版本号 + * @param version 版本号(仅在validateVersion为true时使用) + * @throws ActionFailureException 数据提交失败异常 + */ public void commit(long noteId, boolean validateVersion, long version) { - if (mIsCreate) { + // 创建新数据记录 if (mDataId == INVALID_ID && mDiffDataValues.containsKey(DataColumns.ID)) { mDiffDataValues.remove(DataColumns.ID); } - mDiffDataValues.put(DataColumns.NOTE_ID, noteId); + mDiffDataValues.put(DataColumns.NOTE_ID, noteId); // 设置关联的便签ID Uri uri = mContentResolver.insert(Notes.CONTENT_DATA_URI, mDiffDataValues); try { + // 从返回的URI中提取新创建的数据ID mDataId = Long.valueOf(uri.getPathSegments().get(1)); } catch (NumberFormatException e) { Log.e(TAG, "Get note id error :" + e.toString()); throw new ActionFailureException("create note failed"); } } else { + // 更新已有数据记录 if (mDiffDataValues.size() > 0) { int result = 0; if (!validateVersion) { + // 不验证版本号,直接更新 result = mContentResolver.update(ContentUris.withAppendedId( Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null); } else { + // 验证版本号,确保数据未被其他操作修改 result = mContentResolver.update(ContentUris.withAppendedId( - Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, + Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, " ? in (SELECT " + NoteColumns.ID + " FROM " + TABLE.NOTE + " WHERE " + NoteColumns.VERSION + "=?)", new String[] { String.valueOf(noteId), String.valueOf(version) @@ -179,11 +216,16 @@ public class SqlData { } } + // 重置状态 mDiffDataValues.clear(); mIsCreate = false; } + /** + * 获取数据ID + * @return 数据ID + */ public long getId() { return mDataId; } -} +} \ No newline at end of file diff --git a/src/net/micode/notes/gtask/data/SqlNote.java b/src/net/micode/notes/gtask/data/SqlNote.java index 79a4095..137f89c 100644 --- a/src/net/micode/notes/gtask/data/SqlNote.java +++ b/src/net/micode/notes/gtask/data/SqlNote.java @@ -37,12 +37,16 @@ import org.json.JSONObject; import java.util.ArrayList; - +/** + * 数据库笔记类(用于与Google Task同步) + * 负责在SQLite数据库和JSON格式之间转换笔记数据 + */ public class SqlNote { - private static final String TAG = SqlNote.class.getSimpleName(); + private static final String TAG = SqlNote.class.getSimpleName(); // 日志标签 - private static final int INVALID_ID = -99999; + private static final int INVALID_ID = -99999; // 无效ID常量 + // 数据库查询的投影字段(需要查询的列) public static final String[] PROJECTION_NOTE = new String[] { NoteColumns.ID, NoteColumns.ALERTED_DATE, NoteColumns.BG_COLOR_ID, NoteColumns.CREATED_DATE, NoteColumns.HAS_ATTACHMENT, NoteColumns.MODIFIED_DATE, @@ -52,454 +56,517 @@ public class SqlNote { NoteColumns.VERSION }; - public static final int ID_COLUMN = 0; - - public static final int ALERTED_DATE_COLUMN = 1; - - public static final int BG_COLOR_ID_COLUMN = 2; - - public static final int CREATED_DATE_COLUMN = 3; - - public static final int HAS_ATTACHMENT_COLUMN = 4; - - public static final int MODIFIED_DATE_COLUMN = 5; - - public static final int NOTES_COUNT_COLUMN = 6; - - public static final int PARENT_ID_COLUMN = 7; - - public static final int SNIPPET_COLUMN = 8; - - public static final int TYPE_COLUMN = 9; - - public static final int WIDGET_ID_COLUMN = 10; - - public static final int WIDGET_TYPE_COLUMN = 11; - - public static final int SYNC_ID_COLUMN = 12; - - public static final int LOCAL_MODIFIED_COLUMN = 13; - - public static final int ORIGIN_PARENT_ID_COLUMN = 14; - - public static final int GTASK_ID_COLUMN = 15; - - public static final int VERSION_COLUMN = 16; - - private Context mContext; - - private ContentResolver mContentResolver; - - private boolean mIsCreate; - - private long mId; - - private long mAlertDate; - - private int mBgColorId; - - private long mCreatedDate; - - private int mHasAttachment; - - private long mModifiedDate; - - private long mParentId; - - private String mSnippet; - - private int mType; - - private int mWidgetId; - - private int mWidgetType; - - private long mOriginParent; - - private long mVersion; - - private ContentValues mDiffNoteValues; - - private ArrayList mDataList; - + // 投影字段对应的索引号 + public static final int ID_COLUMN = 0; // ID列索引 + public static final int ALERTED_DATE_COLUMN = 1; // 提醒日期列索引 + public static final int BG_COLOR_ID_COLUMN = 2; // 背景颜色ID列索引 + public static final int CREATED_DATE_COLUMN = 3; // 创建日期列索引 + public static final int HAS_ATTACHMENT_COLUMN = 4; // 是否有附件列索引 + public static final int MODIFIED_DATE_COLUMN = 5; // 修改日期列索引 + public static final int NOTES_COUNT_COLUMN = 6; // 笔记数量列索引 + public static final int PARENT_ID_COLUMN = 7; // 父ID列索引 + public static final int SNIPPET_COLUMN = 8; // 摘要内容列索引 + public static final int TYPE_COLUMN = 9; // 类型列索引 + public static final int WIDGET_ID_COLUMN = 10; // 小部件ID列索引 + public static final int WIDGET_TYPE_COLUMN = 11; // 小部件类型列索引 + public static final int SYNC_ID_COLUMN = 12; // 同步ID列索引 + public static final int LOCAL_MODIFIED_COLUMN = 13; // 本地修改标记列索引 + public static final int ORIGIN_PARENT_ID_COLUMN = 14; // 原始父ID列索引 + public static final int GTASK_ID_COLUMN = 15; // Google Task ID列索引 + public static final int VERSION_COLUMN = 16; // 版本号列索引 + + private Context mContext; // 上下文对象 + private ContentResolver mContentResolver; // 内容解析器,用于数据库操作 + private boolean mIsCreate; // 标记是否为新建笔记(true表示新建,false表示从数据库加载) + private long mId; // 笔记ID + private long mAlertDate; // 提醒日期 + private int mBgColorId; // 背景颜色ID + private long mCreatedDate; // 创建日期 + private int mHasAttachment; // 是否有附件(0表示无,1表示有) + private long mModifiedDate; // 修改日期 + private long mParentId; // 父文件夹ID + private String mSnippet; // 笔记内容摘要 + private int mType; // 笔记类型(笔记、文件夹、系统文件夹等) + private int mWidgetId; // 关联的小部件ID + private int mWidgetType; // 小部件类型 + private long mOriginParent; // 原始父文件夹ID(用于恢复操作) + private long mVersion; // 版本号(用于乐观锁控制) + private ContentValues mDiffNoteValues; // 存储需要更新的字段值(用于数据库更新) + private ArrayList mDataList; // 笔记内容数据列表(用于普通笔记类型) + + /** + * 构造函数 - 创建新笔记对象 + * 初始化所有字段为默认值,标记为创建状态 + * @param context 上下文 + */ public SqlNote(Context context) { mContext = context; mContentResolver = context.getContentResolver(); - mIsCreate = true; - mId = INVALID_ID; - mAlertDate = 0; - mBgColorId = ResourceParser.getDefaultBgId(context); - mCreatedDate = System.currentTimeMillis(); - mHasAttachment = 0; - mModifiedDate = System.currentTimeMillis(); - mParentId = 0; - mSnippet = ""; - mType = Notes.TYPE_NOTE; - mWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; - mWidgetType = Notes.TYPE_WIDGET_INVALIDE; - mOriginParent = 0; - mVersion = 0; - mDiffNoteValues = new ContentValues(); - mDataList = new ArrayList(); + mIsCreate = true; // 标记为新建笔记 + mId = INVALID_ID; // 使用无效ID + mAlertDate = 0; // 默认无提醒 + mBgColorId = ResourceParser.getDefaultBgId(context); // 获取默认背景颜色ID + mCreatedDate = System.currentTimeMillis(); // 使用当前时间作为创建时间 + mHasAttachment = 0; // 默认无附件 + mModifiedDate = System.currentTimeMillis(); // 使用当前时间作为修改时间 + mParentId = 0; // 默认父ID为0 + mSnippet = ""; // 空摘要 + mType = Notes.TYPE_NOTE; // 默认为普通笔记类型 + mWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; // 无效的小部件ID + mWidgetType = Notes.TYPE_WIDGET_INVALIDE; // 无效的小部件类型 + mOriginParent = 0; // 默认原始父ID为0 + mVersion = 0; // 初始版本为0 + mDiffNoteValues = new ContentValues(); // 初始化更新字段容器 + mDataList = new ArrayList(); // 初始化数据列表 } + /** + * 构造函数 - 从数据库游标加载笔记对象 + * 从数据库查询结果中加载笔记数据,并加载关联的笔记内容 + * @param context 上下文 + * @param c 数据库游标,包含笔记数据 + */ public SqlNote(Context context, Cursor c) { mContext = context; mContentResolver = context.getContentResolver(); - mIsCreate = false; - loadFromCursor(c); - mDataList = new ArrayList(); + mIsCreate = false; // 标记为从数据库加载 + loadFromCursor(c); // 从游标加载数据 + mDataList = new ArrayList(); // 初始化数据列表 if (mType == Notes.TYPE_NOTE) - loadDataContent(); - mDiffNoteValues = new ContentValues(); + loadDataContent(); // 如果是普通笔记类型,加载笔记内容数据 + mDiffNoteValues = new ContentValues(); // 初始化更新字段容器 } + /** + * 构造函数 - 通过笔记ID加载笔记对象 + * 根据笔记ID查询数据库并加载笔记数据 + * @param context 上下文 + * @param id 笔记ID + */ public SqlNote(Context context, long id) { mContext = context; mContentResolver = context.getContentResolver(); - mIsCreate = false; - loadFromCursor(id); - mDataList = new ArrayList(); + mIsCreate = false; // 标记为从数据库加载 + loadFromCursor(id); // 通过ID从数据库加载数据 + mDataList = new ArrayList(); // 初始化数据列表 if (mType == Notes.TYPE_NOTE) - loadDataContent(); - mDiffNoteValues = new ContentValues(); - + loadDataContent(); // 如果是普通笔记类型,加载笔记内容数据 + mDiffNoteValues = new ContentValues(); // 初始化更新字段容器 } + /** + * 通过笔记ID从数据库加载笔记数据 + * 根据ID查询数据库并将结果加载到对象字段中 + * @param id 笔记ID + */ private void loadFromCursor(long id) { Cursor c = null; try { + // 查询指定ID的笔记 c = mContentResolver.query(Notes.CONTENT_NOTE_URI, PROJECTION_NOTE, "(_id=?)", new String[] { - String.valueOf(id) + String.valueOf(id) }, null); if (c != null) { - c.moveToNext(); - loadFromCursor(c); + c.moveToNext(); // 移动到查询结果的第一行 + loadFromCursor(c); // 从游标加载数据 } else { - Log.w(TAG, "loadFromCursor: cursor = null"); + Log.w(TAG, "loadFromCursor: cursor = null"); // 日志记录游标为空 } } finally { if (c != null) - c.close(); + c.close(); // 关闭游标 } } + /** + * 从游标加载数据到对象字段 + * 将数据库游标中的数据赋值给对象的各个字段 + * @param c 数据库游标 + */ private void loadFromCursor(Cursor c) { - mId = c.getLong(ID_COLUMN); - mAlertDate = c.getLong(ALERTED_DATE_COLUMN); - mBgColorId = c.getInt(BG_COLOR_ID_COLUMN); - mCreatedDate = c.getLong(CREATED_DATE_COLUMN); - mHasAttachment = c.getInt(HAS_ATTACHMENT_COLUMN); - mModifiedDate = c.getLong(MODIFIED_DATE_COLUMN); - mParentId = c.getLong(PARENT_ID_COLUMN); - mSnippet = c.getString(SNIPPET_COLUMN); - mType = c.getInt(TYPE_COLUMN); - mWidgetId = c.getInt(WIDGET_ID_COLUMN); - mWidgetType = c.getInt(WIDGET_TYPE_COLUMN); - mVersion = c.getLong(VERSION_COLUMN); + mId = c.getLong(ID_COLUMN); // 获取笔记ID + mAlertDate = c.getLong(ALERTED_DATE_COLUMN); // 获取提醒日期 + mBgColorId = c.getInt(BG_COLOR_ID_COLUMN); // 获取背景颜色ID + mCreatedDate = c.getLong(CREATED_DATE_COLUMN); // 获取创建日期 + mHasAttachment = c.getInt(HAS_ATTACHMENT_COLUMN); // 获取是否有附件 + mModifiedDate = c.getLong(MODIFIED_DATE_COLUMN); // 获取修改日期 + mParentId = c.getLong(PARENT_ID_COLUMN); // 获取父文件夹ID + mSnippet = c.getString(SNIPPET_COLUMN); // 获取笔记摘要 + mType = c.getInt(TYPE_COLUMN); // 获取笔记类型 + mWidgetId = c.getInt(WIDGET_ID_COLUMN); // 获取小部件ID + mWidgetType = c.getInt(WIDGET_TYPE_COLUMN); // 获取小部件类型 + mVersion = c.getLong(VERSION_COLUMN); // 获取版本号 } + /** + * 加载笔记的内容数据 + * 查询笔记关联的内容数据(如文本内容)并加载到数据列表 + */ private void loadDataContent() { Cursor c = null; - mDataList.clear(); + mDataList.clear(); // 清空数据列表 try { + // 查询笔记的内容数据 c = mContentResolver.query(Notes.CONTENT_DATA_URI, SqlData.PROJECTION_DATA, "(note_id=?)", new String[] { - String.valueOf(mId) + String.valueOf(mId) }, null); if (c != null) { if (c.getCount() == 0) { - Log.w(TAG, "it seems that the note has not data"); + Log.w(TAG, "it seems that the note has not data"); // 日志记录笔记无内容数据 return; } while (c.moveToNext()) { - SqlData data = new SqlData(mContext, c); - mDataList.add(data); + SqlData data = new SqlData(mContext, c); // 创建SqlData对象 + mDataList.add(data); // 添加到数据列表 } } else { - Log.w(TAG, "loadDataContent: cursor = null"); + Log.w(TAG, "loadDataContent: cursor = null"); // 日志记录游标为空 } } finally { if (c != null) - c.close(); + c.close(); // 关闭游标 } } + /** + * 从JSON对象设置笔记内容 + * 解析JSON数据并更新笔记对象的各个字段 + * @param js 包含笔记数据的JSON对象 + * @return 设置成功返回true,失败返回false + */ public boolean setContent(JSONObject js) { try { - JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); // 获取笔记JSON对象 if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { - Log.w(TAG, "cannot set system folder"); + Log.w(TAG, "cannot set system folder"); // 系统文件夹不能设置 } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { - // for folder we can only update the snnipet and type + // 对于文件夹类型,只能更新摘要和类型 String snippet = note.has(NoteColumns.SNIPPET) ? note - .getString(NoteColumns.SNIPPET) : ""; + .getString(NoteColumns.SNIPPET) : ""; // 获取摘要,如果不存在则为空字符串 if (mIsCreate || !mSnippet.equals(snippet)) { - mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); + mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); // 如果摘要发生变化,记录更新 } - mSnippet = snippet; + mSnippet = snippet; // 更新摘要字段 int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) - : Notes.TYPE_NOTE; + : Notes.TYPE_NOTE; // 获取类型,如果不存在则默认为笔记类型 if (mIsCreate || mType != type) { - mDiffNoteValues.put(NoteColumns.TYPE, type); + mDiffNoteValues.put(NoteColumns.TYPE, type); // 如果类型发生变化,记录更新 } - mType = type; + mType = type; // 更新类型字段 } else if (note.getInt(NoteColumns.TYPE) == Notes.TYPE_NOTE) { - JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); - long id = note.has(NoteColumns.ID) ? note.getLong(NoteColumns.ID) : INVALID_ID; + // 对于普通笔记类型,需要设置所有字段 + JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); // 获取笔记内容数据数组 + long id = note.has(NoteColumns.ID) ? note.getLong(NoteColumns.ID) : INVALID_ID; // 获取笔记ID if (mIsCreate || mId != id) { - mDiffNoteValues.put(NoteColumns.ID, id); + mDiffNoteValues.put(NoteColumns.ID, id); // 如果ID发生变化,记录更新 } - mId = id; + mId = id; // 更新ID字段 long alertDate = note.has(NoteColumns.ALERTED_DATE) ? note - .getLong(NoteColumns.ALERTED_DATE) : 0; + .getLong(NoteColumns.ALERTED_DATE) : 0; // 获取提醒日期 if (mIsCreate || mAlertDate != alertDate) { - mDiffNoteValues.put(NoteColumns.ALERTED_DATE, alertDate); + mDiffNoteValues.put(NoteColumns.ALERTED_DATE, alertDate); // 如果提醒日期变化,记录更新 } - mAlertDate = alertDate; + mAlertDate = alertDate; // 更新提醒日期字段 int bgColorId = note.has(NoteColumns.BG_COLOR_ID) ? note - .getInt(NoteColumns.BG_COLOR_ID) : ResourceParser.getDefaultBgId(mContext); + .getInt(NoteColumns.BG_COLOR_ID) : ResourceParser.getDefaultBgId(mContext); // 获取背景颜色ID if (mIsCreate || mBgColorId != bgColorId) { - mDiffNoteValues.put(NoteColumns.BG_COLOR_ID, bgColorId); + mDiffNoteValues.put(NoteColumns.BG_COLOR_ID, bgColorId); // 如果背景颜色变化,记录更新 } - mBgColorId = bgColorId; + mBgColorId = bgColorId; // 更新背景颜色ID字段 long createDate = note.has(NoteColumns.CREATED_DATE) ? note - .getLong(NoteColumns.CREATED_DATE) : System.currentTimeMillis(); + .getLong(NoteColumns.CREATED_DATE) : System.currentTimeMillis(); // 获取创建日期 if (mIsCreate || mCreatedDate != createDate) { - mDiffNoteValues.put(NoteColumns.CREATED_DATE, createDate); + mDiffNoteValues.put(NoteColumns.CREATED_DATE, createDate); // 如果创建日期变化,记录更新 } - mCreatedDate = createDate; + mCreatedDate = createDate; // 更新创建日期字段 int hasAttachment = note.has(NoteColumns.HAS_ATTACHMENT) ? note - .getInt(NoteColumns.HAS_ATTACHMENT) : 0; + .getInt(NoteColumns.HAS_ATTACHMENT) : 0; // 获取是否有附件 if (mIsCreate || mHasAttachment != hasAttachment) { - mDiffNoteValues.put(NoteColumns.HAS_ATTACHMENT, hasAttachment); + mDiffNoteValues.put(NoteColumns.HAS_ATTACHMENT, hasAttachment); // 如果附件状态变化,记录更新 } - mHasAttachment = hasAttachment; + mHasAttachment = hasAttachment; // 更新附件字段 long modifiedDate = note.has(NoteColumns.MODIFIED_DATE) ? note - .getLong(NoteColumns.MODIFIED_DATE) : System.currentTimeMillis(); + .getLong(NoteColumns.MODIFIED_DATE) : System.currentTimeMillis(); // 获取修改日期 if (mIsCreate || mModifiedDate != modifiedDate) { - mDiffNoteValues.put(NoteColumns.MODIFIED_DATE, modifiedDate); + mDiffNoteValues.put(NoteColumns.MODIFIED_DATE, modifiedDate); // 如果修改日期变化,记录更新 } - mModifiedDate = modifiedDate; + mModifiedDate = modifiedDate; // 更新修改日期字段 long parentId = note.has(NoteColumns.PARENT_ID) ? note - .getLong(NoteColumns.PARENT_ID) : 0; + .getLong(NoteColumns.PARENT_ID) : 0; // 获取父文件夹ID if (mIsCreate || mParentId != parentId) { - mDiffNoteValues.put(NoteColumns.PARENT_ID, parentId); + mDiffNoteValues.put(NoteColumns.PARENT_ID, parentId); // 如果父ID变化,记录更新 } - mParentId = parentId; + mParentId = parentId; // 更新父ID字段 String snippet = note.has(NoteColumns.SNIPPET) ? note - .getString(NoteColumns.SNIPPET) : ""; + .getString(NoteColumns.SNIPPET) : ""; // 获取摘要 if (mIsCreate || !mSnippet.equals(snippet)) { - mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); + mDiffNoteValues.put(NoteColumns.SNIPPET, snippet); // 如果摘要变化,记录更新 } - mSnippet = snippet; + mSnippet = snippet; // 更新摘要字段 int type = note.has(NoteColumns.TYPE) ? note.getInt(NoteColumns.TYPE) - : Notes.TYPE_NOTE; + : Notes.TYPE_NOTE; // 获取笔记类型 if (mIsCreate || mType != type) { - mDiffNoteValues.put(NoteColumns.TYPE, type); + mDiffNoteValues.put(NoteColumns.TYPE, type); // 如果类型变化,记录更新 } - mType = type; + mType = type; // 更新类型字段 int widgetId = note.has(NoteColumns.WIDGET_ID) ? note.getInt(NoteColumns.WIDGET_ID) - : AppWidgetManager.INVALID_APPWIDGET_ID; + : AppWidgetManager.INVALID_APPWIDGET_ID; // 获取小部件ID if (mIsCreate || mWidgetId != widgetId) { - mDiffNoteValues.put(NoteColumns.WIDGET_ID, widgetId); + mDiffNoteValues.put(NoteColumns.WIDGET_ID, widgetId); // 如果小部件ID变化,记录更新 } - mWidgetId = widgetId; + mWidgetId = widgetId; // 更新小部件ID字段 int widgetType = note.has(NoteColumns.WIDGET_TYPE) ? note - .getInt(NoteColumns.WIDGET_TYPE) : Notes.TYPE_WIDGET_INVALIDE; + .getInt(NoteColumns.WIDGET_TYPE) : Notes.TYPE_WIDGET_INVALIDE; // 获取小部件类型 if (mIsCreate || mWidgetType != widgetType) { - mDiffNoteValues.put(NoteColumns.WIDGET_TYPE, widgetType); + mDiffNoteValues.put(NoteColumns.WIDGET_TYPE, widgetType); // 如果小部件类型变化,记录更新 } - mWidgetType = widgetType; + mWidgetType = widgetType; // 更新小部件类型字段 long originParent = note.has(NoteColumns.ORIGIN_PARENT_ID) ? note - .getLong(NoteColumns.ORIGIN_PARENT_ID) : 0; + .getLong(NoteColumns.ORIGIN_PARENT_ID) : 0; // 获取原始父文件夹ID if (mIsCreate || mOriginParent != originParent) { - mDiffNoteValues.put(NoteColumns.ORIGIN_PARENT_ID, originParent); + mDiffNoteValues.put(NoteColumns.ORIGIN_PARENT_ID, originParent); // 如果原始父ID变化,记录更新 } - mOriginParent = originParent; + mOriginParent = originParent; // 更新原始父ID字段 + // 处理笔记内容数据 for (int i = 0; i < dataArray.length(); i++) { - JSONObject data = dataArray.getJSONObject(i); + JSONObject data = dataArray.getJSONObject(i); // 获取每条内容数据 SqlData sqlData = null; if (data.has(DataColumns.ID)) { - long dataId = data.getLong(DataColumns.ID); + long dataId = data.getLong(DataColumns.ID); // 获取内容数据ID + // 在现有数据列表中查找匹配的内容数据 for (SqlData temp : mDataList) { if (dataId == temp.getId()) { - sqlData = temp; + sqlData = temp; // 找到已存在的数据 } } } if (sqlData == null) { - sqlData = new SqlData(mContext); - mDataList.add(sqlData); + sqlData = new SqlData(mContext); // 创建新的内容数据对象 + mDataList.add(sqlData); // 添加到数据列表 } - sqlData.setContent(data); + sqlData.setContent(data); // 设置内容数据 } } } catch (JSONException e) { - Log.e(TAG, e.toString()); + Log.e(TAG, e.toString()); // 记录JSON解析异常 e.printStackTrace(); - return false; + return false; // 返回失败 } - return true; + return true; // 返回成功 } + /** + * 获取笔记的JSON表示 + * 将笔记对象转换为JSON格式,用于同步或传输 + * @return 包含笔记数据的JSON对象,失败返回null + */ public JSONObject getContent() { try { - JSONObject js = new JSONObject(); + JSONObject js = new JSONObject(); // 创建JSON对象 if (mIsCreate) { - Log.e(TAG, "it seems that we haven't created this in database yet"); - return null; + Log.e(TAG, "it seems that we haven't created this in database yet"); // 日志记录笔记尚未创建 + return null; // 返回null } - JSONObject note = new JSONObject(); + JSONObject note = new JSONObject(); // 创建笔记JSON对象 if (mType == Notes.TYPE_NOTE) { - note.put(NoteColumns.ID, mId); - note.put(NoteColumns.ALERTED_DATE, mAlertDate); - note.put(NoteColumns.BG_COLOR_ID, mBgColorId); - note.put(NoteColumns.CREATED_DATE, mCreatedDate); - note.put(NoteColumns.HAS_ATTACHMENT, mHasAttachment); - note.put(NoteColumns.MODIFIED_DATE, mModifiedDate); - note.put(NoteColumns.PARENT_ID, mParentId); - note.put(NoteColumns.SNIPPET, mSnippet); - note.put(NoteColumns.TYPE, mType); - note.put(NoteColumns.WIDGET_ID, mWidgetId); - note.put(NoteColumns.WIDGET_TYPE, mWidgetType); - note.put(NoteColumns.ORIGIN_PARENT_ID, mOriginParent); - js.put(GTaskStringUtils.META_HEAD_NOTE, note); - - JSONArray dataArray = new JSONArray(); + // 普通笔记类型,包含所有字段 + note.put(NoteColumns.ID, mId); // 添加ID + note.put(NoteColumns.ALERTED_DATE, mAlertDate); // 添加提醒日期 + note.put(NoteColumns.BG_COLOR_ID, mBgColorId); // 添加背景颜色ID + note.put(NoteColumns.CREATED_DATE, mCreatedDate); // 添加创建日期 + note.put(NoteColumns.HAS_ATTACHMENT, mHasAttachment); // 添加附件状态 + note.put(NoteColumns.MODIFIED_DATE, mModifiedDate); // 添加修改日期 + note.put(NoteColumns.PARENT_ID, mParentId); // 添加父文件夹ID + note.put(NoteColumns.SNIPPET, mSnippet); // 添加摘要 + note.put(NoteColumns.TYPE, mType); // 添加类型 + note.put(NoteColumns.WIDGET_ID, mWidgetId); // 添加小部件ID + note.put(NoteColumns.WIDGET_TYPE, mWidgetType); // 添加小部件类型 + note.put(NoteColumns.ORIGIN_PARENT_ID, mOriginParent); // 添加原始父文件夹ID + js.put(GTaskStringUtils.META_HEAD_NOTE, note); // 将笔记对象添加到JSON + + // 添加笔记内容数据 + JSONArray dataArray = new JSONArray(); // 创建内容数据数组 for (SqlData sqlData : mDataList) { - JSONObject data = sqlData.getContent(); + JSONObject data = sqlData.getContent(); // 获取内容数据的JSON if (data != null) { - dataArray.put(data); + dataArray.put(data); // 添加到数组 } } - js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); + js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); // 将内容数据数组添加到JSON } else if (mType == Notes.TYPE_FOLDER || mType == Notes.TYPE_SYSTEM) { - note.put(NoteColumns.ID, mId); - note.put(NoteColumns.TYPE, mType); - note.put(NoteColumns.SNIPPET, mSnippet); - js.put(GTaskStringUtils.META_HEAD_NOTE, note); + // 文件夹或系统文件夹类型,只包含必要字段 + note.put(NoteColumns.ID, mId); // 添加ID + note.put(NoteColumns.TYPE, mType); // 添加类型 + note.put(NoteColumns.SNIPPET, mSnippet); // 添加摘要 + js.put(GTaskStringUtils.META_HEAD_NOTE, note); // 将笔记对象添加到JSON } - return js; + return js; // 返回JSON对象 } catch (JSONException e) { - Log.e(TAG, e.toString()); + Log.e(TAG, e.toString()); // 记录JSON异常 e.printStackTrace(); } - return null; + return null; // 返回null } + /** + * 设置父文件夹ID + * 更新笔记的父文件夹ID,并记录需要更新的字段 + * @param id 父文件夹ID + */ public void setParentId(long id) { - mParentId = id; - mDiffNoteValues.put(NoteColumns.PARENT_ID, id); + mParentId = id; // 更新父文件夹ID字段 + mDiffNoteValues.put(NoteColumns.PARENT_ID, id); // 记录需要更新的字段 } + /** + * 设置Google Task ID + * 更新笔记的Google Task ID,用于同步 + * @param gid Google Task ID + */ public void setGtaskId(String gid) { - mDiffNoteValues.put(NoteColumns.GTASK_ID, gid); + mDiffNoteValues.put(NoteColumns.GTASK_ID, gid); // 记录需要更新的字段 } + /** + * 设置同步ID + * 更新笔记的同步ID,用于同步控制 + * @param syncId 同步ID + */ public void setSyncId(long syncId) { - mDiffNoteValues.put(NoteColumns.SYNC_ID, syncId); + mDiffNoteValues.put(NoteColumns.SYNC_ID, syncId); // 记录需要更新的字段 } + /** + * 重置本地修改标记 + * 将本地修改标记设为0,表示笔记已同步 + */ public void resetLocalModified() { - mDiffNoteValues.put(NoteColumns.LOCAL_MODIFIED, 0); + mDiffNoteValues.put(NoteColumns.LOCAL_MODIFIED, 0); // 记录需要更新的字段 } + /** + * 获取笔记ID + * @return 笔记ID + */ public long getId() { return mId; } + /** + * 获取父文件夹ID + * @return 父文件夹ID + */ public long getParentId() { return mParentId; } + /** + * 获取笔记摘要 + * @return 笔记摘要 + */ public String getSnippet() { return mSnippet; } + /** + * 检查笔记是否为普通笔记类型 + * @return 如果是普通笔记类型返回true,否则返回false + */ public boolean isNoteType() { return mType == Notes.TYPE_NOTE; } + /** + * 提交笔记更改到数据库 + * 将笔记对象的更改保存到数据库,包括新建或更新操作 + * @param validateVersion 是否验证版本号(用于乐观锁控制) + */ public void commit(boolean validateVersion) { if (mIsCreate) { + // 新建笔记操作 if (mId == INVALID_ID && mDiffNoteValues.containsKey(NoteColumns.ID)) { - mDiffNoteValues.remove(NoteColumns.ID); + mDiffNoteValues.remove(NoteColumns.ID); // 如果ID为无效值且存在于更新字段中,移除它 } - Uri uri = mContentResolver.insert(Notes.CONTENT_NOTE_URI, mDiffNoteValues); + Uri uri = mContentResolver.insert(Notes.CONTENT_NOTE_URI, mDiffNoteValues); // 插入新笔记到数据库 try { - mId = Long.valueOf(uri.getPathSegments().get(1)); + mId = Long.valueOf(uri.getPathSegments().get(1)); // 从返回的URI中获取新笔记的ID } catch (NumberFormatException e) { - Log.e(TAG, "Get note id error :" + e.toString()); - throw new ActionFailureException("create note failed"); + Log.e(TAG, "Get note id error :" + e.toString()); // 记录获取ID异常 + throw new ActionFailureException("create note failed"); // 抛出创建失败异常 } if (mId == 0) { - throw new IllegalStateException("Create thread id failed"); + throw new IllegalStateException("Create thread id failed"); // 如果ID为0,抛出异常 } + // 如果是普通笔记类型,提交笔记内容数据 if (mType == Notes.TYPE_NOTE) { for (SqlData sqlData : mDataList) { - sqlData.commit(mId, false, -1); + sqlData.commit(mId, false, -1); // 提交内容数据,不验证版本 } } } else { + // 更新笔记操作 if (mId <= 0 && mId != Notes.ID_ROOT_FOLDER && mId != Notes.ID_CALL_RECORD_FOLDER) { - Log.e(TAG, "No such note"); - throw new IllegalStateException("Try to update note with invalid id"); + Log.e(TAG, "No such note"); // 日志记录无效ID + throw new IllegalStateException("Try to update note with invalid id"); // 抛出无效ID异常 } if (mDiffNoteValues.size() > 0) { - mVersion ++; + mVersion ++; // 版本号递增 int result = 0; if (!validateVersion) { + // 不验证版本号,直接更新 result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" + NoteColumns.ID + "=?)", new String[] { - String.valueOf(mId) + String.valueOf(mId) }); } else { + // 验证版本号,使用乐观锁控制 result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" - + NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)", + + NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)", new String[] { String.valueOf(mId), String.valueOf(mVersion) }); } if (result == 0) { - Log.w(TAG, "there is no update. maybe user updates note when syncing"); + Log.w(TAG, "there is no update. maybe user updates note when syncing"); // 日志记录无更新 } } + // 如果是普通笔记类型,提交笔记内容数据的更改 if (mType == Notes.TYPE_NOTE) { for (SqlData sqlData : mDataList) { - sqlData.commit(mId, validateVersion, mVersion); + sqlData.commit(mId, validateVersion, mVersion); // 提交内容数据,可能验证版本 } } } - // refresh local info + // 重新从数据库加载笔记数据,确保对象状态与数据库一致 loadFromCursor(mId); if (mType == Notes.TYPE_NOTE) - loadDataContent(); + loadDataContent(); // 重新加载笔记内容数据 - mDiffNoteValues.clear(); - mIsCreate = false; + mDiffNoteValues.clear(); // 清空更新字段容器 + mIsCreate = false; // 标记为非新建状态 } -} +} \ No newline at end of file diff --git a/src/net/micode/notes/gtask/data/Task.java b/src/net/micode/notes/gtask/data/Task.java index 6a19454..3589281 100644 --- a/src/net/micode/notes/gtask/data/Task.java +++ b/src/net/micode/notes/gtask/data/Task.java @@ -31,65 +31,77 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; - +/** + * Task 类 - 具体任务实体类 + * + * 功能:代表一个具体的便签任务,继承自Node抽象类 + * 实现便签与Google Tasks同步的具体逻辑,包括创建、更新、同步操作 + * 处理本地数据库与远程Google Tasks服务器之间的数据映射和转换 + */ public class Task extends Node { - private static final String TAG = Task.class.getSimpleName(); - - private boolean mCompleted; - - private String mNotes; - - private JSONObject mMetaInfo; - - private Task mPriorSibling; - - private TaskList mParent; - + private static final String TAG = Task.class.getSimpleName(); // 日志标签 + + // 任务特有属性 + private boolean mCompleted; // 完成状态标记 + private String mNotes; // 任务备注/描述 + private JSONObject mMetaInfo; // 元信息(存储本地便签的详细信息) + private Task mPriorSibling; // 前一个兄弟任务(用于排序) + private TaskList mParent; // 父任务列表(TaskList) + + /** + * 默认构造函数,初始化任务属性 + */ public Task() { super(); - mCompleted = false; - mNotes = null; - mPriorSibling = null; - mParent = null; - mMetaInfo = null; + mCompleted = false; // 默认未完成 + mNotes = null; // 默认无备注 + mPriorSibling = null; // 默认无前兄弟任务 + mParent = null; // 默认无父列表 + mMetaInfo = null; // 默认无元信息 } + /** + * 获取创建任务的JSON操作数据(用于发送到Google Tasks服务器) + * @param actionId 操作ID + * @return 包含创建操作数据的JSONObject + * @throws ActionFailureException 生成JSON失败时抛出 + */ public JSONObject getCreateAction(int actionId) { JSONObject js = new JSONObject(); try { - // action_type + // 操作类型:创建 js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); - // action_id + // 操作ID js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - // index + // 索引位置(在父列表中的位置) js.put(GTaskStringUtils.GTASK_JSON_INDEX, mParent.getChildTaskIndex(this)); - // entity_delta + // 实体数据变化 JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); - entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); // 任务名称 + entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); // 创建者ID entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, - GTaskStringUtils.GTASK_JSON_TYPE_TASK); + GTaskStringUtils.GTASK_JSON_TYPE_TASK); // 实体类型为任务 if (getNotes() != null) { - entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); + entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); // 任务备注 } js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); - // parent_id + // 父列表ID js.put(GTaskStringUtils.GTASK_JSON_PARENT_ID, mParent.getGid()); - // dest_parent_type + // 目标父类型 js.put(GTaskStringUtils.GTASK_JSON_DEST_PARENT_TYPE, GTaskStringUtils.GTASK_JSON_TYPE_GROUP); - // list_id + // 列表ID(与父列表ID相同) js.put(GTaskStringUtils.GTASK_JSON_LIST_ID, mParent.getGid()); - // prior_sibling_id + // 前兄弟任务ID(用于排序) if (mPriorSibling != null) { js.put(GTaskStringUtils.GTASK_JSON_PRIOR_SIBLING_ID, mPriorSibling.getGid()); } @@ -103,27 +115,33 @@ public class Task extends Node { return js; } + /** + * 获取更新任务的JSON操作数据(用于发送到Google Tasks服务器) + * @param actionId 操作ID + * @return 包含更新操作数据的JSONObject + * @throws ActionFailureException 生成JSON失败时抛出 + */ public JSONObject getUpdateAction(int actionId) { JSONObject js = new JSONObject(); try { - // action_type + // 操作类型:更新 js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); - // action_id + // 操作ID js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - // id + // 任务ID js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); - // entity_delta + // 实体数据变化 JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); // 任务名称 if (getNotes() != null) { - entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); + entity.put(GTaskStringUtils.GTASK_JSON_NOTES, getNotes()); // 任务备注 } - entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); + entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); // 删除状态 js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); } catch (JSONException e) { @@ -135,35 +153,40 @@ public class Task extends Node { return js; } + /** + * 从远程JSON数据设置任务内容(从Google Tasks服务器获取) + * @param js 包含远程任务数据的JSONObject + * @throws ActionFailureException 解析JSON失败时抛出 + */ public void setContentByRemoteJSON(JSONObject js) { if (js != null) { try { - // id + // 任务ID if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); } - // last_modified + // 最后修改时间 if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); } - // name + // 任务名称 if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); } - // notes + // 任务备注 if (js.has(GTaskStringUtils.GTASK_JSON_NOTES)) { setNotes(js.getString(GTaskStringUtils.GTASK_JSON_NOTES)); } - // deleted + // 删除状态 if (js.has(GTaskStringUtils.GTASK_JSON_DELETED)) { setDeleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_DELETED)); } - // completed + // 完成状态 if (js.has(GTaskStringUtils.GTASK_JSON_COMPLETED)) { setCompleted(js.getBoolean(GTaskStringUtils.GTASK_JSON_COMPLETED)); } @@ -175,6 +198,10 @@ public class Task extends Node { } } + /** + * 从本地JSON数据设置任务内容(从本地数据库获取) + * @param js 包含本地便签数据的JSONObject + */ public void setContentByLocalJSON(JSONObject js) { if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE) || !js.has(GTaskStringUtils.META_HEAD_DATA)) { @@ -182,18 +209,21 @@ public class Task extends Node { } try { + // 获取便签信息和数据数组 JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + // 验证便签类型 if (note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) { Log.e(TAG, "invalid type"); return; } + // 遍历数据数组,查找便签内容 for (int i = 0; i < dataArray.length(); i++) { JSONObject data = dataArray.getJSONObject(i); if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { - setName(data.getString(DataColumns.CONTENT)); + setName(data.getString(DataColumns.CONTENT)); // 设置任务名称为便签内容 break; } } @@ -204,31 +234,37 @@ public class Task extends Node { } } + /** + * 从任务内容生成本地JSON数据(用于本地存储) + * @return 包含本地便签数据的JSONObject,如果任务无内容则返回null + */ public JSONObject getLocalJSONFromContent() { String name = getName(); try { if (mMetaInfo == null) { - // new task created from web + // 从Web新创建的任务(没有元信息) if (name == null) { Log.w(TAG, "the note seems to be an empty one"); return null; } + // 构建新的JSON结构 JSONObject js = new JSONObject(); JSONObject note = new JSONObject(); JSONArray dataArray = new JSONArray(); JSONObject data = new JSONObject(); - data.put(DataColumns.CONTENT, name); + data.put(DataColumns.CONTENT, name); // 便签内容 dataArray.put(data); js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); - note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); + note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); // 类型为普通便签 js.put(GTaskStringUtils.META_HEAD_NOTE, note); return js; } else { - // synced task + // 已同步的任务(有元信息) JSONObject note = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); JSONArray dataArray = mMetaInfo.getJSONArray(GTaskStringUtils.META_HEAD_DATA); + // 更新便签内容 for (int i = 0; i < dataArray.length(); i++) { JSONObject data = dataArray.getJSONObject(i); if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { @@ -238,7 +274,7 @@ public class Task extends Node { } note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); - return mMetaInfo; + return mMetaInfo; // 返回更新后的元信息 } } catch (JSONException e) { Log.e(TAG, e.toString()); @@ -247,6 +283,10 @@ public class Task extends Node { } } + /** + * 设置元信息(从MetaData对象) + * @param metaData 元数据对象 + */ public void setMetaInfo(MetaData metaData) { if (metaData != null && metaData.getNotes() != null) { try { @@ -258,48 +298,57 @@ public class Task extends Node { } } + /** + * 根据数据库游标确定同步操作类型 + * @param c 数据库查询结果的Cursor + * @return 同步操作状态码(SYNC_ACTION_*) + */ public int getSyncAction(Cursor c) { try { JSONObject noteInfo = null; + // 从元信息中获取便签信息 if (mMetaInfo != null && mMetaInfo.has(GTaskStringUtils.META_HEAD_NOTE)) { noteInfo = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); } if (noteInfo == null) { Log.w(TAG, "it seems that note meta has been deleted"); - return SYNC_ACTION_UPDATE_REMOTE; + return SYNC_ACTION_UPDATE_REMOTE; // 远程更新本地 } if (!noteInfo.has(NoteColumns.ID)) { Log.w(TAG, "remote note id seems to be deleted"); - return SYNC_ACTION_UPDATE_LOCAL; + return SYNC_ACTION_UPDATE_LOCAL; // 本地更新远程 } - // validate the note id now + // 验证便签ID是否匹配 if (c.getLong(SqlNote.ID_COLUMN) != noteInfo.getLong(NoteColumns.ID)) { Log.w(TAG, "note id doesn't match"); - return SYNC_ACTION_UPDATE_LOCAL; + return SYNC_ACTION_UPDATE_LOCAL; // ID不匹配,用本地更新远程 } + // 检查本地修改标记 if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { - // there is no local update + // 本地无修改 if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // no update both side + // 两边都无更新 return SYNC_ACTION_NONE; } else { - // apply remote to local + // 远程有更新,应用到本地 return SYNC_ACTION_UPDATE_LOCAL; } } else { - // validate gtask id + // 本地有修改 + // 验证Google Task ID是否匹配 if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { Log.e(TAG, "gtask id doesn't match"); - return SYNC_ACTION_ERROR; + return SYNC_ACTION_ERROR; // ID不匹配,错误 } if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // local modification only + // 仅本地有修改 return SYNC_ACTION_UPDATE_REMOTE; } else { + // 两边都有修改,冲突 return SYNC_ACTION_UPDATE_CONFLICT; } } @@ -308,44 +357,79 @@ public class Task extends Node { e.printStackTrace(); } - return SYNC_ACTION_ERROR; + return SYNC_ACTION_ERROR; // 发生异常,返回错误 } + /** + * 判断任务是否值得保存(是否有有效内容) + * @return 如果任务有名称或备注则返回true,否则返回false + */ public boolean isWorthSaving() { return mMetaInfo != null || (getName() != null && getName().trim().length() > 0) || (getNotes() != null && getNotes().trim().length() > 0); } + /** + * 设置完成状态 + * @param completed 完成状态(true-已完成,false-未完成) + */ public void setCompleted(boolean completed) { this.mCompleted = completed; } + /** + * 设置任务备注 + * @param notes 任务备注字符串 + */ public void setNotes(String notes) { this.mNotes = notes; } + /** + * 设置前兄弟任务(用于排序) + * @param priorSibling 前兄弟任务对象 + */ public void setPriorSibling(Task priorSibling) { this.mPriorSibling = priorSibling; } + /** + * 设置父任务列表 + * @param parent 父任务列表对象 + */ public void setParent(TaskList parent) { this.mParent = parent; } + /** + * 获取完成状态 + * @return 完成状态(true-已完成,false-未完成) + */ public boolean getCompleted() { return this.mCompleted; } + /** + * 获取任务备注 + * @return 任务备注字符串 + */ public String getNotes() { return this.mNotes; } + /** + * 获取前兄弟任务 + * @return 前兄弟任务对象 + */ public Task getPriorSibling() { return this.mPriorSibling; } + /** + * 获取父任务列表 + * @return 父任务列表对象 + */ public TaskList getParent() { return this.mParent; } - -} +} \ No newline at end of file diff --git a/src/net/micode/notes/gtask/data/TaskList.java b/src/net/micode/notes/gtask/data/TaskList.java index 4ea21c5..e096dd8 100644 --- a/src/net/micode/notes/gtask/data/TaskList.java +++ b/src/net/micode/notes/gtask/data/TaskList.java @@ -29,40 +29,54 @@ import org.json.JSONObject; import java.util.ArrayList; - +/** + * TaskList 类 - 任务列表实体类 + * + * 功能:代表Google Tasks中的一个任务列表(对应小米便签中的文件夹) + * 继承自Node抽象类,可以包含多个Task子任务,实现任务列表的层级管理 + * 处理文件夹与Google Tasks列表的同步,支持子任务的增删改查和排序 + */ public class TaskList extends Node { - private static final String TAG = TaskList.class.getSimpleName(); + private static final String TAG = TaskList.class.getSimpleName(); // 日志标签 - private int mIndex; - - private ArrayList mChildren; + private int mIndex; // 任务列表在父容器中的索引位置 + private ArrayList mChildren; // 子任务列表 + /** + * 默认构造函数,初始化任务列表属性 + */ public TaskList() { super(); - mChildren = new ArrayList(); - mIndex = 1; + mChildren = new ArrayList(); // 初始化子任务列表 + mIndex = 1; // 默认索引为1(Google Tasks的索引从1开始) } + /** + * 获取创建任务列表的JSON操作数据(用于发送到Google Tasks服务器) + * @param actionId 操作ID + * @return 包含创建操作数据的JSONObject + * @throws ActionFailureException 生成JSON失败时抛出 + */ public JSONObject getCreateAction(int actionId) { JSONObject js = new JSONObject(); try { - // action_type + // 操作类型:创建 js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); - // action_id + // 操作ID js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - // index + // 索引位置 js.put(GTaskStringUtils.GTASK_JSON_INDEX, mIndex); - // entity_delta + // 实体数据变化 JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); - entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); // 列表名称 + entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null"); // 创建者ID entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, - GTaskStringUtils.GTASK_JSON_TYPE_GROUP); + GTaskStringUtils.GTASK_JSON_TYPE_GROUP); // 实体类型为组(列表) js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); } catch (JSONException e) { @@ -74,24 +88,30 @@ public class TaskList extends Node { return js; } + /** + * 获取更新任务列表的JSON操作数据(用于发送到Google Tasks服务器) + * @param actionId 操作ID + * @return 包含更新操作数据的JSONObject + * @throws ActionFailureException 生成JSON失败时抛出 + */ public JSONObject getUpdateAction(int actionId) { JSONObject js = new JSONObject(); try { - // action_type + // 操作类型:更新 js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); - // action_id + // 操作ID js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - // id + // 列表ID js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); - // entity_delta + // 实体数据变化 JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); - entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName()); // 列表名称 + entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted()); // 删除状态 js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); } catch (JSONException e) { @@ -103,20 +123,25 @@ public class TaskList extends Node { return js; } + /** + * 从远程JSON数据设置任务列表内容(从Google Tasks服务器获取) + * @param js 包含远程列表数据的JSONObject + * @throws ActionFailureException 解析JSON失败时抛出 + */ public void setContentByRemoteJSON(JSONObject js) { if (js != null) { try { - // id + // 列表ID if (js.has(GTaskStringUtils.GTASK_JSON_ID)) { setGid(js.getString(GTaskStringUtils.GTASK_JSON_ID)); } - // last_modified + // 最后修改时间 if (js.has(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)) { setLastModified(js.getLong(GTaskStringUtils.GTASK_JSON_LAST_MODIFIED)); } - // name + // 列表名称 if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); } @@ -129,6 +154,10 @@ public class TaskList extends Node { } } + /** + * 从本地JSON数据设置任务列表内容(从本地数据库获取) + * @param js 包含本地文件夹数据的JSONObject + */ public void setContentByLocalJSON(JSONObject js) { if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE)) { Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); @@ -137,10 +166,13 @@ public class TaskList extends Node { try { JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); + // 根据文件夹类型设置名称 if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { + // 普通文件夹:使用片段作为名称,并添加MIUI前缀 String name = folder.getString(NoteColumns.SNIPPET); setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + name); } else if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { + // 系统文件夹:根据ID设置特定的名称 if (folder.getLong(NoteColumns.ID) == Notes.ID_ROOT_FOLDER) setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT); else if (folder.getLong(NoteColumns.ID) == Notes.ID_CALL_RECORD_FOLDER) @@ -157,21 +189,28 @@ public class TaskList extends Node { } } + /** + * 从任务列表内容生成本地JSON数据(用于本地存储) + * @return 包含本地文件夹数据的JSONObject + */ public JSONObject getLocalJSONFromContent() { try { JSONObject js = new JSONObject(); JSONObject folder = new JSONObject(); + // 处理文件夹名称:移除MIUI前缀 String folderName = getName(); if (getName().startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX)) folderName = folderName.substring(GTaskStringUtils.MIUI_FOLDER_PREFFIX.length(), folderName.length()); folder.put(NoteColumns.SNIPPET, folderName); + + // 根据文件夹名称判断类型 if (folderName.equals(GTaskStringUtils.FOLDER_DEFAULT) || folderName.equals(GTaskStringUtils.FOLDER_CALL_NOTE)) - folder.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + folder.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); // 默认文件夹和通话记录文件夹为系统类型 else - folder.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); + folder.put(NoteColumns.TYPE, Notes.TYPE_FOLDER); // 其他为普通文件夹 js.put(GTaskStringUtils.META_HEAD_NOTE, folder); @@ -183,28 +222,34 @@ public class TaskList extends Node { } } + /** + * 根据数据库游标确定同步操作类型 + * @param c 数据库查询结果的Cursor + * @return 同步操作状态码(SYNC_ACTION_*) + */ public int getSyncAction(Cursor c) { try { if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) { - // there is no local update + // 本地无修改 if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // no update both side + // 两边都无更新 return SYNC_ACTION_NONE; } else { - // apply remote to local + // 远程有更新,应用到本地 return SYNC_ACTION_UPDATE_LOCAL; } } else { - // validate gtask id + // 本地有修改 + // 验证Google Task ID是否匹配 if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { Log.e(TAG, "gtask id doesn't match"); return SYNC_ACTION_ERROR; } if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // local modification only + // 仅本地有修改 return SYNC_ACTION_UPDATE_REMOTE; } else { - // for folder conflicts, just apply local modification + // 文件夹冲突时,优先应用本地修改(不同于任务的处理方式) return SYNC_ACTION_UPDATE_REMOTE; } } @@ -216,16 +261,25 @@ public class TaskList extends Node { return SYNC_ACTION_ERROR; } + /** + * 获取子任务数量 + * @return 子任务数量 + */ public int getChildTaskCount() { return mChildren.size(); } + /** + * 添加子任务到列表末尾 + * @param task 要添加的任务 + * @return 添加成功返回true,失败返回false + */ public boolean addChildTask(Task task) { boolean ret = false; if (task != null && !mChildren.contains(task)) { ret = mChildren.add(task); if (ret) { - // need to set prior sibling and parent + // 设置前兄弟任务和父列表 task.setPriorSibling(mChildren.isEmpty() ? null : mChildren .get(mChildren.size() - 1)); task.setParent(this); @@ -234,6 +288,12 @@ public class TaskList extends Node { return ret; } + /** + * 在指定索引位置添加子任务 + * @param task 要添加的任务 + * @param index 要插入的索引位置 + * @return 添加成功返回true,失败返回false + */ public boolean addChildTask(Task task, int index) { if (index < 0 || index > mChildren.size()) { Log.e(TAG, "add child task: invalid index"); @@ -244,7 +304,7 @@ public class TaskList extends Node { if (task != null && pos == -1) { mChildren.add(index, task); - // update the task list + // 更新任务列表的前后兄弟关系 Task preTask = null; Task afterTask = null; if (index != 0) @@ -260,6 +320,11 @@ public class TaskList extends Node { return true; } + /** + * 从列表中移除子任务 + * @param task 要移除的任务 + * @return 移除成功返回true,失败返回false + */ public boolean removeChildTask(Task task) { boolean ret = false; int index = mChildren.indexOf(task); @@ -267,11 +332,11 @@ public class TaskList extends Node { ret = mChildren.remove(task); if (ret) { - // reset prior sibling and parent + // 重置任务的前兄弟任务和父列表 task.setPriorSibling(null); task.setParent(null); - // update the task list + // 更新任务列表的前兄弟关系 if (index != mChildren.size()) { mChildren.get(index).setPriorSibling( index == 0 ? null : mChildren.get(index - 1)); @@ -281,6 +346,12 @@ public class TaskList extends Node { return ret; } + /** + * 移动子任务到指定索引位置 + * @param task 要移动的任务 + * @param index 目标索引位置 + * @return 移动成功返回true,失败返回false + */ public boolean moveChildTask(Task task, int index) { if (index < 0 || index >= mChildren.size()) { @@ -299,6 +370,11 @@ public class TaskList extends Node { return (removeChildTask(task) && addChildTask(task, index)); } + /** + * 根据Google Task ID查找子任务 + * @param gid Google Task的全局唯一标识 + * @return 找到的任务对象,未找到返回null + */ public Task findChildTaskByGid(String gid) { for (int i = 0; i < mChildren.size(); i++) { Task t = mChildren.get(i); @@ -309,10 +385,20 @@ public class TaskList extends Node { return null; } + /** + * 获取子任务在列表中的索引位置 + * @param task 要查找的任务 + * @return 任务在列表中的索引,不存在返回-1 + */ public int getChildTaskIndex(Task task) { return mChildren.indexOf(task); } + /** + * 根据索引获取子任务 + * @param index 子任务索引 + * @return 指定索引位置的子任务,索引无效返回null + */ public Task getChildTaskByIndex(int index) { if (index < 0 || index >= mChildren.size()) { Log.e(TAG, "getTaskByIndex: invalid index"); @@ -321,6 +407,11 @@ public class TaskList extends Node { return mChildren.get(index); } + /** + * 根据Google Task ID获取子任务(方法名有拼写错误) + * @param gid Google Task的全局唯一标识 + * @return 找到的任务对象,未找到返回null + */ public Task getChilTaskByGid(String gid) { for (Task task : mChildren) { if (task.getGid().equals(gid)) @@ -329,15 +420,27 @@ public class TaskList extends Node { return null; } + /** + * 获取所有子任务的列表 + * @return 子任务列表的ArrayList + */ public ArrayList getChildTaskList() { return this.mChildren; } + /** + * 设置任务列表索引 + * @param index 索引值 + */ public void setIndex(int index) { this.mIndex = index; } + /** + * 获取任务列表索引 + * @return 索引值 + */ public int getIndex() { return this.mIndex; } -} +} \ No newline at end of file -- 2.34.1