commit
						1b2ce1a309
					
				|  | @ -83,4 +83,7 @@ | ||||||
|     <string name="openkeychain_required_long">Conversations utilizes a third party app called <b>OpenKeychain</b> to encrypt and decrypt messages and to mange your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n<small>(Please restart Conversations afterwards.)</small></string> |     <string name="openkeychain_required_long">Conversations utilizes a third party app called <b>OpenKeychain</b> to encrypt and decrypt messages and to mange your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n<small>(Please restart Conversations afterwards.)</small></string> | ||||||
|     <string name="restart">Restart</string> |     <string name="restart">Restart</string> | ||||||
|     <string name="install">Install</string> |     <string name="install">Install</string> | ||||||
|  |     <string name="offering">offering…</string> | ||||||
|  |     <string name="no_pgp_key">No openPGP Key found</string> | ||||||
|  |     <string name="contact_has_no_pgp_key">Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\n<small>Please ask your contact to setup openPGP.</small></string> | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
|  | @ -15,7 +15,6 @@ import android.content.ContentValues; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.database.Cursor; | import android.database.Cursor; | ||||||
| import android.net.Uri; | import android.net.Uri; | ||||||
| import android.util.Log; |  | ||||||
| 
 | 
 | ||||||
| public class Conversation extends AbstractEntity { | public class Conversation extends AbstractEntity { | ||||||
| 
 | 
 | ||||||
|  | @ -238,7 +237,6 @@ public class Conversation extends AbstractEntity { | ||||||
| 				} | 				} | ||||||
| 				return this.otrSession; | 				return this.otrSession; | ||||||
| 			} catch (OtrException e) { | 			} catch (OtrException e) { | ||||||
| 				Log.d("xmppServic", "couldnt start otr"); |  | ||||||
| 				return null; | 				return null; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | @ -347,7 +345,6 @@ public class Conversation extends AbstractEntity { | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public void setNextMessage(String message) { | 	public void setNextMessage(String message) { | ||||||
| 		Log.d("xmppService","saving text: "+message); |  | ||||||
| 		this.nextMessage = message; | 		this.nextMessage = message; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -17,7 +17,6 @@ public class Message extends AbstractEntity { | ||||||
| 	public static final int STATUS_SEND = 2; | 	public static final int STATUS_SEND = 2; | ||||||
| 	public static final int STATUS_SEND_FAILED = 3; | 	public static final int STATUS_SEND_FAILED = 3; | ||||||
| 	public static final int STATUS_SEND_REJECTED = 4; | 	public static final int STATUS_SEND_REJECTED = 4; | ||||||
| 	public static final int STATUS_PREPARING = 5; |  | ||||||
| 	public static final int STATUS_OFFERED = 6; | 	public static final int STATUS_OFFERED = 6; | ||||||
| 
 | 
 | ||||||
| 	public static final int ENCRYPTION_NONE = 0; | 	public static final int ENCRYPTION_NONE = 0; | ||||||
|  |  | ||||||
|  | @ -451,18 +451,14 @@ public class XmppConnectionService extends Service { | ||||||
| 		final Message message = new Message(conversation, "",Message.ENCRYPTION_NONE); | 		final Message message = new Message(conversation, "",Message.ENCRYPTION_NONE); | ||||||
| 		message.setPresence(presence); | 		message.setPresence(presence); | ||||||
| 		message.setType(Message.TYPE_IMAGE); | 		message.setType(Message.TYPE_IMAGE); | ||||||
| 		message.setStatus(Message.STATUS_PREPARING); | 		message.setStatus(Message.STATUS_OFFERED); | ||||||
| 		conversation.getMessages().add(message); |  | ||||||
| 		if (convChangedListener != null) { |  | ||||||
| 			convChangedListener.onConversationListChanged(); |  | ||||||
| 		} |  | ||||||
| 		new Thread(new Runnable() { | 		new Thread(new Runnable() { | ||||||
| 
 | 
 | ||||||
| 			@Override | 			@Override | ||||||
| 			public void run() { | 			public void run() { | ||||||
| 				getFileBackend().copyImageToPrivateStorage(message, uri); | 				getFileBackend().copyImageToPrivateStorage(message, uri); | ||||||
| 				message.setStatus(Message.STATUS_OFFERED); |  | ||||||
| 				databaseBackend.createMessage(message); | 				databaseBackend.createMessage(message); | ||||||
|  | 				conversation.getMessages().add(message); | ||||||
| 				if (convChangedListener != null) { | 				if (convChangedListener != null) { | ||||||
| 					convChangedListener.onConversationListChanged(); | 					convChangedListener.onConversationListChanged(); | ||||||
| 				} | 				} | ||||||
|  | @ -477,14 +473,13 @@ public class XmppConnectionService extends Service { | ||||||
| 		final Message message = new Message(conversation, "",Message.ENCRYPTION_DECRYPTED); | 		final Message message = new Message(conversation, "",Message.ENCRYPTION_DECRYPTED); | ||||||
| 		message.setPresence(presence); | 		message.setPresence(presence); | ||||||
| 		message.setType(Message.TYPE_IMAGE); | 		message.setType(Message.TYPE_IMAGE); | ||||||
| 		message.setStatus(Message.STATUS_PREPARING); | 		message.setStatus(Message.STATUS_OFFERED); | ||||||
| 		new Thread(new Runnable() { | 		new Thread(new Runnable() { | ||||||
| 
 | 
 | ||||||
| 			@Override | 			@Override | ||||||
| 			public void run() { | 			public void run() { | ||||||
| 				getFileBackend().copyImageToPrivateStorage(message, uri); | 				getFileBackend().copyImageToPrivateStorage(message, uri); | ||||||
| 				getPgpEngine().encrypt(message, callback); | 				getPgpEngine().encrypt(message, callback); | ||||||
| 				message.setStatus(Message.STATUS_OFFERED); |  | ||||||
| 			} | 			} | ||||||
| 		}).start(); | 		}).start(); | ||||||
| 		return message; | 		return message; | ||||||
|  |  | ||||||
|  | @ -178,16 +178,14 @@ public class ConversationActivity extends XmppActivity { | ||||||
| 					convLastMsg.setVisibility(View.VISIBLE); | 					convLastMsg.setVisibility(View.VISIBLE); | ||||||
| 					imagePreview.setVisibility(View.GONE); | 					imagePreview.setVisibility(View.GONE); | ||||||
| 				} else if (latestMessage.getType() == Message.TYPE_IMAGE) { | 				} else if (latestMessage.getType() == Message.TYPE_IMAGE) { | ||||||
| 					if ((latestMessage.getStatus() >= Message.STATUS_RECIEVED)&&(latestMessage.getStatus() != Message.STATUS_PREPARING)) { | 					if (latestMessage.getStatus() >= Message.STATUS_RECIEVED) { | ||||||
| 						convLastMsg.setVisibility(View.GONE); | 						convLastMsg.setVisibility(View.GONE); | ||||||
| 						imagePreview.setVisibility(View.VISIBLE); | 						imagePreview.setVisibility(View.VISIBLE); | ||||||
| 						loadBitmap(latestMessage, imagePreview); | 						loadBitmap(latestMessage, imagePreview); | ||||||
| 					} else { | 					} else { | ||||||
| 						convLastMsg.setVisibility(View.VISIBLE); | 						convLastMsg.setVisibility(View.VISIBLE); | ||||||
| 						imagePreview.setVisibility(View.GONE); | 						imagePreview.setVisibility(View.GONE); | ||||||
| 						if (latestMessage.getStatus() == Message.STATUS_PREPARING) { | 						if (latestMessage.getStatus() == Message.STATUS_RECEIVED_OFFER) { | ||||||
| 							convLastMsg.setText(getText(R.string.preparing_image)); |  | ||||||
| 						} else  if (latestMessage.getStatus() == Message.STATUS_RECEIVED_OFFER) { |  | ||||||
| 							convLastMsg.setText(getText(R.string.image_offered_for_download)); | 							convLastMsg.setText(getText(R.string.image_offered_for_download)); | ||||||
| 						} else if (latestMessage.getStatus() == Message.STATUS_RECIEVING) { | 						} else if (latestMessage.getStatus() == Message.STATUS_RECIEVING) { | ||||||
| 							convLastMsg.setText(getText(R.string.receiving_image)); | 							convLastMsg.setText(getText(R.string.receiving_image)); | ||||||
|  | @ -343,26 +341,42 @@ public class ConversationActivity extends XmppActivity { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private void attachFile() { | 	private void attachFile() { | ||||||
| 		if (getSelectedConversation().getNextEncryption() == Message.ENCRYPTION_PGP) { | 		final Conversation conversation = getSelectedConversation(); | ||||||
|  | 		if (conversation.getNextEncryption() == Message.ENCRYPTION_PGP) { | ||||||
| 			if (hasPgp()) { | 			if (hasPgp()) { | ||||||
| 				xmppConnectionService.getPgpEngine().hasKey(getSelectedConversation().getContact(), new OnPgpEngineResult() { | 				if (conversation.getContact().getPgpKeyId()!=0) { | ||||||
|  | 					xmppConnectionService.getPgpEngine().hasKey(conversation.getContact(), new OnPgpEngineResult() { | ||||||
| 						 | 						 | ||||||
| 					@Override | 						@Override | ||||||
| 					public void userInputRequried(PendingIntent pi) { | 						public void userInputRequried(PendingIntent pi) { | ||||||
| 						ConversationActivity.this.runIntent(pi, REQUEST_SEND_PGP_IMAGE); | 							ConversationActivity.this.runIntent(pi, REQUEST_SEND_PGP_IMAGE); | ||||||
|  | 						} | ||||||
|  | 						 | ||||||
|  | 						@Override | ||||||
|  | 						public void success() { | ||||||
|  | 							attachFileDialog(); | ||||||
|  | 						} | ||||||
|  | 						 | ||||||
|  | 						@Override | ||||||
|  | 						public void error(OpenPgpError openPgpError) { | ||||||
|  | 							// TODO Auto-generated method stub | ||||||
|  | 							 | ||||||
|  | 						} | ||||||
|  | 					}); | ||||||
|  | 				} else { | ||||||
|  | 					final ConversationFragment fragment = (ConversationFragment) getFragmentManager() | ||||||
|  | 							.findFragmentByTag("conversation"); | ||||||
|  | 					if (fragment != null) { | ||||||
|  | 						fragment.showNoPGPKeyDialog(new OnClickListener() { | ||||||
|  | 							 | ||||||
|  | 							@Override | ||||||
|  | 							public void onClick(DialogInterface dialog, int which) { | ||||||
|  | 								conversation.setNextEncryption(Message.ENCRYPTION_NONE); | ||||||
|  | 								attachFileDialog(); | ||||||
|  | 							} | ||||||
|  | 						}); | ||||||
| 					} | 					} | ||||||
| 					 | 				} | ||||||
| 					@Override |  | ||||||
| 					public void success() { |  | ||||||
| 						attachFileDialog(); |  | ||||||
| 					} |  | ||||||
| 					 |  | ||||||
| 					@Override |  | ||||||
| 					public void error(OpenPgpError openPgpError) { |  | ||||||
| 						// TODO Auto-generated method stub |  | ||||||
| 						 |  | ||||||
| 					} |  | ||||||
| 				}); |  | ||||||
| 			} | 			} | ||||||
| 		} else if (getSelectedConversation().getNextEncryption() == Message.ENCRYPTION_NONE) { | 		} else if (getSelectedConversation().getNextEncryption() == Message.ENCRYPTION_NONE) { | ||||||
| 			attachFileDialog(); | 			attachFileDialog(); | ||||||
|  | @ -409,7 +423,7 @@ public class ConversationActivity extends XmppActivity { | ||||||
| 			startActivity(inviteIntent); | 			startActivity(inviteIntent); | ||||||
| 			break; | 			break; | ||||||
| 		case R.id.action_security: | 		case R.id.action_security: | ||||||
| 			final Conversation selConv = getSelectedConversation(); | 			final Conversation conversation = getSelectedConversation(); | ||||||
| 			View menuItemView = findViewById(R.id.action_security); | 			View menuItemView = findViewById(R.id.action_security); | ||||||
| 			PopupMenu popup = new PopupMenu(this, menuItemView); | 			PopupMenu popup = new PopupMenu(this, menuItemView); | ||||||
| 			final ConversationFragment fragment = (ConversationFragment) getFragmentManager() | 			final ConversationFragment fragment = (ConversationFragment) getFragmentManager() | ||||||
|  | @ -421,19 +435,25 @@ public class ConversationActivity extends XmppActivity { | ||||||
| 					public boolean onMenuItemClick(MenuItem item) { | 					public boolean onMenuItemClick(MenuItem item) { | ||||||
| 						switch (item.getItemId()) { | 						switch (item.getItemId()) { | ||||||
| 						case R.id.encryption_choice_none: | 						case R.id.encryption_choice_none: | ||||||
| 							selConv.setNextEncryption(Message.ENCRYPTION_NONE); | 							conversation.setNextEncryption(Message.ENCRYPTION_NONE); | ||||||
| 							item.setChecked(true); | 							item.setChecked(true); | ||||||
| 							break; | 							break; | ||||||
| 						case R.id.encryption_choice_otr: | 						case R.id.encryption_choice_otr: | ||||||
| 							selConv.setNextEncryption(Message.ENCRYPTION_OTR); | 							conversation.setNextEncryption(Message.ENCRYPTION_OTR); | ||||||
| 							item.setChecked(true); | 							item.setChecked(true); | ||||||
| 							break; | 							break; | ||||||
| 						case R.id.encryption_choice_pgp: | 						case R.id.encryption_choice_pgp: | ||||||
| 							selConv.setNextEncryption(Message.ENCRYPTION_PGP); | 							if (hasPgp()) { | ||||||
| 							item.setChecked(true); | 								if (conversation.getAccount().getKeys().has("pgp_signature")) { | ||||||
|  | 									conversation.setNextEncryption(Message.ENCRYPTION_PGP); | ||||||
|  | 									item.setChecked(true); | ||||||
|  | 								} else { | ||||||
|  | 									announcePgp(conversation.getAccount()); | ||||||
|  | 								} | ||||||
|  | 							} | ||||||
| 							break; | 							break; | ||||||
| 						default: | 						default: | ||||||
| 							selConv.setNextEncryption(Message.ENCRYPTION_NONE); | 							conversation.setNextEncryption(Message.ENCRYPTION_NONE); | ||||||
| 							break; | 							break; | ||||||
| 						} | 						} | ||||||
| 						fragment.updateChatMsgHint(); | 						fragment.updateChatMsgHint(); | ||||||
|  | @ -441,7 +461,7 @@ public class ConversationActivity extends XmppActivity { | ||||||
| 					} | 					} | ||||||
| 				}); | 				}); | ||||||
| 				popup.inflate(R.menu.encryption_choices); | 				popup.inflate(R.menu.encryption_choices); | ||||||
| 				switch (selConv.getNextEncryption()) { | 				switch (conversation.getNextEncryption()) { | ||||||
| 				case Message.ENCRYPTION_NONE: | 				case Message.ENCRYPTION_NONE: | ||||||
| 					popup.getMenu().findItem(R.id.encryption_choice_none) | 					popup.getMenu().findItem(R.id.encryption_choice_none) | ||||||
| 							.setChecked(true); | 							.setChecked(true); | ||||||
|  | @ -454,10 +474,6 @@ public class ConversationActivity extends XmppActivity { | ||||||
| 					popup.getMenu().findItem(R.id.encryption_choice_pgp) | 					popup.getMenu().findItem(R.id.encryption_choice_pgp) | ||||||
| 							.setChecked(true); | 							.setChecked(true); | ||||||
| 					break; | 					break; | ||||||
| 				case Message.ENCRYPTION_DECRYPTED: |  | ||||||
| 					popup.getMenu().findItem(R.id.encryption_choice_pgp) |  | ||||||
| 							.setChecked(true); |  | ||||||
| 					break; |  | ||||||
| 				default: | 				default: | ||||||
| 					popup.getMenu().findItem(R.id.encryption_choice_none) | 					popup.getMenu().findItem(R.id.encryption_choice_none) | ||||||
| 							.setChecked(true); | 							.setChecked(true); | ||||||
|  |  | ||||||
|  | @ -192,6 +192,155 @@ public class ConversationFragment extends Fragment { | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
|  | 			private void displayStatus(ViewHolder viewHolder, Message message) { | ||||||
|  | 				String filesize = null; | ||||||
|  | 				String info = null; | ||||||
|  | 				boolean error = false; | ||||||
|  | 				if (message.getType() == Message.TYPE_IMAGE) { | ||||||
|  | 					String[] fileParams = message.getBody().split(","); | ||||||
|  | 					long size = Long.parseLong(fileParams[0]); | ||||||
|  | 					filesize = size / 1024 + " KB"; | ||||||
|  | 				} | ||||||
|  | 				switch (message.getStatus()) { | ||||||
|  | 				case Message.STATUS_UNSEND: | ||||||
|  | 					info = getString(R.string.sending); | ||||||
|  | 					break; | ||||||
|  | 				case Message.STATUS_OFFERED: | ||||||
|  | 					info = getString(R.string.offering); | ||||||
|  | 					break; | ||||||
|  | 				case Message.STATUS_SEND_FAILED: | ||||||
|  | 					info = getString(R.string.send_failed); | ||||||
|  | 					error = true; | ||||||
|  | 					break; | ||||||
|  | 				case Message.STATUS_SEND_REJECTED: | ||||||
|  | 					info = getString(R.string.send_rejected); | ||||||
|  | 					error = true; | ||||||
|  | 					break; | ||||||
|  | 				default: | ||||||
|  | 					if ((message.getConversation().getMode() == Conversation.MODE_MULTI) | ||||||
|  | 							&& (message.getStatus() <= Message.STATUS_RECIEVED)) { | ||||||
|  | 						info = message.getCounterpart(); | ||||||
|  | 					} | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 				if (error) { | ||||||
|  | 					viewHolder.time.setTextColor(0xFFe92727); | ||||||
|  | 				} else { | ||||||
|  | 					viewHolder.time.setTextColor(0xFF8e8e8e); | ||||||
|  | 				} | ||||||
|  | 				if (message.getEncryption() == Message.ENCRYPTION_NONE) { | ||||||
|  | 					viewHolder.indicator.setVisibility(View.GONE); | ||||||
|  | 				} else { | ||||||
|  | 					viewHolder.indicator.setVisibility(View.VISIBLE); | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 				String formatedTime = UIHelper.readableTimeDifference(message | ||||||
|  | 						.getTimeSent()); | ||||||
|  | 				if (message.getStatus() <= Message.STATUS_RECIEVED) { | ||||||
|  | 					if ((filesize != null) && (info != null)) { | ||||||
|  | 						viewHolder.time.setText(filesize + " \u00B7 " + info); | ||||||
|  | 					} else if ((filesize == null) && (info != null)) { | ||||||
|  | 						viewHolder.time.setText(formatedTime + " \u00B7 " | ||||||
|  | 								+ info); | ||||||
|  | 					} else if ((filesize != null) && (info == null)) { | ||||||
|  | 						viewHolder.time.setText(formatedTime + " \u00B7 " | ||||||
|  | 								+ filesize); | ||||||
|  | 					} else { | ||||||
|  | 						viewHolder.time.setText(formatedTime); | ||||||
|  | 					} | ||||||
|  | 				} else { | ||||||
|  | 					if ((filesize != null) && (info != null)) { | ||||||
|  | 						viewHolder.time.setText(filesize + " \u00B7 " + info); | ||||||
|  | 					} else if ((filesize == null) && (info != null)) { | ||||||
|  | 						viewHolder.time.setText(info + " \u00B7 " | ||||||
|  | 								+ formatedTime); | ||||||
|  | 					} else if ((filesize != null) && (info == null)) { | ||||||
|  | 						viewHolder.time.setText(filesize + " \u00B7 " | ||||||
|  | 								+ formatedTime); | ||||||
|  | 					} else { | ||||||
|  | 						viewHolder.time.setText(formatedTime); | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			private void displayInfoMessage(ViewHolder viewHolder, int r) { | ||||||
|  | 				viewHolder.download_button.setVisibility(View.GONE); | ||||||
|  | 				viewHolder.image.setVisibility(View.GONE); | ||||||
|  | 				viewHolder.messageBody.setVisibility(View.VISIBLE); | ||||||
|  | 				viewHolder.messageBody.setText(getString(r)); | ||||||
|  | 				viewHolder.messageBody.setTextColor(0xff33B5E5); | ||||||
|  | 				viewHolder.messageBody.setTypeface(null, Typeface.ITALIC); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			private void displayDecryptionFailed(ViewHolder viewHolder) { | ||||||
|  | 				viewHolder.download_button.setVisibility(View.GONE); | ||||||
|  | 				viewHolder.image.setVisibility(View.GONE); | ||||||
|  | 				viewHolder.messageBody.setVisibility(View.VISIBLE); | ||||||
|  | 				viewHolder.messageBody | ||||||
|  | 						.setText(getString(R.string.decryption_failed)); | ||||||
|  | 				viewHolder.messageBody.setTextColor(0xFFe92727); | ||||||
|  | 				viewHolder.messageBody.setTypeface(null, Typeface.NORMAL); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			private void displayTextMessage(ViewHolder viewHolder, String text) { | ||||||
|  | 				if (viewHolder.download_button != null) { | ||||||
|  | 					viewHolder.download_button.setVisibility(View.GONE); | ||||||
|  | 				} | ||||||
|  | 				viewHolder.image.setVisibility(View.GONE); | ||||||
|  | 				viewHolder.messageBody.setVisibility(View.VISIBLE); | ||||||
|  | 				if (text != null) { | ||||||
|  | 					viewHolder.messageBody.setText(text.trim()); | ||||||
|  | 				} else { | ||||||
|  | 					viewHolder.messageBody.setText(""); | ||||||
|  | 				} | ||||||
|  | 				viewHolder.messageBody.setTextColor(0xff333333); | ||||||
|  | 				viewHolder.messageBody.setTypeface(null, Typeface.NORMAL); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			private void displayImageMessage(ViewHolder viewHolder, | ||||||
|  | 					final Message message) { | ||||||
|  | 				if (viewHolder.download_button != null) { | ||||||
|  | 					viewHolder.download_button.setVisibility(View.GONE); | ||||||
|  | 				} | ||||||
|  | 				viewHolder.messageBody.setVisibility(View.GONE); | ||||||
|  | 				viewHolder.image.setVisibility(View.VISIBLE); | ||||||
|  | 				String[] fileParams = message.getBody().split(","); | ||||||
|  | 				if (fileParams.length == 3) { | ||||||
|  | 					double target = metrics.density * 288; | ||||||
|  | 					int w = Integer.parseInt(fileParams[1]); | ||||||
|  | 					int h = Integer.parseInt(fileParams[2]); | ||||||
|  | 					int scalledW; | ||||||
|  | 					int scalledH; | ||||||
|  | 					if (w <= h) { | ||||||
|  | 						scalledW = (int) (w / ((double) h / target)); | ||||||
|  | 						scalledH = (int) target; | ||||||
|  | 					} else { | ||||||
|  | 						scalledW = (int) target; | ||||||
|  | 						scalledH = (int) (h / ((double) w / target)); | ||||||
|  | 					} | ||||||
|  | 					viewHolder.image | ||||||
|  | 							.setLayoutParams(new LinearLayout.LayoutParams( | ||||||
|  | 									scalledW, scalledH)); | ||||||
|  | 				} | ||||||
|  | 				activity.loadBitmap(message, viewHolder.image); | ||||||
|  | 				viewHolder.image.setOnClickListener(new OnClickListener() { | ||||||
|  | 
 | ||||||
|  | 					@Override | ||||||
|  | 					public void onClick(View v) { | ||||||
|  | 						Uri uri = Uri | ||||||
|  | 								.parse("content://eu.siacs.conversations.images/" | ||||||
|  | 										+ message.getConversationUuid() | ||||||
|  | 										+ "/" | ||||||
|  | 										+ message.getUuid()); | ||||||
|  | 						Log.d("xmppService", | ||||||
|  | 								"staring intent with uri:" + uri.toString()); | ||||||
|  | 						Intent intent = new Intent(Intent.ACTION_VIEW); | ||||||
|  | 						intent.setDataAndType(uri, "image/*"); | ||||||
|  | 						startActivity(intent); | ||||||
|  | 					} | ||||||
|  | 				}); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			@Override | 			@Override | ||||||
| 			public View getView(int position, View view, ViewGroup parent) { | 			public View getView(int position, View view, ViewGroup parent) { | ||||||
| 				final Message item = getItem(position); | 				final Message item = getItem(position); | ||||||
|  | @ -265,38 +414,9 @@ public class ConversationFragment extends Fragment { | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				if (item.getEncryption() == Message.ENCRYPTION_NONE) { | 				if (item.getType() == Message.TYPE_IMAGE) { | ||||||
| 					viewHolder.indicator.setVisibility(View.GONE); | 					if (item.getStatus() == Message.STATUS_RECIEVING) { | ||||||
| 				} else { | 						displayInfoMessage(viewHolder, R.string.receiving_image); | ||||||
| 					viewHolder.indicator.setVisibility(View.VISIBLE); |  | ||||||
| 				} |  | ||||||
| 
 |  | ||||||
| 				String filesize = ""; |  | ||||||
| 
 |  | ||||||
| 				if ((item.getType() == Message.TYPE_IMAGE) |  | ||||||
| 						&& ((item.getEncryption() == Message.ENCRYPTION_DECRYPTED) || (item |  | ||||||
| 								.getEncryption() == Message.ENCRYPTION_NONE))) { |  | ||||||
| 					String[] fileParams = item.getBody().split(","); |  | ||||||
| 					if ((fileParams.length >= 1) |  | ||||||
| 							&& (item.getStatus() != Message.STATUS_PREPARING)) { |  | ||||||
| 						long size = Long.parseLong(fileParams[0]); |  | ||||||
| 						filesize = size / 1024 + " KB \u00B7 "; |  | ||||||
| 					} |  | ||||||
| 					if ((item.getStatus() == Message.STATUS_PREPARING) |  | ||||||
| 							|| (item.getStatus() == Message.STATUS_RECIEVING)) { |  | ||||||
| 						viewHolder.image.setVisibility(View.GONE); |  | ||||||
| 						viewHolder.messageBody.setVisibility(View.VISIBLE); |  | ||||||
| 						if (item.getStatus() == Message.STATUS_PREPARING) { |  | ||||||
| 							viewHolder.messageBody |  | ||||||
| 									.setText(getString(R.string.preparing_image)); |  | ||||||
| 						} else if (item.getStatus() == Message.STATUS_RECIEVING) { |  | ||||||
| 							viewHolder.download_button.setVisibility(View.GONE); |  | ||||||
| 							viewHolder.messageBody |  | ||||||
| 									.setText(getString(R.string.receiving_image)); |  | ||||||
| 						} |  | ||||||
| 						viewHolder.messageBody.setTextColor(0xff33B5E5); |  | ||||||
| 						viewHolder.messageBody.setTypeface(null, |  | ||||||
| 								Typeface.ITALIC); |  | ||||||
| 					} else if (item.getStatus() == Message.STATUS_RECEIVED_OFFER) { | 					} else if (item.getStatus() == Message.STATUS_RECEIVED_OFFER) { | ||||||
| 						viewHolder.image.setVisibility(View.GONE); | 						viewHolder.image.setVisibility(View.GONE); | ||||||
| 						viewHolder.messageBody.setVisibility(View.GONE); | 						viewHolder.messageBody.setVisibility(View.GONE); | ||||||
|  | @ -316,114 +436,28 @@ public class ConversationFragment extends Fragment { | ||||||
| 										} | 										} | ||||||
| 									} | 									} | ||||||
| 								}); | 								}); | ||||||
|  | 					} else if ((item.getEncryption() == Message.ENCRYPTION_DECRYPTED) | ||||||
|  | 							|| (item.getEncryption() == Message.ENCRYPTION_NONE)) { | ||||||
|  | 						displayImageMessage(viewHolder, item); | ||||||
|  | 					} else if (item.getEncryption() == Message.ENCRYPTION_PGP) { | ||||||
|  | 						displayInfoMessage(viewHolder, | ||||||
|  | 								R.string.encrypted_message); | ||||||
| 					} else { | 					} else { | ||||||
| 						viewHolder.messageBody.setVisibility(View.GONE); | 						displayDecryptionFailed(viewHolder); | ||||||
| 						viewHolder.image.setVisibility(View.VISIBLE); |  | ||||||
| 						if (fileParams.length == 3) { |  | ||||||
| 							double target = metrics.density * 288; |  | ||||||
| 							int w = Integer.parseInt(fileParams[1]); |  | ||||||
| 							int h = Integer.parseInt(fileParams[2]); |  | ||||||
| 							int scalledW; |  | ||||||
| 							int scalledH; |  | ||||||
| 							if (w <= h) { |  | ||||||
| 								scalledW = (int) (w / ((double) h / target)); |  | ||||||
| 								scalledH = (int) target; |  | ||||||
| 							} else { |  | ||||||
| 								scalledW = (int) target; |  | ||||||
| 								scalledH = (int) (h / ((double) w / target)); |  | ||||||
| 							} |  | ||||||
| 							viewHolder.image |  | ||||||
| 									.setLayoutParams(new LinearLayout.LayoutParams( |  | ||||||
| 											scalledW, scalledH)); |  | ||||||
| 						} else { |  | ||||||
| 							Log.d("xmppService", |  | ||||||
| 									"message body has less than 3 params"); |  | ||||||
| 						} |  | ||||||
| 						activity.loadBitmap(item, viewHolder.image); |  | ||||||
| 						viewHolder.image |  | ||||||
| 								.setOnClickListener(new OnClickListener() { |  | ||||||
| 
 |  | ||||||
| 									@Override |  | ||||||
| 									public void onClick(View v) { |  | ||||||
| 										Uri uri = Uri.parse("content://eu.siacs.conversations.images/" |  | ||||||
| 												+ item.getConversationUuid() |  | ||||||
| 												+ "/" + item.getUuid()); |  | ||||||
| 										Log.d("xmppService", |  | ||||||
| 												"staring intent with uri:" |  | ||||||
| 														+ uri.toString()); |  | ||||||
| 										Intent intent = new Intent( |  | ||||||
| 												Intent.ACTION_VIEW); |  | ||||||
| 										intent.setDataAndType(uri, "image/*"); |  | ||||||
| 										startActivity(intent); |  | ||||||
| 									} |  | ||||||
| 								}); |  | ||||||
| 					} | 					} | ||||||
| 				} else { | 				} else { | ||||||
| 					viewHolder.image.setVisibility(View.GONE); | 					if (item.getEncryption() == Message.ENCRYPTION_PGP) { | ||||||
| 					viewHolder.messageBody.setVisibility(View.VISIBLE); | 						displayInfoMessage(viewHolder, | ||||||
| 					String body = item.getBody(); | 								R.string.encrypted_message); | ||||||
| 					if (body != null) { | 					} else if (item.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED) { | ||||||
| 						if (item.getEncryption() == Message.ENCRYPTION_PGP) { | 						displayDecryptionFailed(viewHolder); | ||||||
| 							viewHolder.messageBody |  | ||||||
| 									.setText(getString(R.string.encrypted_message)); |  | ||||||
| 							viewHolder.messageBody.setTextColor(0xff33B5E5); |  | ||||||
| 							viewHolder.messageBody.setTypeface(null, |  | ||||||
| 									Typeface.ITALIC); |  | ||||||
| 						} else if (item.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED) { |  | ||||||
| 							viewHolder.messageBody |  | ||||||
| 									.setText(getString(R.string.decryption_failed)); |  | ||||||
| 							viewHolder.messageBody.setTextColor(0xFFe92727); |  | ||||||
| 							viewHolder.messageBody.setTypeface(null, |  | ||||||
| 									Typeface.NORMAL); |  | ||||||
| 						} else { |  | ||||||
| 							viewHolder.messageBody.setText(body.trim()); |  | ||||||
| 							viewHolder.messageBody.setTextColor(0xff333333); |  | ||||||
| 							viewHolder.messageBody.setTypeface(null, |  | ||||||
| 									Typeface.NORMAL); |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 				switch (item.getStatus()) { |  | ||||||
| 				case Message.STATUS_UNSEND: |  | ||||||
| 					viewHolder.time.setTypeface(null, Typeface.ITALIC); |  | ||||||
| 					viewHolder.time.setTextColor(0xFF8e8e8e); |  | ||||||
| 					viewHolder.time.setText(filesize + "sending\u2026"); |  | ||||||
| 					break; |  | ||||||
| 				case Message.STATUS_OFFERED: |  | ||||||
| 					viewHolder.time.setTypeface(null, Typeface.ITALIC); |  | ||||||
| 					viewHolder.time.setTextColor(0xFF8e8e8e); |  | ||||||
| 					viewHolder.time.setText(filesize + "offering\u2026"); |  | ||||||
| 					break; |  | ||||||
| 				case Message.STATUS_SEND_FAILED: |  | ||||||
| 					viewHolder.time.setText(filesize |  | ||||||
| 							+ getString(R.string.send_failed) |  | ||||||
| 							+ " \u00B7 " |  | ||||||
| 							+ UIHelper.readableTimeDifference(item |  | ||||||
| 									.getTimeSent())); |  | ||||||
| 					viewHolder.time.setTextColor(0xFFe92727); |  | ||||||
| 					viewHolder.time.setTypeface(null, Typeface.NORMAL); |  | ||||||
| 					break; |  | ||||||
| 				case Message.STATUS_SEND_REJECTED: |  | ||||||
| 					viewHolder.time.setText(filesize |  | ||||||
| 							+ getString(R.string.send_rejected)); |  | ||||||
| 					viewHolder.time.setTextColor(0xFFe92727); |  | ||||||
| 					viewHolder.time.setTypeface(null, Typeface.NORMAL); |  | ||||||
| 					break; |  | ||||||
| 				default: |  | ||||||
| 					viewHolder.time.setTypeface(null, Typeface.NORMAL); |  | ||||||
| 					viewHolder.time.setTextColor(0xFF8e8e8e); |  | ||||||
| 					if (item.getConversation().getMode() == Conversation.MODE_SINGLE) { |  | ||||||
| 						viewHolder.time.setText(filesize |  | ||||||
| 								+ UIHelper.readableTimeDifference(item |  | ||||||
| 										.getTimeSent())); |  | ||||||
| 					} else { | 					} else { | ||||||
| 						viewHolder.time.setText(item.getCounterpart() | 						displayTextMessage(viewHolder, item.getBody()); | ||||||
| 								+ " \u00B7 " |  | ||||||
| 								+ UIHelper.readableTimeDifference(item |  | ||||||
| 										.getTimeSent())); |  | ||||||
| 					} | 					} | ||||||
| 					break; |  | ||||||
| 				} | 				} | ||||||
|  | 
 | ||||||
|  | 				displayStatus(viewHolder, item); | ||||||
|  | 
 | ||||||
| 				return view; | 				return view; | ||||||
| 			} | 			} | ||||||
| 		}; | 		}; | ||||||
|  | @ -518,7 +552,6 @@ public class ConversationFragment extends Fragment { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private void decryptMessage(final Message message) { | 	private void decryptMessage(final Message message) { | ||||||
| 		Log.d("xmppService", "called to decrypt"); |  | ||||||
| 		PgpEngine engine = activity.xmppConnectionService.getPgpEngine(); | 		PgpEngine engine = activity.xmppConnectionService.getPgpEngine(); | ||||||
| 		if (engine != null) { | 		if (engine != null) { | ||||||
| 			engine.decrypt(message, new OnPgpEngineResult() { | 			engine.decrypt(message, new OnPgpEngineResult() { | ||||||
|  | @ -531,7 +564,6 @@ public class ConversationFragment extends Fragment { | ||||||
| 
 | 
 | ||||||
| 				@Override | 				@Override | ||||||
| 				public void success() { | 				public void success() { | ||||||
| 					Log.d("xmppService", "successfully decrypted"); |  | ||||||
| 					activity.xmppConnectionService.databaseBackend | 					activity.xmppConnectionService.databaseBackend | ||||||
| 							.updateMessage(message); | 							.updateMessage(message); | ||||||
| 					updateMessages(); | 					updateMessages(); | ||||||
|  | @ -546,7 +578,7 @@ public class ConversationFragment extends Fragment { | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
| 		} else { | 		} else { | ||||||
| 			Log.d("xmppService", "engine was null"); | 			pgpInfo.setVisibility(View.VISIBLE); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -686,30 +718,33 @@ public class ConversationFragment extends Fragment { | ||||||
| 						}); | 						}); | ||||||
| 
 | 
 | ||||||
| 			} else { | 			} else { | ||||||
| 				AlertDialog.Builder builder = new AlertDialog.Builder( | 				showNoPGPKeyDialog(new DialogInterface.OnClickListener() { | ||||||
| 						getActivity()); |  | ||||||
| 				builder.setTitle("No openPGP key found"); |  | ||||||
| 				builder.setIconAttribute(android.R.attr.alertDialogIcon); |  | ||||||
| 				builder.setMessage("There is no openPGP key associated with this contact"); |  | ||||||
| 				builder.setNegativeButton("Cancel", null); |  | ||||||
| 				builder.setPositiveButton("Send plain text", |  | ||||||
| 						new DialogInterface.OnClickListener() { |  | ||||||
| 
 | 
 | ||||||
| 							@Override | 					@Override | ||||||
| 							public void onClick(DialogInterface dialog, | 					public void onClick(DialogInterface dialog, | ||||||
| 									int which) { | 							int which) { | ||||||
| 								conversation | 						conversation | ||||||
| 										.setNextEncryption(Message.ENCRYPTION_NONE); | 								.setNextEncryption(Message.ENCRYPTION_NONE); | ||||||
| 								message.setEncryption(Message.ENCRYPTION_NONE); | 						message.setEncryption(Message.ENCRYPTION_NONE); | ||||||
| 								xmppService.sendMessage(message, null); | 						xmppService.sendMessage(message, null); | ||||||
| 								chatMsg.setText(""); | 						chatMsg.setText(""); | ||||||
| 							} | 					} | ||||||
| 						}); | 				}); | ||||||
| 				builder.create().show(); |  | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | 	public void showNoPGPKeyDialog(DialogInterface.OnClickListener listener) { | ||||||
|  | 		AlertDialog.Builder builder = new AlertDialog.Builder( | ||||||
|  | 				getActivity()); | ||||||
|  | 		builder.setTitle(getString(R.string.no_pgp_key)); | ||||||
|  | 		builder.setIconAttribute(android.R.attr.alertDialogIcon); | ||||||
|  | 		builder.setMessage(getText(R.string.contact_has_no_pgp_key)); | ||||||
|  | 		builder.setNegativeButton(getString(R.string.cancel), null); | ||||||
|  | 		builder.setPositiveButton(getString(R.string.send_unencrypted),listener); | ||||||
|  | 		builder.create().show(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	protected void sendOtrMessage(final Message message) { | 	protected void sendOtrMessage(final Message message) { | ||||||
| 		ConversationActivity activity = (ConversationActivity) getActivity(); | 		ConversationActivity activity = (ConversationActivity) getActivity(); | ||||||
| 		final XmppConnectionService xmppService = activity.xmppConnectionService; | 		final XmppConnectionService xmppService = activity.xmppConnectionService; | ||||||
|  |  | ||||||
|  | @ -39,8 +39,6 @@ import android.widget.TextView; | ||||||
| 
 | 
 | ||||||
| public class ManageAccountActivity extends XmppActivity { | public class ManageAccountActivity extends XmppActivity { | ||||||
| 	 | 	 | ||||||
| 	public static final int REQUEST_ANNOUNCE_PGP = 0x73731; |  | ||||||
| 	 |  | ||||||
| 	protected boolean isActionMode = false; | 	protected boolean isActionMode = false; | ||||||
| 	protected ActionMode actionMode; | 	protected ActionMode actionMode; | ||||||
| 	protected Account selectedAccountForActionMode = null; | 	protected Account selectedAccountForActionMode = null; | ||||||
|  | @ -281,7 +279,7 @@ public class ManageAccountActivity extends XmppActivity { | ||||||
| 							} else if (item.getItemId()==R.id.mgmt_account_announce_pgp) { | 							} else if (item.getItemId()==R.id.mgmt_account_announce_pgp) { | ||||||
| 								if (activity.hasPgp()) { | 								if (activity.hasPgp()) { | ||||||
| 									mode.finish(); | 									mode.finish(); | ||||||
| 									announcePgp(); | 									announcePgp(selectedAccountForActionMode); | ||||||
| 								} | 								} | ||||||
| 							} else if (item.getItemId() == R.id.mgmt_otr_key) { | 							} else if (item.getItemId() == R.id.mgmt_otr_key) { | ||||||
| 								AlertDialog.Builder builder = new AlertDialog.Builder(activity); | 								AlertDialog.Builder builder = new AlertDialog.Builder(activity); | ||||||
|  | @ -362,33 +360,6 @@ public class ManageAccountActivity extends XmppActivity { | ||||||
| 		}); | 		}); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private void announcePgp() { |  | ||||||
| 		final Account account = selectedAccountForActionMode; |  | ||||||
| 		xmppConnectionService.getPgpEngine().generateSignature(account, "online", new OnPgpEngineResult() { |  | ||||||
| 			 |  | ||||||
| 			@Override |  | ||||||
| 			public void userInputRequried(PendingIntent pi) { |  | ||||||
| 				try { |  | ||||||
| 					startIntentSenderForResult(pi.getIntentSender(), REQUEST_ANNOUNCE_PGP, null, 0, 0, 0); |  | ||||||
| 				} catch (SendIntentException e) { |  | ||||||
| 					Log.d("xmppService","coulnd start intent for pgp anncouncment"); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			 |  | ||||||
| 			@Override |  | ||||||
| 			public void success() { |  | ||||||
| 				xmppConnectionService.databaseBackend.updateAccount(account); |  | ||||||
| 				xmppConnectionService.sendPgpPresence(account, account.getPgpSignature()); |  | ||||||
| 			} |  | ||||||
| 			 |  | ||||||
| 			@Override |  | ||||||
| 			public void error(OpenPgpError openPgpError) { |  | ||||||
| 				// TODO Auto-generated method stub |  | ||||||
| 				 |  | ||||||
| 			} |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 	 |  | ||||||
| 	@Override | 	@Override | ||||||
| 	protected void onStop() { | 	protected void onStop() { | ||||||
| 		if (xmppConnectionServiceBound) { | 		if (xmppConnectionServiceBound) { | ||||||
|  | @ -487,7 +458,7 @@ public class ManageAccountActivity extends XmppActivity { | ||||||
| 		 super.onActivityResult(requestCode, resultCode, data); | 		 super.onActivityResult(requestCode, resultCode, data); | ||||||
| 		 if (resultCode == RESULT_OK) { | 		 if (resultCode == RESULT_OK) { | ||||||
| 			if (requestCode == REQUEST_ANNOUNCE_PGP) { | 			if (requestCode == REQUEST_ANNOUNCE_PGP) { | ||||||
| 				announcePgp(); | 				announcePgp(selectedAccountForActionMode); | ||||||
| 			 } | 			 } | ||||||
| 		 } | 		 } | ||||||
| 	 } | 	 } | ||||||
|  |  | ||||||
|  | @ -1,28 +1,37 @@ | ||||||
| package eu.siacs.conversations.ui; | package eu.siacs.conversations.ui; | ||||||
| 
 | 
 | ||||||
|  | import org.openintents.openpgp.OpenPgpError; | ||||||
|  | 
 | ||||||
| import eu.siacs.conversations.R; | import eu.siacs.conversations.R; | ||||||
|  | import eu.siacs.conversations.crypto.OnPgpEngineResult; | ||||||
|  | import eu.siacs.conversations.entities.Account; | ||||||
| import eu.siacs.conversations.entities.Conversation; | import eu.siacs.conversations.entities.Conversation; | ||||||
| import eu.siacs.conversations.services.XmppConnectionService; | import eu.siacs.conversations.services.XmppConnectionService; | ||||||
| import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder; | import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder; | ||||||
| import eu.siacs.conversations.utils.ExceptionHelper; | import eu.siacs.conversations.utils.ExceptionHelper; | ||||||
| import android.app.Activity; | import android.app.Activity; | ||||||
| import android.app.AlertDialog; | import android.app.AlertDialog; | ||||||
|  | import android.app.PendingIntent; | ||||||
| import android.app.AlertDialog.Builder; | import android.app.AlertDialog.Builder; | ||||||
| import android.content.ComponentName; | import android.content.ComponentName; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.content.DialogInterface; | import android.content.DialogInterface; | ||||||
| import android.content.DialogInterface.OnClickListener; | import android.content.DialogInterface.OnClickListener; | ||||||
|  | import android.content.IntentSender.SendIntentException; | ||||||
| import android.content.Intent; | import android.content.Intent; | ||||||
| import android.content.ServiceConnection; | import android.content.ServiceConnection; | ||||||
| import android.net.Uri; | import android.net.Uri; | ||||||
| import android.os.Bundle; | import android.os.Bundle; | ||||||
| import android.os.IBinder; | import android.os.IBinder; | ||||||
|  | import android.util.Log; | ||||||
| import android.view.MenuItem; | import android.view.MenuItem; | ||||||
| import android.view.View; | import android.view.View; | ||||||
| import android.view.inputmethod.InputMethodManager; | import android.view.inputmethod.InputMethodManager; | ||||||
| 
 | 
 | ||||||
| public abstract class XmppActivity extends Activity { | public abstract class XmppActivity extends Activity { | ||||||
| 	 | 	 | ||||||
|  | 	public static final int REQUEST_ANNOUNCE_PGP = 0x73731; | ||||||
|  | 	 | ||||||
| 	protected final static String LOGTAG = "xmppService"; | 	protected final static String LOGTAG = "xmppService"; | ||||||
| 	 | 	 | ||||||
| 	public XmppConnectionService xmppConnectionService; | 	public XmppConnectionService xmppConnectionService; | ||||||
|  | @ -152,4 +161,30 @@ public abstract class XmppActivity extends Activity { | ||||||
| 				| Intent.FLAG_ACTIVITY_CLEAR_TOP); | 				| Intent.FLAG_ACTIVITY_CLEAR_TOP); | ||||||
| 		startActivity(viewConversationIntent); | 		startActivity(viewConversationIntent); | ||||||
| 	} | 	} | ||||||
|  | 	 | ||||||
|  | 	protected void announcePgp(final Account account) { | ||||||
|  | 		xmppConnectionService.getPgpEngine().generateSignature(account, "online", new OnPgpEngineResult() { | ||||||
|  | 			 | ||||||
|  | 			@Override | ||||||
|  | 			public void userInputRequried(PendingIntent pi) { | ||||||
|  | 				try { | ||||||
|  | 					startIntentSenderForResult(pi.getIntentSender(), REQUEST_ANNOUNCE_PGP, null, 0, 0, 0); | ||||||
|  | 				} catch (SendIntentException e) { | ||||||
|  | 					Log.d("xmppService","coulnd start intent for pgp anncouncment"); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			 | ||||||
|  | 			@Override | ||||||
|  | 			public void success() { | ||||||
|  | 				xmppConnectionService.databaseBackend.updateAccount(account); | ||||||
|  | 				xmppConnectionService.sendPgpPresence(account, account.getPgpSignature()); | ||||||
|  | 			} | ||||||
|  | 			 | ||||||
|  | 			@Override | ||||||
|  | 			public void error(OpenPgpError openPgpError) { | ||||||
|  | 				// TODO Auto-generated method stub | ||||||
|  | 				 | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Dominik Schürmann
						Dominik Schürmann