14e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton/* 24e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * Copyright (C) 2010 Google Inc. 34e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * 44e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * Licensed under the Apache License, Version 2.0 (the "License"); 54e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * you may not use this file except in compliance with the License. 64e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * You may obtain a copy of the License at 74e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * 84e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * http://www.apache.org/licenses/LICENSE-2.0 94e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * 104e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * Unless required by applicable law or agreed to in writing, software 114e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * distributed under the License is distributed on an "AS IS" BASIS, 124e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * See the License for the specific language governing permissions and 144e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton * limitations under the License 154e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton */ 164e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 174e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonpackage com.android.loaderapp; 184e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 194e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonimport com.android.loaderapp.fragments.ContactFragment; 204e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonimport com.android.loaderapp.fragments.ContactsListFragment; 214e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 22bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamiltonimport android.app.ActionBar; 234e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonimport android.app.Activity; 244e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonimport android.app.FragmentTransaction; 254e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonimport android.content.Intent; 264e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonimport android.content.res.Resources; 274e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonimport android.net.Uri; 284e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonimport android.os.Bundle; 294e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamiltonimport android.provider.ContactsContract; 30bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamiltonimport android.view.Menu; 31bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamiltonimport android.view.MenuItem; 324e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 33bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamiltonpublic class HomeXLarge extends Activity implements ContactsListFragment.Controller, 34bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton ActionBar.Callback { 354e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton private static final int ACTION_ID_SEARCH = 0; 364e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton private static final int ACTION_ID_ADD = 1; 374e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 384e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton ContactsListFragment mList; 394e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton ContactFragment mDetails; 404e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 414e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton @Override 424e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton public void onCreate(Bundle savedState) { 434e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton super.onCreate(savedState); 444e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 454e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton setContentView(R.layout.home_xlarge); 464e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 474e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton mList = new ContactsListFragment(); 484e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton mList.setController(this); 494e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton mDetails = new ContactFragment(null, new ContactFragment.DefaultController(this)); 504e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton FragmentTransaction transaction = openFragmentTransaction(); 51f7d2b7b0b843986296d963ea32730f534181e448Andrew Stadler transaction.add(R.id.contacts_list, mList); 52f7d2b7b0b843986296d963ea32730f534181e448Andrew Stadler transaction.add(R.id.contact_details, mDetails); 534e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton transaction.commit(); 544e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 55bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton getActionBar().setCallback(this); 564e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 574e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton Intent intent = getIntent(); 584e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton if (Intent.ACTION_VIEW.equals(intent.getAction())) { 594e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton mDetails.loadContact(intent.getData()); 604e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton } 614e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton } 624e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 634e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton public void onAction(int id) { 644e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton switch (id) { 654e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton case ACTION_ID_SEARCH: 664e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton startSearch(null, false, null, true); 674e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton break; 684e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 694e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton case ACTION_ID_ADD: 704e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton startActivity(new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI)); 714e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton break; 724e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton } 734e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton } 744e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton 754e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton public void onContactSelected(Uri contactUri) { 764e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton // The user clicked on an item in the left side pane, start loading the data for it 774e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton mDetails.loadContact(contactUri); 784e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton } 79bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton 80511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler /** Implements ActionBar.Callback */ 81bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton public boolean onCreateActionMenu(Menu menu) { 82bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton Resources resources = getResources(); 83bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton menu.add(0, ACTION_ID_SEARCH, 0, R.string.menu_search) 84bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton .setIcon(resources.getDrawable(android.R.drawable.ic_menu_search)); 85bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton menu.add(0, ACTION_ID_ADD, 1, R.string.menu_newContact) 86bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton .setIcon(resources.getDrawable(android.R.drawable.ic_menu_add)); 87bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton 88bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton return true; 89bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton } 90bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton 91511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler /** Implements ActionBar.Callback */ 92bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton public boolean onUpdateActionMenu(Menu menu) { 93bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton return false; 94bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton } 95bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton 96511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler /** Implements ActionBar.Callback */ 97511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler public boolean onActionItemClicked(MenuItem item) { 98bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton switch (item.getItemId()) { 99bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton case ACTION_ID_SEARCH: { 100bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton startSearch(null, false, null, true); 101bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton return true; 102bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton } 103bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton 104bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton case ACTION_ID_ADD: { 105bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton startActivity(new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI)); 106bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton return true; 107bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton } 108bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton } 109bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton return false; 110bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton } 111bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton 112511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler /** Implements ActionBar.Callback */ 113511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler public boolean onNavigationItemSelected(int itemPosition, long itemId) { 114511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler return false; 115511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler } 116511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler 117511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler /** Implements ActionBar.Callback */ 118bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton public boolean onCreateContextMode(int modeId, Menu menu) { 119bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton return false; 120bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton } 121bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton 122511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler /** Implements ActionBar.Callback */ 123bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton public boolean onPrepareContextMode(int modeId, Menu menu) { 124bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton return false; 125bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton } 126bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton 127511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler /** Implements ActionBar.Callback */ 128511981a29ba9d71e08be2fe79c3654894d50fecaAndrew Stadler public boolean onContextItemClicked(int modeId, MenuItem item) { 129bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton return false; 130bf760c9b49fab5cd9839a9cf3e3121535d5a101dJeff Hamilton } 1314e5a9e4ee5c1ecab0a7a8eebee883f3f189f5cb4Jeff Hamilton} 132