fixed rotation in choose contact activity
This commit is contained in:
		
							parent
							
								
									acf0b995ab
								
							
						
					
					
						commit
						03e88500b9
					
				| @ -9,6 +9,7 @@ import android.support.annotation.StringRes; | |||||||
| import android.support.v4.app.Fragment; | import android.support.v4.app.Fragment; | ||||||
| import android.support.v4.app.FragmentTransaction; | import android.support.v4.app.FragmentTransaction; | ||||||
| import android.support.v7.app.ActionBar; | import android.support.v7.app.ActionBar; | ||||||
|  | import android.util.Log; | ||||||
| import android.view.ActionMode; | import android.view.ActionMode; | ||||||
| import android.view.Menu; | import android.view.Menu; | ||||||
| import android.view.MenuInflater; | import android.view.MenuInflater; | ||||||
| @ -19,6 +20,7 @@ import android.widget.AbsListView.MultiChoiceModeListener; | |||||||
| import android.widget.ListView; | import android.widget.ListView; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
|  | import java.util.Arrays; | ||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.HashSet; | import java.util.HashSet; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -40,7 +42,7 @@ import rocks.xmpp.addr.Jid; | |||||||
| public class ChooseContactActivity extends AbstractSearchableListItemActivity { | public class ChooseContactActivity extends AbstractSearchableListItemActivity { | ||||||
| 	public static final String EXTRA_TITLE_RES_ID = "extra_title_res_id"; | 	public static final String EXTRA_TITLE_RES_ID = "extra_title_res_id"; | ||||||
| 	private List<String> mActivatedAccounts = new ArrayList<>(); | 	private List<String> mActivatedAccounts = new ArrayList<>(); | ||||||
| 	private Set<Contact> selected; | 	private Set<String> selected = new HashSet<>(); | ||||||
| 	private Set<String> filterContacts; | 	private Set<String> filterContacts; | ||||||
| 
 | 
 | ||||||
| 	private PendingItem<ActivityResult> postponedActivityResult = new PendingItem<>(); | 	private PendingItem<ActivityResult> postponedActivityResult = new PendingItem<>(); | ||||||
| @ -70,6 +72,14 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { | |||||||
| 	public void onCreate(final Bundle savedInstanceState) { | 	public void onCreate(final Bundle savedInstanceState) { | ||||||
| 		super.onCreate(savedInstanceState); | 		super.onCreate(savedInstanceState); | ||||||
| 		filterContacts = new HashSet<>(); | 		filterContacts = new HashSet<>(); | ||||||
|  | 		if (savedInstanceState != null) { | ||||||
|  | 			String[] selectedContacts = savedInstanceState.getStringArray("selected_contacts"); | ||||||
|  | 			if (selectedContacts != null) { | ||||||
|  | 				selected.clear(); | ||||||
|  | 				selected.addAll(Arrays.asList(selectedContacts)); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		String[] contacts = getIntent().getStringArrayExtra("filter_contacts"); | 		String[] contacts = getIntent().getStringArrayExtra("filter_contacts"); | ||||||
| 		if (contacts != null) { | 		if (contacts != null) { | ||||||
| 			Collections.addAll(filterContacts, contacts); | 			Collections.addAll(filterContacts, contacts); | ||||||
| @ -86,16 +96,24 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { | |||||||
| 
 | 
 | ||||||
| 				@Override | 				@Override | ||||||
| 				public boolean onCreateActionMode(ActionMode mode, Menu menu) { | 				public boolean onCreateActionMode(ActionMode mode, Menu menu) { | ||||||
|  | 					binding.fab.setVisibility(View.GONE); | ||||||
|  | 					final View view = getSearchEditText(); | ||||||
| 					final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); | 					final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); | ||||||
| 					imm.hideSoftInputFromWindow(getSearchEditText().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); | 					if (view != null && imm != null) { | ||||||
|  | 						imm.hideSoftInputFromWindow(getSearchEditText().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); | ||||||
|  | 					} | ||||||
| 					MenuInflater inflater = getMenuInflater(); | 					MenuInflater inflater = getMenuInflater(); | ||||||
| 					inflater.inflate(R.menu.select_multiple, menu); | 					inflater.inflate(R.menu.select_multiple, menu); | ||||||
| 					selected = new HashSet<>(); | 					MenuItem selectButton = menu.findItem(R.id.selection_submit); | ||||||
|  | 					String buttonText = getResources().getQuantityString(R.plurals.select_contact, selected.size(), selected.size()); | ||||||
|  | 					selectButton.setTitle(buttonText); | ||||||
| 					return true; | 					return true; | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				@Override | 				@Override | ||||||
| 				public void onDestroyActionMode(ActionMode mode) { | 				public void onDestroyActionMode(ActionMode mode) { | ||||||
|  | 					binding.fab.setVisibility(View.VISIBLE); | ||||||
|  | 					selected.clear(); | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				@Override | 				@Override | ||||||
| @ -122,9 +140,9 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { | |||||||
| 				public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { | 				public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { | ||||||
| 					Contact item = (Contact) getListItems().get(position); | 					Contact item = (Contact) getListItems().get(position); | ||||||
| 					if (checked) { | 					if (checked) { | ||||||
| 						selected.add(item); | 						selected.add(item.getJid().toString()); | ||||||
| 					} else { | 					} else { | ||||||
| 						selected.remove(item); | 						selected.remove(item.getJid().toString()); | ||||||
| 					} | 					} | ||||||
| 					int numSelected = selected.size(); | 					int numSelected = selected.size(); | ||||||
| 					MenuItem selectButton = mode.getMenu().findItem(R.id.selection_submit); | 					MenuItem selectButton = mode.getMenu().findItem(R.id.selection_submit); | ||||||
| @ -187,6 +205,12 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { | |||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	@Override | ||||||
|  | 	public void onSaveInstanceState(Bundle savedInstanceState) { | ||||||
|  | 		savedInstanceState.putStringArray("selected_contacts",getSelectedContactJids()); | ||||||
|  | 		super.onSaveInstanceState(savedInstanceState); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	protected void filterContacts(final String needle) { | 	protected void filterContacts(final String needle) { | ||||||
| 		getListItems().clear(); | 		getListItems().clear(); | ||||||
| 		if (xmppConnectionService == null) { | 		if (xmppConnectionService == null) { | ||||||
| @ -209,11 +233,7 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private String[] getSelectedContactJids() { | 	private String[] getSelectedContactJids() { | ||||||
| 		List<String> result = new ArrayList<>(); | 		return selected.toArray(new String[selected.size()]); | ||||||
| 		for (Contact contact : selected) { |  | ||||||
| 			result.add(contact.getJid().toString()); |  | ||||||
| 		} |  | ||||||
| 		return result.toArray(new String[result.size()]); |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public void refreshUiReal() { | 	public void refreshUiReal() { | ||||||
|  | |||||||
| @ -2181,6 +2181,9 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private boolean showLoadMoreMessages(final Conversation c) { | 	private boolean showLoadMoreMessages(final Conversation c) { | ||||||
|  | 		if (activity == null || activity.xmppConnectionService == null) { | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
| 		final boolean mam = hasMamSupport(c) && !c.getContact().isBlocked(); | 		final boolean mam = hasMamSupport(c) && !c.getContact().isBlocked(); | ||||||
| 		final MessageArchiveService service = activity.xmppConnectionService.getMessageArchiveService(); | 		final MessageArchiveService service = activity.xmppConnectionService.getMessageArchiveService(); | ||||||
| 		return mam && (c.getLastClearHistory().getTimestamp() != 0 || (c.countMessages() == 0 && c.messagesLoaded.get() && c.hasMessagesLeftOnServer() && !service.queryInProgress(c))); | 		return mam && (c.getLastClearHistory().getTimestamp() != 0 || (c.countMessages() == 0 && c.messagesLoaded.get() && c.hasMessagesLeftOnServer() && !service.queryInProgress(c))); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch