diff options
author | Vikram Aggarwal <viki@google.com> | 2013-07-03 23:19:37 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-07-03 23:19:37 +0000 |
commit | 89682d3669300a6a2c33a3af61586104d7a8bc19 (patch) | |
tree | 970bf2c4abcd73a1dc93eeca89aca6cc772c0a25 | |
parent | b85716da231dbfc2bf2af7f88d916110a6d4ff8d (diff) | |
parent | a3bbac02817b12e7641ba67f95d60ecd7794b500 (diff) | |
download | android_packages_apps_UnifiedEmail-89682d3669300a6a2c33a3af61586104d7a8bc19.tar.gz android_packages_apps_UnifiedEmail-89682d3669300a6a2c33a3af61586104d7a8bc19.tar.bz2 android_packages_apps_UnifiedEmail-89682d3669300a6a2c33a3af61586104d7a8bc19.zip |
Merge "Parent folder as a URI" into jb-ub-mail-ur10
-rw-r--r-- | src/com/android/mail/providers/Folder.java | 22 | ||||
-rw-r--r-- | src/com/android/mail/providers/UIProvider.java | 9 | ||||
-rw-r--r-- | src/com/android/mail/ui/AddableFolderSelectorAdapter.java | 2 | ||||
-rw-r--r-- | src/com/android/mail/ui/FolderListFragment.java | 9 | ||||
-rw-r--r-- | src/com/android/mail/ui/OnePaneController.java | 24 | ||||
-rw-r--r-- | src/com/android/mail/ui/TwoPaneController.java | 13 |
6 files changed, 43 insertions, 36 deletions
diff --git a/src/com/android/mail/providers/Folder.java b/src/com/android/mail/providers/Folder.java index 867d4b8cb..77c69ae2d 100644 --- a/src/com/android/mail/providers/Folder.java +++ b/src/com/android/mail/providers/Folder.java @@ -180,11 +180,9 @@ public class Folder implements Parcelable, Comparable<Folder> { public String hierarchicalDesc; /** - * Parent folder of this folder, or null if there is none. This is set as - * part of the execution of the application and not obtained or stored via - * the provider. + * Parent folder of this folder, or null if there is none. */ - public Folder parent; + public Uri parent; /** * The time at which the last message was received. @@ -199,7 +197,7 @@ public class Folder implements Parcelable, Comparable<Folder> { boolean hasChildren, int syncWindow, Uri conversationListUri, Uri childFoldersListUri, int unseenCount, int unreadCount, int totalCount, Uri refreshUri, int syncStatus, int lastSyncResult, int type, int iconResId, int notificationIconResId, String bgColor, - String fgColor, Uri loadMoreUri, String hierarchicalDesc, Folder parent, + String fgColor, Uri loadMoreUri, String hierarchicalDesc, Uri parent, final long lastMessageTimestamp) { this.id = id; this.persistentId = persistentId; @@ -229,8 +227,8 @@ public class Folder implements Parcelable, Comparable<Folder> { } this.loadMoreUri = loadMoreUri; this.hierarchicalDesc = hierarchicalDesc; - this.parent = parent; this.lastMessageTimestamp = lastMessageTimestamp; + this.parent = parent; } public Folder(Cursor cursor) { @@ -268,8 +266,10 @@ public class Folder implements Parcelable, Comparable<Folder> { String loadMore = cursor.getString(UIProvider.FOLDER_LOAD_MORE_URI_COLUMN); loadMoreUri = !TextUtils.isEmpty(loadMore) ? Uri.parse(loadMore) : null; hierarchicalDesc = cursor.getString(UIProvider.FOLDER_HIERARCHICAL_DESC_COLUMN); - parent = null; lastMessageTimestamp = cursor.getLong(UIProvider.FOLDER_LAST_MESSAGE_TIMESTAMP_COLUMN); + // A null parent URI means that this is a top-level folder. + final String parentString = cursor.getString(UIProvider.FOLDER_PARENT_URI_COLUMN); + parent = parentString == null ? Uri.EMPTY : Uri.parse(parentString); } /** @@ -319,6 +319,7 @@ public class Folder implements Parcelable, Comparable<Folder> { hierarchicalDesc = in.readString(); parent = in.readParcelable(loader); lastMessageTimestamp = in.readLong(); + parent = in.readParcelable(loader); } @Override @@ -348,6 +349,7 @@ public class Folder implements Parcelable, Comparable<Folder> { dest.writeString(hierarchicalDesc); dest.writeParcelable(parent, 0); dest.writeLong(lastMessageTimestamp); + dest.writeParcelable(parent, 0); } /** @@ -512,11 +514,11 @@ public class Folder implements Parcelable, Comparable<Folder> { /** * Get just the uri's from an arraylist of folders. */ - public final static String[] getUriArray(List<Folder> folders) { + public static String[] getUriArray(List<Folder> folders) { if (folders == null || folders.size() == 0) { return new String[0]; } - String[] folderUris = new String[folders.size()]; + final String[] folderUris = new String[folders.size()]; int i = 0; for (Folder folder : folders) { folderUris[i] = folder.uri.toString(); @@ -643,7 +645,7 @@ public class Folder implements Parcelable, Comparable<Folder> { } f.loadMoreUri = getValidUri(split[index++]); f.hierarchicalDesc = split[index++]; - f.parent = Folder.fromString(split[index++]); + f.parent = Folder.getValidUri(split[index++]); return f; } diff --git a/src/com/android/mail/providers/UIProvider.java b/src/com/android/mail/providers/UIProvider.java index 32465826a..0d530bd6d 100644 --- a/src/com/android/mail/providers/UIProvider.java +++ b/src/com/android/mail/providers/UIProvider.java @@ -636,7 +636,8 @@ public class UIProvider { FolderColumns.FG_COLOR, FolderColumns.LOAD_MORE_URI, FolderColumns.HIERARCHICAL_DESC, - FolderColumns.LAST_MESSAGE_TIMESTAMP + FolderColumns.LAST_MESSAGE_TIMESTAMP, + FolderColumns.PARENT_URI }; public static final int FOLDER_ID_COLUMN = 0; @@ -662,6 +663,7 @@ public class UIProvider { public static final int FOLDER_LOAD_MORE_URI_COLUMN = 20; public static final int FOLDER_HIERARCHICAL_DESC_COLUMN = 21; public static final int FOLDER_LAST_MESSAGE_TIMESTAMP_COLUMN = 22; + public static final int FOLDER_PARENT_URI_COLUMN = 23; public static final class FolderType { /** A user defined label. */ @@ -871,6 +873,11 @@ public class UIProvider { */ public static final String LAST_MESSAGE_TIMESTAMP = "lastMessageTimestamp"; + /** + * The URI, possibly null, of the parent folder. + */ + public static final String PARENT_URI = "parentUri"; + public FolderColumns() {} } diff --git a/src/com/android/mail/ui/AddableFolderSelectorAdapter.java b/src/com/android/mail/ui/AddableFolderSelectorAdapter.java index fd76eaf58..350abfcc5 100644 --- a/src/com/android/mail/ui/AddableFolderSelectorAdapter.java +++ b/src/com/android/mail/ui/AddableFolderSelectorAdapter.java @@ -106,6 +106,8 @@ public class AddableFolderSelectorAdapter extends FolderSelectorAdapter { .getString(UIProvider.FOLDER_HIERARCHICAL_DESC_COLUMN); folder[UIProvider.FOLDER_LAST_MESSAGE_TIMESTAMP_COLUMN] = folderCursor .getLong(UIProvider.FOLDER_LAST_MESSAGE_TIMESTAMP_COLUMN); + folder[UIProvider.FOLDER_PARENT_URI_COLUMN] = folderCursor + .getString(UIProvider.FOLDER_PARENT_URI_COLUMN); cursor.addRow(folder); } } while (folderCursor.moveToNext()); diff --git a/src/com/android/mail/ui/FolderListFragment.java b/src/com/android/mail/ui/FolderListFragment.java index dc4c5ec00..55a0924f8 100644 --- a/src/com/android/mail/ui/FolderListFragment.java +++ b/src/com/android/mail/ui/FolderListFragment.java @@ -485,11 +485,6 @@ public class FolderListFragment extends ListFragment implements if (folder != null) { // Not changing the account. final Account nextAccount = null; - // Since we may be looking at hierarchical views, if we can - // determine the parent of the folder we have tapped, set it here. - // If we are looking at the folder we are already viewing, don't - // update its parent! - folder.parent = folder.equals(mParentFolder) ? null : mParentFolder; // Go to the conversation list for this folder. if (!folder.uri.equals(mSelectedFolderUri)) { mNextFolder = folder; @@ -1008,9 +1003,7 @@ public class FolderListFragment extends ListFragment implements if (cursor != null && cursor.getCount() > 0) { cursor.moveToFirst(); do { - Folder f = cursor.getModel(); - f.parent = mParent; - add(f); + add(cursor.getModel()); } while (cursor.moveToNext()); } } diff --git a/src/com/android/mail/ui/OnePaneController.java b/src/com/android/mail/ui/OnePaneController.java index 1ab18f35f..b18ddb6d8 100644 --- a/src/com/android/mail/ui/OnePaneController.java +++ b/src/com/android/mail/ui/OnePaneController.java @@ -361,7 +361,7 @@ public final class OnePaneController extends AbstractActivityController { final FolderListFragment folderListFragment = getFolderListFragment(); final boolean parentHasChildren = folderListFragment != null && folderListFragment.showingHierarchy() && hierarchyFolder != null - && hierarchyFolder.parent != null; + && hierarchyFolder.parent != Uri.EMPTY; if (parentHasChildren) { // If we are showing the folder list and the user is exploring // the children of a single parent folder, @@ -377,10 +377,13 @@ public final class OnePaneController extends AbstractActivityController { } else if (mViewMode.isListMode() && !inInbox(mAccount, mConvListContext)) { if (mLastFolderListTransactionId != INVALID_ID) { // Set the hierarchy folder to what it will be once we go up - final Folder hierarchyFolder = getHierarchyFolder(); - if (hierarchyFolder != null && hierarchyFolder.parent != null) { - setHierarchyFolder(hierarchyFolder.parent); - } + + // The hierarchy folder stuff is not required. We need to clean this stuff up. + // TODO: http://b/9694899 +// final Folder hierarchyFolder = getHierarchyFolder(); +// if (hierarchyFolder != null && hierarchyFolder.parent != null) { +// setHierarchyFolder(hierarchyFolder.parent); +// } // If the user got here by navigating via the folder list, back // should bring them back to the folder list. @@ -399,12 +402,9 @@ public final class OnePaneController extends AbstractActivityController { } private void goUpFolderHierarchy(Folder current) { - final Folder top = current.parent; - if (top != null) { - // FIXME: This is silly. we worked so hard to add folder fragments to the back stack. - // it should either just pop back, or should not use the back stack at all. - onFolderSelected(top); - } + // This code is currently never called. Now that we have the URI, load the parent, if + // required. http://b/9694899 + // onFolderSelected(current.parent); } /** @@ -465,7 +465,7 @@ public final class OnePaneController extends AbstractActivityController { final FolderListFragment folderListFragment = getFolderListFragment(); if (folderListFragment != null) { final Folder parentFolder = folderListFragment.getParentFolder(); - if (parentFolder == null || parentFolder.parent == null) { + if (parentFolder == null || parentFolder.parent == Uri.EMPTY) { toggleFolderListState(); return true; } diff --git a/src/com/android/mail/ui/TwoPaneController.java b/src/com/android/mail/ui/TwoPaneController.java index f80072d26..e57929279 100644 --- a/src/com/android/mail/ui/TwoPaneController.java +++ b/src/com/android/mail/ui/TwoPaneController.java @@ -20,6 +20,7 @@ package com.android.mail.ui; import android.app.Fragment; import android.app.FragmentTransaction; import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.view.Gravity; @@ -155,10 +156,11 @@ public final class TwoPaneController extends AbstractActivityController { private void goUpFolderHierarchy(Folder current) { // If the current folder is a child, up should show the parent folder. - final Folder parent = current.parent; - if (parent != null) { - onFolderSelected(parent); - } + // Fix this to load the parent folder: http://b/9694899 +// final Folder parent = current.parent; +// if (parent != null) { +// onFolderSelected(parent); +// } } @Override @@ -392,8 +394,9 @@ public final class TwoPaneController extends AbstractActivityController { && folderList.showingHierarchy()) { // If the user navigated via the left folders list into a child folder, // back should take the user up to the parent folder's conversation list. + // TODO: Clean this code up: http://b/9694899 final Folder hierarchyFolder = getHierarchyFolder(); - if (hierarchyFolder.parent != null) { + if (hierarchyFolder.parent != Uri.EMPTY) { goUpFolderHierarchy(hierarchyFolder); } else { // Show inbox; we are at the top of the hierarchy we were |