Merge "Fragmentize MessageView."

This commit is contained in:
Makoto Onuki 2010-07-21 14:21:06 -07:00 committed by Android (Google) Code Review
commit bab0d45904
7 changed files with 1663 additions and 1410 deletions

View File

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<ScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:scrollbarStyle="outsideInset"
android:fadingEdge="none">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1">
<!-- put invisible views for prev/next in order to not special-case the lanscape in code -->
<FrameLayout
android:visibility="gone"
android:layout_width="0dip"
android:layout_height="0dip">
<View
android:id="@+id/moveToNewer"
android:layout_width="0dip"
android:layout_height="0dip" />
<View android:id="@+id/moveToOlder"
android:layout_width="0dip"
android:layout_height="0dip" />
</FrameLayout>
<include layout="@layout/message_view_header" />
</LinearLayout>
</ScrollView>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dip"
android:paddingLeft="4dip"
android:paddingRight="4dip"
android:paddingBottom="1dip"
android:background="@android:drawable/bottom_bar">
<Button
android:id="@+id/reply"
android:text="@string/reply_action"
android:layout_height="match_parent"
android:layout_width="0dip"
android:layout_weight="1" />
<Button
android:id="@+id/reply_all"
android:text="@string/reply_all_action"
android:layout_height="match_parent"
android:layout_width="0dip"
android:layout_weight="1" />
<Button
android:id="@+id/delete"
android:text="@string/delete_action"
android:layout_height="match_parent"
android:layout_width="0dip"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>

View File

@ -20,58 +20,14 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<ScrollView
android:id="@+id/scrollview"
<fragment
android:id="@+id/message_view_fragment"
android:name="com.android.email.activity.MessageViewFragment"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:scrollbarStyle="outsideOverlay"
android:fadingEdge="none"
android:fillViewport="true">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Note, height is 2+35+0. There is a 4pixel fade on top of header image -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="37dip"
android:paddingTop="2dip"
android:background="#101010">
<ImageButton
android:id="@+id/moveToNewer"
android:layout_height="35dip"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/btn_arrow_left"
android:scaleType="fitStart"
android:paddingLeft="6dip"
android:background="@drawable/btn_arrow_background"
android:paddingTop="0dip"
android:paddingBottom="0dip"
/>
<ImageButton
android:id="@+id/moveToOlder"
android:layout_height="35dip"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:src="@drawable/btn_arrow_right"
android:scaleType="fitEnd"
android:paddingRight="9dip"
android:background="@drawable/btn_arrow_background"
android:paddingTop="0dip"
android:paddingBottom="0dip"
/>
</LinearLayout>
<include layout="@layout/message_view_header" />
</LinearLayout>
</ScrollView>
/>
<!-- Bottom buttons -->
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
@ -99,5 +55,17 @@
android:layout_height="match_parent"
android:layout_width="0dip"
android:layout_weight="1" />
<Button
android:id="@+id/moveToNewer"
android:text="@string/message_view_move_to_newer"
android:layout_height="match_parent"
android:layout_width="0dip"
android:layout_weight="1" />
<Button
android:id="@+id/moveToOlder"
android:text="@string/message_view_move_to_older"
android:layout_height="match_parent"
android:layout_width="0dip"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>

View File

