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