2009-03-04 03:32:22 +00:00
|
|
|
<?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
|
2010-07-16 22:10:00 +00:00
|
|
|
|
2009-03-04 03:32:22 +00:00
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
2010-07-16 22:10:00 +00:00
|
|
|
|
2009-03-04 03:32:22 +00:00
|
|
|
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.
|
|
|
|
-->
|
|
|
|
|
Let MessageViewFragment own bottom buttons.
Create a custom view containing the bottons below MVF
(delete, move, reply, etc) and let MVF own this.
These buttons used to be owned by the XL activity itself, because
the UI for these commands will most likely be totally different
from the tablet UI, so the fragment having them looked wrong.
However, this made it harder to make changes suggested by the latest
mock, such as "put reply/forward in the message header".
I think the buttons are semantically part of the message view anyway,
so the fragment owning UI for these commands is probably the way to go.
(And let's worry about the phone UI later.)
Reason for the use of a custom view is that it will make it easier
to make non-trivial UI changes, e.g. "combine reply, reply-all and
forward and make it dropdown."
Also removed obsolete TODOs from MessageListXL.
Change-Id: Ibf93f4c70fe07bdbbe33d2adb6bbd2b96812830d
2010-09-16 18:16:46 +00:00
|
|
|
<LinearLayout
|
2010-07-16 22:10:00 +00:00
|
|
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
Let MessageViewFragment own bottom buttons.
Create a custom view containing the bottons below MVF
(delete, move, reply, etc) and let MVF own this.
These buttons used to be owned by the XL activity itself, because
the UI for these commands will most likely be totally different
from the tablet UI, so the fragment having them looked wrong.
However, this made it harder to make changes suggested by the latest
mock, such as "put reply/forward in the message header".
I think the buttons are semantically part of the message view anyway,
so the fragment owning UI for these commands is probably the way to go.
(And let's worry about the phone UI later.)
Reason for the use of a custom view is that it will make it easier
to make non-trivial UI changes, e.g. "combine reply, reply-all and
forward and make it dropdown."
Also removed obsolete TODOs from MessageListXL.
Change-Id: Ibf93f4c70fe07bdbbe33d2adb6bbd2b96812830d
2010-09-16 18:16:46 +00:00
|
|
|
android:orientation="vertical"
|
2010-07-16 22:10:00 +00:00
|
|
|
android:layout_width="match_parent"
|
2010-07-21 21:29:49 +00:00
|
|
|
android:layout_height="match_parent"
|
2010-07-16 22:10:00 +00:00
|
|
|
>
|
2010-10-04 23:00:02 +00:00
|
|
|
<!-- header area -->
|
|
|
|
<LinearLayout
|
2010-07-16 22:10:00 +00:00
|
|
|
android:layout_width="match_parent"
|
2010-10-04 23:00:02 +00:00
|
|
|
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">
|
2009-03-04 03:32:22 +00:00
|
|
|
<LinearLayout
|
2010-10-04 23:00:02 +00:00
|
|
|
android:id="@+id/from_container"
|
Let MessageViewFragment own bottom buttons.
Create a custom view containing the bottons below MVF
(delete, move, reply, etc) and let MVF own this.
These buttons used to be owned by the XL activity itself, because
the UI for these commands will most likely be totally different
from the tablet UI, so the fragment having them looked wrong.
However, this made it harder to make changes suggested by the latest
mock, such as "put reply/forward in the message header".
I think the buttons are semantically part of the message view anyway,
so the fragment owning UI for these commands is probably the way to go.
(And let's worry about the phone UI later.)
Reason for the use of a custom view is that it will make it easier
to make non-trivial UI changes, e.g. "combine reply, reply-all and
forward and make it dropdown."
Also removed obsolete TODOs from MessageListXL.
Change-Id: Ibf93f4c70fe07bdbbe33d2adb6bbd2b96812830d
2010-09-16 18:16:46 +00:00
|
|
|
android:layout_width="match_parent"
|
2010-10-04 23:00:02 +00:00
|
|
|
android:layout_height="wrap_content"
|
|
|
|
android:baselineAligned="true" >
|
|
|
|
<android.widget.QuickContactBadge
|
|
|
|
android:id="@+id/badge"
|
|
|
|
android:layout_gravity="center_vertical"
|
|
|
|
android:layout_marginRight="8dip"
|
|
|
|
android:layout_marginLeft="2dip"
|
|
|
|
style="@*android:style/Widget.QuickContactBadge.WindowSmall" />
|
|
|
|
/>
|
|
|
|
<ImageView
|
|
|
|
android:id="@+id/presence"
|
|
|
|
android:src="@drawable/presence_inactive"
|
|
|
|
android:layout_width="wrap_content"
|
2009-03-04 03:32:22 +00:00
|
|
|
android:layout_height="wrap_content"
|
2010-10-04 23:00:02 +00:00
|
|
|
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/textColorPrimary"
|
|
|
|
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" />
|
2010-09-30 21:25:57 +00:00
|
|
|
|
2010-10-04 23:00:02 +00:00
|
|
|
<!-- Reply/Forward buttons are default gone for MessageFileView -->
|
|
|
|
<ImageView
|
|
|
|
android:id="@+id/reply"
|
|
|
|
android:src="@drawable/reply"
|
|
|
|
android:layout_width="32dip"
|
|
|
|
android:layout_height="24dip"
|
|
|
|
android:layout_margin="6dip"
|
|
|
|
android:baselineAlignBottom="true"
|
|
|
|
android:visibility="gone"
|
|
|
|
/>
|
|
|
|
<ImageView
|
|
|
|
android:id="@+id/reply_all"
|
|
|
|
android:src="@drawable/reply_all"
|
|
|
|
android:layout_width="32dip"
|
|
|
|
android:layout_height="24dip"
|
|
|
|
android:layout_margin="6dip"
|
|
|
|
android:baselineAlignBottom="true"
|
|
|
|
android:visibility="gone"
|
|
|
|
/>
|
|
|
|
<ImageView
|
|
|
|
android:id="@+id/forward"
|
|
|
|
android:src="@drawable/forward"
|
|
|
|
android:layout_width="32dip"
|
|
|
|
android:layout_height="24dip"
|
|
|
|
android:layout_margin="6dip"
|
|
|
|
android:baselineAlignBottom="true"
|
|
|
|
android:visibility="gone"
|
|
|
|
/>
|
2010-09-30 21:25:57 +00:00
|
|
|
|
2010-10-04 23:00:02 +00:00
|
|
|
<TextView
|
|
|
|
android:id="@+id/date"
|
|
|
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
|
|
|
android:textColor="?android:attr/textColorPrimary"
|
|
|
|
android:layout_width="wrap_content"
|
Let MessageViewFragment own bottom buttons.
Create a custom view containing the bottons below MVF
(delete, move, reply, etc) and let MVF own this.
These buttons used to be owned by the XL activity itself, because
the UI for these commands will most likely be totally different
from the tablet UI, so the fragment having them looked wrong.
However, this made it harder to make changes suggested by the latest
mock, such as "put reply/forward in the message header".
I think the buttons are semantically part of the message view anyway,
so the fragment owning UI for these commands is probably the way to go.
(And let's worry about the phone UI later.)
Reason for the use of a custom view is that it will make it easier
to make non-trivial UI changes, e.g. "combine reply, reply-all and
forward and make it dropdown."
Also removed obsolete TODOs from MessageListXL.
Change-Id: Ibf93f4c70fe07bdbbe33d2adb6bbd2b96812830d
2010-09-16 18:16:46 +00:00
|
|
|
android:layout_height="wrap_content"
|
2010-10-04 23:00:02 +00:00
|
|
|
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/textColorSecondary"
|
|
|
|
android:textStyle="bold"
|
|
|
|
android:layout_width="wrap_content"
|
Let MessageViewFragment own bottom buttons.
Create a custom view containing the bottons below MVF
(delete, move, reply, etc) and let MVF own this.
These buttons used to be owned by the XL activity itself, because
the UI for these commands will most likely be totally different
from the tablet UI, so the fragment having them looked wrong.
However, this made it harder to make changes suggested by the latest
mock, such as "put reply/forward in the message header".
I think the buttons are semantically part of the message view anyway,
so the fragment owning UI for these commands is probably the way to go.
(And let's worry about the phone UI later.)
Reason for the use of a custom view is that it will make it easier
to make non-trivial UI changes, e.g. "combine reply, reply-all and
forward and make it dropdown."
Also removed obsolete TODOs from MessageListXL.
Change-Id: Ibf93f4c70fe07bdbbe33d2adb6bbd2b96812830d
2010-09-16 18:16:46 +00:00
|
|
|
android:layout_height="wrap_content"
|
2010-10-04 23:00:02 +00:00
|
|
|
android:text="@string/message_view_to_label" />
|
|
|
|
<TextView
|
|
|
|
android:id="@+id/to"
|
|
|
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
|
|
|
android:textColor="?android:attr/textColorSecondary"
|
|
|
|
android:layout_width="0dip"
|
|
|
|
android:layout_weight="1.0"
|
2009-03-04 03:32:22 +00:00
|
|
|
android:layout_height="wrap_content"
|
2010-10-04 23:00:02 +00:00
|
|
|
android:layout_marginLeft="4dip"
|
|
|
|
android:singleLine="false"
|
|
|
|
android:ellipsize="none" />
|
|
|
|
<TextView
|
|
|
|
android:id="@+id/time"
|
|
|
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
|
|
|
android:textColor="?android:attr/textColorPrimary"
|
|
|
|
android:layout_width="wrap_content"
|
|
|
|
android:layout_height="wrap_content"
|
|
|
|
android:layout_marginLeft="4dip"
|
|
|
|
android:singleLine="true" />
|
2010-07-16 22:10:00 +00:00
|
|
|
</LinearLayout>
|
2010-10-04 23:00:02 +00:00
|
|
|
<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/textColorSecondary"
|
|
|
|
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/textColorSecondary"
|
|
|
|
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/textColorSecondary"
|
|
|
|
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>
|
|
|
|
<!-- end of header area -->
|
|
|
|
<!-- tab area -->
|
|
|
|
<LinearLayout
|
|
|
|
android:id="@+id/message_tabs_section"
|
|
|
|
android:layout_width="match_parent"
|
|
|
|
android:layout_height="wrap_content"
|
|
|
|
android:orientation="horizontal"
|
|
|
|
android:paddingLeft="6dip"
|
|
|
|
android:paddingRight="6dip"
|
|
|
|
android:paddingTop="6dip"
|
|
|
|
android:paddingBottom="6dip"
|
|
|
|
>
|
|
|
|
<Button
|
|
|
|
android:id="@+id/show_message"
|
|
|
|
android:text="@string/message_view_show_message_action"
|
|
|
|
android:layout_gravity="center"
|
|
|
|
android:layout_width="wrap_content"
|
|
|
|
android:layout_height="wrap_content"
|
|
|
|
/>
|
|
|
|
<!--
|
|
|
|
Even though the "invite" section is only for MessageViewFragment, it's managed
|
|
|
|
by MessageViewFragmentBase for simplicity.
|
|
|
|
-->
|
|
|
|
<Button
|
|
|
|
android:id="@+id/show_invite"
|
|
|
|
android:text="@string/message_view_show_invite_action"
|
|
|
|
android:layout_gravity="center"
|
|
|
|
android:layout_width="wrap_content"
|
|
|
|
android:layout_height="wrap_content"
|
|
|
|
/>
|
|
|
|
<Button
|
|
|
|
android:id="@+id/show_attachments"
|
|
|
|
android:layout_gravity="center"
|
|
|
|
android:layout_width="wrap_content"
|
|
|
|
android:layout_height="wrap_content"
|
|
|
|
/>
|
|
|
|
<View
|
|
|
|
android:layout_width="0dip"
|
|
|
|
android:layout_height="0dip"
|
|
|
|
android:layout_weight="1"
|
|
|
|
/>
|
|
|
|
<Button
|
|
|
|
android:id="@+id/show_pictures"
|
|
|
|
android:text="@string/message_view_show_pictures_action"
|
|
|
|
android:layout_gravity="center"
|
|
|
|
android:layout_width="wrap_content"
|
|
|
|
android:layout_height="wrap_content"
|
|
|
|
/>
|
|
|
|
</LinearLayout>
|
|
|
|
<!-- end of tab area -->
|
|
|
|
<!--
|
|
|
|
content area - only one of them is visible at a time.
|
|
|
|
-->
|
|
|
|
<WebView
|
|
|
|
android:id="@+id/message_content"
|
|
|
|
android:layout_width="match_parent"
|
|
|
|
android:layout_height="0dip"
|
|
|
|
android:layout_weight="1"
|
|
|
|
android:background="#ffffff"
|
|
|
|
android:visibility="gone"
|
|
|
|
/>
|
|
|
|
<!--
|
|
|
|
Even though the "invite" section is only for MessageViewFragment,
|
|
|
|
Its visibility is controlled by MessageViewFragmentBase for simplicity.
|
|
|
|
-->
|
|
|
|
<ScrollView
|
|
|
|
android:id="@+id/invite_scroll"
|
|
|
|
android:layout_width="match_parent"
|
|
|
|
android:layout_height="0dip"
|
|
|
|
android:layout_weight="1"
|
|
|
|
android:visibility="gone"
|
|
|
|
>
|
|
|
|
<!--
|
|
|
|
Invite section - the views in it are controlled only by MessageViewFragment.
|
|
|
|
MessageViewFragment shouldn't know what's inside it.
|
|
|
|
-->
|
|
|
|
<include layout="@layout/message_view_invitation" />
|
|
|
|
</ScrollView>
|
|
|
|
<ScrollView
|
|
|
|
android:id="@+id/attachments_scroll"
|
|
|
|
android:layout_width="match_parent"
|
|
|
|
android:layout_height="0dip"
|
|
|
|
android:layout_weight="1"
|
|
|
|
android:visibility="gone"
|
|
|
|
>
|
|
|
|
<LinearLayout
|
|
|
|
android:id="@+id/attachments"
|
|
|
|
android:orientation="vertical"
|
|
|
|
android:layout_width="match_parent"
|
|
|
|
android:layout_height="wrap_content"
|
|
|
|
android:padding="4dip"
|
|
|
|
android:background="#ffffff"
|
|
|
|
/>
|
Let MessageViewFragment own bottom buttons.
Create a custom view containing the bottons below MVF
(delete, move, reply, etc) and let MVF own this.
These buttons used to be owned by the XL activity itself, because
the UI for these commands will most likely be totally different
from the tablet UI, so the fragment having them looked wrong.
However, this made it harder to make changes suggested by the latest
mock, such as "put reply/forward in the message header".
I think the buttons are semantically part of the message view anyway,
so the fragment owning UI for these commands is probably the way to go.
(And let's worry about the phone UI later.)
Reason for the use of a custom view is that it will make it easier
to make non-trivial UI changes, e.g. "combine reply, reply-all and
forward and make it dropdown."
Also removed obsolete TODOs from MessageListXL.
Change-Id: Ibf93f4c70fe07bdbbe33d2adb6bbd2b96812830d
2010-09-16 18:16:46 +00:00
|
|
|
</ScrollView>
|
2010-10-04 23:00:02 +00:00
|
|
|
<!-- end of content area -->
|
Let MessageViewFragment own bottom buttons.
Create a custom view containing the bottons below MVF
(delete, move, reply, etc) and let MVF own this.
These buttons used to be owned by the XL activity itself, because
the UI for these commands will most likely be totally different
from the tablet UI, so the fragment having them looked wrong.
However, this made it harder to make changes suggested by the latest
mock, such as "put reply/forward in the message header".
I think the buttons are semantically part of the message view anyway,
so the fragment owning UI for these commands is probably the way to go.
(And let's worry about the phone UI later.)
Reason for the use of a custom view is that it will make it easier
to make non-trivial UI changes, e.g. "combine reply, reply-all and
forward and make it dropdown."
Also removed obsolete TODOs from MessageListXL.
Change-Id: Ibf93f4c70fe07bdbbe33d2adb6bbd2b96812830d
2010-09-16 18:16:46 +00:00
|
|
|
<!--
|
|
|
|
Buttons such as delete, mark unread. Only MessageViewFragment uses these.
|
|
|
|
MessageFileViewFragment doesn't.
|
|
|
|
-->
|
|
|
|
<include
|
|
|
|
layout="@layout/message_command_button_view"
|
|
|
|
android:id="@+id/message_command_buttons"
|
|
|
|
android:layout_width="match_parent"
|
|
|
|
android:layout_height="wrap_content"
|
|
|
|
android:visibility="gone"
|
|
|
|
/>
|
|
|
|
</LinearLayout>
|