summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2013-08-10 01:21:31 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-08-10 01:21:31 +0000
commitc87896cd74290eba75d3ba3ee8a3f5bfe36b63fb (patch)
treee2facac932d5fdff50f4c3f8c6d42614f183a194 /src
parent0d391b481d691fb26fb114a82d98100a5804ca62 (diff)
parent8dd6200bef2eb07486f4c7e288941cfcfed35e79 (diff)
Merge "Extract ShowAllContactsFragment and add it to its own activity" into klp-dev
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dialer/DialtactsActivity.java54
-rw-r--r--src/com/android/dialer/list/AllContactsActivity.java100
-rw-r--r--src/com/android/dialer/list/AllContactsFragment.java (renamed from src/com/android/dialer/list/ShowAllContactsFragment.java)36
-rw-r--r--src/com/android/dialer/list/PhoneFavoriteFragment.java18
4 files changed, 125 insertions, 83 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 9946297d0..8381c8dd4 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -71,9 +71,9 @@ import com.android.dialer.calllog.CallLogActivity;
import com.android.dialer.dialpad.DialpadFragment;
import com.android.dialer.dialpad.SmartDialNameMatcher;
import com.android.dialer.interactions.PhoneNumberInteraction;
+import com.android.dialer.list.AllContactsActivity;
import com.android.dialer.list.PhoneFavoriteFragment;
import com.android.dialer.list.OnListFragmentScrolledListener;
-import com.android.dialer.list.ShowAllContactsFragment;
import com.android.dialer.list.SmartDialSearchFragment;
import com.android.internal.telephony.ITelephony;
@@ -86,7 +86,8 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
DialpadFragment.OnDialpadQueryChangedListener, PopupMenu.OnMenuItemClickListener,
OnListFragmentScrolledListener,
PhoneFavoriteFragment.OnPhoneFavoriteFragmentStartedListener,
- DialpadFragment.OnDialpadFragmentStartedListener {
+ DialpadFragment.OnDialpadFragmentStartedListener,
+ PhoneFavoriteFragment.OnShowAllContactsListener {
private static final String TAG = "DialtactsActivity";
public static final boolean DEBUG = false;
@@ -138,8 +139,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
*/
private SmartDialSearchFragment mSmartDialSearchFragment;
- private ShowAllContactsFragment mShowAllContactsFragment;
-
private View mMenuButton;
private View mCallHistoryButton;
private View mDialpadButton;
@@ -254,16 +253,12 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
mRegularSearchFragment = new SearchFragment();
mSmartDialSearchFragment = new SmartDialSearchFragment();
mDialpadFragment = new DialpadFragment();
- mShowAllContactsFragment = new ShowAllContactsFragment();
- mShowAllContactsFragment.setOnPhoneNumberPickerActionListener(
- mPhoneNumberPickerActionListener);
// TODO krelease: load fragments on demand instead of creating all of them at run time
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.dialtacts_frame, mPhoneFavoriteFragment, TAG_FAVORITES_FRAGMENT);
ft.add(R.id.dialtacts_frame, mRegularSearchFragment, TAG_REGULAR_SEARCH_FRAGMENT);
ft.add(R.id.dialtacts_frame, mSmartDialSearchFragment, TAG_SMARTDIAL_SEARCH_FRAGMENT);
- ft.add(R.id.dialtacts_frame, mShowAllContactsFragment, TAG_SHOW_ALL_CONTACTS_FRAGMENT);
ft.add(R.id.dialtacts_container, mDialpadFragment, TAG_DIALPAD_FRAGMENT);
ft.commit();
}
@@ -295,11 +290,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
mSmartDialSearchFragment.setOnPhoneNumberPickerActionListener(
mPhoneNumberPickerActionListener);
- mShowAllContactsFragment = (ShowAllContactsFragment) fm.findFragmentByTag(
- TAG_SHOW_ALL_CONTACTS_FRAGMENT);
- mShowAllContactsFragment.setOnPhoneNumberPickerActionListener(
- mPhoneNumberPickerActionListener);
-
if (mFirstLaunch) {
displayFragment(getIntent());
}
@@ -309,8 +299,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
@Override
public void onAttachFragment(Fragment fragment) {
if (fragment instanceof DialpadFragment || fragment instanceof SearchFragment
- || fragment instanceof SmartDialSearchFragment
- || fragment instanceof ShowAllContactsFragment) {
+ || fragment instanceof SmartDialSearchFragment) {
final FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.hide(fragment);
transaction.commit();
@@ -320,16 +309,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
}
@Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- // Respond to the action bar's Up/Home button
- case android.R.id.home:
- hideAllContactsFragment();
- }
- return super.onOptionsItemSelected(item);
- }
-
- @Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_import_export:
@@ -441,23 +420,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
ft.commit();
}
- public void showAllContactsFragment() {
- final FragmentTransaction ft = getFragmentManager().beginTransaction();
- ft.hide(mPhoneFavoriteFragment);
- ft.show(mShowAllContactsFragment);
- // TODO{klp} Add animation
- ft.commit();
- hideSearchBar(false);
- }
-
- private void hideAllContactsFragment() {
- final FragmentTransaction ft = getFragmentManager().beginTransaction();
- ft.hide(mShowAllContactsFragment);
- ft.show(mPhoneFavoriteFragment);
- ft.commit();
- showSearchBar();
- }
-
private void prepareSearchView() {
mSearchViewContainer = findViewById(R.id.search_view_container);
mSearchViewCloseButton = findViewById(R.id.search_close_button);
@@ -798,8 +760,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
hideDialpadFragment(true);
} else if (mInSearchUi) {
mSearchView.setText(null);
- } else if (mShowAllContactsFragment.isVisible()) {
- hideAllContactsFragment();
} else if (isTaskRoot()) {
// Instead of stopping, simply push this to the back of the stack.
// This is only done when running at the top of the stack;
@@ -843,4 +803,10 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
Context.TELEPHONY_SERVICE);
return tm.getCallState() != TelephonyManager.CALL_STATE_IDLE;
}
+
+ @Override
+ public void onShowAllContacts() {
+ final Intent intent = new Intent(this, AllContactsActivity.class);
+ startActivity(intent);
+ }
}
diff --git a/src/com/android/dialer/list/AllContactsActivity.java b/src/com/android/dialer/list/AllContactsActivity.java
new file mode 100644
index 000000000..c46702f7a
--- /dev/null
+++ b/src/com/android/dialer/list/AllContactsActivity.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2013 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.dialer.list;
+
+import android.app.ActionBar;
+import android.app.Fragment;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.style.TypefaceSpan;
+import android.util.Log;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.activity.TransactionSafeActivity;
+import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.R;
+import com.android.dialer.interactions.PhoneNumberInteraction;
+
+public class AllContactsActivity extends TransactionSafeActivity {
+ private static final String TAG = AllContactsActivity.class.getSimpleName();
+
+ private AllContactsFragment mAllContactsFragment;
+
+ // Same behavior as {@link DialtactsActivity}
+ private final OnPhoneNumberPickerActionListener mPhoneNumberPickerActionListener =
+ new OnPhoneNumberPickerActionListener() {
+ @Override
+ public void onPickPhoneNumberAction(Uri dataUri) {
+ // Specify call-origin so that users will see the previous tab instead of
+ // CallLog screen (search UI will be automatically exited).
+ PhoneNumberInteraction.startInteractionForPhoneCall(
+ AllContactsActivity.this, dataUri, null);
+ }
+
+ @Override
+ public void onCallNumberDirectly(String phoneNumber) {
+ final Intent intent = CallUtil.getCallIntent(phoneNumber, null);
+ startActivity(intent);
+ }
+
+ @Override
+ public void onShortcutIntentCreated(Intent intent) {
+ Log.w(TAG, "Unsupported intent has come (" + intent + "). Ignoring.");
+ }
+
+ @Override
+ public void onHomeInActionBarSelected() {
+ // {@link PhoneNumberPickerFragment handles onClick on the home button
+ // and performs the callback here. This means we don't have to handle it
+ // ourself in the activity.
+ final Intent intent = new Intent(AllContactsActivity.this,
+ DialtactsActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ final ActionBar actionBar = getActionBar();
+ actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+ actionBar.setDisplayShowHomeEnabled(true);
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ actionBar.setDisplayShowTitleEnabled(true);
+
+ final SpannableString s = new SpannableString(getString(R.string.show_all_contacts_title));
+ s.setSpan(new TypefaceSpan(getString(R.string.show_all_contacts_title_font_family)), 0,
+ s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ actionBar.setTitle(s);
+
+ setContentView(R.layout.all_contacts_activity);
+ }
+
+ @Override
+ public void onAttachFragment(Fragment fragment) {
+ if (fragment instanceof AllContactsFragment) {
+ mAllContactsFragment = (AllContactsFragment) fragment;
+ mAllContactsFragment.setOnPhoneNumberPickerActionListener(
+ mPhoneNumberPickerActionListener);
+ }
+ }
+}
diff --git a/src/com/android/dialer/list/ShowAllContactsFragment.java b/src/com/android/dialer/list/AllContactsFragment.java
index 85806b6b5..40d5c14b7 100644
--- a/src/com/android/dialer/list/ShowAllContactsFragment.java
+++ b/src/com/android/dialer/list/AllContactsFragment.java
@@ -17,12 +17,8 @@
package com.android.dialer.list;
-import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
-import android.text.Spannable;
-import android.text.SpannableString;
-import android.text.style.TypefaceSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -31,11 +27,10 @@ import com.android.contacts.common.list.ContactListItemView;
import com.android.contacts.common.list.PhoneNumberPickerFragment;
import com.android.dialer.R;
-// TODO{klp}: Wrap this fragment with an activity.
/**
* Fragments to show all contacts with phone numbers.
*/
-public class ShowAllContactsFragment extends PhoneNumberPickerFragment{
+public class AllContactsFragment extends PhoneNumberPickerFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -54,35 +49,6 @@ public class ShowAllContactsFragment extends PhoneNumberPickerFragment{
}
@Override
- public void onStart() {
- // Displays action bar for quick navigation.
- final ActionBar actionBar = getActivity().getActionBar();
- actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
- actionBar.setDisplayShowHomeEnabled(true);
- actionBar.setDisplayHomeAsUpEnabled(true);
- actionBar.setDisplayShowTitleEnabled(true);
-
- final SpannableString s = new SpannableString(getString(R.string.show_all_contacts_title));
- s.setSpan(new TypefaceSpan(getString(R.string.show_all_contacts_title)), 0,
- s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- actionBar.setTitle(s);
-
- super.onStart();
- }
-
- @Override
- public void onHiddenChanged(boolean hidden) {
- // Hides the action bar as it is hidden in the main activity
- if (getActivity() != null) {
- if (hidden) {
- getActivity().getActionBar().hide();
- } else {
- getActivity().getActionBar().show();
- }
- }
- }
-
- @Override
protected View inflateView(LayoutInflater inflater, ViewGroup container) {
return inflater.inflate(R.layout.show_all_contacts_fragment, null);
}
diff --git a/src/com/android/dialer/list/PhoneFavoriteFragment.java b/src/com/android/dialer/list/PhoneFavoriteFragment.java
index 3cff901a5..b6a5fb43b 100644
--- a/src/com/android/dialer/list/PhoneFavoriteFragment.java
+++ b/src/com/android/dialer/list/PhoneFavoriteFragment.java
@@ -19,6 +19,7 @@ import android.app.Activity;
import android.app.Fragment;
import android.app.LoaderManager;
import android.content.CursorLoader;
+import android.content.Intent;
import android.content.Loader;
import android.database.Cursor;
import android.graphics.Rect;
@@ -70,6 +71,10 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen
public void onPhoneFavoriteFragmentStarted();
}
+ public interface OnShowAllContactsListener {
+ public void onShowAllContacts();
+ }
+
public interface Listener {
public void onContactSelected(Uri contactUri);
public void onCallNumberDirectly(String phoneNumber);
@@ -133,6 +138,7 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen
private Listener mListener;
private OnListFragmentScrolledListener mActivityScrollListener;
+ private OnShowAllContactsListener mShowAllContactsListener;
private PhoneFavoriteMergedAdapter mAdapter;
private PhoneFavoritesTileAdapter mContactTileAdapter;
@@ -267,6 +273,13 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen
+ " must implement OnListFragmentScrolledListener");
}
+ try {
+ mShowAllContactsListener = (OnShowAllContactsListener) activity;
+ } catch (ClassCastException e) {
+ throw new ClassCastException(activity.toString()
+ + " must implement OnShowAllContactsListener");
+ }
+
// Use initLoader() instead of restartLoader() to refraining unnecessary reload.
// This method call implicitly assures ContactTileLoaderListener's onLoadFinished() will
// be called, on which we'll check if "all" contacts should be reloaded again or not.
@@ -292,10 +305,7 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen
* Gets called when user click on the show all contacts button.
*/
private void showAllContacts() {
- // TODO {klp} Use interface for the fragment to communicate with the activity
- if (getActivity() instanceof DialtactsActivity) {
- ((DialtactsActivity) getActivity()).showAllContactsFragment();
- }
+ mShowAllContactsListener.onShowAllContacts();
}
public void setListener(Listener listener) {