diff options
Diffstat (limited to 'src/eu/siacs/conversations/ui/StartConversationActivity.java')
-rw-r--r-- | src/eu/siacs/conversations/ui/StartConversationActivity.java | 69 |
1 files changed, 46 insertions, 23 deletions
diff --git a/src/eu/siacs/conversations/ui/StartConversationActivity.java b/src/eu/siacs/conversations/ui/StartConversationActivity.java index d12d2878..bcb9f1dd 100644 --- a/src/eu/siacs/conversations/ui/StartConversationActivity.java +++ b/src/eu/siacs/conversations/ui/StartConversationActivity.java @@ -21,6 +21,7 @@ import android.text.Editable; import android.text.TextWatcher; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; +import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -63,6 +64,7 @@ public class StartConversationActivity extends XmppActivity { private List<String> mKnownHosts; private List<String> mKnownConferenceHosts; + private Menu mOptionsMenu; private EditText mSearchEditText; public int conference_context_id; @@ -141,14 +143,16 @@ public class StartConversationActivity extends XmppActivity { } }; private OnRosterUpdate onRosterUpdate = new OnRosterUpdate() { - + @Override public void onRosterUpdate() { runOnUiThread(new Runnable() { - + @Override public void run() { - filter(mSearchEditText.getText().toString()); + if (mSearchEditText != null) { + filter(mSearchEditText.getText().toString()); + } } }); } @@ -187,7 +191,8 @@ public class StartConversationActivity extends XmppActivity { } }); - mConferenceAdapter = new ListItemAdapter(getApplicationContext(),conferences); + mConferenceAdapter = new ListItemAdapter(getApplicationContext(), + conferences); mConferenceListFragment.setListAdapter(mConferenceAdapter); mConferenceListFragment.setContextMenu(R.menu.conference_context); mConferenceListFragment @@ -200,7 +205,8 @@ public class StartConversationActivity extends XmppActivity { } }); - mContactsAdapter = new ListItemAdapter(getApplicationContext(),contacts); + mContactsAdapter = new ListItemAdapter(getApplicationContext(), + contacts); mContactsListFragment.setListAdapter(mContactsAdapter); mContactsListFragment.setContextMenu(R.menu.contact_context); mContactsListFragment @@ -214,7 +220,7 @@ public class StartConversationActivity extends XmppActivity { }); } - + @Override public void onStop() { super.onStop(); @@ -266,11 +272,10 @@ public class StartConversationActivity extends XmppActivity { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setNegativeButton(R.string.cancel, null); builder.setTitle(R.string.action_delete_contact); - builder.setMessage( - getString(R.string.remove_contact_text, - contact.getJid())); - builder.setPositiveButton(R.string.delete,new OnClickListener() { - + builder.setMessage(getString(R.string.remove_contact_text, + contact.getJid())); + builder.setPositiveButton(R.string.delete, new OnClickListener() { + @Override public void onClick(DialogInterface dialog, int which) { xmppConnectionService.deleteContactOnServer(contact); @@ -278,21 +283,20 @@ public class StartConversationActivity extends XmppActivity { } }); builder.create().show(); - + } protected void deleteConference() { int position = conference_context_id; final Bookmark bookmark = (Bookmark) conferences.get(position); - + AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setNegativeButton(R.string.cancel, null); builder.setTitle(R.string.delete_bookmark); - builder.setMessage( - getString(R.string.remove_bookmark_text, - bookmark.getJid())); - builder.setPositiveButton(R.string.delete,new OnClickListener() { - + builder.setMessage(getString(R.string.remove_bookmark_text, + bookmark.getJid())); + builder.setPositiveButton(R.string.delete, new OnClickListener() { + @Override public void onClick(DialogInterface dialog, int which) { bookmark.unregisterConversation(); @@ -303,7 +307,7 @@ public class StartConversationActivity extends XmppActivity { } }); builder.create().show(); - + } protected void showCreateContactDialog() { @@ -327,6 +331,9 @@ public class StartConversationActivity extends XmppActivity { @Override public void onClick(View v) { + if (!xmppConnectionServiceBound) { + return; + } if (Validator.isValidJid(jid.getText().toString())) { String accountJid = (String) spinner .getSelectedItem(); @@ -373,6 +380,9 @@ public class StartConversationActivity extends XmppActivity { @Override public void onClick(View v) { + if (!xmppConnectionServiceBound) { + return; + } if (Validator.isValidJid(jid.getText().toString())) { String accountJid = (String) spinner .getSelectedItem(); @@ -394,7 +404,8 @@ public class StartConversationActivity extends XmppActivity { conferenceJid, true); conversation.setBookmark(bookmark); if (!conversation.getMucOptions().online()) { - xmppConnectionService.joinMuc(conversation); + xmppConnectionService + .joinMuc(conversation); } switchToConversation(conversation); } @@ -430,6 +441,7 @@ public class StartConversationActivity extends XmppActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { + this.mOptionsMenu = menu; getMenuInflater().inflate(R.menu.start_conversation, menu); MenuItem menuCreateContact = (MenuItem) menu .findItem(R.id.action_create_contact); @@ -463,8 +475,17 @@ public class StartConversationActivity extends XmppActivity { } @Override + public boolean onKeyUp(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_SEARCH && !event.isLongPress()) { + mOptionsMenu.findItem(R.id.action_search).expandActionView(); + return true; + } + return super.onKeyUp(keyCode, event); + } + + @Override void onBackendConnected() { - xmppConnectionService.setOnRosterUpdateListener(this.onRosterUpdate ); + xmppConnectionService.setOnRosterUpdateListener(this.onRosterUpdate); if (mSearchEditText != null) { filter(mSearchEditText.getText().toString()); } else { @@ -482,8 +503,10 @@ public class StartConversationActivity extends XmppActivity { } protected void filter(String needle) { - this.filterContacts(needle); - this.filterConferences(needle); + if (xmppConnectionServiceBound) { + this.filterContacts(needle); + this.filterConferences(needle); + } } protected void filterContacts(String needle) { |