Refactoring

pull/147/head
M66B 7 years ago
parent bb1e697c41
commit 3b06c3d027

@ -150,7 +150,21 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
return;
final EntityAttachment attachment = filtered.get(pos);
if (view.getId() == R.id.ivDelete) {
if (view.getId() == R.id.ivDelete)
onDelete(attachment);
else if (view.getId() == R.id.ivSave)
onSave(attachment);
else {
if (attachment.available)
onShare(attachment);
else {
if (attachment.progress == null)
onDownload(attachment);
}
}
}
private void onDelete(final EntityAttachment attachment) {
Bundle args = new Bundle();
args.putLong("id", attachment.id);
@ -167,17 +181,18 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
Helper.unexpectedError(context, owner, ex);
}
}.execute(context, owner, args, "attachment:delete");
}
} else if (view.getId() == R.id.ivSave) {
private void onSave(EntityAttachment attachment) {
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context);
lbm.sendBroadcast(
new Intent(ActivityView.ACTION_STORE_ATTACHMENT)
.putExtra("id", attachment.id)
.putExtra("name", attachment.name)
.putExtra("type", attachment.type));
}
} else {
if (attachment.available) {
private void onShare(EntityAttachment attachment) {
// Build file name
File file = EntityAttachment.getFile(context, attachment.id);
@ -243,8 +258,9 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
dialog.show();
} else
context.startActivity(intent);
} else {
if (attachment.progress == null) {
}
private void onDownload(EntityAttachment attachment) {
Bundle args = new Bundle();
args.putLong("id", attachment.id);
args.putLong("message", attachment.message);
@ -280,9 +296,6 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
}
}.execute(context, owner, args, "attachment:fetch");
}
}
}
}
private class NameResolveInfo {
Drawable icon;

@ -267,43 +267,7 @@ public class FragmentAccount extends FragmentBase {
btnAutoConfig.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle args = new Bundle();
args.putString("domain", etDomain.getText().toString());
new SimpleTask<EmailProvider>() {
@Override
protected void onPreExecute(Bundle args) {
etDomain.setEnabled(false);
btnAutoConfig.setEnabled(false);
}
@Override
protected void onPostExecute(Bundle args) {
etDomain.setEnabled(true);
btnAutoConfig.setEnabled(true);
}
@Override
protected EmailProvider onExecute(Context context, Bundle args) throws Throwable {
String domain = args.getString("domain");
return EmailProvider.fromDomain(context, domain);
}
@Override
protected void onExecuted(Bundle args, EmailProvider provider) {
etHost.setText(provider.imap_host);
etPort.setText(Integer.toString(provider.imap_port));
cbStartTls.setChecked(provider.imap_starttls);
}
@Override
protected void onException(Bundle args, Throwable ex) {
if (ex instanceof IllegalArgumentException || ex instanceof UnknownHostException)
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
else
Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex);
}
}.execute(FragmentAccount.this, args, "account:config");
onAutoConfig();
}
});
@ -418,6 +382,96 @@ public class FragmentAccount extends FragmentBase {
btnCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onCheck();
}
});
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onSave();
}
});
adapter = new ArrayAdapter<>(getContext(), R.layout.spinner_item1, android.R.id.text1, new ArrayList<EntityFolder>());
adapter.setDropDownViewResource(R.layout.spinner_item1_dropdown);
spDrafts.setAdapter(adapter);
spSent.setAdapter(adapter);
spAll.setAdapter(adapter);
spTrash.setAdapter(adapter);
spJunk.setAdapter(adapter);
// Initialize
Helper.setViewsEnabled(view, false);
btnAutoConfig.setEnabled(false);
btnAuthorize.setVisibility(View.GONE);
cbStartTls.setVisibility(View.GONE);
cbInsecure.setVisibility(View.GONE);
tilPassword.setPasswordVisibilityToggleEnabled(id < 0);
btnAdvanced.setVisibility(View.GONE);
tvIdle.setVisibility(View.GONE);
btnCheck.setVisibility(View.GONE);
pbCheck.setVisibility(View.GONE);
btnSave.setVisibility(View.GONE);
pbSave.setVisibility(View.GONE);
tvError.setVisibility(View.GONE);
grpServer.setVisibility(View.GONE);
grpAuthorize.setVisibility(View.GONE);
grpAdvanced.setVisibility(View.GONE);
grpFolders.setVisibility(View.GONE);
return view;
}
private void onAutoConfig() {
Bundle args = new Bundle();
args.putString("domain", etDomain.getText().toString());
new SimpleTask<EmailProvider>() {
@Override
protected void onPreExecute(Bundle args) {
etDomain.setEnabled(false);
btnAutoConfig.setEnabled(false);
}
@Override
protected void onPostExecute(Bundle args) {
etDomain.setEnabled(true);
btnAutoConfig.setEnabled(true);
}
@Override
protected EmailProvider onExecute(Context context, Bundle args) throws Throwable {
String domain = args.getString("domain");
return EmailProvider.fromDomain(context, domain);
}
@Override
protected void onExecuted(Bundle args, EmailProvider provider) {
etHost.setText(provider.imap_host);
etPort.setText(Integer.toString(provider.imap_port));
cbStartTls.setChecked(provider.imap_starttls);
}
@Override
protected void onException(Bundle args, Throwable ex) {
if (ex instanceof IllegalArgumentException || ex instanceof UnknownHostException)
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
else
Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex);
}
}.execute(FragmentAccount.this, args, "account:config");
}
private void onCheck() {
EmailProvider provider = (EmailProvider) spProvider.getSelectedItem();
Bundle args = new Bundle();
@ -625,11 +679,8 @@ public class FragmentAccount extends FragmentBase {
}
}.execute(FragmentAccount.this, args, "account:check");
}
});
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
private void onSave() {
EmailProvider provider = (EmailProvider) spProvider.getSelectedItem();
EntityFolder drafts = (EntityFolder) spDrafts.getSelectedItem();
@ -840,7 +891,7 @@ public class FragmentAccount extends FragmentBase {
account.id = db.account().insertAccount(account);
// Make sure the channel exists on commit
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
if (account.notify) {
// Add or update notification channel
account.deleteNotificationChannel(context);
@ -939,45 +990,6 @@ public class FragmentAccount extends FragmentBase {
}
}.execute(FragmentAccount.this, args, "account:save");
}
});
adapter = new ArrayAdapter<>(getContext(), R.layout.spinner_item1, android.R.id.text1, new ArrayList<EntityFolder>());
adapter.setDropDownViewResource(R.layout.spinner_item1_dropdown);
spDrafts.setAdapter(adapter);
spSent.setAdapter(adapter);
spAll.setAdapter(adapter);
spTrash.setAdapter(adapter);
spJunk.setAdapter(adapter);
// Initialize
Helper.setViewsEnabled(view, false);
btnAutoConfig.setEnabled(false);
btnAuthorize.setVisibility(View.GONE);
cbStartTls.setVisibility(View.GONE);
cbInsecure.setVisibility(View.GONE);
tilPassword.setPasswordVisibilityToggleEnabled(id < 0);
btnAdvanced.setVisibility(View.GONE);
tvIdle.setVisibility(View.GONE);
btnCheck.setVisibility(View.GONE);
pbCheck.setVisibility(View.GONE);
btnSave.setVisibility(View.GONE);
pbSave.setVisibility(View.GONE);
tvError.setVisibility(View.GONE);
grpServer.setVisibility(View.GONE);
grpAuthorize.setVisibility(View.GONE);
grpAdvanced.setVisibility(View.GONE);
grpFolders.setVisibility(View.GONE);
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {

@ -126,6 +126,20 @@ public class FragmentFolder extends FragmentBase {
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onSave();
}
});
// Initialize
Helper.setViewsEnabled(view, false);
btnSave.setEnabled(false);
pbSave.setVisibility(View.GONE);
pbWait.setVisibility(View.VISIBLE);
return view;
}
private void onSave() {
Bundle args = new Bundle();
args.putLong("id", id);
args.putLong("account", account);
@ -261,16 +275,6 @@ public class FragmentFolder extends FragmentBase {
}
}.execute(FragmentFolder.this, args, "folder:save");
}
});
// Initialize
Helper.setViewsEnabled(view, false);
btnSave.setEnabled(false);
pbSave.setVisibility(View.GONE);
pbWait.setVisibility(View.VISIBLE);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

