Merge "Reorganize DocumentsUI roots fragment to match mocks."
This commit is contained in:
@@ -286,51 +286,34 @@ public class RootsFragment extends Fragment {
|
||||
public RootsAdapter(Context context, Collection<RootInfo> roots, Intent includeApps) {
|
||||
super(context, 0);
|
||||
|
||||
RootItem recents = null;
|
||||
RootItem images = null;
|
||||
RootItem videos = null;
|
||||
RootItem audio = null;
|
||||
RootItem downloads = null;
|
||||
|
||||
final List<RootInfo> clouds = new ArrayList<>();
|
||||
final List<RootInfo> locals = new ArrayList<>();
|
||||
final List<RootItem> libraries = new ArrayList<>();
|
||||
final List<RootItem> clouds = new ArrayList<>();
|
||||
final List<RootItem> locals = new ArrayList<>();
|
||||
|
||||
for (RootInfo root : roots) {
|
||||
if (root.isRecents()) {
|
||||
recents = new RootItem(root);
|
||||
} else if (root.isExternalStorage()) {
|
||||
locals.add(root);
|
||||
} else if (root.isDownloads()) {
|
||||
downloads = new RootItem(root);
|
||||
} else if (root.isImages()) {
|
||||
images = new RootItem(root);
|
||||
} else if (root.isVideos()) {
|
||||
videos = new RootItem(root);
|
||||
} else if (root.isAudio()) {
|
||||
audio = new RootItem(root);
|
||||
} else {
|
||||
clouds.add(root);
|
||||
RootItem item = new RootItem(root);
|
||||
switch (root.derivedType) {
|
||||
case RootInfo.TYPE_LOCAL:
|
||||
locals.add(item);
|
||||
break;
|
||||
case RootInfo.TYPE_CLOUD:
|
||||
clouds.add(item);
|
||||
break;
|
||||
default:
|
||||
libraries.add(item);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
final RootComparator comp = new RootComparator();
|
||||
Collections.sort(clouds, comp);
|
||||
Collections.sort(libraries, comp);
|
||||
Collections.sort(locals, comp);
|
||||
Collections.sort(clouds, comp);
|
||||
|
||||
if (recents != null) add(recents);
|
||||
|
||||
for (RootInfo cloud : clouds) {
|
||||
add(new RootItem(cloud));
|
||||
}
|
||||
|
||||
if (images != null) add(images);
|
||||
if (videos != null) add(videos);
|
||||
if (audio != null) add(audio);
|
||||
if (downloads != null) add(downloads);
|
||||
|
||||
for (RootInfo local : locals) {
|
||||
add(new RootItem(local));
|
||||
}
|
||||
addAll(libraries);
|
||||
add(new SpacerItem());
|
||||
addAll(locals);
|
||||
addAll(clouds);
|
||||
|
||||
if (includeApps != null) {
|
||||
final PackageManager pm = context.getPackageManager();
|
||||
@@ -348,9 +331,7 @@ public class RootsFragment extends Fragment {
|
||||
|
||||
if (apps.size() > 0) {
|
||||
add(new SpacerItem());
|
||||
for (Item item : apps) {
|
||||
add(item);
|
||||
}
|
||||
addAll(apps);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -387,15 +368,20 @@ public class RootsFragment extends Fragment {
|
||||
}
|
||||
}
|
||||
|
||||
public static class RootComparator implements Comparator<RootInfo> {
|
||||
public static class RootComparator implements Comparator<RootItem> {
|
||||
@Override
|
||||
public int compare(RootInfo lhs, RootInfo rhs) {
|
||||
final int score = DocumentInfo.compareToIgnoreCaseNullable(lhs.title, rhs.title);
|
||||
public int compare(RootItem lhs, RootItem rhs) {
|
||||
// Sort by root type, then title, then summary.
|
||||
int score = lhs.root.derivedType - rhs.root.derivedType;
|
||||
if (score != 0) {
|
||||
return score;
|
||||
} else {
|
||||
return DocumentInfo.compareToIgnoreCaseNullable(lhs.summary, rhs.summary);
|
||||
}
|
||||
score = DocumentInfo.compareToIgnoreCaseNullable(lhs.root.title, rhs.root.title);
|
||||
if (score != 0) {
|
||||
return score;
|
||||
}
|
||||
|
||||
return DocumentInfo.compareToIgnoreCaseNullable(lhs.root.summary, rhs.root.summary);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,15 @@ public class RootInfo implements Durable, Parcelable {
|
||||
private static final int VERSION_INIT = 1;
|
||||
private static final int VERSION_DROP_TYPE = 2;
|
||||
|
||||
// The values of these constants determine the sort order of various roots in the RootsFragment.
|
||||
public static final int TYPE_IMAGES = 1;
|
||||
public static final int TYPE_VIDEO = 2;
|
||||
public static final int TYPE_AUDIO = 3;
|
||||
public static final int TYPE_RECENTS = 4;
|
||||
public static final int TYPE_DOWNLOADS = 5;
|
||||
public static final int TYPE_LOCAL = 6;
|
||||
public static final int TYPE_CLOUD = 7;
|
||||
|
||||
public String authority;
|
||||
public String rootId;
|
||||
public int flags;
|
||||
@@ -57,6 +66,7 @@ public class RootInfo implements Durable, Parcelable {
|
||||
/** Derived fields that aren't persisted */
|
||||
public String[] derivedMimeTypes;
|
||||
public int derivedIcon;
|
||||
public int derivedType;
|
||||
|
||||
public RootInfo() {
|
||||
reset();
|
||||
@@ -76,6 +86,7 @@ public class RootInfo implements Durable, Parcelable {
|
||||
|
||||
derivedMimeTypes = null;
|
||||
derivedIcon = 0;
|
||||
derivedType = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -158,14 +169,23 @@ public class RootInfo implements Durable, Parcelable {
|
||||
// TODO: remove these special case icons
|
||||
if (isExternalStorage()) {
|
||||
derivedIcon = R.drawable.ic_root_sdcard;
|
||||
derivedType = TYPE_LOCAL;
|
||||
} else if (isDownloads()) {
|
||||
derivedIcon = R.drawable.ic_root_download;
|
||||
derivedType = TYPE_DOWNLOADS;
|
||||
} else if (isImages()) {
|
||||
derivedIcon = R.drawable.ic_doc_image;
|
||||
derivedType = TYPE_IMAGES;
|
||||
} else if (isVideos()) {
|
||||
derivedIcon = R.drawable.ic_doc_video;
|
||||
derivedType = TYPE_VIDEO;
|
||||
} else if (isAudio()) {
|
||||
derivedIcon = R.drawable.ic_doc_audio;
|
||||
derivedType = TYPE_AUDIO;
|
||||
} else if (isRecents()) {
|
||||
derivedType = TYPE_RECENTS;
|
||||
} else {
|
||||
derivedType = TYPE_CLOUD;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user