Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 950940ca authored by dzan's avatar dzan
Browse files

Merge pull request #183 from dzan/fix_swipe_select

Revert to swipe to enter multi select mode.
parents b9395da6 b76be539
Loading
Loading
Loading
Loading
+36 −1
Original line number Diff line number Diff line
@@ -25,8 +25,10 @@ import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.util.Log;
import android.util.TypedValue;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
@@ -58,6 +60,8 @@ import com.fsck.k9.K9;
import com.fsck.k9.Preferences;
import com.fsck.k9.R;
import com.fsck.k9.SearchSpecification;
import com.fsck.k9.activity.misc.SwipeGestureDetector;
import com.fsck.k9.activity.misc.SwipeGestureDetector.OnSwipeGestureListener;
import com.fsck.k9.activity.setup.AccountSettings;
import com.fsck.k9.activity.setup.FolderSettings;
import com.fsck.k9.activity.setup.Prefs;
@@ -82,7 +86,8 @@ import com.handmark.pulltorefresh.library.PullToRefreshListView;
 * shows a list of messages.
 * From this Activity the user can perform all standard message operations.
 */
public class MessageList extends K9ListActivity implements OnItemClickListener {
public class MessageList extends K9ListActivity implements OnItemClickListener,
        OnSwipeGestureListener {

    /**
     * Reverses the result of a {@link Comparator}.
@@ -675,6 +680,9 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
        initializeMessageList(getIntent(), true);
        mListView.setVerticalFadingEdgeEnabled(false);

        // Enable gesture detection for MessageLists
        mGestureDetector = new GestureDetector(new SwipeGestureDetector(this, this));

        // Enable context action bar behaviour
        mListView.setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
@@ -1517,6 +1525,33 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
        return true;
    }

    @Override
    public void onSwipeRightToLeft(final MotionEvent e1, final MotionEvent e2) {
        // Handle right-to-left as an un-select
        handleSwipe(e1, false);
    }

    @Override
    public void onSwipeLeftToRight(final MotionEvent e1, final MotionEvent e2) {
        // Handle left-to-right as a select.
        handleSwipe(e1, true);
    }

    /**
     * Handle a select or unselect swipe event
     * @param downMotion Event that started the swipe
     * @param selected true if this was an attempt to select (i.e. left to right).
     */
    private void handleSwipe(final MotionEvent downMotion, final boolean selected) {
        int[] listPosition = new int[2];
        mListView.getLocationOnScreen(listPosition);
        int position = mListView.pointToPosition((int) downMotion.getRawX() - listPosition[0], (int) downMotion.getRawY() - listPosition[1]);
        if (position != AdapterView.INVALID_POSITION) {
            final MessageInfoHolder message = (MessageInfoHolder) mListView.getItemAtPosition(position);
            toggleMessageSelect(message);
        }
    }

    class MessageListAdapter extends BaseAdapter {
        private final List<MessageInfoHolder> mMessages =
                Collections.synchronizedList(new ArrayList<MessageInfoHolder>());