use of com.android.documentsui.model.DocumentInfo in project platform_frameworks_base by android.
the class OperationDialogFragment method onCreateDialog.
@Override
public Dialog onCreateDialog(Bundle inState) {
super.onCreate(inState);
@DialogType final int dialogType = getArguments().getInt(FileOperationService.EXTRA_DIALOG_TYPE);
@OpType final int operationType = getArguments().getInt(FileOperationService.EXTRA_OPERATION);
final ArrayList<DocumentInfo> srcList = getArguments().getParcelableArrayList(FileOperationService.EXTRA_SRC_LIST);
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
String messageFormat;
switch(dialogType) {
case DIALOG_TYPE_CONVERTED:
messageFormat = getString(R.string.copy_converted_warning_content);
break;
case DIALOG_TYPE_FAILURE:
switch(operationType) {
case FileOperationService.OPERATION_COPY:
messageFormat = getString(R.string.copy_failure_alert_content);
break;
case FileOperationService.OPERATION_DELETE:
messageFormat = getString(R.string.delete_failure_alert_content);
break;
case FileOperationService.OPERATION_MOVE:
messageFormat = getString(R.string.move_failure_alert_content);
break;
default:
throw new UnsupportedOperationException();
}
break;
default:
throw new UnsupportedOperationException();
}
final StringBuilder list = new StringBuilder("<p>");
for (DocumentInfo documentInfo : srcList) {
list.append(String.format("• %s<br>", Html.escapeHtml(documentInfo.displayName)));
}
list.append("</p>");
builder.setMessage(Html.fromHtml(String.format(messageFormat, list.toString())));
builder.setPositiveButton(R.string.close, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
return builder.create();
}
use of com.android.documentsui.model.DocumentInfo in project platform_frameworks_base by android.
the class CreateDirectoryFragment method createDirectory.
private void createDirectory(String name) {
final BaseActivity activity = (BaseActivity) getActivity();
final DocumentInfo cwd = activity.getCurrentDirectory();
new CreateDirectoryTask(activity, cwd, name).executeOnExecutor(ProviderExecutor.forAuthority(cwd.authority));
}
use of com.android.documentsui.model.DocumentInfo in project platform_frameworks_base by android.
the class DocumentClipper method getClipDataForDocuments.
/**
* Returns ClipData representing the list of docs, or null if docs is empty,
* or docs cannot be converted.
*/
@Nullable
public ClipData getClipDataForDocuments(List<DocumentInfo> docs) {
final ContentResolver resolver = mContext.getContentResolver();
final String[] mimeTypes = getMimeTypes(resolver, docs);
ClipData clipData = null;
for (DocumentInfo doc : docs) {
if (clipData == null) {
// TODO: figure out what this string should be.
// Currently it is not displayed anywhere in the UI, but this might change.
final String label = "";
clipData = new ClipData(label, mimeTypes, new ClipData.Item(doc.derivedUri));
} else {
// TODO: update list of mime types in ClipData.
clipData.addItem(new ClipData.Item(doc.derivedUri));
}
}
return clipData;
}
use of com.android.documentsui.model.DocumentInfo in project platform_frameworks_base by android.
the class DocumentClipper method getMimeTypes.
private static String[] getMimeTypes(ContentResolver resolver, List<DocumentInfo> docs) {
final HashSet<String> mimeTypes = new HashSet<>();
for (DocumentInfo doc : docs) {
assert (doc != null);
assert (doc.derivedUri != null);
final Uri uri = doc.derivedUri;
if ("content".equals(uri.getScheme())) {
mimeTypes.add(resolver.getType(uri));
final String[] streamTypes = resolver.getStreamTypes(uri, "*/*");
if (streamTypes != null) {
mimeTypes.addAll(Arrays.asList(streamTypes));
}
}
}
return mimeTypes.toArray(new String[0]);
}
use of com.android.documentsui.model.DocumentInfo in project platform_frameworks_base by android.
the class DocumentsActivity method refreshDirectory.
@Override
void refreshDirectory(int anim) {
final FragmentManager fm = getFragmentManager();
final RootInfo root = getCurrentRoot();
final DocumentInfo cwd = getCurrentDirectory();
if (cwd == null) {
// No directory means recents
if (mState.action == ACTION_CREATE || mState.action == ACTION_OPEN_TREE || mState.action == ACTION_PICK_COPY_DESTINATION) {
RecentsCreateFragment.show(fm);
} else {
DirectoryFragment.showRecentsOpen(fm, anim);
// In recents we pick layout mode based on the mimetype,
// picking GRID for visual types. We intentionally don't
// consult a user's saved preferences here since they are
// set per root (not per root and per mimetype).
boolean visualMimes = MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, mState.acceptMimes);
mState.derivedMode = visualMimes ? State.MODE_GRID : State.MODE_LIST;
}
} else {
// Normal boring directory
DirectoryFragment.showDirectory(fm, root, cwd, anim);
}
// Forget any replacement target
if (mState.action == ACTION_CREATE) {
final SaveFragment save = SaveFragment.get(fm);
if (save != null) {
save.setReplaceTarget(null);
}
}
if (mState.action == ACTION_OPEN_TREE || mState.action == ACTION_PICK_COPY_DESTINATION) {
final PickFragment pick = PickFragment.get(fm);
if (pick != null) {
pick.setPickTarget(mState.action, mState.copyOperationSubType, cwd);
}
}
}
Aggregations