aboutsummaryrefslogtreecommitdiffstats
path: root/src/eu/siacs/conversations/ui/StartConversationActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/eu/siacs/conversations/ui/StartConversationActivity.java')
-rw-r--r--src/eu/siacs/conversations/ui/StartConversationActivity.java69
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) {