From 32833706b267674efca4b9c7284d9e0b9e9c03dd Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Sat, 23 Feb 2019 17:13:10 +0000 Subject: [PATCH] Add manage feeds activity with basic feed layout --- .idea/assetWizardSettings.xml | 5 +- .idea/caches/build_file_checksums.ser | Bin 592 -> 592 bytes .idea/caches/gradle_models.ser | Bin 264200 -> 270975 bytes app/build.gradle | 4 + app/src/main/AndroidManifest.xml | 10 +- .../com/readrops/app/BasedRepository.java | 3 +- .../com/readrops/app/FeedWithFolderItem.java | 80 ++++++++++++++ .../java/com/readrops/app/ItemActivity.java | 2 +- .../java/com/readrops/app/ItemViewModel.java | 4 +- .../com/readrops/app/LocalFeedRepository.java | 2 +- .../java/com/readrops/app/MainActivity.java | 5 +- .../com/readrops/app/MainItemListAdapter.java | 3 +- .../java/com/readrops/app/MainViewModel.java | 2 +- .../com/readrops/app/ManageFeedsActivity.java | 34 ++++++ .../readrops/app/ManageFeedsViewModel.java | 29 +++++ .../readrops/app/database/dao/FeedDao.java | 6 ++ .../readrops/app/database/dao/ItemDao.java | 2 +- .../app/database/pojo/FeedWithFolder.java | 31 ++++++ .../app/database/{ => pojo}/ItemWithFeed.java | 2 +- .../readrops/app/utils/ReadropsWebView.java | 8 +- app/src/main/res/drawable/ic_delete.xml | 9 ++ app/src/main/res/drawable/ic_edit.xml | 9 ++ .../main/res/drawable/ic_open_in_browser.xml | 9 ++ .../main/res/layout/activity_manage_feeds.xml | 17 +++ app/src/main/res/layout/feed_layout.xml | 102 ++++++++++++++++++ app/src/main/res/layout/image_item.xml | 8 +- 26 files changed, 354 insertions(+), 32 deletions(-) create mode 100644 app/src/main/java/com/readrops/app/FeedWithFolderItem.java create mode 100644 app/src/main/java/com/readrops/app/ManageFeedsActivity.java create mode 100644 app/src/main/java/com/readrops/app/ManageFeedsViewModel.java create mode 100644 app/src/main/java/com/readrops/app/database/pojo/FeedWithFolder.java rename app/src/main/java/com/readrops/app/database/{ => pojo}/ItemWithFeed.java (97%) create mode 100644 app/src/main/res/drawable/ic_delete.xml create mode 100644 app/src/main/res/drawable/ic_edit.xml create mode 100644 app/src/main/res/drawable/ic_open_in_browser.xml create mode 100644 app/src/main/res/layout/activity_manage_feeds.xml create mode 100644 app/src/main/res/layout/feed_layout.xml diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index ffab1ed5..a78e40ab 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -18,7 +18,7 @@ @@ -28,8 +28,7 @@ diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index e436a338c78856463bfe5bd672e7fa4dd4e74ad0..0396ff4e455061f9d864ebd07e118b59e6afaae8 100644 GIT binary patch delta 32 qcmV+*0N?-61kePKnFHL;46&S}0TB=eoL0vb2xXTga)D*SOy9?U8GoJFR{^Cib}Cp6l3gBk@AZj1rtLwfE^Vht};fA-6%!{ zG9oZ_QfGT$be={t`|^^l+waBYAk7$k z;hF6#|5Lq&);Dp2LjX<7$4$0hOB-H0&F35FHa6AMI}rGJD4a1;qyi$H&IS#s$Ur z#QVhr21J{KVuweY-=;$0L^J(ShYC`Tc0zS5dye>rzJ=(&?|HnX&XI_UF|ibHZAv2% z@~@y8mop9M6*KbhUa<~&O^8eU6gzlLN?3ZMcU#Nq=dCMfA&Np#U0QiAsi>)G+FTM@ zK{A$tZ#@QoS!+T%3y%7>!C@P4Zx6JV9Ug@zIT&rM3t^}U<6#9);j?Ss@T2(>YHhYD zWa~=-=HcFcak0K}!(#$`;sav*<6_N0!QQ?Bf&S*6cZO4XSl7j51cwW#3qKwEUjZ7Mbo({LHN(Ounfg{Qkb zZ|sUSo#^UcD!e{3PMzCUaC}CN9bt*cHdoZbX}fSe`o(x$!R3znRKZp0pq>>s^G`i- zyNY%yvKNkssGxl(Bw8YtSJ=D{6LCnl3Nq>KnKUUW0cHSw1|7NvWuv_omu-o3@>=u~ z9klptpF*GS$7Y(l4h6|^>ro$qGU%?2Xcu;@O3^+PNOLx!aQS{Vaz)s&CS8?B%rw6P z3a5iRBa=M)TO?_;8CRD1oTWeSKp~c1>;0%E7qv$dEyd@|Jh?3w{ewQ^^9rObqt=?} z~tQ}hQJM=$I|PtYM=fv(z#{AhRrQmQD)ZGCXCnxUn$cHx>d z^h4~=v8?OFmG)@Gx&&3_y1UQ`#Pr|YjW(cuG-4w%({K;enrinlR)b{LMYG0`@m1@a zhxqK5c9L~1^#?Qpy{4!u4y3s!kO2T+dGH}*U^XB$`Vg8X-#LtmfcVMdXgj(>$0y+S zmfV+~a_NuA8KFNQyr?%pl>oGuo||acCdR28k^el2CPDSlr_mNP%aVD=EcePs;Rwx@ zGYe1@vneHOg6Y1ED1;8Xz&J&pM{UqeOVp;otlvN0V zE`&zN$d$g@hu?J@LzT&SXoWev*#GVvN(SPPcQpW?hW|Q%-+edbPG1kg?>qp-2XVW1 zckGz8_A+(*MWHL>DaTh&;QV$=ZT(psE&b>_7EK!Qs zzs-u~gpsHVH5IZp*i(qC`x6a^IwPKz#_Womkva9=vVGM1pI18m%T#8502``xP{nx!LCD*i;)T>5%>#zdQyS1<@nnqn};ZNmH z-ovTPJ+8$}s6w}l!L4Yj8HLiMdbl+@E$7w4vk^MOw~TT^0}N}zCxtFO=pJVrlJ!2G zj&+rJC)jfb88yW<5!Sgf;%q6Y0hN2`n#0MucVkw4}vC6W(@`gWc5`g`UlntRa3&c{`;#eRf zKLA(JEdy)?P56ZMGv}7SBOiY4I%W8^t04Cq5F43&%rwW0gV7p#a0K(lI)OM8WynJU zaeW=LVpJ^4v=&QTPpRxjNFOpZSsv2?Mt&_lxRy+(<0iAw&FP549f7@Kd7C;nic3k zi-MWu*^|G#y$=oodiVO_Y$U^4N$dKujg`q0>8N1mO-H^|9)dlwzBVnMj>gizK4+ctK1%{=uR>x}`pQcM48v8hzCH|- zO@7Q2rMREmEE@YTUh?2rd=6_f_5|mhQ6{N`|KM>bgU=%Q32YYm@MFwokxU+^mZA;H zB*Gp-WZ6pWL!OL3#TSA1@5#6> zILxb5yaherbiHS>o#7Y9iH@?FkM$ao3#Q_Q=n<_q6{k@)oBDH9cA1W2ShHRsqjtck zcF#IY>eHLEurE5#2DLLwHlgXW@e_1W8Pf$5+33Qqm9i&)3S$aSLG-{;qNfKUv8%EL zWtbn8kCg90At~q2#e5ICECU}w$K>ewcqu|BX(?ga##)%Kq-J8RrRYy1T{X1~l5r-M z!D)6a!ntS|jqZn%=#|CH60uMykRIrdI>{eVe1dgiM%tEC-U&WjF-&V4WBT z9q7!k#+EU^aFcWLRd}gJU$bc_O6?nfO0n`j0#aYDwSxJsA>(?ru=6}#SipwSUU8^7 zJ+>PAqXo2J1G95}95YG$8s^E1EURpL7k>zrpJelrh0V~bbuwzA1sW?s=r+3+vu%SykFV&UfXJqy!rumVvI z*6G8-Z3;UB@TBaz3r8}#2|?E~`1YBu+KWeGT@xO(>^VqI-p67A>zeb3U3CDrmLKlN z-)PuEnROVO+0RdhnfX(x{s>Qn9l^d%slI#feZb6zlN_2_R(x8`lJKdEkS)*4fS)%f5(2>V+ zT~>VVanAbaaqPuXPmkliC{^z9BOZb@)!WWmK_duprzf70dh+!Xc!&laq3uuOcyyfR zWFikbR>PvDo0d4yanDE{d0p~s&o|NN*DS!Q7UC_Mf9~Tx^6^4E8Y53R;2bt+TS)czOKw(C zQ<*p8!XBmiD(EV}hO~4Ea&Hd#?<;S{MP3U9NcnN-6#+KRdW_v%n({1xHlwF6V$bG3 zs!cQ%c_&n`r2tQfcJq~HMBZ5iu#Wn2xB!2KcDokvEP)oPX=3fTIO-XHYuy?o=?vX( zQ?2y$V70hDlNX1KcGTwyv*3l_uoM0K2{zDYOOP{|LBB+4T~u1G0N0{sOcr1k9d;SJ zjr>Y&-vMl_U#g~w_19VJ4{<(y1)qKebE=O~wHSPOao{sZfW9g?RDk}fy$nG-pTEN3 zjT%}jz_aPq?}`d+_jZjD4CZ+P4pGy@TJu4AA}2Uj5FA%!)b;Laas5GF90*Pn;14Ru z<5lVTVNTEkjBuRi3xfJn)a4R(Lq`>xDNZ8PDgFUzVx7`{kPD|YTTn{(EV8yyi%W{h zfl`J56}tnNDZu5b&7@U!l%#bEkbAJZ7*uHm_}IwRJWHrqqo#>9`|y}6oZl+JZ}o(I z%VR}xD=!XI)(dc#3T6v%kKlKJ=L?fbhZSJ=nHhIPg?*f#GA065h6B>Xx_IH#D9-PD z!O!~p?#D*8xL)ZV@Y^durH=p}6yQ3QpMIkqKmBF}XgtsNCsE-WWq`AJo`5&0X%-X_ zC9gTbd_l0lH_@}YTHL6(EO0p|K*etXydc2VoL~w=jp23#jqMfS^yv0=MTJlfvhwIX z0Y<3wxF;Lis%c`4-}_rBr+Z7#y*)eku!v#Fr&+mD&3#p=B!ak9fFg(``yiIef;gn4 z%Un^x%qLsB7?wgPD#ETEwGJvLEqd6hmd#WjRZdB(70P<6ph19r)G?O&^L!g09IODp zCTVQu|GwM@2k!K1;=E$yUnpmTzrpIxD-h!ad-JM$>3N307YXbzR2C+6+ zfJzX zU3M=7hU65ziL}HC$7GoJWP{MTN@>!D5~#;HzqySeJEgF`g6L zBnW;xd+WU2qIfhf4kMl;z~L&mU4XHI;Kw}QhT!NjAiZ6@s1UCZ9KrJhJW@>)>$FfG zh2Rf@;32=?do)msOV4<5Ab3oG&sFfG0AFx|y;xDB1J4%(jT!}5&@g?WsPL*>i>*r{ z4yuKWn3i70ZXOpEf`AkE376~a1V)$Wy{V*z7ke}))c_Rpm;skJp#4KtXwV2d>J?TZ z&q)DJdH z?+%n{qG~oyP{HN`Oyc9mHw2S-zKxqrRsf&1ABjLUep0T**3CZSpwODErir!M^&thE zZit}UDtl?Po`?!_L;x@g}eP2-_o^J^3!d4nd58lRZ z9eN8&AACG!!z{I$zPP-bx_$z@s)BwBQGlCOf(H8#F_eYK>@SM@hzeVk zsm?A&47M?{>(^`-PH?IqIIZ)r`HO`X7nO@JtD%Yt&J`uyI6=N4sK)b!1r4?6!MiNj z4IT=o>O5amt)ZrgH8pyb61PhQr)68Nl9_68DMD?2r2yNi;93E;SB)lh=J|q?)Lj8? z7d95Fx73lxZ5N&;)O1zT#F~d6`*53W6a2PM{BqfAQC!5WEI<*rVx^OmxaISTecVcA zaof{>sm&ql6VA^rP$k1it{@m_?>)||M@p66@%il;9sW&s5mZwX9RdpwV$EH z&VGi+3eeZP+jpYE17%$(RSl->LLbrmT;kT@s-W~o*C{;)h&-} zl-^euh`bgGKu12DEx^W#&o$+F0&b?JiPe1RU@5oRb3yQ*XPtKRSBvYF9sxly(E3MQ z2Lm06DEU|=sQ+8xBl2D-K$qcj-39oR&m=C&Y9!$2H18pHZR}V@<>ctvW>ldtnm$i$ zzABAiW#L*z8v9ijQ~me$1okLE@_<7FMN2!Csm#jr1iVX46KmGE+&aL+v6*1g{7BJl zajG|@@#0X%OVweRs)Bw3oUU5PFq`L#s5Hz|fSLciv~h%)$`GdWJfUZfnkLqD4_5c& z1ltON?LKa^(^D;OjON9GU?%|%SHW%qjO7GjDl>k}^94cUXqs1w-BRMq>)9@#BRDAZ zj8xO?1wi#J{H>VdKtXWOuQNV7EQ%Y-bvh0cprnFg8ZbI>f_%L<@q8PCZVK>0-8y35 zYphhR#g?uM2SroLv<_)v-EnqEF}EjwQ^sE^Iwma|zf`;DC)!MVbo^Io*BHddu#R6-v3EfAm}y-0v9 zggw3O?dh)okq_g={?6$6HhcQm+0$1|6KlaFk1m|rRf&sC|po2o@$pmNzS zz(N%~B*3$3i0gml`NBc^ty{P_NE70(w#YFI~C|HWSTtWZ|})hY#L^@ zf-0l32(ccs_W4zN6QF4zrh%9NA{|5qh%Z4{K)|gU<5wWQ2C)*vY7lEdYygoB;#)hD z^1q_yf)}F!2?c{LZcs)ziSEo~H=OWG+)i_(=eBdopHBzB#ES?1z>1Io}TdhhzTbG!U=>sh}s~Ufba$p z45BUF^$NF2$${tZK^z2e0>l{*mp}j&CuqXyFD9HFKo~$&0Z|h~LlEFz&M+X(VIbh| zq0Uht27-tIF&YG1LUV@kcAf=d!Fbx{HLk78WeI(<%>K}vj8oD#{W8zV&P@Lwx-a*P zx4EzI+;?}{BnRElG0`K&4o%PpzCMDK2~)$aCOCY$A(9Y;_RyXhVrg;cXJ@%X*);<6 z9vdahj|j$Nj}JbZ&5~spjOA~1wHNWD3GAyDxQ_6C*wj(()`u+7^ND~|W9m&a#gQWR zb3cw;MQ7#wc(T;sQTB&o=ofLHySXpC@zuP(cE#?{ z46+S*JhClcElfWEh(4xsXOR_fRc$)yO1%?s1T{@326jtL0IRB@sxteC(}d*lbI2}K zwftSOVyjNeeHJiPIw#t89$5pIFr$~S?+M_NW!8LBjorZ%z|Q%^NIXJpnPi1bKL*uX z(|Va?A-he*>^z+o?PNA<$Df(eI?>cV*jEm*koU1iZ`<0#&bHVCwfoRXi^*ctkJhV- zW+}A?@nxe&PH)ccS7RyN=jHc4G6>N;A)2tQD(`IqkqU?)>U^=WJVx68V5Sby(kvwEIxY<(M zre`$LCqvWA>3eHg(+E-I2^?u+iW!iE}R?-8or~aHjpeN z(~^y3F4paq*>4--al*Fj_i~TQQ1%pUx0#LkX&B-*$`#w32H2#udBz@vmf;iL04VvJ z+%$*mMjmBvuoMR<`S3c)n2j}RV{zNqv-q2@=G!3 zYe6gTCrjXNc$zcwaJU;z>l`4}*$qb(kaG@@3)rL3wrg%5wt;zC+m)_3#9aJ5^*Kyt zvx}7MXBIa~uOsA3jBeASW6Y)Q(kI85OFd8=sQk*NiRK<=F7e17O=yU^)BMlb{ph_X z$VODP{EVY8?{4YQfVHeAbn+>(3a*U1Y$dJvm2t}Mhcl(;nNrCf<=!^vXV#Ib<);-z z-^=-jV27ixNxK!01^mkGOf-{Ss+EgpqPa*eIYTUrL)i&Jsq<{|j|EW2k1jn&7O|U! znVxqwMX4Qsc_qV%YIHW>9pI>07|RNL4RU8Wl?{vPZe2{%vHD z4%aW`+LuTR>{0fbLD3uV-naWf?|OE~W)|KEwwyzU6|$*jv+@k<0(=b+Oxuh?RDQo0 zLbmKhfTH8P<6hVhva!5*m5t?oS}+dH!j6Yz_B$WRnb!$L$}5iYwPeKKVHW6rHyV1A zwHm36p!lqz=oWFs`rdZ1%;3`)Mbq57%qL>lU01Xc79xE-%%)4Qex%HP*AuzeJumx5Q5wPi3jt;QZ zFF!Rzu}7$4b9OinNvNls7#g!DV@D9mnM|CAssbo>SF@lO>@sNfW75tsqb%{~W8&+y z12X28AwEw?<7TG;$pFE3Vwvz{0kIeaKTRwvE1&j+G;{(^M*de5xNZ7`)OS2ymVNOF z33TK)qgYP0rzFVHQkK*2DG4>f7TLHS#0C)G%Ilw!sjxMB|8H`XeWUmAZ&KCm*pz!) zV3RF&Vy-RNWYdM-I*n`7v}eR~$lG>Wt}Q?%4AEORVy-Q|ZQOA>%qy<2^%fg3SHc+< zIE;N90z+*)XDMjurZZlswK?xHKkCRK&q*SR0^6F>L4cJ^U>g$znh6YKf}N`gzFIKB znai{VL=FfU1O$%hAc#XC;7npF;76Rrbv4?QS1j#PAA~;$7+;tEAm9@im&qW&EnMKc z2bXOi4ugPkaDl^=%X22G!0D(8bfJnjh_)d5fQSb%3B()_%Ry`faR5Z&cv|y0Zp8jB z0I9!})7`ljWExvhO;39vRDy*rhQvL@YAi`d0V*de}CTQ2VfB& z{1p6O;v+GIHE$D{aB0-WI%XL!Wl$m5bjKHPj{^f$?A~gKF|Hp0?BWg zK<|O0utV_C0VderJM+I#;8*m?E0W*oZI19SeBl4x;b$k-_Z(fhtMK8kwd0y*DQ08N zw%-5O$DD3^O{(-4!~8Es_}>h!^T~wLPyfCOSJ9iw*&2-pOhX5>nw4xC8m7~*X=rXt zrj`2w6Zj?*u2X1n61$&1--ooM3;tvu37pkwJU@8rWW?`>;dD5EvYKz7k*53-=rN1W xNMArZjX=PD!!?ewqhS*|*-;}oo4}0~e>Az%k9(5du#TA~(1AKqlT<>J{uk^gK~ew! delta 14810 zcmd^ld3038ws)%Pq{oDGCm|D4Kp`Ly5(o)|0Ex^qK@l+;20@uk0GTlaWe9=<8Yn<8 zOjiaO5+EKsAcRQ<5dv}rMMyx9@k#Kaf-=0ltC~}xuj{?H-nYKBzO}ymvCpYr?b`J_ zyY{Z3Q%?>$X6HKc3u{|H`*zqGAN+G|d%OOQ8@21V(1s*6YrZ3FK#8W^T3qeN9k&N> zBif$xi`VVQdpkVBH)hOepQilOdJ?tcO7_6&JM5eH?k4s1uZNH=4ictMoJgkn!t;;! zNTY^f&A)!3{+LXk_k1e9i!u!QX$0+)c=l%`S|72Qd_gQTtL?7=IB}&Ois!jSB!RzC zNaDzcJY_1Cfc~VAFhb_@?0Qd;44s^2zG=13_TJAku9HMw(u*YXeY;2!HC^SG&af%^ zCs@x>5D{2R%hS@oQoKd`|i%UVf4$^5hcm!;KT9F{#aKjt4aa*5{lg zgw(^&OW={ulXkl46e+^b*ms5$kZ<^<4{0)wIZI;oEB_=m`1n)&R0+%GZ#D%Yk>8Od z{im}egIUuK9p3#i`kWU`N81-k5t8`2nwffX3;d zyAwRIvrEExUSa{J(_%<-KH@ToC%yUV4}f*a71E3!cnBtYULjq0*2lD|#7tMf34Qs3 z12kTTswx@~A90=RB84vJQt-=7lA`C`Ai;#V<(OsMA}KteBMH!9;B2VA>^HK8YPVc_ z|2dLx`kjX~0=-#{(n2y-jFv0rK})?oqXC3u^VCix9)NE8_Zs~b6^~nJ zJ{iaF-e>Rfu%Ez_8Aa5}`;R9veAGDN;8Q;azY8qiM%$1{vR5x9>{>O{FWc#xFhac| znjaP;lzA5Ht_lWE?+Kvs)bvP>nLr#rz!;5iP)H8KGdp_}^)e^DiS)j%OixvcgT%8m zL6I=lXC~jbnoQt96KSBS8DcGDPGyABF5v6bu`Jln(h@7$plBxs1}fW{M`IdWT6?|# zklOsyi*JV0R@8ikXWD22FN>fr>Qy6XD52(ayk-QQ zqwlRk!!&E!xw%J%i0n^U(TwNsWG#8`NSa7m@>64I!jczAOI@o;odn1w&jvpw*Q7mp z_r>s5(g4D_(sOhs47vTM5vBZOWt!;9KkU!T>d^NH6aIKwZl?bbMXM5G=F`kt{8Kc+ z6?wtI?|eiRqW@Ko=A-X6H>97ECNL)@@QfIk2KGeLCnUjDa1wfMOq;rT-tyI>W9XNt zd%Fo;Lb~zQzmfQbcN+2Qar9p#RfOEaJFWH9csd;h^vau~1BHv^B+!Pm=BbG^iL4Yh z`$Ji0EocxSt2y}+MiP*=yfm5EJ<~`VlB@@|q;s*uykxqc`d*MjUecDf)i0#L=TYBF z;`=y4{EZiBAWzx`+=a%IHuA&rJJ1!RJujaOK6H#E(Y&A|y-PatyVoFhBZq;*Lp#$+ z;M6Q@!$ESgE9pju*ayS-`wl`eL`)I@#_=uPA&`b5IKp-63b>{lZNj5_P%{}VgUNRk zR*pq6PB=)a?Cn8KB!j2Ugbx*M8ug@h-?Wpd$z`7T^<~;b-`tZH_`>I=ze0=2E}4(X z-?Y>h_Q8DI%kKu#1Xsz?ByN8dKJ~mt<6Kz1v@gv9htHU^|6NaH#q(+Dv=v|U25mt` zVq{4`Z<~&xm5HI1z)PFL723YhQqp$AT;&)BWZIS@S_=YBbgyr#2!f`K`+b1q|f28X~4W^61cJ3 z0a$US>F_2LPK=?wq31>2DiOZN1+z!l1n6k-c-oMfZ%fAuBwzvYcQLIo6dttGS*(m8Mf*88D4*frsm;|Ais6Y2U9SF`p(O~)_!})yGI@X%AS&%M=M7m&E zFPw$xa#W^^(1@8$1J{G|aj8h1M?d4M2}DRnQ8Rt`N7R>)@p|Tb+7W8?A{UJ``KEO` z{O&EeR?LD`tk-fHPj+MCzN>sBcHZ`w&xE&r72`F zcRuF<^rH2&Iw8vzC&SiAEG)$zv-Wz~M*2Az_%o+>q%a^h3mMyJb6#mHZ4T*;d97z{ z1=m63!DI|;O+M7_84Ro5o%s;$P+SBbHY0n>G*9kLA%U*kpCb9YJ0V}H=mk6JAVO*w zyBATZzxO%a0UcirYyF+*SmZJ+Z9_;pAAlJK?@f8$CljitV6 z2lxE?BhPOLfn9O}`l)t|HYJ+aLW=VICB(!J9-|M4g{N>bS#N%vZWnX)Nr=(PVo#-) zl+Xl1!o?y7@9{iq0I;2U3NqMo3ig7C>E)+scWl`DJGz1T{w8yR1IlPSc&slI%}dK@8^7pvlQau>laBRiX z^-nZQBV%~Y>k!)GTmx=~@K3JO_gam^Ri5TNfj@Y$PsCz{Ej>YS9BDOcN(R1-2SIA1 zcn*Z+WjtBvGj7mViKf4vmc%dJq{UjDc{~51|Kk=NK}iEW@E2xi!{1BYMjYV>81&9S150;LTEJ1B5Eesx$~%Sc}KbfgKI7p8`7zZ$)(%b!t#-y(Eyouj>@0 z+*SInhp1CdbBYjRFUGhEjg6!sVA@nYquUls^&P`b5#oYdj`8+)%e&GnlMZ;B^CBufUtqTfca* zv;8W8lOx(jDrMMCU>e*JbqX#w%FO-Nm*?*aa-S=5`t1CJBMo(HsZhtE+@-)W1Kg{? z%QE?Y7IkVUtv4l*Sl&r_-+DzP|1kOK%7*-EEHk$w@;`0}awinIlXqHFtuP5aF?f7y z*s%E+;8_Jy={b`ZIh#!a=f-MkX0mD0b7oPeY*>skbMO23)x(0^&x+i&J&)F3HPkKA z@#wi*3Y6YQ@Qwn1^+et8UhFJ?N}y5am`+Ojo+s-5FzCn$o~>QvO(PD@}-vr|)*@^Lw^Cq@_HD zQDCtF7D&(+T3Ys_7hx~*m8exrEypBqJZ8T|**J)9guRGNH-*bg!!mPsZ4)o{BEH4S zkNbirByKR&ZG8+XhZOj#0UlN0YcgBYz1Z0XN?^jn2g8-}>%y)5`iVLP%Y_@u%sp4=-r{*ig5sLB60sHOQB^)0YMDoZqN3%6oXN+a)dY^DQ*hcC(Bn}h;zU7M6-DN(B-xyZxHH2x@`Avb52KYdMwd9c6>qs)H;spuBu6;wLt^Ij9 zr1mILsg&y)W#$gMntlq2nJfl9lXc_r?#m5zn~}FBe+3$OYjP?uP^N}=-r6E~8H3yi zmQ$`*rrIiIYFyQ~_6jkbF8kg2A3rg= zv>91ynxQ}=OHDZntR-hQ?ir6mzS7XaJ!|7&az)iCVy&l zV&#TgRw{6*0j^fyav5izh&q)8)-@7%C8moSN$Uz3XEMo@4Vhn9X6{dyv@8|A%2(tH zI#2CZA$m#;9)*StOPK+>6(~*$5NAJov9sKi03UW|w$c_y1&Fh2qEg}4jWTn`|G4k2 zpm#*kJNlqQ;j2nr&eu5HY8JN0NgKgaN^`rILV_%xd($i8C03Zyc8W=3m_;`T$PM@x zMwz*rHN2K32$d;9ms$=#UBO@P2zBiHs_Hw#0BU-cd zr9M{h>u(t^DiuD#C^Pqxck*ipe)ko>2ZzdTY&6uZjf6V#d!)dar=Xee0kC(F3unAQ z6)$U|1ZMvA=$dL9C&Mg3)G4@`QD*LSzpU%3cx;;RsqfTW7It(ye zfnrA)R@WXPDiu3>gak?_J>p6`Sa@x?JycXGJj^J=VLp7z0YR^>qF3+SjEM&gb(;(d zq^CIBWMm-NSZNl?8DozZJKKH0?!%XKz`Q&TeEN{b4Fbhs2W4tWeIe@^OoA0*?yE>k~5JqDJLN;Gxw

+S9IWNEEb|Q>^AwnCfD073&@+uK5tYhymgT%S0H(1;GT<#- z)T?$&jWTnm6^`pB2(40tR&UzlnfuqAJqrXmU6K2u|NXCrDl4;uI`Y`9z}W^^tiU;vocGz-<~bXe zj2)~tX12MKoE!^fLkRwAH=HP`7q4c$`sSM*}>kz|JxoyNfzC zlGa`l&=>rpLXvlt(`*k>r)=~z%FKQ9P*$Gs+%-k+`r1`FYG-U~B-GJ!w+$P%7y~R< zU}Nby?=`^YSpy#X9G|R|A;Ft2&^BVScGC-W){eu_=>iyXv>PWtZ2)Iwrpt2hPG^I%Z9dWXv>DSY-r1d zwruNApefry6lYLeL4l_1Xv!{~t-jNd=`-p*dn2rhMbQLB0*V$W@CJ=N1w}g)9Z+;Z z(G5ip6sahBqv(S|Zr4-?;$Ld%7zU(o#sEuEbNFXm5+5AO+Gy35O=UP1p?p@j7Q(*| zWs|f1*l|q$+@vg2LbJIj7NA&&!i56A*}fRX5)>T8QWVQjEJyJ%iWMkUf}nD1rA(tw z?W<4}peV}h4DtZJ9!K#{6c%lw;a>^>RB zzpBn$4KmFu=9}>r01OSmK#)OZfA`+L2Xhn#Z~o(X(Q6DYR$QevzP|>m+kK+fn4t~- z@o3{Jh`;^swEy@9p>@P@*B}4Cto}Rg{{}x^Q;X93MY0S^X6hxi*dS_~D|&E_^@(+5 zN4>y@)MnY_ef?%_26rm`SL(mlVcToKi;KM6ghzH^0s8Is>`W95xUBCV#gF^DCGc+N=DJ zIczE1LD)9~ZdE?LG!snvJqrZ6ii-kx|5+qXzcZIjq#^xr{$L%Yu{N6>QBd?9$lsgK z7Lvi-nagIAq4=1^S7pN`SiFd(^98Ifg)4%^F4(zE;{SB96>t@@{|S}^Hy?W~SGE##H0E zok98U;7hC+m-Jh~Gc%7~wkSv8ebUHlu5&ese z>=+5LRP1C);s=MJiOI&7eg;1DckSESQeNqb96=qfM)+qojYt>h}* z))e(y=r3+%oP#yZO*F}u`sy7`wS5JH0tCnU%k~XmP|v2RJ1swwq+7p9L5)Y32aA7 za&RTj!!}a^Iz!uAS(N_=*D>+0#OP<`~X@{$y0YdfMBkXG$l3%gY^4>q!LlfJ1=GQEb6msWr z7!)@?7Ktxj^&R*S?kp$kd%j_>(~u(-Td(W=qWI!tJf;MK{u@{FnIyb`-9--1DWj}M zb|*E6PQPVaNvNr;qK$y*HOi2|Wq$Y!`vkAGXSav+hl}jJc}x-H;SB{~BI>~CB&DYN zJo9@NL`{G4ncuUeaADY$U7RFu5W~e_2hVuStb{xZ0KR z*YVg=xOQjWpu@8^3-KI)q?g}bTN`f)o855z8v+Fm=QGG0{O6FlSiA~SF<01T8v68b zA{%yfb;I@9e2V|;XSND2374#e@GXT)!o24^5{7q#4MYc|C1mgoc7TMMJ?98%=g~(8 za2H^{!S~;Si2?347Azp|3kK!l6&dgrF7mtn_Akr@%{@DP+5Ewjqo<&`g>Yv%%oQ4s zy~}c_#iGMAmW6nJPLR5#w=U&jS8060J+PF{Q!>bGYKBW~8Ds&`qyB(V4)L7yWs9cO zKHG~e#_+TE!8_y7B}wX@H(n5j51r%%>j2j$dfs1bBMI>w&ZWKY%wOWZ$2W|pKZ22& z$L~IZ`FjCA#QfcxuR2C*@`lHW%<&#&tUb^8hSb`rAnzo&UG^!Y`@961?XeO2?nY6WVdk$t% z_})<3ju%@sjXyDKLDbUB3)TUy$;=V>jg}62lwGUGNFSbBNejywf!JIWxE1}|)5Alk z@IE-;qEq4YfZJU-E`T_Q;x-8H;{mp)a7Oq5i;FUwfy8$5KyVM=9wN;O7vDmmSm6}V z6szrU(>FkCW3J~Z3=7a2`=w${19a=53IKDw|sSYi{EY1&5nD5Y?6Ex4Z_8JQ%zM9^nguw8iOvxBCh_g7&AN`1|V5>a_m=gC!7m z@@n@Lm?xNK`HZ@kSRGrx&-X=Ym3?Pb-CS@{oj3KOU~L%5!fm3XHVQmuI$}|v2OUjN zG)0ksqB)9ADDceXz;Ab?p?CvDKNN4F7zyIv&NdNPvmC`96eTDwqqsK|q|<}~cXrMf zP+;UZyQAoj0td;7;p4=km2(4%A{56_;E~8#4k8c_LVl3-ihzjR$aZvuZ%)+6qkSlmLtB@=0@Z+{1)(zjbp;(V%BZ|*Z6o3#Z z61W44g;*4)6A{QFSzyb@UkcX(?d`BP`nYh*^)%ybT==&U(*zX%n_&4rixaT#2@?#p z|EqB#j< + @@ -24,11 +25,10 @@ - - - + \ No newline at end of file diff --git a/app/src/main/java/com/readrops/app/BasedRepository.java b/app/src/main/java/com/readrops/app/BasedRepository.java index fd6a36e7..101fda91 100644 --- a/app/src/main/java/com/readrops/app/BasedRepository.java +++ b/app/src/main/java/com/readrops/app/BasedRepository.java @@ -3,9 +3,8 @@ package com.readrops.app; import android.app.Application; import android.arch.lifecycle.LiveData; -import com.readrops.app.database.ItemWithFeed; +import com.readrops.app.database.pojo.ItemWithFeed; import com.readrops.app.database.entities.Feed; -import com.readrops.app.database.entities.Item; import com.readrops.readropslibrary.ParsingResult; public class BasedRepository extends ARepository { diff --git a/app/src/main/java/com/readrops/app/FeedWithFolderItem.java b/app/src/main/java/com/readrops/app/FeedWithFolderItem.java new file mode 100644 index 00000000..35a59eef --- /dev/null +++ b/app/src/main/java/com/readrops/app/FeedWithFolderItem.java @@ -0,0 +1,80 @@ +package com.readrops.app; + +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.mikepenz.fastadapter.FastAdapter; +import com.mikepenz.fastadapter.items.AbstractItem; +import com.mikepenz.fastadapter.items.ModelAbstractItem; +import com.readrops.app.database.pojo.FeedWithFolder; +import com.readrops.app.utils.GlideApp; + +import java.util.List; + +public class FeedWithFolderItem extends ModelAbstractItem { + + public FeedWithFolderItem(FeedWithFolder feedWithFolder) { + super(feedWithFolder); + } + + @NonNull + @Override + public ViewHolder getViewHolder(View v) { + return new ViewHolder(v); + } + + @Override + public int getType() { + return R.id.feed_layout; + } + + @Override + public int getLayoutRes() { + return R.layout.feed_layout; + } + + @Override + public void bindView(ViewHolder holder, List payloads) { + super.bindView(holder, payloads); + FeedWithFolder feedWithFolder = getModel(); + + if (feedWithFolder.getFeed().getIconUrl() != null) { + GlideApp.with(holder.itemView.getContext()) + .load(feedWithFolder.getFeed().getIconUrl()) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .placeholder(R.drawable.ic_rss_feed) + .into(holder.feedIcon); + } + + holder.feedName.setText(feedWithFolder.getFeed().getName()); + if (feedWithFolder.getFeed().getDescription() != null) { + holder.feedDescription.setVisibility(View.VISIBLE); + holder.feedDescription.setText(feedWithFolder.getFeed().getDescription()); + } else + holder.feedDescription.setVisibility(View.GONE); + + holder.folderName.setText(feedWithFolder.getFolder().getName()); + } + + protected static class ViewHolder extends RecyclerView.ViewHolder { + + private ImageView feedIcon; + private TextView feedName; + private TextView feedDescription; + private TextView folderName; + + + public ViewHolder(View itemView) { + super(itemView); + + feedIcon = itemView.findViewById(R.id.feed_layout_icon); + feedName = itemView.findViewById(R.id.feed_layout_name); + feedDescription = itemView.findViewById(R.id.feed_layout_description); + folderName = itemView.findViewById(R.id.feed_layout_folder); + } + } +} diff --git a/app/src/main/java/com/readrops/app/ItemActivity.java b/app/src/main/java/com/readrops/app/ItemActivity.java index fb414a68..c15ad441 100644 --- a/app/src/main/java/com/readrops/app/ItemActivity.java +++ b/app/src/main/java/com/readrops/app/ItemActivity.java @@ -18,7 +18,7 @@ import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; -import com.readrops.app.database.ItemWithFeed; +import com.readrops.app.database.pojo.ItemWithFeed; import com.readrops.app.database.entities.Item; import com.readrops.app.utils.DateUtils; import com.readrops.app.utils.GlideApp; diff --git a/app/src/main/java/com/readrops/app/ItemViewModel.java b/app/src/main/java/com/readrops/app/ItemViewModel.java index 450bb0a3..9c17ba2d 100644 --- a/app/src/main/java/com/readrops/app/ItemViewModel.java +++ b/app/src/main/java/com/readrops/app/ItemViewModel.java @@ -5,9 +5,7 @@ import android.arch.lifecycle.AndroidViewModel; import android.arch.lifecycle.LiveData; import android.support.annotation.NonNull; -import com.readrops.app.database.Database; -import com.readrops.app.database.ItemWithFeed; -import com.readrops.app.database.entities.Item; +import com.readrops.app.database.pojo.ItemWithFeed; public class ItemViewModel extends AndroidViewModel { diff --git a/app/src/main/java/com/readrops/app/LocalFeedRepository.java b/app/src/main/java/com/readrops/app/LocalFeedRepository.java index 6cd5013f..c343e359 100644 --- a/app/src/main/java/com/readrops/app/LocalFeedRepository.java +++ b/app/src/main/java/com/readrops/app/LocalFeedRepository.java @@ -6,7 +6,7 @@ import android.graphics.Bitmap; import android.support.v7.graphics.Palette; import android.util.Patterns; -import com.readrops.app.database.ItemWithFeed; +import com.readrops.app.database.pojo.ItemWithFeed; import com.readrops.app.database.entities.Feed; import com.readrops.app.database.entities.Item; import com.readrops.app.utils.Utils; diff --git a/app/src/main/java/com/readrops/app/MainActivity.java b/app/src/main/java/com/readrops/app/MainActivity.java index 02aef04d..1df2a021 100644 --- a/app/src/main/java/com/readrops/app/MainActivity.java +++ b/app/src/main/java/com/readrops/app/MainActivity.java @@ -26,7 +26,7 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader; import com.bumptech.glide.util.ViewPreloadSizeProvider; import com.github.clans.fab.FloatingActionMenu; -import com.readrops.app.database.ItemWithFeed; +import com.readrops.app.database.pojo.ItemWithFeed; import com.readrops.app.database.entities.Item; import com.readrops.app.utils.GlideApp; import com.readrops.readropslibrary.ParsingResult; @@ -220,10 +220,13 @@ public class MainActivity extends AppCompatActivity implements SimpleCallback, S public void addFolder(View view) { actionMenu.close(true); + Intent intent = new Intent(this, ManageFeedsActivity.class); + startActivity(intent); } public void insertNewFeed(ParsingResult result) { refreshLayout.setRefreshing(true); viewModel.addFeed(result); + } } diff --git a/app/src/main/java/com/readrops/app/MainItemListAdapter.java b/app/src/main/java/com/readrops/app/MainItemListAdapter.java index 8535df53..74c88286 100644 --- a/app/src/main/java/com/readrops/app/MainItemListAdapter.java +++ b/app/src/main/java/com/readrops/app/MainItemListAdapter.java @@ -1,6 +1,5 @@ package com.readrops.app; -import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; @@ -23,7 +22,7 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.transition.DrawableCrossFadeFactory; import com.bumptech.glide.util.ViewPreloadSizeProvider; -import com.readrops.app.database.ItemWithFeed; +import com.readrops.app.database.pojo.ItemWithFeed; import com.readrops.app.database.entities.Item; import com.readrops.app.utils.DateUtils; import com.readrops.app.utils.GlideRequests; diff --git a/app/src/main/java/com/readrops/app/MainViewModel.java b/app/src/main/java/com/readrops/app/MainViewModel.java index abcf45fe..c2b7cc14 100644 --- a/app/src/main/java/com/readrops/app/MainViewModel.java +++ b/app/src/main/java/com/readrops/app/MainViewModel.java @@ -5,7 +5,7 @@ import android.arch.lifecycle.AndroidViewModel; import android.arch.lifecycle.LiveData; import android.support.annotation.NonNull; -import com.readrops.app.database.ItemWithFeed; +import com.readrops.app.database.pojo.ItemWithFeed; import com.readrops.readropslibrary.ParsingResult; import java.util.List; diff --git a/app/src/main/java/com/readrops/app/ManageFeedsActivity.java b/app/src/main/java/com/readrops/app/ManageFeedsActivity.java new file mode 100644 index 00000000..1728c542 --- /dev/null +++ b/app/src/main/java/com/readrops/app/ManageFeedsActivity.java @@ -0,0 +1,34 @@ +package com.readrops.app; + +import android.arch.lifecycle.ViewModelProvider; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; + +import com.mikepenz.fastadapter.FastAdapter; +import com.mikepenz.fastadapter.adapters.ModelAdapter; +import com.readrops.app.database.pojo.FeedWithFolder; + +public class ManageFeedsActivity extends AppCompatActivity { + + private RecyclerView recyclerView; + private ModelAdapter itemAdapter; + private ManageFeedsViewModel viewModel; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_manage_feeds); + + recyclerView = findViewById(R.id.feeds_recyclerview); + recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext())); + itemAdapter = new ModelAdapter<>(FeedWithFolderItem::new); + + FastAdapter fastAdapter = FastAdapter.with(itemAdapter); + recyclerView.setAdapter(fastAdapter); + + viewModel = ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication()).create(ManageFeedsViewModel.class); + viewModel.getFeedsWithFolder().observe(this, feedWithFolders -> itemAdapter.add(feedWithFolders)); + } +} diff --git a/app/src/main/java/com/readrops/app/ManageFeedsViewModel.java b/app/src/main/java/com/readrops/app/ManageFeedsViewModel.java new file mode 100644 index 00000000..acbf044a --- /dev/null +++ b/app/src/main/java/com/readrops/app/ManageFeedsViewModel.java @@ -0,0 +1,29 @@ +package com.readrops.app; + +import android.app.Application; +import android.app.ListActivity; +import android.arch.lifecycle.AndroidViewModel; +import android.arch.lifecycle.LiveData; +import android.support.annotation.NonNull; + +import com.readrops.app.database.Database; +import com.readrops.app.database.pojo.FeedWithFolder; + +import java.util.List; + +public class ManageFeedsViewModel extends AndroidViewModel { + + private Database db; + private LiveData> feedsWithFolder; + + public ManageFeedsViewModel(@NonNull Application application) { + super(application); + db = Database.getInstance(application); + + feedsWithFolder = db.feedDao().getAllFeedsWithFolder(); + } + + public LiveData> getFeedsWithFolder() { + return feedsWithFolder; + } +} diff --git a/app/src/main/java/com/readrops/app/database/dao/FeedDao.java b/app/src/main/java/com/readrops/app/database/dao/FeedDao.java index e34046a3..50ff6a38 100644 --- a/app/src/main/java/com/readrops/app/database/dao/FeedDao.java +++ b/app/src/main/java/com/readrops/app/database/dao/FeedDao.java @@ -1,12 +1,14 @@ package com.readrops.app.database.dao; +import android.arch.lifecycle.LiveData; import android.arch.persistence.room.Dao; import android.arch.persistence.room.Insert; import android.arch.persistence.room.Query; import android.arch.persistence.room.Update; import com.readrops.app.database.entities.Feed; +import com.readrops.app.database.pojo.FeedWithFolder; import java.util.List; @@ -31,4 +33,8 @@ public interface FeedDao { @Query("Update Feed set folder_id = :folderId Where id = :feedId") void updateFeedFolder(int feedId, int folderId); + @Query("Select Feed.name as feed_name, Feed.id as feed_id, Folder.name as folder_name, Folder.id as folder_id," + + "Feed.description as feed_description, Feed.icon_url as feed_icon_url, Feed.url as feed_url" + + " from Feed Inner Join Folder on Feed.folder_id = Folder.id Order by Feed.name") + LiveData> getAllFeedsWithFolder(); } diff --git a/app/src/main/java/com/readrops/app/database/dao/ItemDao.java b/app/src/main/java/com/readrops/app/database/dao/ItemDao.java index 66cd792e..9563292b 100644 --- a/app/src/main/java/com/readrops/app/database/dao/ItemDao.java +++ b/app/src/main/java/com/readrops/app/database/dao/ItemDao.java @@ -6,7 +6,7 @@ import android.arch.persistence.room.Dao; import android.arch.persistence.room.Insert; import android.arch.persistence.room.Query; -import com.readrops.app.database.ItemWithFeed; +import com.readrops.app.database.pojo.ItemWithFeed; import com.readrops.app.database.entities.Item; import java.util.List; diff --git a/app/src/main/java/com/readrops/app/database/pojo/FeedWithFolder.java b/app/src/main/java/com/readrops/app/database/pojo/FeedWithFolder.java new file mode 100644 index 00000000..e5a7ba7e --- /dev/null +++ b/app/src/main/java/com/readrops/app/database/pojo/FeedWithFolder.java @@ -0,0 +1,31 @@ +package com.readrops.app.database.pojo; + +import android.arch.persistence.room.Embedded; + +import com.readrops.app.database.entities.Feed; +import com.readrops.app.database.entities.Folder; + +public class FeedWithFolder { + + @Embedded(prefix = "feed_") + private Feed feed; + + @Embedded(prefix = "folder_") + private Folder folder; + + public Feed getFeed() { + return feed; + } + + public void setFeed(Feed feed) { + this.feed = feed; + } + + public Folder getFolder() { + return folder; + } + + public void setFolder(Folder folder) { + this.folder = folder; + } +} diff --git a/app/src/main/java/com/readrops/app/database/ItemWithFeed.java b/app/src/main/java/com/readrops/app/database/pojo/ItemWithFeed.java similarity index 97% rename from app/src/main/java/com/readrops/app/database/ItemWithFeed.java rename to app/src/main/java/com/readrops/app/database/pojo/ItemWithFeed.java index 3fcf358d..57d98cda 100644 --- a/app/src/main/java/com/readrops/app/database/ItemWithFeed.java +++ b/app/src/main/java/com/readrops/app/database/pojo/ItemWithFeed.java @@ -1,4 +1,4 @@ -package com.readrops.app.database; +package com.readrops.app.database.pojo; import android.arch.persistence.room.ColumnInfo; import android.arch.persistence.room.Embedded; diff --git a/app/src/main/java/com/readrops/app/utils/ReadropsWebView.java b/app/src/main/java/com/readrops/app/utils/ReadropsWebView.java index 9095f111..fc60146f 100644 --- a/app/src/main/java/com/readrops/app/utils/ReadropsWebView.java +++ b/app/src/main/java/com/readrops/app/utils/ReadropsWebView.java @@ -3,24 +3,18 @@ package com.readrops.app.utils; import android.annotation.SuppressLint; import android.content.Context; import android.util.AttributeSet; -import android.util.Log; import android.webkit.WebSettings; import android.webkit.WebView; import com.readrops.app.R; -import com.readrops.app.database.ItemWithFeed; -import com.readrops.app.database.entities.Item; +import com.readrops.app.database.pojo.ItemWithFeed; import com.readrops.readropslibrary.Utils.LibUtils; import org.jsoup.Jsoup; -import org.jsoup.nodes.Attribute; -import org.jsoup.nodes.Attributes; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; -import java.util.Iterator; - public class ReadropsWebView extends WebView { private ItemWithFeed itemWithFeed; diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml new file mode 100644 index 00000000..39e64d69 --- /dev/null +++ b/app/src/main/res/drawable/ic_delete.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml new file mode 100644 index 00000000..2ab2fb75 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_open_in_browser.xml b/app/src/main/res/drawable/ic_open_in_browser.xml new file mode 100644 index 00000000..d597c37e --- /dev/null +++ b/app/src/main/res/drawable/ic_open_in_browser.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_manage_feeds.xml b/app/src/main/res/layout/activity_manage_feeds.xml new file mode 100644 index 00000000..f74d451f --- /dev/null +++ b/app/src/main/res/layout/activity_manage_feeds.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/feed_layout.xml b/app/src/main/res/layout/feed_layout.xml new file mode 100644 index 00000000..350133c8 --- /dev/null +++ b/app/src/main/res/layout/feed_layout.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/image_item.xml b/app/src/main/res/layout/image_item.xml index e473120c..23000a80 100644 --- a/app/src/main/res/layout/image_item.xml +++ b/app/src/main/res/layout/image_item.xml @@ -97,23 +97,23 @@ android:id="@+id/item_readtime_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_toLeftOf="@id/item_interpoint" + android:layout_marginStart="6dp" android:layout_marginLeft="6dp" - android:layout_marginStart="6dp"> + android:layout_toLeftOf="@id/item_interpoint"> + android:src="@drawable/ic_read_time" />