From cea22e0d6dce3b817d783501ad05929c3f3a94bb Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Thu, 28 Aug 2014 19:30:30 +0100 Subject: [PATCH] more androidish way for disabled icons; use selected path --- .../crash/FixBooksDirectoryActivity.java | 2 +- .../fbreader/preferences/background/Chooser.java | 10 +++++++++- .../fileChooser/FileChooserSinglePreference.java | 2 +- .../android/util/FileChooserUtil.java | 14 ++++++++++++-- .../android/util/FolderListDialogActivity.java | 2 +- .../res/drawable-hdpi/afc_folder_disabled.png | Bin 0 -> 1059 bytes .../res/drawable-ldpi/afc_folder_disabled.png | Bin 0 -> 507 bytes .../res/drawable-mdpi/afc_folder_disabled.png | Bin 0 -> 683 bytes .../res/drawable-xhdpi/afc_folder_disabled.png | Bin 0 -> 1767 bytes .../code/res/drawable/afc_item_folder.xml | 14 ++++++++++++++ .../android/lib/ui/filechooser/IFileAdapter.java | 14 +++----------- .../lib/ui/filechooser/utils/FileUtils.java | 6 +++--- 12 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 third-party/android-filechooser/code/res/drawable-hdpi/afc_folder_disabled.png create mode 100644 third-party/android-filechooser/code/res/drawable-ldpi/afc_folder_disabled.png create mode 100644 third-party/android-filechooser/code/res/drawable-mdpi/afc_folder_disabled.png create mode 100644 third-party/android-filechooser/code/res/drawable-xhdpi/afc_folder_disabled.png create mode 100755 third-party/android-filechooser/code/res/drawable/afc_item_folder.xml diff --git a/src/org/geometerplus/android/fbreader/crash/FixBooksDirectoryActivity.java b/src/org/geometerplus/android/fbreader/crash/FixBooksDirectoryActivity.java index 079401342..cb5723fe5 100644 --- a/src/org/geometerplus/android/fbreader/crash/FixBooksDirectoryActivity.java +++ b/src/org/geometerplus/android/fbreader/crash/FixBooksDirectoryActivity.java @@ -98,7 +98,7 @@ public class FixBooksDirectoryActivity extends Activity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1 && resultCode == RESULT_OK) { - myDirectoryView.setText(FileChooserUtil.pathFromData(data)); + myDirectoryView.setText(FileChooserUtil.folderPathFromData(data)); } } } diff --git a/src/org/geometerplus/android/fbreader/preferences/background/Chooser.java b/src/org/geometerplus/android/fbreader/preferences/background/Chooser.java index f6b7cfedc..4a0ae74c2 100644 --- a/src/org/geometerplus/android/fbreader/preferences/background/Chooser.java +++ b/src/org/geometerplus/android/fbreader/preferences/background/Chooser.java @@ -19,6 +19,8 @@ package org.geometerplus.android.fbreader.preferences.background; +import java.util.List; + import android.app.ListActivity; import android.content.Intent; import android.view.View; @@ -96,7 +98,13 @@ public class Chooser extends ListActivity implements AdapterView.OnItemClickList finish(); break; case 2: - System.err.println("FILE DATA: " + data); + final List paths = FileChooserUtil.filePathsFromData(data); + if (paths.size() == 1) { + setResult(RESULT_OK, new Intent().putExtra( + BackgroundPreference.VALUE_KEY, paths.get(0) + )); + finish(); + } break; } } diff --git a/src/org/geometerplus/android/fbreader/preferences/fileChooser/FileChooserSinglePreference.java b/src/org/geometerplus/android/fbreader/preferences/fileChooser/FileChooserSinglePreference.java index f2df68985..f88e72af0 100644 --- a/src/org/geometerplus/android/fbreader/preferences/fileChooser/FileChooserSinglePreference.java +++ b/src/org/geometerplus/android/fbreader/preferences/fileChooser/FileChooserSinglePreference.java @@ -57,7 +57,7 @@ class FileChooserSinglePreference extends FileChooserPreference { @Override protected void setValueFromIntent(Intent data) { - final String value = FileChooserUtil.pathFromData(data); + final String value = FileChooserUtil.folderPathFromData(data); if (MiscUtil.isEmptyString(value)) { return; } diff --git a/src/org/geometerplus/android/util/FileChooserUtil.java b/src/org/geometerplus/android/util/FileChooserUtil.java index 6d53c0813..a2050cb92 100644 --- a/src/org/geometerplus/android/util/FileChooserUtil.java +++ b/src/org/geometerplus/android/util/FileChooserUtil.java @@ -26,8 +26,9 @@ import android.content.Intent; import android.os.Parcelable; import group.pals.android.lib.ui.filechooser.FileChooserActivity; -import group.pals.android.lib.ui.filechooser.services.IFileProvider; +import group.pals.android.lib.ui.filechooser.io.IFile; import group.pals.android.lib.ui.filechooser.io.localfile.LocalFile; +import group.pals.android.lib.ui.filechooser.services.IFileProvider; import org.geometerplus.zlibrary.core.resources.ZLResource; @@ -95,10 +96,19 @@ public abstract class FileChooserUtil { activity.startActivityForResult(intent, requestCode); } - public static String pathFromData(Intent data) { + public static String folderPathFromData(Intent data) { return data.getStringExtra(FileChooserActivity._FolderPath); } + public static List filePathsFromData(Intent data) { + final List files = data.getParcelableArrayListExtra(FileChooserActivity._Results); + final List paths = new ArrayList(files.size()); + for (IFile f : files) { + paths.add(f.getAbsolutePath()); + } + return paths; + } + public static List pathListFromData(Intent data) { return data.getStringArrayListExtra(FolderListDialogActivity.Key.FOLDER_LIST); } diff --git a/src/org/geometerplus/android/util/FolderListDialogActivity.java b/src/org/geometerplus/android/util/FolderListDialogActivity.java index b6369d97c..e8f7187c9 100644 --- a/src/org/geometerplus/android/util/FolderListDialogActivity.java +++ b/src/org/geometerplus/android/util/FolderListDialogActivity.java @@ -84,7 +84,7 @@ public class FolderListDialogActivity extends ListActivity { @Override protected void onActivityResult(int index, int resultCode, Intent data) { if (resultCode == RESULT_OK) { - final String path = FileChooserUtil.pathFromData(data); + final String path = FileChooserUtil.folderPathFromData(data); final int existing = myFolderList.indexOf(path); if (existing == -1) { if (index == 0) { diff --git a/third-party/android-filechooser/code/res/drawable-hdpi/afc_folder_disabled.png b/third-party/android-filechooser/code/res/drawable-hdpi/afc_folder_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..90766d7b7297c738fe1e52e38010cbea5e2f2811 GIT binary patch literal 1059 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZAldxaIe4*89Wqk3V32e%`g$UvJm1y|>nG_2Ybo+2L7RZ>81dZ?&?l z`W?B~@{d-)YQe(qFMfP|D6~~Uv+HTnMw^;np%1Qo`*!Wx+;sQ+36U2x#VP|ux|QN> zez8Q%oi}HZpWllK`)WOJHhp4Uz2}71gD?BPuc$wNZf9NOaenOw^KDLl+H)fEV5;Qg z(*F1(vr-qc{5!X~(rSKs(vu{d+?o%Q<^XD;%Xlp^JSK3iz9e)#1jzuKl>wwULmRw(4CCRizP z$1wI}i|*r>d$~FuX&kca`f#jJBCxgKwW33myXXfcp5q)Xi86hU3mKZbjxl}>^pT5| zxVN@JLE`sB{~I^t+Z`F)g?=!4UlMA*@0}pYVmE1@z0}Wr?<-y)dyY~8fwN#bSlU*||ac$<}xVmmp#@%_BfhJmM;+92uxs6uz=yql(rd4b7&G77flOjjkpI&nu@E zDQHjXXeimsQsemI!yW}Lp+yt;rYdw^>C8FyS=R9f%Y&a~%a3x`?7qv!`O=|ci9v?) z>Frh-+6hOB*M_aWnd6iY6|?!|#g?=jzu><8VN872?>x8Q)AVS*o&O-uK|1G9LEiqK zf3i5={Qp>y&i-Dn&%L`R*DDvlKZJ>2FaFMf;=*L+LtAoQEMhyazyIHi z`UUe3^fTBo^`_3UtM2GL2+UrpC9V-ADTyViR>?)FK#IZ0z|ch3z(m*3EX2UT%GA=z z&{EsL(8|D|-20doiiX_$l+3hB+#1-#>ZSoTNP=t#&QB{TPb^Aha7@WhN>%X8O-xS> YN=;0uEIgTN160J|>FVdQ&MBb@0DyMXwEzGB literal 0 HcmV?d00001 diff --git a/third-party/android-filechooser/code/res/drawable-ldpi/afc_folder_disabled.png b/third-party/android-filechooser/code/res/drawable-ldpi/afc_folder_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc42e73b534cd093a132ded18f1b70e9a7a0885 GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?mUKs7M+U~W1%@xC#RK_FN#5=* z4FB8v&+G^CI14-?iy0WWg+Z8+Vb&a=enwqS7sn8d^IIo5dbc=;9RJI8(S3!T^95aw zMcx+_IjmeR9E>7TMS4 z`Op5Q*A>s6xTHQ&x3)$pJM-V=HS@R<0!0!xS5J<6J$=`@`LD0qoc}C2A@% zY|@%8+VgbNDjku2r<5eMOCd{`s-|%kc0Nk9@=e&HA`v~&Jy7OoL~NH{0Ea!tp$D@y zzA*onaXn=D-Nx=C1IInv=jj?r$8NOjJX4xzHgRLH$iWMecY9?MEQ)T`H67ag^1!kw zQPZxPSS|Qw*tIcnmfQUov)$S=Wfm5c6jeKOOktZWF!x2fM$XdZE4x-{d2L>?>RK>g zK)_F_iK!ejp4N)&j+V9Fk>{Li_Pl!k-kZnb>l*Y+7*-j4K7D5wFf>(5Tq8mAm4N~C+T8^x8glbfGSe!d8ccKz%|i?= ctqe@83=AO}PIBZ<0%~CJboFyt=akR{0EvUa9smFU literal 0 HcmV?d00001 diff --git a/third-party/android-filechooser/code/res/drawable-mdpi/afc_folder_disabled.png b/third-party/android-filechooser/code/res/drawable-mdpi/afc_folder_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..afaccc259fced9a35ba2a57f07bfb5ca0acefe94 GIT binary patch literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk@BpAX3RW*PVOS+@4BLidG0>c;6;(>goByV>Y zhX3vTXZ8bmoCO|{#S9GG!XV7ZFl&wk0|Vn-PZ!4!i_>Q(@9(~xAaUHfdwb`DRUIc* z{zw+OQ!<^~)g`Y$VAdsb6&2Nm552scoIE@<^Eo(GRa>S6y%VrJax}0nz)92G^2hZb zHvVg@EOxwn{@2d_{`=XwbI<)hp8EW?e_8#G`z3niXVcD4Kl|^h{;TfIUtdZ^tP9Wn z_vm<8^x@Ur%htVK_HRR!?nj2H-&@wr&Oa-5Bhlpc-TW#3x7W`Lca03aDpb^|HBIzP zY9QEO9mp*_Y~{bGtA{T8i81dZW!o z-LmOCt;UAOpHB{Bizj9-;0czO+)-6No2NK9yfjvN)vQ%7 zojn#j3}}CP``QGFE}iU2tF*dQPET62qDxDAmX7xE?I#4Xd%mWcCG_yB=v+!TptAG) zjoH@@Y@K&Q+|za=yKRZmxxLrTPb%yeX;Efm5{Pr;c70LS-}3IEsgce8I#Ejo*)65# zr%M0-rT*J{A9Jy>#j@gy^{arfuUg_7QIe8al4_M)lnSI6j0_A-bPX(YjVwY8O{@$p zt&AcptAuJW(KR#=0jf4Iu`)1(XgJA{I|-l-}8B%#0(7`=s^FC zHn-j}?EDkZ<~xS%{d4F&uR*`>($)sf>ifd9+e6!1pv}#V-RiWP&CbUD-qUUk5oe?Q zHno~-tE>A40c3q;xj|a8j-@3GjmEO(u79Dr*^sV&uwmYq6v(;?1TFv$KCPh%Q4Zl~Tj+(>*ErDT=Jxj53TTxVmDF8>FBt+JYdxW5tr>j8|FJhVTFd1k zs8lMMrLM3nT3r^qGELShnl<_P1P5xaFTr21SSXf?U@B55u+=^Y$3UPd9Ar1Ev-j?D zpp}({Lb2GtooKKLvJN&TP@#7LG%8c0H#ktEQOlE=eP|0d^7&jIg|X1RsmL%y-)K&A?78u>8*LT8Px=pIdHbDh{|%s(FhEiRT+O;zz? zO+zH+YDVp&)C^Px^fil*UU20mZd@Ax6_pG~)!>KisrUneoGHU<;@}Y388!RM^{YH+ zp^yfWlF<|-WWbbGAW^WyL!kpas>Uu*6fJ{y8_%v^;Xw6zLBTDYDM~t>R#2%_D$PV0 zwy09j$*ijJ^R>%7sFo*3I;G$eDV>_1pHHRmlct#JjUa_MHs{sgBx)|mLL?V$)CLmbAzUZ;ZB!I5+pla2ijU?ePKow^YQnyC2 zIRx}8KV0EKm5LrqB;qmfCg>B7$D%Q4Kr^05up}CdK_5z-V?cZA`^%U37ge-qJQf2Z zm?O9l!?hT-;%vfNSVW>&P&+aIbO2N~)kq`~MS)L_AQ93i^kT4&BRr#ovzn+#H2LK6 zMGjOdX5_FeM;M2)ML`rrL4b}Q*98=H(1KKSio!0C zp+~)JQ}Fq`UO^PRg5dRfJ&;1z>+wK=Emi_fWN4rC?HL}VX%UY{5Ir8;#310d*XwqB zP;hv$7Fgd6mm=H)(SLvBGzU^MVKBR0E|-U%fiD0ufGk1oWle840W)0V`)1_SAjs)* zIbBYN3-5QM$0B1vhr8FHce)&4ce#a~ppe6flUbNK9Vp;BAp^b(8&E(>6Ubd|vckRI zuLnRGCFHQrf@hY5C)=^xp|snr%0V;B#IhYAB^~N7v%`t!tesZu49`>1joEBtV`Jm+ zvDq-SJ%;%7>639tdQEgZffnSp@$YVZa{M?4ns|2S)Lt4H+0{CIx|@7@V))om4)oQ% zkB5)!t;2hd4jmr;kOO^j=c8js4*wf{aA^2MpY!?9d+F%=tsm$>|7ZOTfEWf@;%Om? z0000bbVXQnWMOn=I%9HWVRU5xGB7bTEigDOGB#8(F*-CcIx{dUFflqXFo9)gpa1{> zC3HntbYx+4WjbwdWNBu305UK!G%YYREipG#F*!OgG&(RbD=;xSFfhpoZIS>0002ov JPDHLkV1n8cC>{U+ literal 0 HcmV?d00001 diff --git a/third-party/android-filechooser/code/res/drawable/afc_item_folder.xml b/third-party/android-filechooser/code/res/drawable/afc_item_folder.xml new file mode 100755 index 000000000..5ead66496 --- /dev/null +++ b/third-party/android-filechooser/code/res/drawable/afc_item_folder.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/third-party/android-filechooser/code/src/group/pals/android/lib/ui/filechooser/IFileAdapter.java b/third-party/android-filechooser/code/src/group/pals/android/lib/ui/filechooser/IFileAdapter.java index b3757ec6f..7163debac 100755 --- a/third-party/android-filechooser/code/src/group/pals/android/lib/ui/filechooser/IFileAdapter.java +++ b/third-party/android-filechooser/code/src/group/pals/android/lib/ui/filechooser/IFileAdapter.java @@ -24,7 +24,7 @@ import java.util.Collection; import java.util.List; import android.content.Context; -import android.graphics.*; +import android.graphics.Paint; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; import android.view.LayoutInflater; @@ -288,18 +288,8 @@ public class IFileAdapter extends BaseAdapter { */ bag.mTxtFileName.setSingleLine(parent instanceof GridView); - final boolean isAccessible = FileUtils.isAccessible(file, mFilenameRegexp); // file icon bag.mImageIcon.setImageResource(FileUtils.getResIcon(file, mFilterMode)); - final ColorMatrix matrix = new ColorMatrix(); - if (!isAccessible) { - final ColorMatrix scaleMatrix = new ColorMatrix(); - scaleMatrix.setScale(.7f, .7f, .7f, 1f); - final ColorMatrix saturationMatrix = new ColorMatrix(); - saturationMatrix.setSaturation(0f); - matrix.setConcat(saturationMatrix, scaleMatrix); - } - bag.mImageIcon.setColorFilter(new ColorMatrixColorFilter(matrix)); // filename bag.mTxtFileName.setText(file.getSecondName()); @@ -316,6 +306,8 @@ public class IFileAdapter extends BaseAdapter { else bag.mTxtFileInfo.setText(String.format("%s, %s", Converter.sizeToStr(file.length()), time)); + final boolean isAccessible = FileUtils.isAccessible(file, mFilenameRegexp); + bag.mImageIcon.setEnabled(isAccessible); bag.mTxtFileName.setEnabled(isAccessible); bag.mTxtFileInfo.setEnabled(isAccessible); diff --git a/third-party/android-filechooser/code/src/group/pals/android/lib/ui/filechooser/utils/FileUtils.java b/third-party/android-filechooser/code/src/group/pals/android/lib/ui/filechooser/utils/FileUtils.java index 4f352b3a2..d0b3a6c8a 100755 --- a/third-party/android-filechooser/code/src/group/pals/android/lib/ui/filechooser/utils/FileUtils.java +++ b/third-party/android-filechooser/code/src/group/pals/android/lib/ui/filechooser/utils/FileUtils.java @@ -74,9 +74,9 @@ public class FileUtils { if (filterMode == IFileProvider.FilterMode.DirectoriesOnly) { if (file instanceof File && !((File)file).canWrite()) { if (file instanceof ParentFile) { - return R.drawable.afc_folder; + return R.drawable.afc_item_folder; } else if (accessDenied(file)) { - return R.drawable.afc_folder; + return R.drawable.afc_item_folder; } else { return R.drawable.afc_folder_locked; } @@ -84,7 +84,7 @@ public class FileUtils { return R.drawable.afc_folder; } } else { - return R.drawable.afc_folder; + return R.drawable.afc_item_folder; } }