From e280d6d4659bf8602726032b1b44ca77c4c73bc3 Mon Sep 17 00:00:00 2001 From: Florens Douwes Date: Sat, 22 Feb 2014 23:20:00 +0100 Subject: [PATCH] You can now see the replies to a post. --- Chan/res/drawable-hdpi/ic_action_back.png | Bin 0 -> 351 bytes Chan/res/drawable-hdpi/ic_action_cancel.png | Bin 0 -> 1358 bytes Chan/res/drawable-hdpi/ic_action_done.png | Bin 0 -> 1320 bytes .../ic_navigation_previous_item.png | Bin 0 -> 1494 bytes Chan/res/drawable-mdpi/ic_action_back.png | Bin 0 -> 336 bytes Chan/res/drawable-mdpi/ic_action_cancel.png | Bin 0 -> 1202 bytes Chan/res/drawable-mdpi/ic_action_done.png | Bin 0 -> 1197 bytes .../ic_navigation_previous_item.png | Bin 0 -> 1275 bytes Chan/res/drawable-xhdpi/ic_action_back.png | Bin 0 -> 468 bytes Chan/res/drawable-xhdpi/ic_action_cancel.png | Bin 0 -> 1488 bytes Chan/res/drawable-xhdpi/ic_action_done.png | Bin 0 -> 1546 bytes .../ic_navigation_previous_item.png | Bin 0 -> 1725 bytes Chan/res/drawable-xxhdpi/ic_action_back.png | Bin 0 -> 527 bytes Chan/res/drawable-xxhdpi/ic_action_cancel.png | Bin 0 -> 681 bytes Chan/res/drawable-xxhdpi/ic_action_done.png | Bin 0 -> 649 bytes .../ic_navigation_previous_item.png | Bin 0 -> 1038 bytes Chan/res/layout/post_replies.xml | 59 +++++++++ Chan/res/values/dimens.xml | 3 - Chan/res/values/strings.xml | 7 +- .../org/floens/chan/adapter/PostAdapter.java | 7 +- Chan/src/org/floens/chan/entity/Pin.java | 6 +- Chan/src/org/floens/chan/entity/Post.java | 27 +++- .../chan/fragment/PostPopupFragment.java | 72 ----------- .../chan/fragment/PostRepliesFragment.java | 122 ++++++++++++++++++ .../floens/chan/fragment/ThreadFragment.java | 3 +- .../floens/chan/manager/ThreadManager.java | 103 +++++++++++---- .../src/org/floens/chan/net/ThreadLoader.java | 27 +++- Chan/src/org/floens/chan/view/PostView.java | 44 ++++--- 28 files changed, 350 insertions(+), 130 deletions(-) create mode 100644 Chan/res/drawable-hdpi/ic_action_back.png create mode 100644 Chan/res/drawable-hdpi/ic_action_cancel.png create mode 100644 Chan/res/drawable-hdpi/ic_action_done.png create mode 100644 Chan/res/drawable-hdpi/ic_navigation_previous_item.png create mode 100644 Chan/res/drawable-mdpi/ic_action_back.png create mode 100644 Chan/res/drawable-mdpi/ic_action_cancel.png create mode 100644 Chan/res/drawable-mdpi/ic_action_done.png create mode 100644 Chan/res/drawable-mdpi/ic_navigation_previous_item.png create mode 100644 Chan/res/drawable-xhdpi/ic_action_back.png create mode 100644 Chan/res/drawable-xhdpi/ic_action_cancel.png create mode 100644 Chan/res/drawable-xhdpi/ic_action_done.png create mode 100644 Chan/res/drawable-xhdpi/ic_navigation_previous_item.png create mode 100644 Chan/res/drawable-xxhdpi/ic_action_back.png create mode 100644 Chan/res/drawable-xxhdpi/ic_action_cancel.png create mode 100644 Chan/res/drawable-xxhdpi/ic_action_done.png create mode 100644 Chan/res/drawable-xxhdpi/ic_navigation_previous_item.png create mode 100644 Chan/res/layout/post_replies.xml delete mode 100644 Chan/src/org/floens/chan/fragment/PostPopupFragment.java create mode 100644 Chan/src/org/floens/chan/fragment/PostRepliesFragment.java diff --git a/Chan/res/drawable-hdpi/ic_action_back.png b/Chan/res/drawable-hdpi/ic_action_back.png new file mode 100644 index 0000000000000000000000000000000000000000..bff21fbd0120e8f5a91ddaa83c7b2a3484f4352d GIT binary patch literal 351 zcmV-l0igbgP)YB9Dd`$Re@cH@UwGnffkSo-$Xz%e6@gd_$mQ}@Wlcs;fn;2 z!e6>iAVqd002ovPDHLkV1i#FjE?{S literal 0 HcmV?d00001 diff --git a/Chan/res/drawable-hdpi/ic_action_cancel.png b/Chan/res/drawable-hdpi/ic_action_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..cde36e1fa7b8fb99cd7cdb3dc1e18466196750b0 GIT binary patch literal 1358 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVitz{uRt(ZJBu$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OnfUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dF1J{^ zx#2Vqsy79jq(2n!XhGjGPNr-YWW@CJDHmK zJ&5LLy_WOYcc}%pyr$}zn*DR{o;AsRQu%IMrAprEc1DQ?5c-qP5dZa9*lN*t_QHER z?wyGH=GwlV}9bzo}}cX=i=H})~T@^ z-4ng}PpM+Yv)JCRyY*PE?peK)FnlmIp00i_>zopr0MX;(_W%F@ literal 0 HcmV?d00001 diff --git a/Chan/res/drawable-hdpi/ic_action_done.png b/Chan/res/drawable-hdpi/ic_action_done.png new file mode 100644 index 0000000000000000000000000000000000000000..58bf972171f199c359dcdb3bc6233ac84c7853d3 GIT binary patch literal 1320 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi#&Ct}+$imdr$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OzjUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+d7PlC? zn3-5OIXVK(v%u~ah~5<3ZZW~>7JZ;&^g&UJ6xA>xVEO?u;RzSWfhYacJYae+0w(OB zPunsW7#L@Hx;TbZ+F}XRH$BVJ_~tbB>ux&w{i&Jpl6k3-y`NvKHk21q zV1%GG?pIzqOj6l*_t-(U9qjp;vo`HwN=}ep)5vUa_N7?Rr}hN4ng+Fwoh&_BpW+wD z&uL8OV?3O|erD1ih8>LjGWVRk>cn-L{3q>ay)F~Cc;}xn`8m#J@(k z@^-_wj*fK>KI!`&dhL6Y6 literal 0 HcmV?d00001 diff --git a/Chan/res/drawable-hdpi/ic_navigation_previous_item.png b/Chan/res/drawable-hdpi/ic_navigation_previous_item.png new file mode 100644 index 0000000000000000000000000000000000000000..23778ae9b73517818c0c37b0e268a328385c3836 GIT binary patch literal 1494 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVit$imIc#mvmq$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1POzUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnv1= zG!Lpb1-DyFaq86vIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z4q6#p&%nUs;pyTS zQgQ3e%-!BGfda?Q?~N=C4-uKDprItDw1VZ1pNolD=A*>|HKKL`N9;XVJ_dGhiP>E` z(%?0rq`QM7EJ>khs)pK+xb^oRY%kbwnfqSx3CSO#yEnY4D}Q$8XWBLHCWo6c`!?Ck zVNgH7S-`ZYH)00A`s9<_Yt}GbX^?*qc+X>L&_#|4=O@jM0laoitOfFsY;ls22^=Af z^$(0S7_}dqU}LlmDt$0({n8q*nWB%4KZtH=l-8B5Kj<=J`Tw}s6@n#A)(Yo7GJ7=N z++hFDmc?Vc};_M$UhyhpZ8kk z4VyHVQ&|#IZf}}8;bTF2okp=7*FlNixuV%qE2o7ttt{KM!i-jH0_kJ+uzt)dgDWUK1XhOPE=3CRVqTbECOd`im zgs$DYtTLWw)pOP9ADLA4U3~EJtto%c-Ewkc=l>K|L4U+Ml@rD6a6pL!V+I97kGXSLxpVCY;{u~l?#z&}t)>*?y}vd$@? F2>>ggAu0d> literal 0 HcmV?d00001 diff --git a/Chan/res/drawable-mdpi/ic_action_back.png b/Chan/res/drawable-mdpi/ic_action_back.png new file mode 100644 index 0000000000000000000000000000000000000000..64634618c6ff3d1a45bd33fffa7f76548e35d9db GIT binary patch literal 336 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 KMNUMnLSTY5^23t= literal 0 HcmV?d00001 diff --git a/Chan/res/drawable-xhdpi/ic_action_cancel.png b/Chan/res/drawable-xhdpi/ic_action_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7d159fdaa906473fa7ce7a63814ced79c89db3 GIT binary patch literal 1488 zcmaJ>eM}Q~7(QxcD@Za65}eZsB-}ef}1mJ=pu1TnGR)hR|K{{WS89i-rt+| zdEV#!$Thi23KQaJi<0u9$Jdl!2 zqAT$-qF^DHaXqh{2#&BJ}G4=3l*! zCHA|6B7>AMexX*Pl)+V|MN^5mU1GelAh`vhX0eN|YC#tK)q)7x%S|u_l3t4Cqn>#L zN#ai4FMD~4aS~QY;ec6|#<2ohCT1rbCL2m%m;FtgEyEn*3Qs^u77 zUc}N0)_@w!n5AHOY;+koQOQg&61#_?3nYO9=ZnVK<+a$C*YXHUKSs+!9mKL&L=l5T zNBf^qFS?ZdiJD7`t6Y{=pW&5#mz2f6ccobc04kf4$ae>>-tH(ZQDG_Pwv4FXtwJ~0 z_MCuf=vxKiM;j7$bibTuCd}{`>fcwzzIf(OQ_ysQ)?MrxSo>9Y@{QEg>F|$x*B`#1 zV>>!_@J%Wg5SJH|0j%r>lIj;O^{Qjz(62 zKdjbEK2}{mQg?z76L%6kn|G@724T+Z(f|5}SA2 z8lZd`e6mF|-r4p1^u(1(*QYwdKfnW6>r*4MDZsB=ZSoWq)03u2nxa%at?G`*@tFNi z)krY59&&bX+4)UnPmwlD45ts0;xluVbMHhho42h3ax}^C1Ko)`?+*(7kvD(JUYFO_ zh}}3nctq2CO&b9DPmThwXy>eFN=NBuAAY@QsAIiwTRn4JT{eWgZrtp4wiVa6*Z-zV zKR3$$(h=+x%v zYuDtBRqYLFYvMZvqvrFC7tIINu&K-jqCo=mvXG&Jg zbM!A ccEy9_T>$nr-nlNE-y8kMIvpiMuWeVuKec}rRR910 literal 0 HcmV?d00001 diff --git a/Chan/res/drawable-xhdpi/ic_action_done.png b/Chan/res/drawable-xhdpi/ic_action_done.png new file mode 100644 index 0000000000000000000000000000000000000000..b8915716e06792d926f397a7b17346f656c86aa1 GIT binary patch literal 1546 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 Qz!+xmboFyt=akR{0OTvy#Q*>R literal 0 HcmV?d00001 diff --git a/Chan/res/drawable-xxhdpi/ic_action_cancel.png b/Chan/res/drawable-xxhdpi/ic_action_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..331c545b8cb07a97ee63cb4f1256d1dba5557a82 GIT binary patch literal 681 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGok|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n7ln*978H@y_sX^mF+0u=KlZOu|s+fxN=%TuH_vu-63%O z0bh(`mh@(>)(|r>v-Oq66AmapP&R+I|NHM}^O&8P#J-=iwAdNbrpXGl5g7zooZfe! zXy=~Q^508s)?R;|&#w7(p8l)j$+D}f&aa<&y-Vlf4wmJ z{m;$!KDWm<)IWJYp?`yVy?a)Rgy+7R7WpU3-7WlQo&Q_^@0!|=9dkD{|8ah%BK}}y zUwJzR`>Fc-=T0VbW}WtqPP|eM_FyzT{_JE!R zD)mzsyaca2=@)ZQY+Cdukl9DlG4$UH#$_D~bm}KDB)bJnw~uTvRI)fR-^3w}Mf~Sv z_7fcsRN|EmXe#eGIi0hhi=*$;Ql>v@O{@PLixhm)QT}Dxr&MO1o`9IAr*$3O_1veg z`?Qpqrz1f--tK_DQpAbv90e{c(m#7YGyP$o^P)53LpC?loVb0lEiVH0g|-+>zh76d zzw5&@{nHH0@veKsKFU^vF}CfCD89*-Dfr;V_F3ly55?}QZh7Ijuejxf>%Q!k7oPi) zTVD9?i*9)lxG%WnMd&{7mKTxxoLgSR?yG8<(OmPC!%+O^D#0YbPom04?mSuT+F^Mr zylcW%?L%qnpM8_#v%0PH_*W!j7~dy$w}_iMj&Eb;mhJQVTeVv6|AD73EMLFabmp+t zH{}!WBYrC$Dt@-J@Me4I8>JZ0$#0vg1>-jHzhy>_Y6gY|m493Y3}5QcuZR|#@EIiM M>FVdQ&MBb@07pA8tN;K2 literal 0 HcmV?d00001 diff --git a/Chan/res/drawable-xxhdpi/ic_action_done.png b/Chan/res/drawable-xxhdpi/ic_action_done.png new file mode 100644 index 0000000000000000000000000000000000000000..6fda89ec7d8d2ef1caa50a1191c1b2f9a0e65e2d GIT binary patch literal 649 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGok|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n6y1z978H@y_vn&?@)k*!|Ik+M|N2r&hGUM-TIHt7{92t zFt#xG%y-U5#fNXrtdgR_gu;*6Ol=dkEd74(-v0M@Q3OilarG)?VsosHc6X{kFE8|r_utCc zb^hr(TDA9H+1%eud(S;t@AFLE!QrP&)2yfd=O*mmGSR;w?dN&j*=t???S5Na$gyg= zeb&VN1s`izI5g%nG(Htp*igg7GHtz`L&ncl%tsXBa~mR_tmYAzTvN)JG(^Jy*f2`2a7taYt1E~`Fiv++F%=bn3Gp8Vp#eT5CeKiL;`Oqf)& zn8EbZ;*JTk{%}p+uaf_5ao?*sCnY~sSFxVB_gA_4XZxMn35IKKo_VdU82aa~Rq{bZG@b+P#Mt@iqco6CE4p82`js^K+H4XA>%&#t@~3O;?3l3o zPaN|Nw+jmUzcVZo+;U?5hi}uL?37nb)!BODyVL^bme|veZ=U#G#9?G1!wVFWTj0zh z`l*@4pl8C;KM9OhZYRR(E-<9KortRYz@RI*X}Y{?!z>Q1C+@-zR1Qt;*~#`3B_4sC cpP$qZFdVVp7yd2n{x6WEr>mdKI;Vst0Qu`3kN^Mx literal 0 HcmV?d00001 diff --git a/Chan/res/drawable-xxhdpi/ic_navigation_previous_item.png b/Chan/res/drawable-xxhdpi/ic_navigation_previous_item.png new file mode 100644 index 0000000000000000000000000000000000000000..bc8ff1241ade1ac7ad40427f4843b84fac947e62 GIT binary patch literal 1038 zcmV+p1o8WcP)mo zA`K~MkRSyq+|VX1EpADX!ubtpX-R2X{)3w|G(jRoT+p~M5_UmDVHa*Pqf8=#jI$FR zx|!vD(&-T1laBYiw{P!uE(8Do000000000000000fJA6En+=QS_547@@6xVYsZ?Gr zm&=)@b9;6G;5yEkAX@suJD;TiC?rQeVpkoe~${><9%@Z1CX%D6eP_#-l>|NT7R)*_qFEX2)Z z3?T74%D6eQ{ChHI;>$@{R;^sR=)*pDC&SwV2=Nay) zB5sa6#7!3lNZjlz4jFifo8}FWxY<|6P1oX^F+jPJff;*?o7Q_kH#l0!kdy(ka5gq> z&b`J>lLkoK>?q>qFeFBb3$tKAEHaSB4yM|O>Vm=-=W@XW7fwVD!p9biEK;}xjpZ62 zLt7q8q6g&I3m&*&f(PFoyy8#?wos z2`=KPn?h|dVXcU#JX@YvkEgCGOTo}PAv_Ple<6<}HMg*P=mGnQr>{fY zL;SMkIfCaWV#A=jh22IE$UmO)E$kCTGFlY*W|X81*f2p8PwUp=sr&Z@Nj$v`zaHkq z#M71}qk9;Tp9we0Ti7)#@idubDPC7tB=yQNiKi@XIik6V6&5Kj%o+tpD=d;TK#Dc^ z7Iw_t(7VWXxCH%2JpI=Si{I}Kn!|wo#nW9YEcg=jnZz&rnL*NT&fT%Xf(P9%R_e-< ze|Iz^H3&S|PExBc@MJ;*DgXcg00000000000001>2!0AM0Ol)zPaPAXwEzGB07*qo IM6N<$f+VNg^Z)<= literal 0 HcmV?d00001 diff --git a/Chan/res/layout/post_replies.xml b/Chan/res/layout/post_replies.xml new file mode 100644 index 00000000..381f8415 --- /dev/null +++ b/Chan/res/layout/post_replies.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + diff --git a/Chan/res/values/dimens.xml b/Chan/res/values/dimens.xml index ba0ea4ac..5fe9aa2f 100644 --- a/Chan/res/values/dimens.xml +++ b/Chan/res/values/dimens.xml @@ -9,9 +9,6 @@ 14dp 200dp - 200dp - 100dp - 11dp 8dp diff --git a/Chan/res/values/strings.xml b/Chan/res/values/strings.xml index 0ed167b2..d7dfc14c 100644 --- a/Chan/res/values/strings.xml +++ b/Chan/res/values/strings.xml @@ -80,11 +80,14 @@ Unsupported link Chan can\'t open this link. Opening it in your browser instead. + Back + Close + Info - Show clickables - Info Quote + Info + Show clickables Copy text diff --git a/Chan/src/org/floens/chan/adapter/PostAdapter.java b/Chan/src/org/floens/chan/adapter/PostAdapter.java index 4da61ff1..90615a95 100644 --- a/Chan/src/org/floens/chan/adapter/PostAdapter.java +++ b/Chan/src/org/floens/chan/adapter/PostAdapter.java @@ -1,6 +1,7 @@ package org.floens.chan.adapter; import java.util.ArrayList; +import java.util.List; import org.floens.chan.R; import org.floens.chan.entity.Post; @@ -21,7 +22,7 @@ public class PostAdapter extends BaseAdapter { private final ThreadManager threadManager; private boolean endOfLine; private int count = 0; - private final ArrayList postList = new ArrayList(); + private final List postList = new ArrayList(); public PostAdapter(Context activity, ThreadManager threadManager) { this.activity = activity; @@ -84,14 +85,14 @@ public class PostAdapter extends BaseAdapter { } } - public void addToList(ArrayList list){ + public void addToList(List list){ count += list.size(); postList.addAll(list); notifyDataSetChanged(); } - public ArrayList getList() { + public List getList() { return postList; } diff --git a/Chan/src/org/floens/chan/entity/Pin.java b/Chan/src/org/floens/chan/entity/Pin.java index 9d8e836e..f1f249ae 100644 --- a/Chan/src/org/floens/chan/entity/Pin.java +++ b/Chan/src/org/floens/chan/entity/Pin.java @@ -1,6 +1,7 @@ package org.floens.chan.entity; import java.util.ArrayList; +import java.util.List; import org.floens.chan.net.ThreadLoader; import org.floens.chan.net.ThreadLoader.ThreadLoaderListener; @@ -11,12 +12,11 @@ public class Pin { public Type type = Type.THREAD; public Loadable loadable = new Loadable("", -1); - private int count; private int newCount; private final boolean watch = true; private boolean error = false; - private ArrayList postList = new ArrayList(); + private List postList = new ArrayList(); public ThreadLoader threadLoader = new ThreadLoader(new ThreadLoaderListener() { @Override public void onError(VolleyError volleyError) { @@ -24,7 +24,7 @@ public class Pin { } @Override - public void onData(ArrayList result) { + public void onData(List result) { postList = result; int totalCount = result.size(); diff --git a/Chan/src/org/floens/chan/entity/Post.java b/Chan/src/org/floens/chan/entity/Post.java index 9b6e8a79..8bdad320 100644 --- a/Chan/src/org/floens/chan/entity/Post.java +++ b/Chan/src/org/floens/chan/entity/Post.java @@ -50,8 +50,21 @@ public class Post { public long time = 0; public String email = ""; + /** + * This post replies to the these ids + */ + public List repliesTo = new ArrayList(); + + /** + * These ids replied to this post + */ + public List repliesFrom = new ArrayList(); + private PostView linkableListener; public final ArrayList linkables = new ArrayList(); + /** + * The PostView the Post is currently bound to. + */ public Post() { } @@ -166,10 +179,22 @@ public class Post { SpannableString link = new SpannableString(anchor.text()); - PostLinkable pl = new PostLinkable(this, anchor.text(), anchor.attr("href"), anchor.text().contains("://") ? Type.LINK : Type.QUOTE); + Type t = anchor.text().contains("://") ? Type.LINK : Type.QUOTE; + PostLinkable pl = new PostLinkable(this, anchor.text(), anchor.attr("href"), t); link.setSpan(pl, 0, link.length(), 0); linkables.add(pl); + if (t == Type.QUOTE) { + try { + // Get post id + String[] splitted = anchor.attr("href").split("#p"); + if (splitted.length == 2) { + int id = Integer.parseInt(splitted[1]); + repliesTo.add(id); + } + } catch(NumberFormatException e) {} + } + total = TextUtils.concat(total, link); } else { // Unknown tag, add the inner part diff --git a/Chan/src/org/floens/chan/fragment/PostPopupFragment.java b/Chan/src/org/floens/chan/fragment/PostPopupFragment.java deleted file mode 100644 index c9bbca46..00000000 --- a/Chan/src/org/floens/chan/fragment/PostPopupFragment.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.floens.chan.fragment; - -import org.floens.chan.R; -import org.floens.chan.entity.Post; -import org.floens.chan.manager.ThreadManager; -import org.floens.chan.view.PostView; - -import android.app.DialogFragment; -import android.content.Context; -import android.content.res.Resources; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ScrollView; - -public class PostPopupFragment extends DialogFragment { - private Context context; - private ScrollView wrapper; - - private Post post; - private ThreadManager manager; - - public static PostPopupFragment newInstance(Post post, ThreadManager manager) { - PostPopupFragment fragment = new PostPopupFragment(); - fragment.post = post; - fragment.manager = manager; - - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setStyle(STYLE_NO_TITLE, 0); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - context = inflater.getContext(); - - Resources resources = context.getResources(); - int minWidth = resources.getDimensionPixelSize(R.dimen.post_popup_min_width); - int minHeight = resources.getDimensionPixelSize(R.dimen.post_popup_min_height); - - wrapper = new ScrollView(context); - wrapper.setMinimumWidth(minWidth); - wrapper.setMinimumHeight(minHeight); - - return wrapper; - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - if (post == null) { - throw new IllegalArgumentException("No post specified"); - } - - PostView postView = new PostView(getActivity()); - postView.setPost(post, manager); - - wrapper.addView(postView); - } -} - - - - - diff --git a/Chan/src/org/floens/chan/fragment/PostRepliesFragment.java b/Chan/src/org/floens/chan/fragment/PostRepliesFragment.java new file mode 100644 index 00000000..25939c15 --- /dev/null +++ b/Chan/src/org/floens/chan/fragment/PostRepliesFragment.java @@ -0,0 +1,122 @@ +package org.floens.chan.fragment; + +import java.util.List; + +import org.floens.chan.R; +import org.floens.chan.entity.Post; +import org.floens.chan.manager.ThreadManager; +import org.floens.chan.view.PostView; + +import android.app.DialogFragment; +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.Resources; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ListView; + +/** + * A DialogFragment that shows a list of posts. Use the newInstance method for instantiating. + */ +public class PostRepliesFragment extends DialogFragment { + private Context context; + private ListView listView; + + private List posts; + private ThreadManager manager; + private boolean callback = true; + + public static PostRepliesFragment newInstance(List posts, ThreadManager manager) { + PostRepliesFragment fragment = new PostRepliesFragment(); + fragment.posts = posts; + fragment.manager = manager; + + return fragment; + } + + public void dismissNoCallback() { + callback = false; + dismiss(); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setStyle(STYLE_NO_TITLE, 0); + } + + @Override + public void onDismiss(DialogInterface dialog) { + super.onDismiss(dialog); + + if (callback) { + manager.onPostRepliesPop(); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup unused, Bundle savedInstanceState) { + context = inflater.getContext(); + + View container = inflater.inflate(R.layout.post_replies, null); + + Resources resources = context.getResources(); + + listView = (ListView) container.findViewById(R.id.post_list); + + container.findViewById(R.id.replies_back).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + } + }); + + container.findViewById(R.id.replies_close).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + manager.closeAllPostFragments(); + dismiss(); + } + }); + + return container; + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + if (posts == null) { + // Restoring from background. + dismiss(); + } else { + ArrayAdapter adapter = new ArrayAdapter(getActivity(), 0) { + @Override + public View getView(int position, View convertView, ViewGroup parent) { + PostView postView = null; + if (convertView instanceof PostView) { + postView = (PostView) convertView; + } else { + postView = new PostView(getActivity()); + } + + postView.setPost(getItem(position), manager); + + return postView; + } + }; + + adapter.addAll(posts); + listView.setAdapter(adapter); + } + } +} + + + + + diff --git a/Chan/src/org/floens/chan/fragment/ThreadFragment.java b/Chan/src/org/floens/chan/fragment/ThreadFragment.java index a8ec0fb8..a75def12 100644 --- a/Chan/src/org/floens/chan/fragment/ThreadFragment.java +++ b/Chan/src/org/floens/chan/fragment/ThreadFragment.java @@ -1,6 +1,7 @@ package org.floens.chan.fragment; import java.util.ArrayList; +import java.util.List; import org.floens.chan.R; import org.floens.chan.activity.BaseActivity; @@ -91,7 +92,7 @@ public class ThreadFragment extends Fragment implements ThreadListener { } @Override - public void onThreadLoaded(ArrayList posts) { + public void onThreadLoaded(List posts) { if (!shown) { shown = true; diff --git a/Chan/src/org/floens/chan/manager/ThreadManager.java b/Chan/src/org/floens/chan/manager/ThreadManager.java index 90edd4d5..b60097b5 100644 --- a/Chan/src/org/floens/chan/manager/ThreadManager.java +++ b/Chan/src/org/floens/chan/manager/ThreadManager.java @@ -1,13 +1,14 @@ package org.floens.chan.manager; import java.util.ArrayList; +import java.util.List; import org.floens.chan.ChanApplication; import org.floens.chan.R; import org.floens.chan.entity.Loadable; import org.floens.chan.entity.Post; import org.floens.chan.entity.PostLinkable; -import org.floens.chan.fragment.PostPopupFragment; +import org.floens.chan.fragment.PostRepliesFragment; import org.floens.chan.net.ThreadLoader; import android.app.Activity; @@ -21,7 +22,6 @@ import android.content.Intent; import android.net.Uri; import android.text.TextUtils; import android.util.Log; -import android.util.SparseArray; import android.view.Gravity; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; @@ -41,7 +41,9 @@ public class ThreadManager { private final ThreadManager.ThreadListener threadListener; private Loadable loadable; private boolean endOfLine = false; - private final SparseArray postsById = new SparseArray(); + + private final List> popupQueue = new ArrayList>(); + private PostRepliesFragment currentPopupFragment; public ThreadManager(Activity context, final ThreadListener listener) { this.activity = context; @@ -54,11 +56,7 @@ public class ThreadManager { } @Override - public void onData(ArrayList result) { - for (Post post : result) { - postsById.append(post.no, post); - } - + public void onData(List result) { listener.onThreadLoaded(result); } }); @@ -68,8 +66,8 @@ public class ThreadManager { return loadable != null; } - public Post getPostById(int id) { - return postsById.get(id); + public Post findPostById(int id) { + return threadLoader.getPostById(id); } public Loadable getLoadable() { @@ -85,7 +83,6 @@ public class ThreadManager { public void stop() { threadLoader.stop(); endOfLine = false; - postsById.clear(); } public void reload() { @@ -131,14 +128,14 @@ public class ThreadManager { @Override public void onClick(DialogInterface dialog, int which) { switch(which) { - case 0: // Show clickables - showPostLinkables(post); - break; - case 1: // Info - showPostInfo(post); - case 2: // Quote + case 0: // Quote ReplyManager.getInstance().quote(post.no); break; + case 1: // Info + showPostInfo(post); + case 2: // Show clickables + showPostLinkables(post); + break; case 3: // Copy text copyText(post.comment.toString()); break; @@ -252,13 +249,27 @@ public class ThreadManager { } } + public void showPostReplies(Post post) { + List p = new ArrayList(); + for (int no : post.repliesFrom) { + Post r = findPostById(no); + if (r != null) { + p.add(r); + } + } + + if (p.size() > 0) { + showPostsReplies(p); + } + } + /** * Handle when a linkable has been clicked. * @param linkable the selected linkable. */ private void handleLinkableSelected(final PostLinkable linkable) { if (linkable.type == PostLinkable.Type.QUOTE) { - showPostPopup(linkable); + showPostReply(linkable); } else if (linkable.type == PostLinkable.Type.LINK) { if (ChanApplication.getPreferences().getBoolean("preference_open_link_confirmation", true)) { AlertDialog dialog = new AlertDialog.Builder(activity) @@ -289,7 +300,7 @@ public class ThreadManager { * show a dialog with the referenced post in it. * @param linkable the clicked linkable. */ - private void showPostPopup(PostLinkable linkable) { + private void showPostReply(PostLinkable linkable) { String value = linkable.value; Post post = null; @@ -300,14 +311,12 @@ public class ThreadManager { if (splitted.length == 2) { int id = Integer.parseInt(splitted[1]); - post = getPostById(id); + post = findPostById(id); if (post != null) { - PostPopupFragment popup = PostPopupFragment.newInstance(post, this); - - FragmentTransaction ft = activity.getFragmentManager().beginTransaction(); - ft.add(popup, "postPopup"); - ft.commitAllowingStateLoss(); + List l = new ArrayList(); + l.add(post); + showPostsReplies(l); } } } catch(NumberFormatException e) { @@ -323,8 +332,48 @@ public class ThreadManager { activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(linkable.value))); } - public interface ThreadListener { - public void onThreadLoaded(ArrayList result); + private void showPostsReplies(List list) { + // Post popups are now queued up, more than 32 popups on top of each other makes the system crash! + popupQueue.add(list); + + if (currentPopupFragment != null) { + currentPopupFragment.dismissNoCallback(); + } + + PostRepliesFragment popup = PostRepliesFragment.newInstance(list, this); + + FragmentTransaction ft = activity.getFragmentManager().beginTransaction(); + ft.add(popup, "postPopup"); + ft.commit(); + + currentPopupFragment = popup; + } + + public void onPostRepliesPop() { + if (popupQueue.size() == 0) return; + + popupQueue.remove(popupQueue.size() - 1); + + if (popupQueue.size() > 0) { + PostRepliesFragment popup = PostRepliesFragment.newInstance(popupQueue.get(popupQueue.size() - 1), this); + + FragmentTransaction ft = activity.getFragmentManager().beginTransaction(); + ft.add(popup, "postPopup"); + ft.commit(); + + currentPopupFragment = popup; + } else { + currentPopupFragment = null; + } + } + + public void closeAllPostFragments() { + popupQueue.clear(); + currentPopupFragment = null; + } + + public interface ThreadListener { + public void onThreadLoaded(List result); public void onThreadLoadError(VolleyError error); public void onPostClicked(Post post); public void onThumbnailClicked(Post post); diff --git a/Chan/src/org/floens/chan/net/ThreadLoader.java b/Chan/src/org/floens/chan/net/ThreadLoader.java index a93e71f2..cf8dea4b 100644 --- a/Chan/src/org/floens/chan/net/ThreadLoader.java +++ b/Chan/src/org/floens/chan/net/ThreadLoader.java @@ -1,12 +1,14 @@ package org.floens.chan.net; import java.util.ArrayList; +import java.util.List; import org.floens.chan.ChanApplication; import org.floens.chan.entity.Loadable; import org.floens.chan.entity.Post; import android.util.Log; +import android.util.SparseArray; import com.android.volley.Response; import com.android.volley.ServerError; @@ -18,6 +20,7 @@ public class ThreadLoader { private boolean stopped = false; private boolean loading = false; private Loadable loadable; + private final SparseArray postsById = new SparseArray(); public ThreadLoader(ThreadLoaderListener listener) { this.listener = listener; @@ -52,9 +55,15 @@ public class ThreadLoader { loader = null; } + postsById.clear(); + stopped = true; } + public Post getPostById(int id) { + return postsById.get(id); + } + private ChanReaderRequest getData(Loadable loadable) { ChanReaderRequest request = ChanReaderRequest.newInstance(loadable, new Response.Listener>() { @Override @@ -76,9 +85,11 @@ public class ThreadLoader { return request; } - private void onData(ArrayList result) { + private void onData(List result) { if (stopped) return; + processPosts(result); + listener.onData(result); } @@ -95,8 +106,20 @@ public class ThreadLoader { listener.onError(error); } + private void processPosts(List posts) { + for (Post post : posts) { + postsById.append(post.no, post); + + for (Post other : posts) { + if (other.repliesTo.contains(post.no)) { + post.repliesFrom.add(other.no); + } + } + } + } + public static abstract class ThreadLoaderListener { - public abstract void onData(ArrayList result); + public abstract void onData(List result); public abstract void onError(VolleyError error); } } diff --git a/Chan/src/org/floens/chan/view/PostView.java b/Chan/src/org/floens/chan/view/PostView.java index 68af263b..a7d0509c 100644 --- a/Chan/src/org/floens/chan/view/PostView.java +++ b/Chan/src/org/floens/chan/view/PostView.java @@ -42,7 +42,7 @@ public class PostView extends LinearLayout implements View.OnClickListener, View private NetworkImageView imageView; private TextView titleView; private TextView commentView; - private TextView repliesView; + private TextView repliesCountView; private LinearLayout iconView; private ImageView stickyView; private NetworkImageView countryView; @@ -81,7 +81,7 @@ public class PostView extends LinearLayout implements View.OnClickListener, View } @SuppressWarnings("deprecation") - public void setPost(Post post, ThreadManager manager) { + public void setPost(final Post post, final ThreadManager manager) { this.post = post; this.manager = manager; @@ -162,20 +162,32 @@ public class PostView extends LinearLayout implements View.OnClickListener, View post.setLinkableListener(null); } - if (post.isOP && post.replies > 0 && manager.getLoadable().isBoardMode()) { - repliesView.setVisibility(View.VISIBLE); + if ((post.isOP && manager.getLoadable().isBoardMode() && post.replies > 0) || (post.repliesFrom.size() > 0)) { + repliesCountView.setVisibility(View.VISIBLE); String text = ""; - if (post.replies > 1) { - text = context.getString(R.string.multiple_replies); - } else if (post.replies == 1) { - text = context.getString(R.string.one_reply); + int count = manager.getLoadable().isBoardMode() ? post.replies : post.repliesFrom.size(); + + if (count > 1) { + text = count + " " + context.getString(R.string.multiple_replies); + } else if (count == 1) { + text = count + " " + context.getString(R.string.one_reply); + } + + if (manager.getLoadable().isThreadMode()) { + repliesCountView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + manager.showPostReplies(post); + } + }); } - repliesView.setText(post.replies + " " + text); + repliesCountView.setText(text); } else { - repliesView.setVisibility(View.GONE); + repliesCountView.setVisibility(View.GONE); + repliesCountView.setOnClickListener(null); } boolean showCountryFlag = !TextUtils.isEmpty(post.country); @@ -275,13 +287,13 @@ public class PostView extends LinearLayout implements View.OnClickListener, View commentView.setTextSize(15); right.addView(commentView, matchWrapParams); - repliesView = new TextView(context); - repliesView.setTextColor(Color.argb(255, 100, 100, 100)); - repliesView.setPadding(0, textPadding, 0, 0); - repliesView.setTextSize(12); + repliesCountView = new TextView(context); + repliesCountView.setTextColor(Color.argb(255, 100, 100, 100)); + repliesCountView.setPadding(0, textPadding, 0, 0); + repliesCountView.setTextSize(14); + + right.addView(repliesCountView, matchWrapParams); - right.addView(repliesView, matchWrapParams); - full.addView(right, matchWrapParams); addView(full, wrapParams);