|
|
|
@ -133,6 +133,17 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
|
|
|
|
|
private ExecutorService executor = Executors.newSingleThreadExecutor(Helper.backgroundThreadFactory);
|
|
|
|
|
|
|
|
|
|
private final int action_seen = 1;
|
|
|
|
|
private final int action_unseen = 2;
|
|
|
|
|
private final int action_snooze = 3;
|
|
|
|
|
private final int action_flag = 4;
|
|
|
|
|
private final int action_unflag = 5;
|
|
|
|
|
private final int action_archive = 6;
|
|
|
|
|
private final int action_trash = 7;
|
|
|
|
|
private final int action_delete = 8;
|
|
|
|
|
private final int action_junk = 9;
|
|
|
|
|
private final int action_move = 10;
|
|
|
|
|
|
|
|
|
|
private static final int LOCAL_PAGE_SIZE = 100;
|
|
|
|
|
private static final int REMOTE_PAGE_SIZE = 10;
|
|
|
|
|
private static final int UNDO_TIMEOUT = 5000; // milliseconds
|
|
|
|
@ -211,6 +222,178 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onRefresh() {
|
|
|
|
|
onSwipeRefresh();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
tvSupport.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
|
|
|
|
|
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro");
|
|
|
|
|
fragmentTransaction.commit();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ibHintSupport.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
prefs.edit().putBoolean("app_support", true).apply();
|
|
|
|
|
grpHintSupport.setVisibility(View.GONE);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ibHintSwipe.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
prefs.edit().putBoolean("message_swipe", true).apply();
|
|
|
|
|
grpHintSwipe.setVisibility(View.GONE);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ibHintSelect.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
prefs.edit().putBoolean("message_select", true).apply();
|
|
|
|
|
grpHintSelect.setVisibility(View.GONE);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rvMessage.setHasFixedSize(false);
|
|
|
|
|
//rvMessage.setItemViewCacheSize(10);
|
|
|
|
|
//rvMessage.getRecycledViewPool().setMaxRecycledViews(0, 10);
|
|
|
|
|
LinearLayoutManager llm = new LinearLayoutManager(getContext());
|
|
|
|
|
rvMessage.setLayoutManager(llm);
|
|
|
|
|
|
|
|
|
|
boolean compact = prefs.getBoolean("compact", false);
|
|
|
|
|
int zoom = prefs.getInt("zoom", compact ? 0 : 1);
|
|
|
|
|
adapter = new AdapterMessage(
|
|
|
|
|
getContext(), getViewLifecycleOwner(), getFragmentManager(),
|
|
|
|
|
viewType, outgoing, compact, zoom, iProperties);
|
|
|
|
|
|
|
|
|
|
rvMessage.setAdapter(adapter);
|
|
|
|
|
|
|
|
|
|
if (viewType != AdapterMessage.ViewType.THREAD) {
|
|
|
|
|
final SelectionPredicateMessage predicate = new SelectionPredicateMessage(rvMessage);
|
|
|
|
|
|
|
|
|
|
selectionTracker = new SelectionTracker.Builder<>(
|
|
|
|
|
"messages-selection",
|
|
|
|
|
rvMessage,
|
|
|
|
|
new ItemKeyProviderMessage(rvMessage),
|
|
|
|
|
new ItemDetailsLookupMessage(rvMessage),
|
|
|
|
|
StorageStrategy.createLongStorage())
|
|
|
|
|
.withSelectionPredicate(predicate)
|
|
|
|
|
.build();
|
|
|
|
|
adapter.setSelectionTracker(selectionTracker);
|
|
|
|
|
|
|
|
|
|
selectionTracker.addObserver(new SelectionTracker.SelectionObserver() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onSelectionChanged() {
|
|
|
|
|
// Workaround AndroidX bug
|
|
|
|
|
FragmentActivity activity = getActivity();
|
|
|
|
|
if (activity != null)
|
|
|
|
|
try {
|
|
|
|
|
ViewModelMessages modelMessages = ViewModelProviders.of(activity).get(ViewModelMessages.class);
|
|
|
|
|
if (selectionTracker.hasSelection())
|
|
|
|
|
modelMessages.removeObservers(viewType, getViewLifecycleOwner());
|
|
|
|
|
else
|
|
|
|
|
modelMessages.observe(viewType, getViewLifecycleOwner(), observer);
|
|
|
|
|
} catch (IllegalStateException ex) {
|
|
|
|
|
// getViewLifecycleOwner
|
|
|
|
|
Log.w(ex);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (selectionTracker.hasSelection()) {
|
|
|
|
|
swipeRefresh.setEnabled(false);
|
|
|
|
|
fabMore.show();
|
|
|
|
|
} else {
|
|
|
|
|
predicate.clearAccount();
|
|
|
|
|
fabMore.hide();
|
|
|
|
|
swipeRefresh.setEnabled(pull);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
new ItemTouchHelper(touchHelper).attachToRecyclerView(rvMessage);
|
|
|
|
|
|
|
|
|
|
bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
|
|
|
|
|
switch (menuItem.getItemId()) {
|
|
|
|
|
case R.id.action_delete:
|
|
|
|
|
onActionMove(EntityFolder.TRASH);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
case R.id.action_archive:
|
|
|
|
|
onActionMove(EntityFolder.ARCHIVE);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
case R.id.action_prev:
|
|
|
|
|
navigate(false);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
case R.id.action_next:
|
|
|
|
|
navigate(true);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
fab.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View view) {
|
|
|
|
|
EntityFolder drafts = (EntityFolder) fab.getTag();
|
|
|
|
|
|
|
|
|
|
startActivity(new Intent(getContext(), ActivityCompose.class)
|
|
|
|
|
.putExtra("action", "new")
|
|
|
|
|
.putExtra("account", drafts.account)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
fab.setOnLongClickListener(new View.OnLongClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onLongClick(View v) {
|
|
|
|
|
EntityFolder drafts = (EntityFolder) fab.getTag();
|
|
|
|
|
|
|
|
|
|
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext());
|
|
|
|
|
lbm.sendBroadcast(
|
|
|
|
|
new Intent(ActivityView.ACTION_VIEW_MESSAGES)
|
|
|
|
|
.putExtra("account", drafts.account)
|
|
|
|
|
.putExtra("folder", drafts.id)
|
|
|
|
|
.putExtra("outgoing", drafts.isOutgoing()));
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
fabMore.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
onMore();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
((ActivityBase) getActivity()).addBackPressedListener(onBackPressedListener);
|
|
|
|
|
|
|
|
|
|
// Initialize
|
|
|
|
|
swipeRefresh.setEnabled(pull);
|
|
|
|
|
tvNoEmail.setVisibility(View.GONE);
|
|
|
|
|
bottom_navigation.setVisibility(View.GONE);
|
|
|
|
|
grpReady.setVisibility(View.GONE);
|
|
|
|
|
pbWait.setVisibility(View.VISIBLE);
|
|
|
|
|
|
|
|
|
|
fab.hide();
|
|
|
|
|
fabMore.hide();
|
|
|
|
|
|
|
|
|
|
return view;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void onSwipeRefresh() {
|
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
|
args.putLong("folder", folder);
|
|
|
|
|
|
|
|
|
@ -271,54 +454,8 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
}
|
|
|
|
|
}.execute(FragmentMessages.this, args, "messages:refresh");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
tvSupport.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
|
|
|
|
|
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro");
|
|
|
|
|
fragmentTransaction.commit();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ibHintSupport.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
prefs.edit().putBoolean("app_support", true).apply();
|
|
|
|
|
grpHintSupport.setVisibility(View.GONE);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ibHintSwipe.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
prefs.edit().putBoolean("message_swipe", true).apply();
|
|
|
|
|
grpHintSwipe.setVisibility(View.GONE);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ibHintSelect.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
prefs.edit().putBoolean("message_select", true).apply();
|
|
|
|
|
grpHintSelect.setVisibility(View.GONE);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rvMessage.setHasFixedSize(false);
|
|
|
|
|
//rvMessage.setItemViewCacheSize(10);
|
|
|
|
|
//rvMessage.getRecycledViewPool().setMaxRecycledViews(0, 10);
|
|
|
|
|
LinearLayoutManager llm = new LinearLayoutManager(getContext());
|
|
|
|
|
rvMessage.setLayoutManager(llm);
|
|
|
|
|
|
|
|
|
|
boolean compact = prefs.getBoolean("compact", false);
|
|
|
|
|
int zoom = prefs.getInt("zoom", compact ? 0 : 1);
|
|
|
|
|
adapter = new AdapterMessage(
|
|
|
|
|
getContext(), getViewLifecycleOwner(), getFragmentManager(),
|
|
|
|
|
viewType, outgoing,
|
|
|
|
|
compact, zoom,
|
|
|
|
|
new AdapterMessage.IProperties() {
|
|
|
|
|
private AdapterMessage.IProperties iProperties = new AdapterMessage.IProperties() {
|
|
|
|
|
@Override
|
|
|
|
|
public void setValue(String name, long id, boolean enabled) {
|
|
|
|
|
if (!values.containsKey(name))
|
|
|
|
@ -410,55 +547,12 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
}
|
|
|
|
|
}.execute(FragmentMessages.this, args, "messages:move");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
rvMessage.setAdapter(adapter);
|
|
|
|
|
|
|
|
|
|
if (viewType != AdapterMessage.ViewType.THREAD) {
|
|
|
|
|
final SelectionPredicateMessage predicate = new SelectionPredicateMessage(rvMessage);
|
|
|
|
|
|
|
|
|
|
selectionTracker = new SelectionTracker.Builder<>(
|
|
|
|
|
"messages-selection",
|
|
|
|
|
rvMessage,
|
|
|
|
|
new ItemKeyProviderMessage(rvMessage),
|
|
|
|
|
new ItemDetailsLookupMessage(rvMessage),
|
|
|
|
|
StorageStrategy.createLongStorage())
|
|
|
|
|
.withSelectionPredicate(predicate)
|
|
|
|
|
.build();
|
|
|
|
|
adapter.setSelectionTracker(selectionTracker);
|
|
|
|
|
|
|
|
|
|
selectionTracker.addObserver(new SelectionTracker.SelectionObserver() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onSelectionChanged() {
|
|
|
|
|
// Workaround AndroidX bug
|
|
|
|
|
FragmentActivity activity = getActivity();
|
|
|
|
|
if (activity != null)
|
|
|
|
|
try {
|
|
|
|
|
ViewModelMessages modelMessages = ViewModelProviders.of(activity).get(ViewModelMessages.class);
|
|
|
|
|
if (selectionTracker.hasSelection())
|
|
|
|
|
modelMessages.removeObservers(viewType, getViewLifecycleOwner());
|
|
|
|
|
else
|
|
|
|
|
modelMessages.observe(viewType, getViewLifecycleOwner(), observer);
|
|
|
|
|
} catch (IllegalStateException ex) {
|
|
|
|
|
// getViewLifecycleOwner
|
|
|
|
|
Log.w(ex);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (selectionTracker.hasSelection()) {
|
|
|
|
|
swipeRefresh.setEnabled(false);
|
|
|
|
|
fabMore.show();
|
|
|
|
|
} else {
|
|
|
|
|
predicate.clearAccount();
|
|
|
|
|
fabMore.hide();
|
|
|
|
|
swipeRefresh.setEnabled(pull);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
new ItemTouchHelper(new ItemTouchHelper.Callback() {
|
|
|
|
|
private ItemTouchHelper.Callback touchHelper = new ItemTouchHelper.Callback() {
|
|
|
|
|
@Override
|
|
|
|
|
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
|
|
|
|
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
|
|
|
|
if (!prefs.getBoolean("swipe", true))
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
@ -607,32 +701,7 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
}
|
|
|
|
|
}.execute(FragmentMessages.this, args, "messages:swipe");
|
|
|
|
|
}
|
|
|
|
|
}).attachToRecyclerView(rvMessage);
|
|
|
|
|
|
|
|
|
|
bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
|
|
|
|
|
switch (menuItem.getItemId()) {
|
|
|
|
|
case R.id.action_delete:
|
|
|
|
|
onActionMove(EntityFolder.TRASH);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
case R.id.action_archive:
|
|
|
|
|
onActionMove(EntityFolder.ARCHIVE);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
case R.id.action_prev:
|
|
|
|
|
navigate(false);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
case R.id.action_next:
|
|
|
|
|
navigate(true);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
private void onActionMove(String folderType) {
|
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
@ -689,50 +758,8 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
}
|
|
|
|
|
}.execute(FragmentMessages.this, args, "messages:move");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
fab.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View view) {
|
|
|
|
|
EntityFolder drafts = (EntityFolder) fab.getTag();
|
|
|
|
|
|
|
|
|
|
startActivity(new Intent(getContext(), ActivityCompose.class)
|
|
|
|
|
.putExtra("action", "new")
|
|
|
|
|
.putExtra("account", drafts.account)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
fab.setOnLongClickListener(new View.OnLongClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onLongClick(View v) {
|
|
|
|
|
EntityFolder drafts = (EntityFolder) fab.getTag();
|
|
|
|
|
|
|
|
|
|
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext());
|
|
|
|
|
lbm.sendBroadcast(
|
|
|
|
|
new Intent(ActivityView.ACTION_VIEW_MESSAGES)
|
|
|
|
|
.putExtra("account", drafts.account)
|
|
|
|
|
.putExtra("folder", drafts.id)
|
|
|
|
|
.putExtra("outgoing", drafts.isOutgoing()));
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
fabMore.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
private final int action_seen = 1;
|
|
|
|
|
private final int action_unseen = 2;
|
|
|
|
|
private final int action_snooze = 3;
|
|
|
|
|
private final int action_flag = 4;
|
|
|
|
|
private final int action_unflag = 5;
|
|
|
|
|
private final int action_archive = 6;
|
|
|
|
|
private final int action_trash = 7;
|
|
|
|
|
private final int action_delete = 8;
|
|
|
|
|
private final int action_junk = 9;
|
|
|
|
|
private final int action_move = 10;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
private void onMore() {
|
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
|
args.putLong("folder", folder);
|
|
|
|
|
args.putLongArray("ids", getSelection());
|
|
|
|
@ -811,34 +838,34 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
public boolean onMenuItemClick(MenuItem target) {
|
|
|
|
|
switch (target.getItemId()) {
|
|
|
|
|
case action_seen:
|
|
|
|
|
onActionSeen(true);
|
|
|
|
|
onActionSeenSelection(true);
|
|
|
|
|
return true;
|
|
|
|
|
case action_unseen:
|
|
|
|
|
onActionSeen(false);
|
|
|
|
|
onActionSeenSelection(false);
|
|
|
|
|
return true;
|
|
|
|
|
case action_snooze:
|
|
|
|
|
onActionSnooze();
|
|
|
|
|
onActionSnoozeSelection();
|
|
|
|
|
return true;
|
|
|
|
|
case action_flag:
|
|
|
|
|
onActionFlag(true);
|
|
|
|
|
onActionFlagSelection(true);
|
|
|
|
|
return true;
|
|
|
|
|
case action_unflag:
|
|
|
|
|
onActionFlag(false);
|
|
|
|
|
onActionFlagSelection(false);
|
|
|
|
|
return true;
|
|
|
|
|
case action_archive:
|
|
|
|
|
onActionMove(EntityFolder.ARCHIVE);
|
|
|
|
|
onActionMoveSelection(EntityFolder.ARCHIVE);
|
|
|
|
|
return true;
|
|
|
|
|
case action_trash:
|
|
|
|
|
onActionMove(EntityFolder.TRASH);
|
|
|
|
|
onActionMoveSelection(EntityFolder.TRASH);
|
|
|
|
|
return true;
|
|
|
|
|
case action_delete:
|
|
|
|
|
onActionDelete();
|
|
|
|
|
onActionDeleteSelection();
|
|
|
|
|
return true;
|
|
|
|
|
case action_junk:
|
|
|
|
|
onActionJunk();
|
|
|
|
|
onActionJunkSelection();
|
|
|
|
|
return true;
|
|
|
|
|
case action_move:
|
|
|
|
|
onActionMove();
|
|
|
|
|
onActionMoveSelection();
|
|
|
|
|
return true;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
@ -867,7 +894,7 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
return ids;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void onActionSeen(boolean seen) {
|
|
|
|
|
private void onActionSeenSelection(boolean seen) {
|
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
|
args.putLongArray("ids", getSelection());
|
|
|
|
|
args.putBoolean("seen", seen);
|
|
|
|
@ -909,7 +936,7 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
}.execute(FragmentMessages.this, args, "messages:seen");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void onActionSnooze() {
|
|
|
|
|
private void onActionSnoozeSelection() {
|
|
|
|
|
DialogDuration.show(getContext(), getViewLifecycleOwner(), R.string.title_snooze,
|
|
|
|
|
new DialogDuration.IDialogDuration() {
|
|
|
|
|
@Override
|
|
|
|
@ -962,7 +989,7 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void onActionFlag(boolean flagged) {
|
|
|
|
|
private void onActionFlagSelection(boolean flagged) {
|
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
|
args.putLongArray("ids", getSelection());
|
|
|
|
|
args.putBoolean("flagged", flagged);
|
|
|
|
@ -1004,20 +1031,7 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
}.execute(FragmentMessages.this, args, "messages:flag");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void onActionJunk() {
|
|
|
|
|
new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner())
|
|
|
|
|
.setMessage(R.string.title_ask_spam)
|
|
|
|
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
onActionMove(EntityFolder.JUNK);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
|
|
|
.show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void onActionDelete() {
|
|
|
|
|
private void onActionDeleteSelection() {
|
|
|
|
|
new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner())
|
|
|
|
|
.setMessage(R.string.title_ask_delete_selected)
|
|
|
|
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
|
|
|
@ -1067,7 +1081,20 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
.show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void onActionMove(String type) {
|
|
|
|
|
private void onActionJunkSelection() {
|
|
|
|
|
new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner())
|
|
|
|
|
.setMessage(R.string.title_ask_spam)
|
|
|
|
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
onActionMoveSelection(EntityFolder.JUNK);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
|
|
|
.show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void onActionMoveSelection(String type) {
|
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
|
args.putString("type", type);
|
|
|
|
|
args.putLongArray("ids", getSelection());
|
|
|
|
@ -1123,7 +1150,7 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
}.execute(FragmentMessages.this, args, "messages:move");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void onActionMove() {
|
|
|
|
|
private void onActionMoveSelection() {
|
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
|
args.putLong("folder", folder);
|
|
|
|
|
args.putLongArray("ids", getSelection());
|
|
|
|
@ -1232,22 +1259,6 @@ public class FragmentMessages extends FragmentBase {
|
|
|
|
|
}
|
|
|
|
|
}.execute(FragmentMessages.this, args, "messages:move");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
((ActivityBase) getActivity()).addBackPressedListener(onBackPressedListener);
|
|
|
|
|
|
|
|
|
|
// Initialize
|
|
|
|
|
swipeRefresh.setEnabled(pull);
|
|
|
|
|
tvNoEmail.setVisibility(View.GONE);
|
|
|
|
|
bottom_navigation.setVisibility(View.GONE);
|
|
|
|
|
grpReady.setVisibility(View.GONE);
|
|
|
|
|
pbWait.setVisibility(View.VISIBLE);
|
|
|
|
|
|
|
|
|
|
fab.hide();
|
|
|
|
|
fabMore.hide();
|
|
|
|
|
|
|
|
|
|
return view;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onDestroyView() {
|
|
|
|
|