Long press to mark read/unread

This commit is contained in:
M66B
2018-09-01 06:27:13 +00:00
parent 4e222ec6d1
commit 80755d85d6
42 changed files with 163 additions and 192 deletions

View File

@@ -22,6 +22,7 @@ package eu.faircode.email;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
@@ -30,6 +31,7 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -202,10 +204,38 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
TupleMessageEx message = getItem(pos);
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context);
lbm.sendBroadcast(
new Intent(ActivityView.ACTION_VIEW_MESSAGE)
.putExtra("message", message));
Bundle args = new Bundle();
args.putLong("id", message.id);
new SimpleTask<Void>() {
@Override
protected Void onLoad(Context context, Bundle args) {
long id = args.getLong("id");
DB db = DB.getInstance(context);
try {
db.beginTransaction();
EntityMessage message = db.message().getMessage(id);
for (EntityMessage tmessage : db.message().getMessageByThread(message.account, message.thread)) {
db.message().setMessageUiSeen(tmessage.id, !message.ui_seen);
EntityOperation.queue(db, tmessage, EntityOperation.SEEN, !tmessage.ui_seen);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
EntityOperation.process(context);
return null;
}
@Override
public void onException(Bundle args, Throwable ex) {
Toast.makeText(context, ex.toString(), Toast.LENGTH_LONG).show();
}
}.load(context, owner, args);
return true;
}

View File

@@ -651,16 +651,9 @@ public class FragmentMessage extends FragmentEx {
menu.findItem(R.id.menu_addresses).setVisible(!free);
menu.findItem(R.id.menu_thread).setVisible(!free && !message.virtual && message.count > 1);
menu.findItem(R.id.menu_seen).setVisible(!free && !message.virtual && !inOutbox);
menu.findItem(R.id.menu_forward).setVisible(!free && !message.virtual && !inOutbox);
menu.findItem(R.id.menu_reply_all).setVisible(!free && !message.virtual && message.cc != null && !inOutbox);
menu.findItem(R.id.menu_decrypt).setVisible(decrypted == null);
MenuItem menuSeen = menu.findItem(R.id.menu_seen);
menuSeen.setIcon(message.ui_seen
? R.drawable.baseline_visibility_off_24
: R.drawable.baseline_visibility_24);
menuSeen.setTitle(message.ui_seen ? R.string.title_unseen : R.string.title_seen);
}
@Override
@@ -672,9 +665,6 @@ public class FragmentMessage extends FragmentEx {
case R.id.menu_thread:
onMenuThread();
return true;
case R.id.menu_seen:
onMenuSeen();
return true;
case R.id.menu_forward:
onMenuForward();
return true;
@@ -710,49 +700,6 @@ public class FragmentMessage extends FragmentEx {
fragmentTransaction.commit();
}
private void onMenuSeen() {
Helper.setViewsEnabled(view, false);
Bundle args = new Bundle();
args.putLong("id", message.id);
new SimpleTask<Void>() {
@Override
protected Void onLoad(Context context, Bundle args) {
long id = args.getLong("id");
DB db = DB.getInstance(context);
try {
db.beginTransaction();
EntityMessage message = db.message().getMessage(id);
for (EntityMessage tmessage : db.message().getMessageByThread(message.account, message.thread)) {
db.message().setMessageUiSeen(tmessage.id, !message.ui_seen);
EntityOperation.queue(db, tmessage, EntityOperation.SEEN, !tmessage.ui_seen);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
EntityOperation.process(context);
return null;
}
@Override
protected void onLoaded(Bundle args, Void data) {
Helper.setViewsEnabled(view, true);
}
@Override
public void onException(Bundle args, Throwable ex) {
Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
}
}.load(this, args);
}
private void onMenuForward() {
startActivity(new Intent(getContext(), ActivityCompose.class)
.putExtra("action", "forward")

View File

@@ -58,7 +58,7 @@ import androidx.recyclerview.widget.RecyclerView;
public class FragmentMessages extends FragmentEx {
private ViewGroup view;
private Button btnHintSwipe;
private Button btnHintActions;
private RecyclerView rvMessage;
private TextView tvNoEmail;
private ProgressBar pbWait;
@@ -99,7 +99,7 @@ public class FragmentMessages extends FragmentEx {
setHasOptionsMenu(true);
// Get controls
btnHintSwipe = view.findViewById(R.id.btnHintSwipe);
btnHintActions = view.findViewById(R.id.btnHintActions);
rvMessage = view.findViewById(R.id.rvFolder);
tvNoEmail = view.findViewById(R.id.tvNoEmail);
pbWait = view.findViewById(R.id.pbWait);
@@ -110,10 +110,10 @@ public class FragmentMessages extends FragmentEx {
// Wire controls
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
btnHintSwipe.setOnClickListener(new View.OnClickListener() {
btnHintActions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
prefs.edit().putBoolean("understood_swipe", true).apply();
prefs.edit().putBoolean("understood_actions", true).apply();
grpHintSwipe.setVisibility(View.GONE);
}
});
@@ -243,7 +243,7 @@ public class FragmentMessages extends FragmentEx {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
grpHintSwipe.setVisibility(prefs.getBoolean("understood_swipe", false) ? View.GONE : View.VISIBLE);
grpHintSwipe.setVisibility(prefs.getBoolean("understood_actions", false) ? View.GONE : View.VISIBLE);
final DB db = DB.getInstance(getContext());