diff options
Diffstat (limited to 'example/android/AndroidExample/app/src/main/java/com/libmailcore/androidexample/MessageViewListActivity.java')
-rw-r--r-- | example/android/AndroidExample/app/src/main/java/com/libmailcore/androidexample/MessageViewListActivity.java | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/example/android/AndroidExample/app/src/main/java/com/libmailcore/androidexample/MessageViewListActivity.java b/example/android/AndroidExample/app/src/main/java/com/libmailcore/androidexample/MessageViewListActivity.java new file mode 100644 index 00000000..e0115a69 --- /dev/null +++ b/example/android/AndroidExample/app/src/main/java/com/libmailcore/androidexample/MessageViewListActivity.java @@ -0,0 +1,87 @@ +package com.libmailcore.androidexample; + +import android.content.Intent; +import android.os.Bundle; +import android.app.Activity; +import com.libmailcore.IMAPSession; +import com.libmailcore.MailException; +import com.libmailcore.OperationCallback; +import com.libmailcore.IMAPMessage; + +/** + * An activity representing a list of MessagesViews. This activity + * has different presentations for handset and tablet-size devices. On + * handsets, the activity presents a list of items, which when touched, + * lead to a {@link MessageViewDetailActivity} representing + * item details. On tablets, the activity presents the list of items and + * item details side-by-side using two vertical panes. + * <p/> + * The activity makes heavy use of fragments. The list of items is a + * {@link MessageViewListFragment} and the item details + * (if present) is a {@link MessageViewDetailFragment}. + * <p/> + * This activity also implements the required + * {@link MessageViewListFragment.Callbacks} interface + * to listen for item selections. + */ +public class MessageViewListActivity extends Activity + implements MessageViewListFragment.Callbacks { + + /** + * Whether or not the activity is in two-pane mode, i.e. running on a tablet + * device. + */ + private boolean mTwoPane; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_messageview_list); + + if (findViewById(R.id.messageview_detail_container) != null) { + // The detail container view will be present only in the + // large-screen layouts (res/values-large and + // res/values-sw600dp). If this view is present, then the + // activity should be in two-pane mode. + mTwoPane = true; + + // In two-pane mode, list items should be given the + // 'activated' state when touched. + ((MessageViewListFragment) getFragmentManager() + .findFragmentById(R.id.messageview_list)) + .setActivateOnItemClick(true); + } + + // TODO: If exposing deep links into your app, handle intents here. + } + + /** + * Callback method from {@link MessageViewListFragment.Callbacks} + * indicating that the item with the given ID was selected. + */ + @Override + public void onItemSelected(IMAPMessage msg) { + if (mTwoPane) { + // In two-pane mode, show the detail view in this activity by + // adding or replacing the detail fragment using a + // fragment transaction. + MessagesSyncManager.singleton().currentMessage = msg; + + //Bundle arguments = new Bundle(); + //arguments.putString(MessageViewDetailFragment.ARG_ITEM_ID, msg); + MessageViewDetailFragment fragment = new MessageViewDetailFragment(); + //fragment.setArguments(arguments); + getFragmentManager().beginTransaction() + .replace(R.id.messageview_detail_container, fragment) + .commit(); + + } else { + // In single-pane mode, simply start the detail activity + // for the selected item ID. + MessagesSyncManager.singleton().currentMessage = msg; + Intent detailIntent = new Intent(this, MessageViewDetailActivity.class); + //detailIntent.putExtra(MessageViewDetailFragment.ARG_ITEM_ID, id); + startActivity(detailIntent); + } + } +} |