Merge branch 'development' of https://github.com/siacs/Conversations into development

kruks23 created

Change summary

res/drawable-hdpi/ic_action_search.png                         |  0 
res/drawable-mdpi/ic_action_search.png                         |  0 
res/drawable-xhdpi/ic_action_search.png                        |  0 
res/drawable-xxhdpi/ic_action_search.png                       |  0 
src/eu/siacs/conversations/entities/Contact.java               |  1 
src/eu/siacs/conversations/services/XmppConnectionService.java | 19 -
src/eu/siacs/conversations/ui/ConversationFragment.java        | 41 ++-
src/eu/siacs/conversations/xmpp/XmppConnection.java            | 14 -
8 files changed, 33 insertions(+), 42 deletions(-)

Detailed changes

src/eu/siacs/conversations/entities/Contact.java 🔗

@@ -286,5 +286,6 @@ public class Contact {
 		public static final int ASKING = 2;
 		public static final int PREEMPTIVE_GRANT = 4;
 		public static final int IN_ROSTER = 8;
+		public static final int PENDING_SUBSCRIPTION_REQUEST = 16;
 	}
 }

src/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -303,12 +303,6 @@ public class XmppConnectionService extends Service {
 				} else {
 					Contact contact = account.getRoster().getContact(
 							packet.getFrom());
-					/*
-					 * if (contact == null) { if ("subscribe".equals(type)) {
-					 * account.getXmppConnection().addPendingSubscription(
-					 * fromParts[0]); } else { // Log.d(LOGTAG,packet.getFrom()+
-					 * // " could not be found"); } return; }
-					 */
 					if (type == null) {
 						if (fromParts.length == 2) {
 							contact.updatePresence(fromParts[1], Presences
@@ -327,12 +321,6 @@ public class XmppConnectionService extends Service {
 									}
 									contact.setPgpKeyId(pgp.fetchKeyId(account,
 											msg, x.getContent()));
-									Log.d("xmppService",
-											account.getJid()
-													+ ": fetched key id for "
-													+ contact.getJid()
-													+ " was:"
-													+ contact.getPgpKeyId());
 								}
 							}
 						} else {
@@ -357,8 +345,7 @@ public class XmppConnectionService extends Service {
 								requestPresenceUpdatesFrom(contact);
 							}
 						} else {
-							account.getXmppConnection().addPendingSubscription(
-									fromParts[0]);
+							contact.setOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST);
 						}
 					} else {
 						// Log.d(LOGTAG, packet.toString());
@@ -1198,8 +1185,7 @@ public class XmppConnectionService extends Service {
 		pushContactToServer(contact);
 		if (autoGrant) {
 			requestPresenceUpdatesFrom(contact);
-			if (contact.getAccount().getXmppConnection().hasPendingSubscription(
-					contact.getJid())) {
+			if (contact.getOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST)) {
 				Log.d("xmppService", "contact had pending subscription");
 				sendPresenceUpdatesTo(contact);
 			}
@@ -1260,6 +1246,7 @@ public class XmppConnectionService extends Service {
 		packet.setAttribute("from", contact.getAccount().getJid());
 		Log.d(LOGTAG, packet.toString());
 		contact.getAccount().getXmppConnection().sendPresencePacket(packet);
+		contact.resetOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST);
 	}
 
 	public void sendPresence(Account account) {

src/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -392,20 +392,17 @@ public class ConversationFragment extends Fragment {
 
 				if (type == RECIEVED) {
 					if (item.getConversation().getMode() == Conversation.MODE_MULTI) {
-						if (item.getCounterpart() != null) {
-							viewHolder.contact_picture
-									.setImageBitmap(mBitmapCache.get(item
-											.getCounterpart(), null,
-											getActivity()
-													.getApplicationContext()));
-						} else {
-							viewHolder.contact_picture
-									.setImageBitmap(mBitmapCache.get(
-											item.getConversation().getName(
-													useSubject), null,
-											getActivity()
-													.getApplicationContext()));
-						}
+						viewHolder.contact_picture.setImageBitmap(mBitmapCache
+								.get(item.getCounterpart(), null, getActivity()
+										.getApplicationContext()));
+						viewHolder.contact_picture
+								.setOnClickListener(new OnClickListener() {
+
+									@Override
+									public void onClick(View v) {
+										highlightInConference(item.getCounterpart());
+									}
+								});
 					}
 				}
 
@@ -461,6 +458,22 @@ public class ConversationFragment extends Fragment {
 		return view;
 	}
 
+	protected void highlightInConference(String nick) {
+		if (chatMsg.getText().toString().isEmpty()) {
+			chatMsg.setText(nick+": ");
+		} else {
+			String oldString = chatMsg.getText().toString();
+			if (oldString.endsWith(" ")) {
+				chatMsg.setText(oldString+nick+" ");
+			} else {
+				chatMsg.setText(oldString+" "+nick+" ");
+			}
+		}
+		int position = chatMsg.length();
+		Editable etext = chatMsg.getText();
+		Selection.setSelection(etext, position);
+	}
+	
 	protected Bitmap findSelfPicture() {
 		SharedPreferences sharedPref = PreferenceManager
 				.getDefaultSharedPreferences(getActivity()

src/eu/siacs/conversations/xmpp/XmppConnection.java 🔗

@@ -74,9 +74,7 @@ public class XmppConnection implements Runnable {
 	private boolean shouldAuthenticate = true;
 	private Element streamFeatures;
 	private HashMap<String, List<String>> disco = new HashMap<String, List<String>>();
-	
-	private HashSet<String> pendingSubscriptions = new HashSet<String>();
-	
+
 	private String streamId = null;
 	private int smVersion = 3;
 	
@@ -261,6 +259,7 @@ public class XmppConnection implements Runnable {
 				RequestPacket r = new RequestPacket(smVersion);
 				tagWriter.writeStanzaAsync(r);
 			} else if (nextTag.isStart("resumed")) {
+				lastPaketReceived = SystemClock.elapsedRealtime();
 				Log.d(LOGTAG,account.getJid()+": session resumed");
 				tagReader.readElement(nextTag);
 				sendPing();
@@ -904,15 +903,6 @@ public class XmppConnection implements Runnable {
 		return findDiscoItemByFeature("http://jabber.org/protocol/muc");
 	}
 	
-	public boolean hasPendingSubscription(String jid) {
-		return this.pendingSubscriptions.contains(jid);
-	}
-	
-	public void addPendingSubscription(String jid) {
-		Log.d(LOGTAG,"adding "+jid+" to pending subscriptions");
-		this.pendingSubscriptions.add(jid);
-	}
-
 	public int getTimeToNextAttempt() {
 		int interval = (int) (25 * Math.pow(1.5,attempt));
 		int secondsSinceLast = (int) ((SystemClock.elapsedRealtime() - this.lastConnect) / 1000);