summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryingying <yingying@codeaurora.org>2013-12-26 16:38:13 +0800
committerAdnan <adnan@cyngn.com>2014-09-03 15:41:21 -0700
commit03e6e2b7b5d79a6f127347bac0269bd9819e95d4 (patch)
treef3295f708e590756f793a726ee9d7f5fdac52fcd
parentfcbedd736f2daa785a95c2247294d8eb658f1cd6 (diff)
downloadandroid_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.xml5
-rw-r--r--res/menu/compose_menu.xml5
-rw-r--r--src/com/android/mail/compose/ComposeActivity.java20
-rw-r--r--src/com/android/mail/providers/Settings.java17
-rw-r--r--src/com/android/mail/providers/UIProvider.java9
-rw-r--r--src/com/android/mail/providers/protos/mock/MockUiProvider.java1
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);