mirror of
https://github.com/M66B/FairEmail.git
synced 2025-03-15 16:39:37 +00:00
parent
52158a8672
commit
13de85a3d3
4 changed files with 104 additions and 46 deletions
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
|
@ -22,6 +22,8 @@ package eu.faircode.email;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
@ -159,10 +161,47 @@ public class FragmentMessages extends FragmentEx {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChildDraw(Canvas canvas, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
|
||||||
|
int pos = viewHolder.getAdapterPosition();
|
||||||
|
if (pos == RecyclerView.NO_POSITION)
|
||||||
|
return;
|
||||||
|
|
||||||
|
TupleMessageEx message = ((AdapterMessage) rvMessage.getAdapter()).getCurrentList().get(pos);
|
||||||
|
boolean inbox = (EntityFolder.ARCHIVE.equals(message.folderType) || EntityFolder.TRASH.equals(message.folderType));
|
||||||
|
|
||||||
|
View itemView = viewHolder.itemView;
|
||||||
|
int margin = Math.round(12 * (getResources().getDisplayMetrics().density));
|
||||||
|
|
||||||
|
if (dX > margin) {
|
||||||
|
// Right swipe
|
||||||
|
Drawable d = getResources().getDrawable(inbox ? R.drawable.baseline_inbox_24 : R.drawable.baseline_archive_24, getContext().getTheme());
|
||||||
|
d.setBounds(
|
||||||
|
itemView.getLeft() + margin,
|
||||||
|
itemView.getTop() + d.getIntrinsicHeight() / 2,
|
||||||
|
itemView.getLeft() + margin + d.getIntrinsicWidth(),
|
||||||
|
itemView.getTop() + (itemView.getHeight() - d.getIntrinsicHeight() / 2));
|
||||||
|
d.draw(canvas);
|
||||||
|
} else if (dX < -margin) {
|
||||||
|
// Left swipe
|
||||||
|
Drawable d = getResources().getDrawable(inbox ? R.drawable.baseline_inbox_24 : R.drawable.baseline_delete_24, getContext().getTheme());
|
||||||
|
d.setBounds(
|
||||||
|
itemView.getLeft() + itemView.getWidth() - d.getIntrinsicWidth() - margin,
|
||||||
|
itemView.getTop() + d.getIntrinsicHeight() / 2,
|
||||||
|
itemView.getLeft() + itemView.getWidth() - margin,
|
||||||
|
itemView.getTop() + (itemView.getHeight() - d.getIntrinsicHeight() / 2));
|
||||||
|
d.draw(canvas);
|
||||||
|
}
|
||||||
|
|
||||||
|
super.onChildDraw(canvas, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
|
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
|
||||||
int pos = viewHolder.getAdapterPosition();
|
int pos = viewHolder.getAdapterPosition();
|
||||||
if (pos != RecyclerView.NO_POSITION) {
|
if (pos == RecyclerView.NO_POSITION)
|
||||||
|
return;
|
||||||
|
|
||||||
TupleMessageEx message = ((AdapterMessage) rvMessage.getAdapter()).getCurrentList().get(pos);
|
TupleMessageEx message = ((AdapterMessage) rvMessage.getAdapter()).getCurrentList().get(pos);
|
||||||
Log.i(Helper.TAG, "Swiped dir=" + direction + " message=" + message.id);
|
Log.i(Helper.TAG, "Swiped dir=" + direction + " message=" + message.id);
|
||||||
|
|
||||||
|
@ -218,7 +257,6 @@ public class FragmentMessages extends FragmentEx {
|
||||||
}
|
}
|
||||||
}.load(FragmentMessages.this, args);
|
}.load(FragmentMessages.this, args);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}).attachToRecyclerView(rvMessage);
|
}).attachToRecyclerView(rvMessage);
|
||||||
|
|
||||||
fab.setOnClickListener(new View.OnClickListener() {
|
fab.setOnClickListener(new View.OnClickListener() {
|
||||||
|
|
10
app/src/main/res/drawable/baseline_inbox_24.xml
Normal file
10
app/src/main/res/drawable/baseline_inbox_24.xml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M19,3L4.99,3c-1.11,0 -1.98,0.89 -1.98,2L3,19c0,1.1 0.88,2 1.99,2L19,21c1.1,0 2,-0.9 2,-2L21,5c0,-1.11 -0.9,-2 -2,-2zM19,15h-4c0,1.66 -1.35,3 -3,3s-3,-1.34 -3,-3L4.99,15L4.99,5L19,5v10z"/>
|
||||||
|
</vector>
|
10
app/src/main/res/drawable/baseline_move_to_inbox_24.xml
Normal file
10
app/src/main/res/drawable/baseline_move_to_inbox_24.xml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M19,3L4.99,3c-1.11,0 -1.98,0.9 -1.98,2L3,19c0,1.1 0.88,2 1.99,2L19,21c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM19,15h-4c0,1.66 -1.35,3 -3,3s-3,-1.34 -3,-3L4.99,15L4.99,5L19,5v10zM16,10h-2L14,7h-4v3L8,10l4,4 4,-4z"/>
|
||||||
|
</vector>
|
Loading…
Add table
Reference in a new issue