@ -14,171 +14,191 @@
limitations under the License.
-->
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<!-- header area -->
<!--
TODO Rename to message_view_fragment.xml
Can't do it now because git wouldn't detect renaming.
-->
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="0dip"
android:scrollbarStyle="outsideOverlay"
android:fadingEdge="none"
android:fillViewport="true"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/header_card"
android:paddingTop="3dip"
android:paddingBottom="3dip"
android:paddingLeft="3dip"
android:paddingRight="6dip">
<LinearLayout
android:id="@+id/from_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="true" >
<ImageView
android:id="@+id/presence"
android:src="@drawable/presence_inactive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dip"
android:layout_gravity="center_vertical"
android:background="@drawable/quickcontact_presence_bg" />
<TextView
android:id="@+id/from"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimaryInverse"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:singleLine="true"
android:ellipsize="end"
android:paddingRight="6dip" />
<ImageView
android:id="@+id/attachment"
android:src="@drawable/ic_email_attachment_small"
android:layout_width="22dip"
android:layout_height="22dip"
android:baselineAlignBottom="true" />
<TextView
android:id="@+id/date"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorPrimaryInverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:id="@+id/to_container"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/message_view_to_label" />
<TextView
android:id="@+id/to"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:singleLine="false"
android:ellipsize="none" />
<TextView
android:id="@+id/time"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorPrimaryInverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:id="@+id/cc_container"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/message_view_cc_label" />
<TextView
android:id="@+id/cc"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:singleLine="false"
android:ellipsize="none" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/subject"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:textStyle="bold"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:singleLine="false"
android:ellipsize="none" />
<!-- TODO: Move this to wherever it really belongs -->
<ImageView
android:id="@+id/favorite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/btn_star_big_buttonless_off" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/show_pictures_section"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffefefef"
android:layout_marginTop="6dip"
android:paddingLeft="6dip"
android:paddingRight="3dip"
android:paddingTop="4dip"
android:paddingBottom="4dip"
android:baselineAligned="false"
android:visibility="gone">
<TextView
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:text="@string/message_view_show_pictures_instructions"
android:layout_gravity="center"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1.0" />
<Button
android:id="@+id/show_pictures"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/message_view_show_pictures_action" />
</LinearLayout>
<!-- content area -->
<include layout="@layout/message_view_invitation" />
<WebView
android:id="@+id/message_content"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="#ffffff" />
<!-- attachments area -->
<LinearLayout
android:id="@+id/attachments"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dip"
android:background="#ffffff">
android:layout_height="match_parent"
>
<!-- header area -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/header_card"
android:paddingTop="3dip"
android:paddingBottom="3dip"
android:paddingLeft="3dip"
android:paddingRight="6dip">
<LinearLayout
android:id="@+id/from_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="true" >
<ImageView
android:id="@+id/presence"
android:src="@drawable/presence_inactive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dip"
android:layout_gravity="center_vertical"
android:background="@drawable/quickcontact_presence_bg" />
<TextView
android:id="@+id/from"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"
android:textColor="?android:attr/textColorPrimaryInverse"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:singleLine="true"
android:ellipsize="end"
android:paddingRight="6dip" />
<ImageView
android:id="@+id/attachment"
android:src="@drawable/ic_email_attachment_small"
android:layout_width="22dip"
android:layout_height="22dip"
android:baselineAlignBottom="true" />
<TextView
android:id="@+id/date"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorPrimaryInverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:id="@+id/to_container"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/message_view_to_label" />
<TextView
android:id="@+id/to"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:singleLine="false"
android:ellipsize="none" />
<TextView
android:id="@+id/time"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorPrimaryInverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:id="@+id/cc_container"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/message_view_cc_label" />
<TextView
android:id="@+id/cc"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:layout_marginLeft="4dip"
android:singleLine="false"
android:ellipsize="none" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/subject"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:textStyle="bold"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:singleLine="false"
android:ellipsize="none" />
<!-- TODO: Move this to wherever it really belongs -->
<ImageView
android:id="@+id/favorite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/btn_star_big_buttonless_off" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/show_pictures_section"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffefefef"
android:layout_marginTop="6dip"
android:paddingLeft="6dip"
android:paddingRight="3dip"
android:paddingTop="4dip"
android:paddingBottom="4dip"
android:baselineAligned="false"
android:visibility="gone">
<TextView
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondaryInverse"
android:text="@string/message_view_show_pictures_instructions"
android:layout_gravity="center"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1.0" />
<Button
android:id="@+id/show_pictures"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/message_view_show_pictures_action" />
</LinearLayout>
<!-- content area -->
<include layout="@layout/message_view_invitation" />
<WebView
android:id="@+id/message_content"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="#ffffff" />
<!-- attachments area -->
<LinearLayout
android:id="@+id/attachments"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dip"
android:background="#ffffff">
</LinearLayout>
</LinearLayout>
</merge>
</ScrollView>

View File

@ -332,6 +332,11 @@
<item quantity="other"><xliff:g id="size_in_gigabytes" example="279">%d</xliff:g>GB</item>
</plurals>
<!-- Do Not Translate. The label of the next button on the message view screen. -->
<string name="message_view_move_to_newer">&lt;</string>
<!-- Do Not Translate. The label of the previous button on the message view screen. -->
<string name="message_view_move_to_older">&gt;</string>
<!-- Title of screen when setting up new email account -->
<string name="account_setup_basics_title">Set up email</string>
<!-- Title of the screen when adding exchange account -->

View File

@ -0,0 +1,86 @@
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.email.activity;
import com.android.email.R;
import com.android.email.Utility;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.MediaScannerConnectionClient;
import android.net.Uri;
import java.io.File;
/**
* Call to pass a media file to the media scanner service and open it when scanned.
*
* TODO We maight want to set FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET when starting intent, as its
* javadoc suggest. (But seems like Gmail doesn't do that either.)
*/
public class MediaOpener {
private final Activity mActivity;
private final MediaScannerConnection mConnection;
private final File mFile;
private MediaOpener(Activity activity, File file) {
mActivity = activity;
mFile = file;
mConnection = new MediaScannerConnection(mActivity.getApplicationContext(),
new MediaScannerConnectionClient() {
@Override
public void onMediaScannerConnected() {
mConnection.scanFile(mFile.getAbsolutePath(), null);
}
@Override
public void onScanCompleted(String path, Uri uri) {
MediaOpener.this.onScanCompleted(path, uri);
}
});
}
private void start() {
mConnection.connect();
}
private void onScanCompleted(String path, Uri uri) {
try {
if (uri != null) {
mActivity.startActivity(new Intent(Intent.ACTION_VIEW, uri));
}
} catch (ActivityNotFoundException e) {
Utility.showToast(mActivity, R.string.message_view_display_attachment_toast);
// TODO: Add a proper warning message (and lots of upstream cleanup to prevent
// it from happening)
} finally {
mConnection.disconnect();
}
}
/**
* Start scanning a file and opening it when scanned.
*
* @param activity activity used as a parent when starting an intent.
* @param file file to open.
*/
public static void scanAndOpen(Activity activity, File file) {
new MediaOpener(activity, file).start();
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff