diff options
Diffstat (limited to 'src/eu/siacs/conversations/ui/ConversationActivity.java')
-rw-r--r-- | src/eu/siacs/conversations/ui/ConversationActivity.java | 99 |
1 files changed, 73 insertions, 26 deletions
diff --git a/src/eu/siacs/conversations/ui/ConversationActivity.java b/src/eu/siacs/conversations/ui/ConversationActivity.java index 220c2461..fc19ecc7 100644 --- a/src/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/eu/siacs/conversations/ui/ConversationActivity.java @@ -332,7 +332,13 @@ public class ConversationActivity extends XmppActivity { startActivityForResult(chooser, ATTACH_FILE); } } - }); + + @Override + public void onSendPlainTextInstead() { + // TODO Auto-generated method stub + + } + },"file"); break; case R.id.action_add: startActivity(new Intent(this, ContactsActivity.class)); @@ -589,36 +595,77 @@ public class ConversationActivity extends XmppActivity { listView.invalidateViews(); } - public void selectPresence(final Conversation conversation, final OnPresenceSelected listener) { - Contact contact = conversation.getContact(); - if (contact==null) { - showAddToRosterDialog(conversation); - listener.onPresenceSelected(false,null); + public void selectPresence(final Conversation conversation, final OnPresenceSelected listener, String reason) { + Account account = conversation.getAccount(); + if (account.getStatus() != Account.STATUS_ONLINE) { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(getString(R.string.not_connected)); + builder.setIconAttribute(android.R.attr.alertDialogIcon); + if ("otr".equals(reason)) { + builder.setMessage(getString(R.string.you_are_offline,getString(R.string.otr_messages))); + } else if ("file".equals(reason)) { + builder.setMessage(getString(R.string.you_are_offline,getString(R.string.files))); + } else { + builder.setMessage(getString(R.string.you_are_offline_blank)); + } + builder.setNegativeButton(getString(R.string.cancel), null); + builder.setPositiveButton(getString(R.string.manage_account), new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + startActivity(new Intent(activity, ManageAccountActivity.class)); + } + }); + builder.create().show(); + listener.onPresenceSelected(false, null); } else { - Hashtable<String, Integer> presences = contact.getPresences(); - if (presences.size() == 0) { - listener.onPresenceSelected(false, null); - } else if (presences.size() == 1) { - String presence = (String) presences.keySet().toArray()[0]; - conversation.setNextPresence(presence); - listener.onPresenceSelected(true, presence); + Contact contact = conversation.getContact(); + if (contact==null) { + showAddToRosterDialog(conversation); + listener.onPresenceSelected(false,null); } else { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(getString(R.string.choose_presence)); - final String[] presencesArray = new String[presences.size()]; - presences.keySet().toArray(presencesArray); - builder.setItems(presencesArray, - new DialogInterface.OnClickListener() { - + Hashtable<String, Integer> presences = contact.getPresences(); + if (presences.size() == 0) { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(getString(R.string.contact_offline)); + if ("otr".equals(reason)) { + builder.setMessage(getString(R.string.contact_offline_otr)); + builder.setPositiveButton(getString(R.string.send_unencrypted), new OnClickListener() { + @Override - public void onClick(DialogInterface dialog, - int which) { - String presence = presencesArray[which]; - conversation.setNextPresence(presence); - listener.onPresenceSelected(true,presence); + public void onClick(DialogInterface dialog, int which) { + listener.onSendPlainTextInstead(); } }); - builder.create().show(); + } else if ("file".equals(reason)) { + builder.setMessage(getString(R.string.contact_offline_file)); + } + builder.setIconAttribute(android.R.attr.alertDialogIcon); + builder.setNegativeButton(getString(R.string.cancel), null); + builder.create().show(); + listener.onPresenceSelected(false, null); + } else if (presences.size() == 1) { + String presence = (String) presences.keySet().toArray()[0]; + conversation.setNextPresence(presence); + listener.onPresenceSelected(true, presence); + } else { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(getString(R.string.choose_presence)); + final String[] presencesArray = new String[presences.size()]; + presences.keySet().toArray(presencesArray); + builder.setItems(presencesArray, + new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, + int which) { + String presence = presencesArray[which]; + conversation.setNextPresence(presence); + listener.onPresenceSelected(true,presence); + } + }); + builder.create().show(); + } } } } |