diff options
author | yingying <yingying@codeaurora.org> | 2013-12-26 16:38:13 +0800 |
---|---|---|
committer | Adnan <adnan@cyngn.com> | 2014-09-03 15:41:21 -0700 |
commit | 03e6e2b7b5d79a6f127347bac0269bd9819e95d4 (patch) | |
tree | f3295f708e590756f793a726ee9d7f5fdac52fcd | |
parent | fcbedd736f2daa785a95c2247294d8eb658f1cd6 (diff) | |
download | android_packages_apps_UnifiedEmail-03e6e2b7b5d79a6f127347bac0269bd9819e95d4.tar.gz android_packages_apps_UnifiedEmail-03e6e2b7b5d79a6f127347bac0269bd9819e95d4.tar.bz2 android_packages_apps_UnifiedEmail-03e6e2b7b5d79a6f127347bac0269bd9819e95d4.zip |
UnifiedEmail: Display the attach file menu.
- Display the attach file menu if the user enable "Add any file as attachment"
item. And after the user press this menu, it will let the user choose any
file as the attachment for the compose message.
Change-Id: Iead5c6695af91acca0c17ff6f6bbc69d2d123a52
-rw-r--r-- | res/menu-sw600dp/compose_menu.xml | 5 | ||||
-rw-r--r-- | res/menu/compose_menu.xml | 5 | ||||
-rw-r--r-- | src/com/android/mail/compose/ComposeActivity.java | 20 | ||||
-rw-r--r-- | src/com/android/mail/providers/Settings.java | 17 | ||||
-rw-r--r-- | src/com/android/mail/providers/UIProvider.java | 9 | ||||
-rw-r--r-- | src/com/android/mail/providers/protos/mock/MockUiProvider.java | 1 |
6 files changed, 51 insertions, 6 deletions
diff --git a/res/menu-sw600dp/compose_menu.xml b/res/menu-sw600dp/compose_menu.xml index 5377bce30..00e38bda3 100644 --- a/res/menu-sw600dp/compose_menu.xml +++ b/res/menu-sw600dp/compose_menu.xml @@ -27,6 +27,11 @@ android:title="@string/save_draft" android:alphabeticShortcut="@string/trigger_save_char" /> + <item android:id="@+id/add_file_attachment" + android:icon="@drawable/ic_attachment_holo_light" + android:title="@string/add_file_attachment" + android:showAsAction="never" /> + <item android:id="@+id/add_photo_attachment" android:icon="@drawable/ic_attachment_holo_light" android:title="@string/add_photo_attachment" diff --git a/res/menu/compose_menu.xml b/res/menu/compose_menu.xml index ce1ba187d..6b564f5d0 100644 --- a/res/menu/compose_menu.xml +++ b/res/menu/compose_menu.xml @@ -22,6 +22,11 @@ android:icon="@drawable/send" android:title="@string/send"/> + <item android:id="@+id/add_file_attachment" + android:icon="@drawable/ic_attachment_holo_light" + android:title="@string/add_file_attachment" + android:showAsAction="never" /> + <item android:id="@+id/add_photo_attachment" android:icon="@drawable/ic_attachment_holo_light" android:title="@string/add_photo_attachment" diff --git a/src/com/android/mail/compose/ComposeActivity.java b/src/com/android/mail/compose/ComposeActivity.java index dec020740..b502f6476 100644 --- a/src/com/android/mail/compose/ComposeActivity.java +++ b/src/com/android/mail/compose/ComposeActivity.java @@ -227,6 +227,7 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi private static final String TAG_WAIT = "wait-fragment"; private static final String MIME_TYPE_PHOTO = "image/*"; private static final String MIME_TYPE_VIDEO = "video/*"; + private static final String MIME_TYPE_ALL = "*/*"; private static final String KEY_INNER_SAVED_STATE = "compose_state"; @@ -1944,7 +1945,14 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi // Animate in cc/bcc. showCcBccViews(); } else if (id == R.id.add_photo_attachment) { - doAttach(MIME_TYPE_PHOTO); + // On the 600dp, it will only display one attach button as add_photo_attachment. + // So if the user enable the "Add any file as attachment", we will let the user + // could select any file as attachment. + if (mAccount.settings.addAttachment) { + doAttach(MIME_TYPE_ALL); + } else { + doAttach(MIME_TYPE_PHOTO); + } } else if (id == R.id.add_video_attachment) { doAttach(MIME_TYPE_VIDEO); } @@ -2013,6 +2021,12 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi ccBcc.setVisible(false); } } + + MenuItem addFileAttachment = menu.findItem(R.id.add_file_attachment); + if (addFileAttachment != null) { + addFileAttachment.setVisible(mAccount.settings.addAttachment); + } + return true; } @@ -2023,7 +2037,9 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi Analytics.getInstance().sendMenuItemEvent(Analytics.EVENT_CATEGORY_MENU_ITEM, id, null, 0); boolean handled = true; - if (id == R.id.add_photo_attachment) { + if (id == R.id.add_file_attachment) { + doAttach(MIME_TYPE_ALL); + } else if (id == R.id.add_photo_attachment) { doAttach(MIME_TYPE_PHOTO); } else if (id == R.id.add_video_attachment) { doAttach(MIME_TYPE_VIDEO); diff --git a/src/com/android/mail/providers/Settings.java b/src/com/android/mail/providers/Settings.java index 83d999352..fa7ff6495 100644 --- a/src/com/android/mail/providers/Settings.java +++ b/src/com/android/mail/providers/Settings.java @@ -74,6 +74,7 @@ public class Settings implements Parcelable { public final boolean confirmDelete; public final boolean confirmArchive; public final boolean confirmSend; + public final boolean addAttachment; public final int conversationViewMode; public final Uri defaultInbox; /** @@ -116,6 +117,7 @@ public class Settings implements Parcelable { confirmDelete = false; confirmArchive = false; confirmSend = false; + addAttachment = true; defaultInbox = Uri.EMPTY; defaultInboxName = ""; forceReplyFromDefault = false; @@ -139,6 +141,7 @@ public class Settings implements Parcelable { confirmDelete = inParcel.readInt() != 0; confirmArchive = inParcel.readInt() != 0; confirmSend = inParcel.readInt() != 0; + addAttachment = inParcel.readInt() != 0; defaultInbox = Utils.getValidUri(inParcel.readString()); defaultInboxName = inParcel.readString(); forceReplyFromDefault = inParcel.readInt() != 0; @@ -163,6 +166,7 @@ public class Settings implements Parcelable { confirmDelete = cursor.getInt(cursor.getColumnIndex(SettingsColumns.CONFIRM_DELETE)) != 0; confirmArchive = cursor.getInt(cursor.getColumnIndex(SettingsColumns.CONFIRM_ARCHIVE)) != 0; confirmSend = cursor.getInt(cursor.getColumnIndex(SettingsColumns.CONFIRM_SEND)) != 0; + addAttachment = cursor.getInt(cursor.getColumnIndex(SettingsColumns.ADD_ATTACHMENT)) != 0; defaultInbox = Utils.getValidUri( cursor.getString(cursor.getColumnIndex(SettingsColumns.DEFAULT_INBOX))); defaultInboxName = @@ -196,6 +200,7 @@ public class Settings implements Parcelable { confirmDelete = json.optBoolean(SettingsColumns.CONFIRM_DELETE, sDefault.confirmDelete); confirmArchive = json.optBoolean(SettingsColumns.CONFIRM_ARCHIVE, sDefault.confirmArchive); confirmSend = json.optBoolean(SettingsColumns.CONFIRM_SEND, sDefault.confirmSend); + addAttachment = json.optBoolean(SettingsColumns.ADD_ATTACHMENT, sDefault.addAttachment); defaultInbox = Utils.getValidUri( json.optString(SettingsColumns.DEFAULT_INBOX)); defaultInboxName = json.optString(SettingsColumns.DEFAULT_INBOX_NAME, sDefault.defaultInboxName); @@ -243,6 +248,7 @@ public class Settings implements Parcelable { json.put(SettingsColumns.CONFIRM_DELETE, confirmDelete); json.put(SettingsColumns.CONFIRM_ARCHIVE, confirmArchive); json.put(SettingsColumns.CONFIRM_SEND, confirmSend); + json.put(SettingsColumns.ADD_ATTACHMENT, addAttachment); json.put(SettingsColumns.DEFAULT_INBOX, getNonNull(defaultInbox, sDefault.defaultInbox)); json.put(SettingsColumns.DEFAULT_INBOX_NAME, @@ -283,6 +289,7 @@ public class Settings implements Parcelable { map.put(UIProvider.AccountColumns.SettingsColumns.CONFIRM_DELETE, confirmDelete ? 1 : 0); map.put(UIProvider.AccountColumns.SettingsColumns.CONFIRM_ARCHIVE, confirmArchive ? 1 : 0); map.put(UIProvider.AccountColumns.SettingsColumns.CONFIRM_SEND, confirmSend ? 1 : 0); + map.put(UIProvider.AccountColumns.SettingsColumns.ADD_ATTACHMENT, addAttachment ? 1 : 0); map.put(UIProvider.AccountColumns.SettingsColumns.DEFAULT_INBOX, defaultInbox); map.put(UIProvider.AccountColumns.SettingsColumns.DEFAULT_INBOX_NAME, defaultInboxName); map.put(UIProvider.AccountColumns.SettingsColumns.FORCE_REPLY_FROM_DEFAULT, @@ -331,8 +338,9 @@ public class Settings implements Parcelable { dest.writeInt(convListIcon); dest.writeInt(convListAttachmentPreviews ? 1 : 0); dest.writeInt(confirmDelete ? 1 : 0); - dest.writeInt(confirmArchive? 1 : 0); - dest.writeInt(confirmSend? 1 : 0); + dest.writeInt(confirmArchive ? 1 : 0); + dest.writeInt(confirmSend ? 1 : 0); + dest.writeInt(addAttachment ? 1 : 0); dest.writeString(getNonNull(defaultInbox, sDefault.defaultInbox).toString()); dest.writeString((String) getNonNull(defaultInboxName, sDefault.defaultInboxName)); dest.writeInt(forceReplyFromDefault ? 1 : 0); @@ -442,6 +450,7 @@ public class Settings implements Parcelable { && confirmDelete == that.confirmDelete && confirmArchive == that.confirmArchive && confirmSend == that.confirmSend + && addAttachment == that.addAttachment && Objects.equal(defaultInbox, that.defaultInbox) // Not checking default Inbox name, since is is identical to the URI check above. && forceReplyFromDefault == that.forceReplyFromDefault @@ -461,8 +470,8 @@ public class Settings implements Parcelable { ^ Objects.hashCode(signature, mAutoAdvance, mTransientAutoAdvance, messageTextSize, snapHeaders, replyBehavior, convListIcon, convListAttachmentPreviews, confirmDelete, confirmArchive, confirmSend, - defaultInbox, forceReplyFromDefault, maxAttachmentSize, swipe, - priorityArrowsEnabled, setupIntentUri, conversationViewMode, + addAttachment, defaultInbox, forceReplyFromDefault, maxAttachmentSize, + swipe, priorityArrowsEnabled, setupIntentUri, conversationViewMode, veiledAddressPattern, moveToInbox); } return mHashCode; diff --git a/src/com/android/mail/providers/UIProvider.java b/src/com/android/mail/providers/UIProvider.java index 49c7cc627..f22e60ce9 100644 --- a/src/com/android/mail/providers/UIProvider.java +++ b/src/com/android/mail/providers/UIProvider.java @@ -167,6 +167,7 @@ public class UIProvider { .put(AccountColumns.SettingsColumns.CONFIRM_DELETE, Integer.class) .put(AccountColumns.SettingsColumns.CONFIRM_ARCHIVE, Integer.class) .put(AccountColumns.SettingsColumns.CONFIRM_SEND, Integer.class) + .put(AccountColumns.SettingsColumns.ADD_ATTACHMENT, Integer.class) .put(AccountColumns.SettingsColumns.DEFAULT_INBOX, String.class) .put(AccountColumns.SettingsColumns.DEFAULT_INBOX_NAME, String.class) .put(AccountColumns.SettingsColumns.FORCE_REPLY_FROM_DEFAULT, Integer.class) @@ -564,6 +565,14 @@ public class UIProvider { * be shown when a send action is performed. */ public static final String CONFIRM_SEND = "confirm_send"; + + /** + * Integer column containing the user's specified add attachment preference value. + * A non zero value indicates that the user could add any file as the attachment, + * and shown the menu to attach the file. + */ + public static final String ADD_ATTACHMENT = "add_attachment"; + /** * String containing the URI for the default inbox for this account. */ diff --git a/src/com/android/mail/providers/protos/mock/MockUiProvider.java b/src/com/android/mail/providers/protos/mock/MockUiProvider.java index c908bb8c0..817f0f27b 100644 --- a/src/com/android/mail/providers/protos/mock/MockUiProvider.java +++ b/src/com/android/mail/providers/protos/mock/MockUiProvider.java @@ -375,6 +375,7 @@ public final class MockUiProvider extends ContentProvider { accountMap.put(SettingsColumns.CONFIRM_DELETE, 1); accountMap.put(SettingsColumns.CONFIRM_ARCHIVE, 1); accountMap.put(SettingsColumns.CONFIRM_SEND, 1); + accountMap.put(SettingsColumns.ADD_ATTACHMENT, 1); accountMap.put(SettingsColumns.DEFAULT_INBOX, defaultInbox); accountMap.put(SettingsColumns.DEFAULT_INBOX_NAME, "Inbox"); accountMap.put(SettingsColumns.FORCE_REPLY_FROM_DEFAULT, 1); |