|
|
@ -203,6 +203,7 @@ import static android.text.format.DateUtils.DAY_IN_MILLIS;
|
|
|
|
import static android.text.format.DateUtils.FORMAT_SHOW_DATE;
|
|
|
|
import static android.text.format.DateUtils.FORMAT_SHOW_DATE;
|
|
|
|
import static android.text.format.DateUtils.FORMAT_SHOW_WEEKDAY;
|
|
|
|
import static android.text.format.DateUtils.FORMAT_SHOW_WEEKDAY;
|
|
|
|
import static android.view.KeyEvent.ACTION_UP;
|
|
|
|
import static android.view.KeyEvent.ACTION_UP;
|
|
|
|
|
|
|
|
import static androidx.recyclerview.widget.RecyclerView.NO_POSITION;
|
|
|
|
import static org.openintents.openpgp.OpenPgpSignatureResult.RESULT_KEY_MISSING;
|
|
|
|
import static org.openintents.openpgp.OpenPgpSignatureResult.RESULT_KEY_MISSING;
|
|
|
|
import static org.openintents.openpgp.OpenPgpSignatureResult.RESULT_NO_SIGNATURE;
|
|
|
|
import static org.openintents.openpgp.OpenPgpSignatureResult.RESULT_NO_SIGNATURE;
|
|
|
|
import static org.openintents.openpgp.OpenPgpSignatureResult.RESULT_VALID_KEY_CONFIRMED;
|
|
|
|
import static org.openintents.openpgp.OpenPgpSignatureResult.RESULT_VALID_KEY_CONFIRMED;
|
|
|
@ -604,7 +605,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|
|
|
if (!date || !"time".equals(adapter.getSort()))
|
|
|
|
if (!date || !"time".equals(adapter.getSort()))
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
|
|
if (pos == RecyclerView.NO_POSITION)
|
|
|
|
if (pos == NO_POSITION)
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
|
|
TupleMessageEx prev = adapter.getItemAtPosition(pos - 1);
|
|
|
|
TupleMessageEx prev = adapter.getItemAtPosition(pos - 1);
|
|
|
@ -1219,7 +1220,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onItemStateChanged(@NonNull Long key, boolean selected) {
|
|
|
|
public void onItemStateChanged(@NonNull Long key, boolean selected) {
|
|
|
|
int pos = adapter.getPositionForKey(key);
|
|
|
|
int pos = adapter.getPositionForKey(key);
|
|
|
|
if (pos == RecyclerView.NO_POSITION)
|
|
|
|
if (pos == NO_POSITION)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
RecyclerView.ViewHolder viewHolder = rvMessage.findViewHolderForAdapterPosition(pos);
|
|
|
|
RecyclerView.ViewHolder viewHolder = rvMessage.findViewHolderForAdapterPosition(pos);
|
|
|
@ -1279,7 +1280,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|
|
|
private void scrollToVisibleItem(LinearLayoutManager llm, boolean bottom) {
|
|
|
|
private void scrollToVisibleItem(LinearLayoutManager llm, boolean bottom) {
|
|
|
|
int first = llm.findFirstVisibleItemPosition();
|
|
|
|
int first = llm.findFirstVisibleItemPosition();
|
|
|
|
int last = llm.findLastVisibleItemPosition();
|
|
|
|
int last = llm.findLastVisibleItemPosition();
|
|
|
|
if (first == RecyclerView.NO_POSITION || last == RecyclerView.NO_POSITION)
|
|
|
|
if (first == NO_POSITION || last == NO_POSITION)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
int pos = (bottom ? last : first);
|
|
|
|
int pos = (bottom ? last : first);
|
|
|
@ -1429,7 +1430,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|
|
|
if (!other.equals(message.id)) {
|
|
|
|
if (!other.equals(message.id)) {
|
|
|
|
values.get("expanded").remove(other);
|
|
|
|
values.get("expanded").remove(other);
|
|
|
|
int pos = adapter.getPositionForKey(other);
|
|
|
|
int pos = adapter.getPositionForKey(other);
|
|
|
|
if (pos != RecyclerView.NO_POSITION)
|
|
|
|
if (pos != NO_POSITION)
|
|
|
|
adapter.notifyItemChanged(pos);
|
|
|
|
adapter.notifyItemChanged(pos);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1575,7 +1576,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
|
|
|
|
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
|
|
|
|
int pos = viewHolder.getAdapterPosition();
|
|
|
|
int pos = viewHolder.getAdapterPosition();
|
|
|
|
if (pos == RecyclerView.NO_POSITION)
|
|
|
|
if (pos == NO_POSITION)
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
|
|
TupleMessageEx message = getMessage(pos);
|
|
|
|
TupleMessageEx message = getMessage(pos);
|
|
|
@ -1633,7 +1634,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int pos = viewHolder.getAdapterPosition();
|
|
|
|
int pos = viewHolder.getAdapterPosition();
|
|
|
|
if (pos == RecyclerView.NO_POSITION)
|
|
|
|
if (pos == NO_POSITION)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
TupleMessageEx message = getMessage(pos);
|
|
|
|
TupleMessageEx message = getMessage(pos);
|
|
|
@ -1718,7 +1719,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
|
|
|
|
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
|
|
|
|
int pos = viewHolder.getAdapterPosition();
|
|
|
|
int pos = viewHolder.getAdapterPosition();
|
|
|
|
if (pos == RecyclerView.NO_POSITION) {
|
|
|
|
if (pos == NO_POSITION) {
|
|
|
|
adapter.notifyDataSetChanged();
|
|
|
|
adapter.notifyDataSetChanged();
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -4442,6 +4443,9 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|
|
|
return (!up || onNext(context));
|
|
|
|
return (!up || onNext(context));
|
|
|
|
case KeyEvent.KEYCODE_VOLUME_DOWN:
|
|
|
|
case KeyEvent.KEYCODE_VOLUME_DOWN:
|
|
|
|
return (!up || onPrevious(context));
|
|
|
|
return (!up || onPrevious(context));
|
|
|
|
|
|
|
|
case KeyEvent.KEYCODE_ENTER:
|
|
|
|
|
|
|
|
case KeyEvent.KEYCODE_NUMPAD_ENTER:
|
|
|
|
|
|
|
|
return (!up || onViewThread(context));
|
|
|
|
case KeyEvent.KEYCODE_A:
|
|
|
|
case KeyEvent.KEYCODE_A:
|
|
|
|
return (up && onArchive(context));
|
|
|
|
return (up && onArchive(context));
|
|
|
|
case KeyEvent.KEYCODE_C:
|
|
|
|
case KeyEvent.KEYCODE_C:
|
|
|
@ -4512,6 +4516,33 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|
|
|
return prefs.getBoolean("volumenav", false);
|
|
|
|
return prefs.getBoolean("volumenav", false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean onViewThread(Context context) {
|
|
|
|
|
|
|
|
if (viewType == AdapterMessage.ViewType.THREAD)
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
View focussed = rvMessage.getFocusedChild();
|
|
|
|
|
|
|
|
if (focussed == null)
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
int pos = rvMessage.getChildAdapterPosition(focussed);
|
|
|
|
|
|
|
|
if (pos == NO_POSITION)
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
PagedList<TupleMessageEx> list = ((AdapterMessage) rvMessage.getAdapter()).getCurrentList();
|
|
|
|
|
|
|
|
if (pos >= list.size())
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
TupleMessageEx message = list.get(pos);
|
|
|
|
|
|
|
|
if (message == null)
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context);
|
|
|
|
|
|
|
|
Intent viewThread = new Intent(ActivityView.ACTION_VIEW_THREAD)
|
|
|
|
|
|
|
|
.putExtra("account", message.account)
|
|
|
|
|
|
|
|
.putExtra("thread", message.thread)
|
|
|
|
|
|
|
|
.putExtra("id", message.id)
|
|
|
|
|
|
|
|
.putExtra("filter_archive", !EntityFolder.ARCHIVE.equals(message.folderType))
|
|
|
|
|
|
|
|
.putExtra("found", viewType == AdapterMessage.ViewType.SEARCH);
|
|
|
|
|
|
|
|
lbm.sendBroadcast(viewThread);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private boolean onArchive(Context context) {
|
|
|
|
private boolean onArchive(Context context) {
|
|
|
|
if (bottom_navigation == null)
|
|
|
|
if (bottom_navigation == null)
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|