@ -382,6 +382,52 @@ public class FragmentIdentity extends FragmentBase {
btnAutoConfig.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onAutoConfig();
}
});
cbStartTls.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
etPort.setHint(checked ? "587" : "465");
}
});
cbSynchronize.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
cbPrimary.setEnabled(checked);
}
});
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onSave();
}
});
adapter = new ArrayAdapter<>(getContext(), R.layout.spinner_item1, android.R.id.text1, new ArrayList<EntityFolder>());
adapter.setDropDownViewResource(R.layout.spinner_item1_dropdown);
spSent.setAdapter(adapter);
// Initialize
Helper.setViewsEnabled(view, false);
btnAutoConfig.setEnabled(false);
cbInsecure.setVisibility(View.GONE);
tilPassword.setPasswordVisibilityToggleEnabled(id < 0);
btnSave.setVisibility(View.GONE);
btnAdvanced.setVisibility(View.GONE);
pbSave.setVisibility(View.GONE);
tvError.setVisibility(View.GONE);
grpAuthorize.setVisibility(View.GONE);
grpAdvanced.setVisibility(View.GONE);
return view;
}
private void onAutoConfig() {
etDomain.setEnabled(false);
btnAutoConfig.setEnabled(false);
@ -423,25 +469,8 @@ public class FragmentIdentity extends FragmentBase {
}
}.execute(FragmentIdentity.this, args, "identity:config");
}
});
cbStartTls.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
etPort.setHint(checked ? "587" : "465");
}
});
cbSynchronize.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
cbPrimary.setEnabled(checked);
}
});
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
private void onSave() {
EntityAccount account = (EntityAccount) spAccount.getSelectedItem();
String name = etName.getText().toString();
@ -661,27 +690,6 @@ public class FragmentIdentity extends FragmentBase {
}
}.execute(FragmentIdentity.this, args, "identity:save");
}
});
adapter = new ArrayAdapter<>(getContext(), R.layout.spinner_item1, android.R.id.text1, new ArrayList<EntityFolder>());
adapter.setDropDownViewResource(R.layout.spinner_item1_dropdown);
spSent.setAdapter(adapter);
// Initialize
Helper.setViewsEnabled(view, false);
btnAutoConfig.setEnabled(false);
cbInsecure.setVisibility(View.GONE);
tilPassword.setPasswordVisibilityToggleEnabled(id < 0);
btnSave.setVisibility(View.GONE);
btnAdvanced.setVisibility(View.GONE);
pbSave.setVisibility(View.GONE);
tvError.setVisibility(View.GONE);
grpAuthorize.setVisibility(View.GONE);
grpAdvanced.setVisibility(View.GONE);
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {

@ -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() {

@ -135,6 +135,19 @@ public class FragmentQuickSetup extends FragmentBase {
btnCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onCheck();
}
});
// Initialize
tvError.setVisibility(View.GONE);
tvInstructions.setVisibility(View.GONE);
tvInstructions.setMovementMethod(LinkMovementMethod.getInstance());
return view;
}
private void onCheck() {
Bundle args = new Bundle();
args.putString("name", etName.getText().toString());
args.putString("email", etEmail.getText().toString().trim());
@ -380,15 +393,6 @@ public class FragmentQuickSetup extends FragmentBase {
}
}.execute(FragmentQuickSetup.this, args, "setup:quick");
}
});
// Initialize
tvError.setVisibility(View.GONE);
tvInstructions.setVisibility(View.GONE);
tvInstructions.setMovementMethod(LinkMovementMethod.getInstance());
return view;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

@ -122,6 +122,14 @@ public class FragmentWebView extends FragmentBase {
registerForContextMenu(webview);
onLoad();
((ActivityBase) getActivity()).addBackPressedListener(onBackPressedListener);
return view;
}
private void onLoad() {
Bundle args = getArguments();
if (args.containsKey("url")) {
String url = args.getString("url");
@ -188,10 +196,6 @@ public class FragmentWebView extends FragmentBase {
}
}.execute(this, args, "webview:format");
}
((ActivityBase) getActivity()).addBackPressedListener(onBackPressedListener);
return view;
}
@Override

Loading…
Cancel
Save