mirror of https://github.com/M66B/FairEmail.git
Highlight selected item when two row/column mode
This commit is contained in:
parent
64011a0ad9
commit
be90d57b00
|
@ -718,6 +718,11 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
|
|||
Shortcuts.update(this, this);
|
||||
}
|
||||
|
||||
public boolean isSplit() {
|
||||
return (layoutId == R.layout.activity_view_portrait_split ||
|
||||
layoutId == R.layout.activity_view_landscape_split);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressedFragment() {
|
||||
backPressedCallback.handleOnBackPressed();
|
||||
|
|
|
@ -230,6 +230,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
private int textColorSecondary;
|
||||
private int textColorTertiary;
|
||||
private int textColorLink;
|
||||
private int textColorHighlightInverse;
|
||||
private int colorUnreadHighlight;
|
||||
private int colorUnread;
|
||||
private int colorRead;
|
||||
|
@ -1832,8 +1833,12 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
|
||||
ibFlagged.setEnabled(message.uid != null || message.accountProtocol != EntityAccount.TYPE_IMAP);
|
||||
|
||||
boolean split = (viewType != ViewType.THREAD && properties.getValue("split", message.id));
|
||||
if (split)
|
||||
color = textColorHighlightInverse;
|
||||
|
||||
card.setCardBackgroundColor(
|
||||
flags_background && flagged && !expanded
|
||||
split || (flags_background && flagged && !expanded)
|
||||
? ColorUtils.setAlphaComponent(color, 127) : Color.TRANSPARENT);
|
||||
|
||||
ibFlagged.setVisibility(flags || message.ui_flagged ? View.VISIBLE : View.GONE);
|
||||
|
@ -7032,6 +7037,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
this.textColorSecondary = Helper.resolveColor(context, android.R.attr.textColorSecondary);
|
||||
this.textColorTertiary = Helper.resolveColor(context, android.R.attr.textColorTertiary);
|
||||
this.textColorLink = Helper.resolveColor(context, android.R.attr.textColorLink);
|
||||
this.textColorHighlightInverse = Helper.resolveColor(context, android.R.attr.textColorHighlightInverse);
|
||||
|
||||
boolean highlight_unread = prefs.getBoolean("highlight_unread", true);
|
||||
boolean highlight_subject = prefs.getBoolean("highlight_subject", false);
|
||||
|
|
|
@ -256,7 +256,8 @@ import me.everything.android.ui.overscroll.IOverScrollUpdateListener;
|
|||
import me.everything.android.ui.overscroll.VerticalOverScrollBounceEffectDecorator;
|
||||
import me.everything.android.ui.overscroll.adapters.RecyclerViewOverScrollDecorAdapter;
|
||||
|
||||
public class FragmentMessages extends FragmentBase implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
public class FragmentMessages extends FragmentBase
|
||||
implements SharedPreferences.OnSharedPreferenceChangeListener, FragmentManager.OnBackStackChangedListener {
|
||||
private ViewGroup view;
|
||||
private SwipeRefreshLayoutEx swipeRefresh;
|
||||
private TextView tvAirplane;
|
||||
|
@ -521,14 +522,20 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
if (viewType != AdapterMessage.ViewType.THREAD && EntityFolder.ARCHIVE.equals(type))
|
||||
filter_archive = false;
|
||||
|
||||
if (viewType != AdapterMessage.ViewType.THREAD)
|
||||
getParentFragmentManager().setFragmentResultListener("message.selected", this, new FragmentResultListener() {
|
||||
@Override
|
||||
public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle result) {
|
||||
long id = result.getLong("id", -1);
|
||||
iProperties.setValue("selected", id, true);
|
||||
}
|
||||
});
|
||||
try {
|
||||
FragmentManager fm = getParentFragmentManager();
|
||||
if (viewType != AdapterMessage.ViewType.THREAD)
|
||||
fm.setFragmentResultListener("message.selected", this, new FragmentResultListener() {
|
||||
@Override
|
||||
public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle result) {
|
||||
long id = result.getLong("id", -1);
|
||||
iProperties.setValue("selected", id, true);
|
||||
}
|
||||
});
|
||||
fm.addOnBackStackChangedListener(this);
|
||||
} catch (Throwable ex) {
|
||||
Log.e(ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1944,9 +1951,32 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
try {
|
||||
FragmentManager fm = getParentFragmentManager();
|
||||
fm.removeOnBackStackChangedListener(this);
|
||||
} catch (Throwable ex) {
|
||||
Log.e(ex);
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackStackChanged() {
|
||||
if (viewType == AdapterMessage.ViewType.THREAD)
|
||||
return;
|
||||
|
||||
FragmentActivity activity = getActivity();
|
||||
FragmentManager fm = getParentFragmentManager();
|
||||
int count = fm.getBackStackEntryCount();
|
||||
boolean split = (activity instanceof ActivityView &&
|
||||
((ActivityView) activity).isSplit() &&
|
||||
count > 0 && "thread".equals(fm.getBackStackEntryAt(count - 1).getName()));
|
||||
List<Long> ids = values.get("selected");
|
||||
if (ids != null)
|
||||
for (long id : ids)
|
||||
iProperties.setValue("split", id, split);
|
||||
}
|
||||
|
||||
private void scrollToVisibleItem(LinearLayoutManager llm, boolean bottom) {
|
||||
int first = llm.findFirstVisibleItemPosition();
|
||||
int last = llm.findLastVisibleItemPosition();
|
||||
|
@ -2095,7 +2125,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
} else
|
||||
values.get(name).remove(id);
|
||||
|
||||
if ("selected".equals(name) && enabled) {
|
||||
if ("split".equals(name) || ("selected".equals(name) && enabled)) {
|
||||
if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED))
|
||||
return;
|
||||
|
||||
|
@ -2105,7 +2135,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
if (pos != NO_POSITION)
|
||||
changed.add(pos);
|
||||
|
||||
for (Long other : new ArrayList<>(values.get("selected")))
|
||||
for (Long other : new ArrayList<>(values.get(name)))
|
||||
if (!other.equals(id)) {
|
||||
values.get(name).remove(other);
|
||||
|
||||
|
|
Loading…
Reference in New Issue