use ctrl+arrow up to correct last message. fixes #3806
This commit is contained in:
		
							parent
							
								
									c9e6653e33
								
							
						
					
					
						commit
						590deef8e9
					
				@ -186,6 +186,21 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
 | 
				
			|||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Message getLastEditableMessage() {
 | 
				
			||||||
 | 
					        synchronized (this.messages) {
 | 
				
			||||||
 | 
					            for(final Message message : Lists.reverse(this.messages)) {
 | 
				
			||||||
 | 
					                if (message.isEditable()) {
 | 
				
			||||||
 | 
					                    if (message.isGeoUri() || message.getType() != Message.TYPE_TEXT) {
 | 
				
			||||||
 | 
					                        return null;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    return message;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Message findUnsentMessageWithUuid(String uuid) {
 | 
					    public Message findUnsentMessageWithUuid(String uuid) {
 | 
				
			||||||
        synchronized (this.messages) {
 | 
					        synchronized (this.messages) {
 | 
				
			||||||
            for (final Message message : this.messages) {
 | 
					            for (final Message message : this.messages) {
 | 
				
			||||||
 | 
				
			|||||||
@ -15,7 +15,6 @@ import java.lang.ref.WeakReference;
 | 
				
			|||||||
import java.net.MalformedURLException;
 | 
					import java.net.MalformedURLException;
 | 
				
			||||||
import java.net.URL;
 | 
					import java.net.URL;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.Collections;
 | 
					 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.Iterator;
 | 
					import java.util.Iterator;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
@ -613,15 +612,15 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable
 | 
				
			|||||||
	public boolean isLastCorrectableMessage() {
 | 
						public boolean isLastCorrectableMessage() {
 | 
				
			||||||
		Message next = next();
 | 
							Message next = next();
 | 
				
			||||||
		while (next != null) {
 | 
							while (next != null) {
 | 
				
			||||||
			if (next.isCorrectable()) {
 | 
								if (next.isEditable()) {
 | 
				
			||||||
				return false;
 | 
									return false;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			next = next.next();
 | 
								next = next.next();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return isCorrectable();
 | 
							return isEditable();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private boolean isCorrectable() {
 | 
						public boolean isEditable() {
 | 
				
			||||||
		return getStatus() != STATUS_RECEIVED && !isCarbon();
 | 
							return getStatus() != STATUS_RECEIVED && !isCarbon();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -2748,6 +2748,15 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
 | 
				
			|||||||
        return p.getBoolean("enter_is_send", getResources().getBoolean(R.bool.enter_is_send));
 | 
					        return p.getBoolean("enter_is_send", getResources().getBoolean(R.bool.enter_is_send));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean onArrowUpCtrlPressed() {
 | 
				
			||||||
 | 
					        final Message lastEditableMessage = conversation == null ? null : conversation.getLastEditableMessage();
 | 
				
			||||||
 | 
					        if (lastEditableMessage != null) {
 | 
				
			||||||
 | 
					            correctMessage(lastEditableMessage);
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onTypingStarted() {
 | 
					    public void onTypingStarted() {
 | 
				
			||||||
        final XmppConnectionService service = activity == null ? null : activity.xmppConnectionService;
 | 
					        final XmppConnectionService service = activity == null ? null : activity.xmppConnectionService;
 | 
				
			||||||
 | 
				
			|||||||
@ -49,6 +49,7 @@ import android.support.v7.app.ActionBar;
 | 
				
			|||||||
import android.support.v7.app.AlertDialog;
 | 
					import android.support.v7.app.AlertDialog;
 | 
				
			||||||
import android.support.v7.widget.Toolbar;
 | 
					import android.support.v7.widget.Toolbar;
 | 
				
			||||||
import android.util.Log;
 | 
					import android.util.Log;
 | 
				
			||||||
 | 
					import android.view.KeyEvent;
 | 
				
			||||||
import android.view.Menu;
 | 
					import android.view.Menu;
 | 
				
			||||||
import android.view.MenuItem;
 | 
					import android.view.MenuItem;
 | 
				
			||||||
import android.widget.Toast;
 | 
					import android.widget.Toast;
 | 
				
			||||||
@ -493,8 +494,19 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onSaveInstanceState(Bundle savedInstanceState) {
 | 
					    public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) {
 | 
				
			||||||
        Intent pendingIntent = pendingViewIntent.peek();
 | 
					        if (keyCode == KeyEvent.KEYCODE_DPAD_UP && keyEvent.isCtrlPressed()) {
 | 
				
			||||||
 | 
					            final ConversationFragment conversationFragment = ConversationFragment.get(this);
 | 
				
			||||||
 | 
					            if (conversationFragment != null && conversationFragment.onArrowUpCtrlPressed()) {
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return super.onKeyDown(keyCode, keyEvent);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onSaveInstanceState(final Bundle savedInstanceState) {
 | 
				
			||||||
 | 
					        final Intent pendingIntent = pendingViewIntent.peek();
 | 
				
			||||||
        savedInstanceState.putParcelable("intent", pendingIntent != null ? pendingIntent : getIntent());
 | 
					        savedInstanceState.putParcelable("intent", pendingIntent != null ? pendingIntent : getIntent());
 | 
				
			||||||
        super.onSaveInstanceState(savedInstanceState);
 | 
					        super.onSaveInstanceState(savedInstanceState);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user