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 000000000..90766d7b7 Binary files /dev/null and b/third-party/android-filechooser/code/res/drawable-hdpi/afc_folder_disabled.png differ 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 000000000..6bc42e73b Binary files /dev/null and b/third-party/android-filechooser/code/res/drawable-ldpi/afc_folder_disabled.png differ 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 000000000..afaccc259 Binary files /dev/null and b/third-party/android-filechooser/code/res/drawable-mdpi/afc_folder_disabled.png differ diff --git a/third-party/android-filechooser/code/res/drawable-xhdpi/afc_folder_disabled.png b/third-party/android-filechooser/code/res/drawable-xhdpi/afc_folder_disabled.png new file mode 100644 index 000000000..53b10caae Binary files /dev/null and b/third-party/android-filechooser/code/res/drawable-xhdpi/afc_folder_disabled.png differ 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; } }