Removing ContactNoneFragment
Change-Id: Ie70cc8548828241d55553d6f0e0243b46996aa90
diff --git a/res/layout-xlarge/contact_detail_header_view.xml b/res/layout-xlarge/contact_detail_header_view.xml
index f2ddd52..a8cfcaa 100644
--- a/res/layout-xlarge/contact_detail_header_view.xml
+++ b/res/layout-xlarge/contact_detail_header_view.xml
@@ -27,7 +27,6 @@
android:layout_marginLeft="-1dip"
android:layout_width="96dip"
android:layout_height="96dip"
- android:src="@*android:drawable/ic_contact_picture"
/>
<LinearLayout
@@ -141,7 +140,9 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:contentDescription="@string/description_star"
- style="?android:attr/starStyle" />
+ android:visibility="invisible"
+ style="?android:attr/starStyle"
+ />
</LinearLayout>
</LinearLayout>
</LinearLayout>
diff --git a/res/layout/contact_detail_header_view.xml b/res/layout/contact_detail_header_view.xml
index cc0372c..870f5d0 100644
--- a/res/layout/contact_detail_header_view.xml
+++ b/res/layout/contact_detail_header_view.xml
@@ -30,7 +30,6 @@
android:layout_marginRight="8dip"
android:layout_width="64dip"
android:layout_height="64dip"
- android:src="@*android:drawable/ic_contact_picture"
/>
<LinearLayout
@@ -119,5 +118,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:contentDescription="@string/description_star"
- style="?android:attr/starStyle" />
+ android:visibility="invisible"
+ style="?android:attr/starStyle"
+ />
</LinearLayout>
diff --git a/res/layout/contact_none_fragment.xml b/res/layout/contact_none_fragment.xml
deleted file mode 100644
index 6617427..0000000
--- a/res/layout/contact_none_fragment.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 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.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
->
-
-<!-- TODO: need an image -->
-<!-- <ImageView-->
-<!-- android:layout_width="wrap_content"-->
-<!-- android:layout_height="wrap_content"-->
-<!-- android:src="@drawable/contact_none"-->
-<!-- android:layout_centerInParent="true"/>-->
-
-</RelativeLayout>
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index 1c1f9b2..b04d640 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -38,7 +38,6 @@
import com.android.contacts.util.DialogManager;
import com.android.contacts.views.ContactSaveService;
import com.android.contacts.views.detail.ContactDetailFragment;
-import com.android.contacts.views.detail.ContactNoneFragment;
import com.android.contacts.widget.ContextMenuAdapter;
import android.accounts.Account;
@@ -106,8 +105,6 @@
private boolean mSearchMode;
private ContactBrowseListFragment mListFragment;
- private ContactNoneFragment mEmptyFragment;
-
private boolean mContactContentDisplayed;
private ContactDetailFragment mDetailFragment;
private DetailFragmentListener mDetailFragmentListener = new DetailFragmentListener();
@@ -142,8 +139,6 @@
((DefaultContactBrowseListFragment) mListFragment).setFilter(
mContactListFilterController.getFilter());
}
- } else if (fragment instanceof ContactNoneFragment) {
- mEmptyFragment = (ContactNoneFragment)fragment;
} else if (fragment instanceof ContactDetailFragment) {
mDetailFragment = (ContactDetailFragment)fragment;
mDetailFragment.setListener(mDetailFragmentListener);
@@ -382,6 +377,36 @@
}
}
+ private void showDefaultSelection() {
+ Uri requestedContactUri = mRequest.getContactUri();
+ if (requestedContactUri != null
+ && mListFragment instanceof DefaultContactBrowseListFragment) {
+ // If a specific selection was requested, adjust the filter so
+ // that the requested selection is unconditionally visible.
+ DefaultContactBrowseListFragment fragment =
+ (DefaultContactBrowseListFragment) mListFragment;
+ ContactListFilter filter = new ContactListFilter(
+ ContactListFilter.FILTER_TYPE_SINGLE_CONTACT);
+ fragment.setFilter(filter);
+ fragment.setSelectedContactUri(requestedContactUri);
+ fragment.saveSelectedUri(mPrefs);
+ fragment.reloadData();
+ if (mContactListFilterController != null) {
+ mContactListFilterController.setContactListFilter(filter, true);
+ }
+ } else {
+ // Otherwise, choose the first contact on the list and select it
+ requestedContactUri = mListFragment.getFirstContactUri();
+ if (requestedContactUri != null) {
+ mListFragment.setSelectedContactUri(requestedContactUri);
+ mListFragment.requestSelectionOnScreen(false);
+ }
+ }
+ if (mContactContentDisplayed) {
+ setupContactDetailFragment(requestedContactUri);
+ }
+ }
+
@Override
public void onContactListFilterCustomizationRequest() {
startActivityForResult(new Intent(this, CustomContactListFilterActivity.class),
@@ -394,55 +419,18 @@
return;
}
- if (mHandler == null) {
- mHandler = new Handler();
- }
-
- mHandler.post(new Runnable() {
-
- @Override
- public void run() {
- replaceContactDetailFragment(contactLookupUri);
- }
- });
- }
-
- public void replaceContactDetailFragment(Uri contactLookupUri) {
- if (contactLookupUri != null) {
- // Already showing? Nothing to do
- if (mDetailFragment != null) {
- mDetailFragment.loadUri(contactLookupUri);
- return;
- }
-
- closeEmptyFragment();
-
- mDetailFragment = new ContactDetailFragment();
- mDetailFragment.loadUri(contactLookupUri);
-
- // Nothing showing yet? Create (this happens during Activity-Startup)
- getFragmentManager().openTransaction()
- .replace(R.id.detail_container, mDetailFragment)
- .commit();
- } else {
- closeDetailFragment();
-
- mEmptyFragment = new ContactNoneFragment();
- getFragmentManager().openTransaction()
- .replace(R.id.detail_container, mEmptyFragment)
- .commit();
- }
- }
-
- private void closeDetailFragment() {
+ // Already showing? Nothing to do
if (mDetailFragment != null) {
- mDetailFragment.setListener(null);
- mDetailFragment = null;
+ mDetailFragment.loadUri(contactLookupUri);
+ return;
}
- }
- private void closeEmptyFragment() {
- mEmptyFragment = null;
+ mDetailFragment = new ContactDetailFragment();
+ mDetailFragment.loadUri(contactLookupUri);
+
+ getFragmentManager().openTransaction()
+ .replace(R.id.detail_container, mDetailFragment)
+ .commit();
}
/**
@@ -603,33 +591,7 @@
@Override
public void onInvalidSelection() {
- Uri requestedContactUri = mRequest.getContactUri();
- if (requestedContactUri != null
- && mListFragment instanceof DefaultContactBrowseListFragment) {
- // If a specific selection was requested, adjust the filter so
- // that the requested selection is uncoditionally visible.
- DefaultContactBrowseListFragment fragment =
- (DefaultContactBrowseListFragment) mListFragment;
- ContactListFilter filter = new ContactListFilter(
- ContactListFilter.FILTER_TYPE_SINGLE_CONTACT);
- fragment.setFilter(filter);
- fragment.setSelectedContactUri(requestedContactUri);
- fragment.saveSelectedUri(mPrefs);
- fragment.reloadData();
- if (mContactListFilterController != null) {
- mContactListFilterController.setContactListFilter(filter, true);
- }
- } else {
- // Otherwise, choose the first contact on the list and select it
- requestedContactUri = mListFragment.getFirstContactUri();
- if (requestedContactUri != null) {
- mListFragment.setSelectedContactUri(requestedContactUri);
- mListFragment.requestSelectionOnScreen(false);
- }
- }
- if (mContactContentDisplayed) {
- setupContactDetailFragment(requestedContactUri);
- }
+ showDefaultSelection();
}
}
@@ -637,6 +599,8 @@
@Override
public void onContactNotFound() {
setupContactDetailFragment(null);
+ mRequest.setContactUri(null);
+ showDefaultSelection();
}
@Override
diff --git a/src/com/android/contacts/list/ContactEntryListAdapter.java b/src/com/android/contacts/list/ContactEntryListAdapter.java
index 9bcad3f..cf03026 100644
--- a/src/com/android/contacts/list/ContactEntryListAdapter.java
+++ b/src/com/android/contacts/list/ContactEntryListAdapter.java
@@ -125,6 +125,19 @@
}
}
+ @Override
+ public void clearPartitions() {
+ int count = getPartitionCount();
+ for (int i = 0; i < count; i++) {
+ Partition partition = getPartition(i);
+ if (partition instanceof DirectoryPartition) {
+ DirectoryPartition directoryPartition = (DirectoryPartition)partition;
+ directoryPartition.setStatus(DirectoryPartition.STATUS_NOT_LOADED);
+ }
+ }
+ super.clearPartitions();
+ }
+
public boolean isSearchMode() {
return mSearchMode;
}
diff --git a/src/com/android/contacts/views/detail/ContactDetailFragment.java b/src/com/android/contacts/views/detail/ContactDetailFragment.java
index 365851f..d5368dc 100644
--- a/src/com/android/contacts/views/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/views/detail/ContactDetailFragment.java
@@ -24,10 +24,10 @@
import com.android.contacts.ContactsUtils.ImActions;
import com.android.contacts.R;
import com.android.contacts.TypePrecedence;
+import com.android.contacts.model.AccountTypes;
import com.android.contacts.model.BaseAccountType;
import com.android.contacts.model.BaseAccountType.DataKind;
import com.android.contacts.model.BaseAccountType.EditType;
-import com.android.contacts.model.AccountTypes;
import com.android.contacts.util.Constants;
import com.android.contacts.util.DataStatus;
import com.android.contacts.util.DateUtils;
@@ -105,7 +105,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Locale;
public class ContactDetailFragment extends Fragment implements OnCreateContextMenuListener,
OnItemClickListener, SelectAccountDialogFragment.Listener {
@@ -114,6 +113,7 @@
private static final int LOADER_DETAILS = 1;
private Context mContext;
+ private View mView;
private Uri mLookupUri;
private Listener mListener;
@@ -192,23 +192,23 @@
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
- final View view = inflater.inflate(R.layout.contact_detail_fragment, container, false);
+ mView = inflater.inflate(R.layout.contact_detail_fragment, container, false);
setHasOptionsMenu(true);
mInflater = inflater;
- mHeaderView = (ContactDetailHeaderView) view.findViewById(R.id.contact_header_widget);
+ mHeaderView = (ContactDetailHeaderView) mView.findViewById(R.id.contact_header_widget);
mHeaderView.setListener(mHeaderViewListener);
- mListView = (ListView) view.findViewById(android.R.id.list);
+ mListView = (ListView) mView.findViewById(android.R.id.list);
mListView.setOnCreateContextMenuListener(this);
mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
mListView.setOnItemClickListener(this);
// Don't set it to mListView yet. We do so later when we bind the adapter.
- mEmptyView = view.findViewById(android.R.id.empty);
+ mEmptyView = mView.findViewById(android.R.id.empty);
- mCopyGalToLocalButton = (Button) view.findViewById(R.id.copyLocal);
+ mCopyGalToLocalButton = (Button) mView.findViewById(R.id.copyLocal);
mCopyGalToLocalButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@@ -216,7 +216,7 @@
}
});
- return view;
+ return mView;
}
public void setListener(Listener value) {
@@ -236,12 +236,24 @@
public void loadUri(Uri lookupUri) {
mLookupUri = lookupUri;
- if (getActivity() != null) {
+ if (mLookupUri == null) {
+ mContactData = null;
+ bindData();
+ } else if (getActivity() != null) {
getLoaderManager().restartLoader(LOADER_DETAILS, null, mDetailLoaderListener);
}
}
private void bindData() {
+ if (mView == null) {
+ return;
+ }
+
+ if (mContactData == null) {
+ mView.setVisibility(View.INVISIBLE);
+ return;
+ }
+
// Set the header
mHeaderView.loadData(mContactData);
@@ -276,6 +288,8 @@
mCopyGalToLocalButton.setVisibility(View.GONE);
}
+ mView.setVisibility(View.VISIBLE);
+
getActivity().invalidateOptionsMenu();
}
@@ -1200,7 +1214,6 @@
}
};
-
public static interface Listener {
/**
* Contact was not found, so somehow close this fragment. This is raised after a contact
diff --git a/src/com/android/contacts/views/detail/ContactNoneFragment.java b/src/com/android/contacts/views/detail/ContactNoneFragment.java
deleted file mode 100644
index 8d5794e..0000000
--- a/src/com/android/contacts/views/detail/ContactNoneFragment.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2010 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.contacts.views.detail;
-
-import com.android.contacts.R;
-
-import android.app.Fragment;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-public class ContactNoneFragment extends Fragment {
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
- return inflater.inflate(R.layout.contact_none_fragment, container, false);
- }
-}