diff options
author | Steve Kondik <steve@cyngn.com> | 2016-10-17 21:57:05 -0700 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-10-17 21:57:05 -0700 |
commit | 4700d940fcda23760dea46f175d52e5bc57599b2 (patch) | |
tree | 40af91de15cf8bd11aaf980e3a2d7ef4bfd6e362 | |
parent | 8525d9d615ba2a75e93599bbddf8cbb0f5e4cf90 (diff) | |
parent | 5bede158fbdd5177075b6e132734f6f8e842d6c2 (diff) | |
download | android_packages_apps_Contacts-cm-14.0.tar.gz android_packages_apps_Contacts-cm-14.0.tar.bz2 android_packages_apps_Contacts-cm-14.0.zip |
Merge tag 'LA.UM.5.5.r1-00900-8x96.0' of git://codeaurora.org/platform/packages/apps/Contacts into cm-14.0cm-14.0
"LA.UM.5.5.r1-00900-8x96.0"
8 files changed, 80 insertions, 19 deletions
diff --git a/src/com/android/contacts/activities/MergeContactActivity.java b/src/com/android/contacts/activities/MergeContactActivity.java index 7604e8ec2..5402e565d 100755 --- a/src/com/android/contacts/activities/MergeContactActivity.java +++ b/src/com/android/contacts/activities/MergeContactActivity.java @@ -236,6 +236,7 @@ public class MergeContactActivity extends ListActivity { List<String> simNumberList = new ArrayList<>(); List<String> simEmailList = new ArrayList<>(); + boolean needUpdate = false; int subscription = -1; ArrayList<Long> delContactIds = new ArrayList<>(); HashMap<Long, ArrayList<Long>> delRawIdsMap = new HashMap<>(); @@ -309,6 +310,7 @@ public class MergeContactActivity extends ListActivity { } } if (!containsNumber) { + needUpdate = true; simNumberList.add(number); } } @@ -326,6 +328,7 @@ public class MergeContactActivity extends ListActivity { } } if (!containsAnr) { + needUpdate = true; simNumberList.add(splitAnr[j]); } } @@ -337,6 +340,7 @@ public class MergeContactActivity extends ListActivity { for (int j = 0; j < splitEmail.length; j++) { if (!TextUtils.isEmpty(splitEmail[j]) && !simEmailList .contains(splitEmail[j])) { + needUpdate = true; simEmailList.add(splitEmail[j]); } } @@ -383,7 +387,9 @@ public class MergeContactActivity extends ListActivity { sourceValues.remove(SimContactsConstants.ACCOUNT_TYPE); sourceValues.remove(SimContactsConstants.ACCOUNT_NAME); // update the contacts in sim. - int simResult = mSimContactsOperation.update(sourceValues, subscription); + int simResult = 1; + if (needUpdate) + mSimContactsOperation.update(sourceValues, subscription); // if update sim contacts fail, stop merging. if (simResult <= 0) { @@ -415,6 +421,9 @@ public class MergeContactActivity extends ListActivity { .CONTENT_URI, String.valueOf(list.get(j))); rawDelList.add(ContentProviderOperation.newDelete(uri).build()); } + } else { + Toast.makeText(MergeContactActivity.this, R.string.merge_fail, + Toast.LENGTH_SHORT).show(); } } return true; diff --git a/src/com/android/contacts/activities/MultiPickContactsActivity.java b/src/com/android/contacts/activities/MultiPickContactsActivity.java index 28ac8d49d..5229d94b1 100755 --- a/src/com/android/contacts/activities/MultiPickContactsActivity.java +++ b/src/com/android/contacts/activities/MultiPickContactsActivity.java @@ -246,7 +246,7 @@ public class MultiPickContactsActivity extends Activity implements ViewPager.OnP // occur crash. position = getRtlPosition(position); - if (mAreTabsHiddenInViewPager || !mPickMode.isPickPhone()) { + if (!mPickMode.isPickPhone()) { if (mPickMode.isPickCall()) { mDelCallLogFragment = new DelCallLogFragment(); mDelCallLogFragment.setCheckListListener(new CheckListListener()); @@ -295,15 +295,15 @@ public class MultiPickContactsActivity extends Activity implements ViewPager.OnP public Object instantiateItem(ViewGroup container, int position) { Fragment f = (Fragment) super.instantiateItem(container, position); - if (mAreTabsHiddenInViewPager || !mPickMode.isPickPhone()) { + if (!mPickMode.isPickPhone()) { if (mPickMode.isPickCall()) { - if (mDelCallLogFragment == null) { + if (mDelCallLogFragment == null && f instanceof DelCallLogFragment) { mDelCallLogFragment = (DelCallLogFragment) f; mDelCallLogFragment .setCheckListListener(new CheckListListener()); } } else { - if (mContactsFragment == null) { + if (mContactsFragment == null && f instanceof ContactsFragment) { mContactsFragment = (ContactsFragment) f; mContactsFragment .setCheckListListener(new CheckListListener()); @@ -312,21 +312,21 @@ public class MultiPickContactsActivity extends Activity implements ViewPager.OnP } else { switch (position) { case TAB_INDEX_RECENT: - if (mCallLogFragment == null) { + if (mCallLogFragment == null && f instanceof CallLogFragment) { mCallLogFragment = (CallLogFragment) f; mCallLogFragment .setCheckListListener(new CheckListListener()); } break; case TAB_INDEX_CONTACTS: - if (mContactsFragment == null) { + if (mContactsFragment == null && f instanceof ContactsFragment) { mContactsFragment = (ContactsFragment) f; mContactsFragment .setCheckListListener(new CheckListListener()); } break; case TAB_INDEX_GROUP: - if (mGroupFragment == null) { + if (mGroupFragment == null && f instanceof GroupsFragment) { mGroupFragment = (GroupsFragment) f; mGroupFragment .setCheckListListener(new CheckListListener()); @@ -714,6 +714,10 @@ public class MultiPickContactsActivity extends Activity implements ViewPager.OnP } } + public CheckListListener createListener() { + return new CheckListListener(); + } + private void configureSearchMode() { TextView topDividerLine = (TextView) findViewById(R.id.multi_pick_top_divider); if (mSearchUiVisible) { diff --git a/src/com/android/contacts/group/GroupEditorFragment.java b/src/com/android/contacts/group/GroupEditorFragment.java index 9c568b44e..6ae880d96 100755 --- a/src/com/android/contacts/group/GroupEditorFragment.java +++ b/src/com/android/contacts/group/GroupEditorFragment.java @@ -106,6 +106,9 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog public static final int REQUEST_CODE_PICK_GROUP_MEM = 1001; private static final int MAX_CACHE_MEMBER_SIZE = 500; + //when save completed,close activity directly,no need reload group member. + private boolean mClose = false; + public static interface Listener { /** * Group metadata was not found, close the fragment now. @@ -239,7 +242,7 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog onRestoreInstanceState(savedInstanceState); if (mStatus == Status.SELECTING_ACCOUNT) { // Account select dialog is showing. Don't setup the editor yet. - } else if (mStatus == Status.LOADING || getCacheSize() == 0) { + } else if (mStatus == Status.LOADING || mListToDisplay.size() == 0) { startGroupMetaDataLoader(); } else { setupEditorForAccount(); @@ -297,6 +300,12 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog mListMembersToRemove); outState.putParcelableArrayList(KEY_MEMBERS_TO_DISPLAY, mListToDisplay); + } else if (mListMembersToAdd.size() + mListMembersToRemove.size() + < MAX_CACHE_MEMBER_SIZE) { + outState.putParcelableArrayList(KEY_MEMBERS_TO_ADD, + mListMembersToAdd); + outState.putParcelableArrayList(KEY_MEMBERS_TO_REMOVE, + mListMembersToRemove); } } @@ -316,6 +325,14 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog mListMembersToAdd = state.getParcelableArrayList(KEY_MEMBERS_TO_ADD); mListMembersToRemove = state.getParcelableArrayList(KEY_MEMBERS_TO_REMOVE); mListToDisplay = state.getParcelableArrayList(KEY_MEMBERS_TO_DISPLAY); + + if (mListMembersToAdd == null) + mListMembersToAdd = new ArrayList<Member>(); + if (mListMembersToRemove == null) + mListMembersToRemove = new ArrayList<Member>(); + if (mListToDisplay == null) + mListToDisplay = new ArrayList<Member>(); + } private int getCacheSize() { @@ -662,7 +679,7 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog } return false; } - + mClose = true; // If we are about to close the editor - there is no need to refresh the data getLoaderManager().destroyLoader(LOADER_EXISTING_MEMBERS); @@ -843,11 +860,14 @@ public class GroupEditorFragment extends Fragment implements SelectAccountDialog @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { - bindGroupMetaData(data); + if (!mClose) { + bindGroupMetaData(data); - // Load existing members - getLoaderManager().initLoader(LOADER_EXISTING_MEMBERS, null, - mGroupMemberListLoaderListener); + // Load existing members + getLoaderManager().initLoader(LOADER_EXISTING_MEMBERS, null, + mGroupMemberListLoaderListener); + } + mClose = false; } @Override diff --git a/src/com/android/contacts/multipicker/CallLogFragment.java b/src/com/android/contacts/multipicker/CallLogFragment.java index 77779fe20..23b7765ea 100755 --- a/src/com/android/contacts/multipicker/CallLogFragment.java +++ b/src/com/android/contacts/multipicker/CallLogFragment.java @@ -55,6 +55,7 @@ import android.widget.AbsListView; import android.widget.TextView; import com.android.contacts.R; +import com.android.contacts.activities.MultiPickContactsActivity; import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest; import com.android.contacts.common.util.UriUtils; @@ -175,6 +176,10 @@ public class CallLogFragment extends ListFragment { resolver = mContext.getContentResolver(); resolver.registerContentObserver(Calls.CONTENT_URI, true, mCallLogObserver); + if (mCheckListListener == null) { + mCheckListListener = ((MultiPickContactsActivity) getActivity()) + .createListener(); + } if (mCallLogListAdapter == null) { mCallLogListAdapter = new CallLogItemListAdapter(mContext); mContactsCheckedList = new ArrayList<String>(); diff --git a/src/com/android/contacts/multipicker/ContactsFragment.java b/src/com/android/contacts/multipicker/ContactsFragment.java index 4f1049b05..b77bdf703 100755 --- a/src/com/android/contacts/multipicker/ContactsFragment.java +++ b/src/com/android/contacts/multipicker/ContactsFragment.java @@ -254,6 +254,9 @@ public class ContactsFragment extends ListFragment { checkedList = new ArrayList<String>(); } } + if (mCheckListListener == null) + mCheckListListener = ((MultiPickContactsActivity) getActivity()) + .createListener(); mHeaderView = new View(mContext); AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams( AbsListView.LayoutParams.MATCH_PARENT, diff --git a/src/com/android/contacts/multipicker/DelCallLogFragment.java b/src/com/android/contacts/multipicker/DelCallLogFragment.java index d5997c81f..8abf5b8a4 100644..100755 --- a/src/com/android/contacts/multipicker/DelCallLogFragment.java +++ b/src/com/android/contacts/multipicker/DelCallLogFragment.java @@ -42,6 +42,7 @@ import android.widget.ListView; import android.widget.AbsListView; import com.android.contacts.R; +import com.android.contacts.activities.MultiPickContactsActivity; import com.android.contacts.list.OnCheckListActionListener; public class DelCallLogFragment extends ListFragment @@ -95,6 +96,9 @@ public class DelCallLogFragment extends ListFragment public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); + if (mCheckListListener == null) + mCheckListListener = ((MultiPickContactsActivity) getActivity()) + .createListener(); if (mDelCallLogAdapter == null) { mDelCallLogAdapter = new DelCallLogAdapter(mContext); mDelCallLogAdapter.setCheckListListener(mCheckListListener); diff --git a/src/com/android/contacts/multipicker/GroupsFragment.java b/src/com/android/contacts/multipicker/GroupsFragment.java index a41600d68..1f38ca608 100755 --- a/src/com/android/contacts/multipicker/GroupsFragment.java +++ b/src/com/android/contacts/multipicker/GroupsFragment.java @@ -187,6 +187,10 @@ public class GroupsFragment extends ExpandableListFragment implements OnGroupCli mList.setOnGroupClickListener(this); mList.setOnChildClickListener(this); mList.setDivider(null); + if (mCheckListListener == null) { + mCheckListListener = ((MultiPickContactsActivity) getActivity()) + .createListener(); + } if (mAdapter == null) { if (mAllContactsCurosrMap == null) { mAllContactsCurosrMap = new HashMap<Long, String[]>(); @@ -221,6 +225,12 @@ public class GroupsFragment extends ExpandableListFragment implements OnGroupCli } @Override + public void onResume() { + super.onResume(); + fillAllContactsCursorMap(); + } + + @Override public void onDestroy() { mAdapter.getQueryHandler().removeCallbacksAndMessages(QUERY_TOKEN); @@ -228,6 +238,9 @@ public class GroupsFragment extends ExpandableListFragment implements OnGroupCli mAdapter.getCursor().close(); } + if(allContactsInGroups!=null) + allContactsInGroups.close(); + if (mAllContactsCurosrMap != null) { mAllContactsCurosrMap.clear(); } @@ -776,7 +789,10 @@ public class GroupsFragment extends ExpandableListFragment implements OnGroupCli @Override protected Cursor getChildrenCursor(Cursor groupCursor) { long groupId = groupCursor.getLong(GROUP_ID); - return getContactsDetailCursor(groupId); + Cursor c = getContactsDetailCursor(groupId); + if (c != null) + getActivity().startManagingCursor(c); + return c; } @Override @@ -787,6 +803,7 @@ public class GroupsFragment extends ExpandableListFragment implements OnGroupCli super.changeCursor(cursor); } } + } /** * all contacts cursor fill to map @@ -794,6 +811,8 @@ public class GroupsFragment extends ExpandableListFragment implements OnGroupCli private void fillAllContactsCursorMap() { mAllContactsCurosrMap.clear(); Cursor cursor = null; + if (mGroupsCursor == null) + return; for (int groupPosition = 0; groupPosition < mGroupsCursor.getCount(); groupPosition++) { mGroupsCursor.moveToPosition(groupPosition); long groupCacheId = mGroupsCursor.getLong(GROUP_ID); @@ -816,7 +835,6 @@ public class GroupsFragment extends ExpandableListFragment implements OnGroupCli if (cursor != null) { cursor.close(); } - } } @Override diff --git a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java index c23476502..dd36fcffb 100644 --- a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java +++ b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java @@ -330,10 +330,8 @@ public class ExpandingEntryCardView extends CardView { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - mEnable = isChecked ? CallUtil.ENABLE_VIDEO_CALLING:CallUtil.DISABLE_VIDEO_CALLING; CallUtil.createVideoCallingDialog(isChecked, mContext); - Settings.System.putInt(mContext.getContentResolver(),CallUtil.CONFIG_VIDEO_CALLING, - mEnable); + CallUtil.saveVideoCallConfig(mContext,isChecked); if (mVideoCallingCallback != null) mVideoCallingCallback.updateContact(); } |