Browse Source

Fixed previous/next cross account

main
M66B 6 years ago
parent
commit
74216a2e4d
2 changed files with 20 additions and 8 deletions
  1. +5
    -5
      app/src/main/java/eu/faircode/email/FragmentMessages.java
  2. +15
    -3
      app/src/main/java/eu/faircode/email/ViewModelMessages.java

+ 5
- 5
app/src/main/java/eu/faircode/email/FragmentMessages.java View File

@ -464,13 +464,13 @@ public class FragmentMessages extends FragmentEx {
bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override @Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
String[] pn = (String[]) bottom_navigation.getTag();
String thread = (menuItem.getItemId() == R.id.action_prev ? pn[0] : pn[1]);
ViewModelMessages.AccountThread[] pn = (ViewModelMessages.AccountThread[]) bottom_navigation.getTag();
ViewModelMessages.AccountThread target = (menuItem.getItemId() == R.id.action_prev ? pn[0] : pn[1]);
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext());
lbm.sendBroadcast( lbm.sendBroadcast(
new Intent(ActivityView.ACTION_VIEW_THREAD) new Intent(ActivityView.ACTION_VIEW_THREAD)
.putExtra("account", account)
.putExtra("thread", thread));
.putExtra("account", target.account)
.putExtra("thread", target.thread));
return true; return true;
} }
}); });
@ -587,7 +587,7 @@ public class FragmentMessages extends FragmentEx {
if (viewType == AdapterMessage.ViewType.THREAD) { if (viewType == AdapterMessage.ViewType.THREAD) {
// Navigation // Navigation
ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class); ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class);
String[] pn = model.getPrevNext(thread);
ViewModelMessages.AccountThread[] pn = model.getPrevNext(thread);
bottom_navigation.setTag(pn); bottom_navigation.setTag(pn);
bottom_navigation.getMenu().findItem(R.id.action_prev).setEnabled(pn[0] != null); bottom_navigation.getMenu().findItem(R.id.action_prev).setEnabled(pn[0] != null);
bottom_navigation.getMenu().findItem(R.id.action_next).setEnabled(pn[1] != null); bottom_navigation.getMenu().findItem(R.id.action_next).setEnabled(pn[1] != null);


+ 15
- 3
app/src/main/java/eu/faircode/email/ViewModelMessages.java View File

@ -10,9 +10,9 @@ public class ViewModelMessages extends ViewModel {
this.messages = messages; this.messages = messages;
} }
String[] getPrevNext(String thread) {
AccountThread[] getPrevNext(String thread) {
if (messages == null) if (messages == null)
return new String[]{null, null};
return new AccountThread[]{null, null};
boolean found = false; boolean found = false;
TupleMessageEx prev = null; TupleMessageEx prev = null;
@ -31,6 +31,18 @@ public class ViewModelMessages extends ViewModel {
else else
prev = item; prev = item;
} }
return new String[]{prev == null ? null : prev.thread, next == null ? null : next.thread};
return new AccountThread[]{
prev == null ? null : new AccountThread(prev.account, prev.thread),
next == null ? null : new AccountThread(next.account, next.thread)};
}
class AccountThread {
long account;
String thread;
AccountThread(long account, String thread) {
this.account = account;
this.thread = thread;
}
} }
} }

Loading…
Cancel
Save