Added star/unstar

Fixes #9
This commit is contained in:
M66B
2018-09-07 15:12:43 +00:00
parent 22fb136cc9
commit 7dd50cebab
16 changed files with 1070 additions and 4 deletions

View File

@@ -50,6 +50,7 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
@@ -91,6 +92,7 @@ import androidx.recyclerview.widget.RecyclerView;
public class FragmentMessage extends FragmentEx {
private ViewGroup view;
private View vwAnswerAnchor;
private ImageView ivFlagged;
private TextView tvFrom;
private TextView tvTime;
private TextView tvTo;
@@ -149,6 +151,7 @@ public class FragmentMessage extends FragmentEx {
// Get controls
vwAnswerAnchor = view.findViewById(R.id.vwAnswerAnchor);
ivFlagged = view.findViewById(R.id.ivFlagged);
tvFrom = view.findViewById(R.id.tvFrom);
tvTime = view.findViewById(R.id.tvTime);
tvTo = view.findViewById(R.id.tvTo);
@@ -178,6 +181,33 @@ public class FragmentMessage extends FragmentEx {
setHasOptionsMenu(true);
ivFlagged.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle args = new Bundle();
args.putLong("account", message.account);
args.putString("thread", message.thread);
args.putBoolean("flagged", !message.ui_flagged);
Log.i(Helper.TAG, "Set message id=" + message.id + " flagged=" + !message.ui_flagged);
new SimpleTask<Void>() {
@Override
protected Void onLoad(Context context, Bundle args) throws Throwable {
long account = args.getLong("account");
String thread = args.getString("thread");
boolean flagged = args.getBoolean("flagged");
DB db = DB.getInstance(context);
for (EntityMessage message : db.message().getMessageByThread(account, thread)) {
db.message().setMessageUiFlagged(message.id, flagged);
EntityOperation.queue(db, message, EntityOperation.FLAG, flagged);
}
EntityOperation.process(context);
return null;
}
}.load(FragmentMessage.this, args);
}
});
tvBody.setMovementMethod(new LinkMovementMethod() {
public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {
if (event.getAction() != MotionEvent.ACTION_UP)
@@ -354,6 +384,7 @@ public class FragmentMessage extends FragmentEx {
if (savedInstanceState == null) {
setSubtitle(Helper.localizeFolderName(getContext(), message.folderName));
ivFlagged.setImageResource(message.ui_flagged ? R.drawable.baseline_star_24 : R.drawable.baseline_star_border_24);
tvFrom.setText(MessageHelper.getFormattedAddresses(message.from, true));
tvTime.setText(message.sent == null ? null : df.format(new Date(message.sent)));
tvTo.setText(MessageHelper.getFormattedAddresses(message.to, true));
@@ -423,6 +454,7 @@ public class FragmentMessage extends FragmentEx {
// Messages are immutable except for flags
FragmentMessage.this.message = message;
setSeen();
ivFlagged.setImageResource(message.ui_flagged ? R.drawable.baseline_star_24 : R.drawable.baseline_star_border_24);
// Headers can be downloaded
tvRawHeaders.setText(message.headers);