From 8858e6e98dfd9f1bbc8bea2688aacd59a65de1eb Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Wed, 27 May 2015 17:18:56 -0700 Subject: [PATCH] Adding a delete action to the screenshot notification. Bug: 21161917 Change-Id: I03e2073ef09e9aea00b523eddbe2b9122d280d89 --- packages/SystemUI/AndroidManifest.xml | 6 ++ .../res/drawable-hdpi/ic_menu_share.png | Bin 1371 -> 0 bytes .../res/drawable-mdpi/ic_menu_share.png | Bin 1037 -> 0 bytes .../res/drawable-xhdpi/ic_menu_share.png | Bin 1846 -> 0 bytes .../res/drawable-xxhdpi/ic_menu_share.png | Bin 1279 -> 0 bytes .../res/drawable/ic_screenshot_delete.xml | 24 +++++ .../res/drawable/ic_screenshot_share.xml | 24 +++++ .../systemui/screenshot/GlobalScreenshot.java | 85 ++++++++++++++---- 8 files changed, 124 insertions(+), 15 deletions(-) delete mode 100644 packages/SystemUI/res/drawable-hdpi/ic_menu_share.png delete mode 100644 packages/SystemUI/res/drawable-mdpi/ic_menu_share.png delete mode 100644 packages/SystemUI/res/drawable-xhdpi/ic_menu_share.png delete mode 100644 packages/SystemUI/res/drawable-xxhdpi/ic_menu_share.png create mode 100644 packages/SystemUI/res/drawable/ic_screenshot_delete.xml create mode 100644 packages/SystemUI/res/drawable/ic_screenshot_share.xml diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index e47c7a0cb2210..cc8e46bafed80 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -225,6 +225,12 @@ + + + diff --git a/packages/SystemUI/res/drawable-hdpi/ic_menu_share.png b/packages/SystemUI/res/drawable-hdpi/ic_menu_share.png deleted file mode 100644 index 11ab4807acc9c1402061bca00293ad072f2a0eef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1371 zcmZ`(eKgYx82(L>VX~2{M7w1Y%B)@8yGfgV%S^)-?nac4F&0x+zUG?pHKp0{5hX4+ zp;06u5}I&@W7Vb)L{iG6D0DCG+`sNW_q^wQpYuNNdEV#0N9gYA1k>801poldnGDiZ zh+b<=4b}WrZ7EF!>qCfCA^_BiwEy;3SM87}x|1Vtvw!Q9YC#5)=~MuSGY0@cG5~y6 zQG)jXa9Z`{!*Kw>)k;d#Of3C8U#lzr{l+@VlAK_#W9E5T&wB4H`oYp6=5*mEfi3acz zk~@@0bkBj3NCunDNTAq+X4zvSwSH1C+}WI07lN-d`FbV1y#mSv_r zF&CkKx!76oa%x}Z!=ID?N;!)UGZ;2XGJ9UGFw0Ux;$JLo=#|~_y55!9h-iGCave56 zn5Tc}kTtJc5cR2%XgTd6)aY75Beh(EZ=9G>l~WAMVKxw;JSNfPac6bo1}h53cbUjH z3K{df4}8+abLE;kkdaN34@?)vEgwJBot9EV2iosExZ3uq?Ffo~@NIr552*2iGWrqc z1P^m#0EMPv31SoIBAZb*8oS6ERyy!8i1-}-YO)qnoj=-@%C=v?N+P#Kv^^inRDdU6 z_~IJKhRh<(mGn`ok2~cQ9Y|uV+UXL_+is-VCA`wdlFv8k@A7L&>07)TRDYt3xZ)cz z<9f3|k~L(J(aVRkmGdiUF*=HI-J{kok``*9#hz7I3#7yltF=h8&id&NMD$v;zST1> zvDL!P2OHGK1A5 zH4OG|jIk>sW$C8=gg)^!R`)gYP^DD+=`n|E^-X2mi=H35T#jFg6ynU9WR}XS;}v~@X3)sqD(ND7R~(_`yE>Stq5Tuy+Ozsqlg_3=g zoWiMwM>HIh%96h9oWG9Pm?4kT8b0*Sanp7sSgL2pC{8adfAF?j2Jf76c~vmNsrRm) zoRL<0Nv7+X%Gl?xC=A89ld#zRZm2wCe@k0=Ek#H!*_Xi4hDCGyOt87^B0>Rqs^ucv zZPMt~G1lw`sWS7jLsf0N7fQ3?!`H(s7lWy#?eMnvuVIfXQCVvEa=A!a_HOHPEgI#$ zFwiIW2+%S6GlZ+B>>8h+MvipqFFxyWMQuU4r>D*$?)waLg99xG0pZcXu6?;|0a&29 z6P=si4Vr&Ba48X@Aqg8?7ZJ6VRwy2c!3*-|v2cN>SSkQ8Xj{x~GtTz*VQq1H z?X1uk92(7_e^%wpe+1#&pwQsh{}=4q=zLZs*u3U&gd5C@_CLh}h(X){7ScJ~KZHeR W`3J?G>|w2i9NNS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CjA5L~c#`DCC7XMsm#F_88EW4Dvpb_@(mcRgJkLn02poo1a8;waL#f9LK%;WN%m zof`v`mBf^?-fX#a%xmKY0mqOW7mh9tv1wdfTv}1Af{sU=f{z_y7n|19%VOBt%kLy& zxJXIu`}Q5_cW$1%>s}^)>B)gj*2d-M|Ie>K_xR8v-3>d#EGLQRO+HZ0#c^Qg&H`P< z3C#1JJ$N!H!<3PKi=+h8vPSU(*RxcjoE#=?em{BAG1a|OzxZ7;_MH7jr}O`96VdK_ zr}xS3VE@CAmb+fOf>q`hzm&#=EBsTXx5kUTsXoy(i?!>3kn(1^h`H^NIR=jc9Qipm z^aNe|?ay?EVgKIlSu9!&OD@ivZp+Hnc=>?d1O5xC4SX+{-!TL~3F%nPB*$DG(4_IZ zK{(~RHERr;TI1#eQr&+v3pjsd+J$W7`m@(9(pDjJ?GmSgYnqu6m!v({tIAHlA~8MD z$iKw2g}J`>j6?zR4~eJEO#Ahef_95WFZOu*Pmb-P#qRTR54Z}fPqcSkyqY}qmxH^) zTzQ?kzjx<-+^Roo!;FS-n$K7bbI@OFEUPti@E_7<_=CKz@howSqpz+i$*We3--a*up$lStxPa?{yIz zOY+(Im<}J%e;~Y}b&aaJ+ZUM+C$44sGHqR_sr01h7PE}-#5`hwm|r%&`uoM9&V=kr-%j?REn zy~huDCrtIc?`mf3cH+}v^Uat3&sKflJL&wVyayT^t~$6ks-IcTCB@MH_vq8;uuHm? z>N=m}ie5PWnN#p>_bZo}Ev#GXqkgYg&bRZ>S73@)Epd$~Nl7e8wMs5Z1yT$~28Kqu z1}3^jCLxAKRwjm4#%9_EMpgy}5kVh;IRi;UZhlH;S|x4`n*5$kKn;>08-nxGO3D+9 lQW+dm@{>{(JaZG%Q-e|yQz{Ejrh>91gQu&X%Q~loCIE*`rI-K! diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_menu_share.png b/packages/SystemUI/res/drawable-xhdpi/ic_menu_share.png deleted file mode 100644 index af3e112fbf0cdd2c729355f5e23b2ccf63dcd2d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1846 zcmZ`)c{mh$7ygZHEHSy)nq*BQpBh7!v1=ylkg;UVI+zDBk;XRmER&@~24zWHxkN^? zPL@PmM25mxM#*~RxiV4tru*0T&-a|?ocDRpIq!4+J8$M?TXSK-6M_H$VM_}%j)Nw@ zlAn)LpAd*l4)6q;Vod>P$`$(V!^`222%NbYXc#@Y#v$^47C0;bF)9EgrUG!lX(fIJ z;06MKb#DMrMF2>Km$us*a0Yz7*5+t%^ef7{YVtW9fp81g2o75Oo0o=yjW}C;mS|H) z(ub`Np?~0=q@g$|77 z?l4~B;8++2zhy6Gf85{RSt>j1a(5c)0&1Fgb#y+S#AuJ5H#{6M4BTWkpMMAyN$(nS z3x2vvFKaz&7SW^**#sc-sUs_UXQya7h|G64=9v+mP6h1^PE)nD6T#qauPYyc-p4R> zadQqblaCQHsfc6xb${Utu{1fkc|ucwzl*1Q?^AOpw5;EC<{lsk!WQqJforSq$Mcn2 zmFdNun)a?k>_1*^^$6@XclkhqsO0SPi`7+gjV-GvPrAT9i=tbcAOlV9d7@OU zlu|W!xFfx^(L!RSEayLkEk0tqK;F#2)|=z3csfINA651G#G#U&(GDhl@RnN%ZuaUE z=hnj_^9HtT<@`q0xC9pD@@DOCnh2^Hv2&PY zTvE$c?bC1cHb@wS?1G0D`vY0r4&3Dh+s_tY#OH(G3d4co^9bzzYc0Oz&^iyEA$ox5j*Ps|WRRyjc2dYYjV%n+i!Szdv1+ zt3+QjW*xyypgLo)S*mtR;woCqNZTw4wjAT3JYvkfcf31oLHzJZR`k}!bCF?sy{mC~ zN>!(j&LVg6I;OZsP-x9Q7K20{2LFRI+@@HPi~atJ`hu`jak zk`5`aRFIhYoDL$?C};Qr_I9)=?W@4KBdcQl^rhfXV*P3G-eat%6%+WW@pny2vYL=? za_CyDsTN|p7j}ca9i!^`Mwx(6i^{h!gqn|xsl=fBCPXNTAJ4F_RFDj@AJ0JK4}Z)O zn-GUnpBTNHa+28WGm}4TuGqER(ZhnT8S>iK;*D~TmdlFW5_GX?vq)_jo06;JMccaN z!Wa_+!+Dtw`?vZ4CvV`rw>`2e=Ccj`;@f^oESQ@5+*T&BbCSOFQDfDqQe;Nm&3#rY z{X|N8L!D6~LI8;WRN6h1xzHK^j-3RLidu4xbI?*B&bszqv6{DE`G$#YnEuWU4>*@c zn=QlFlvX46s?8bq&Nw6HsP)xcrqoV=^1xp&4g~ zY7YJBkJlP5W!r@N0ylYD?GC}R;=Wc>#o2D_PbA)k0ctN+TZqzTx0A9uF%#nIITk#u zYQK~T8I%{>+)QN=WUJ>Y#@*2i=XG>*vbZ)Dl1=87+Vvk_FX7E*DsgQn7$h63fGe~f z#`lm$-u_*blhc%^A7!;bf+*1-E97wElnpufK|BwCwN^C`^-Zm1|~da;)KWB*rDu-zO4}^1F`b06-!%km?96b)=S~ z1`?&Efzs4gLm*KIgbVHq$3p%`5E|xB2#Egw0#%r0GDjf&>w-gAK;%uI>v&-5ALfgf dw+!_O#N+Tj{?WuC{4f6kmKa-fgPC{oe*yOgKzaZG diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_menu_share.png b/packages/SystemUI/res/drawable-xxhdpi/ic_menu_share.png deleted file mode 100644 index d4505319b999c6d53737924e14432d3460c0b0d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1279 zcmVdmf01yCx01yCx01yCx z01yCx01yCx01yCx01yE1k9in^X)GXaBrZ;S?F;b*1n`TM#75#~Vo8R-exXhMoMk)Il z2Lbp=Zz68Byk|@Xjd!sAg!CP2X3V0uLa!(!0hUTgS!MBEY$|RN?`b+ppO}p(s6@;~ zMcNYn9r3+GNZCN#YY8d2%`Ts&q7VhhWnbA$^jQY2R0h34M92nqj8}+X3(=AJFhRu< zVeAhX=CavnNec~&#mqE{*)f)ovfW`OB|-omyt5JWE^QLEG(`w0A%LJ+QUE@{;&h1F ziVZXcSVg?!p^vU1WkEsH2_IALTfv2tb14AlUN$K9i$luGg%(mqb($L3VssOG-ANdH zO##Z3`?bO(1X==U=icW-05@oxiwOweh7sj{eS`pRc&Xg49mbyjfdCn1fTjqXM|w!C zH~O3Ev0VxChQ=)qeH@XMa1R8?4WGFnu59D%XFmk6o3yCeP##>aHp`U_9W=p#xj_h! zT?E(tfb@!ku=@eeOpqNNh5(ttPw^p1Q)F_aTygM3?0cp&xconLV$!ljM4TP%HNiRF zQ3#M3Jdo>%%jEapCfLOaTXDdvY_4>xwM0ad#QVffnNbkH132Hrd(722%vq<1F$n?u znKq8LDlP9B6|>Z9!q)|@Hvb+wVkbWY0kVV5+Hv`53tcmfb1*<9$g#{@|{&2kpLRjVE|z&&*3h)L_Z06Hnc0xHd-_tdJ->gZOy|U@FtJy5h>gq9S*oV+7tL(8>g + + + diff --git a/packages/SystemUI/res/drawable/ic_screenshot_share.xml b/packages/SystemUI/res/drawable/ic_screenshot_share.xml new file mode 100644 index 0000000000000..62733ec37576d --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_screenshot_share.xml @@ -0,0 +1,24 @@ + + + + diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java index f16f6bd76d33c..7e32c3a5a9f60 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java @@ -253,6 +253,17 @@ class SaveImageInBackgroundTask extends AsyncTask { + private static final String TAG = "DeleteImageInBackgroundTask"; + + private Context mContext; + + DeleteImageInBackgroundTask(Context context) { + mContext = context; + } + + @Override + protected Void doInBackground(Uri... params) { + if (params.length != 1) return null; + + Uri screenshotUri = params[0]; + ContentResolver resolver = mContext.getContentResolver(); + resolver.delete(screenshotUri, null, null); + return null; + } +} + /** * TODO: * - Performance when over gl surfaces? Ie. Gallery @@ -358,6 +390,7 @@ class GlobalScreenshot { private static final String TAG = "GlobalScreenshot"; static final String CANCEL_ID = "android:cancel_id"; + static final String SCREENSHOT_URI_ID = "android:screenshot_uri_id"; private static final int SCREENSHOT_FLASH_TO_PEAK_DURATION = 130; private static final int SCREENSHOT_DROP_IN_DURATION = 430; @@ -761,11 +794,33 @@ class GlobalScreenshot { return; } + // Clear the notification final NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - final int id = intent.getIntExtra(CANCEL_ID, 0); nm.cancel(id); } } + + /** + * Removes the last screenshot. + */ + public static class DeleteScreenshotReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + if (!intent.hasExtra(CANCEL_ID) || !intent.hasExtra(SCREENSHOT_URI_ID)) { + return; + } + + // Clear the notification + final NotificationManager nm = + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + final int id = intent.getIntExtra(CANCEL_ID, 0); + final Uri uri = Uri.parse(intent.getStringExtra(SCREENSHOT_URI_ID)); + nm.cancel(id); + + // And delete the image from the media store + new DeleteImageInBackgroundTask(context).execute(uri); + } + } }