Keyword fixes/improvements

This commit is contained in:
M66B 2020-01-28 13:21:22 +01:00
parent f03c4d2ba1
commit 12503ba9ce
4 changed files with 16 additions and 18 deletions

View File

@ -23,7 +23,6 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -42,7 +41,6 @@ import com.flask.colorpicker.builder.ColorPickerClickListener;
import com.flask.colorpicker.builder.ColorPickerDialogBuilder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class AdapterKeyword extends RecyclerView.Adapter<AdapterKeyword.ViewHolder> {
@ -96,14 +94,14 @@ public class AdapterKeyword extends RecyclerView.Adapter<AdapterKeyword.ViewHold
Bundle args = new Bundle();
args.putLong("id", id);
args.putString("keyword", keyword.name);
args.putString("name", keyword.name);
args.putBoolean("selected", keyword.selected);
new SimpleTask<Void>() {
@Override
protected Void onExecute(Context context, Bundle args) {
long id = args.getLong("id");
String keyword = args.getString("keyword");
String name = args.getString("name");
boolean selected = args.getBoolean("selected");
DB db = DB.getInstance(context);
@ -112,13 +110,7 @@ public class AdapterKeyword extends RecyclerView.Adapter<AdapterKeyword.ViewHold
if (message == null)
return null;
List<String> keywords = new ArrayList<>(Arrays.asList(message.keywords));
if (selected)
keywords.add(keyword);
else
keywords.remove(keyword);
db.message().setMessageKeywords(message.id, TextUtils.join(" ", keywords));
EntityOperation.queue(context, message, EntityOperation.KEYWORD, name, selected);
return null;
}
@ -192,8 +184,8 @@ public class AdapterKeyword extends RecyclerView.Adapter<AdapterKeyword.ViewHold
try {
db.beginTransaction();
db.message().setMessageKeywords(message.id, "");
db.message().setMessageKeywords(message.id, TextUtils.join(" ", message.keywords));
db.message().setMessageKeywords(message.id, DB.Converters.fromStringArray(null));
db.message().setMessageKeywords(message.id, DB.Converters.fromStringArray(message.keywords));
db.setTransactionSuccessful();
} finally {

View File

@ -886,7 +886,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
String k = message.keywords[i].toLowerCase();
if (!IMAP_KEYWORDS_BLACKLIST.contains(k)) {
if (keywords.length() > 0)
keywords.append(", ");
keywords.append(" ");
keywords.append(message.keywords[i]);
@ -4970,7 +4970,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
return new AlertDialog.Builder(getContext())
.setTitle(R.string.title_manage_keywords)
.setView(dview)
.setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(android.R.string.ok, null)
.create();
}
}

View File

@ -665,8 +665,11 @@ class Core {
if (set) {
if (!keywords.contains(keyword))
keywords.add(keyword);
} else
keywords.remove(keyword);
} else {
while (keywords.remove(keyword))
;
}
db.message().setMessageKeywords(message.id, DB.Converters.fromStringArray(keywords.toArray(new String[0])));
db.setTransactionSuccessful();

View File

@ -48,6 +48,7 @@ import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
@ -629,7 +630,9 @@ public class MessageHelper {
}
String[] getKeywords() throws MessagingException {
return imessage.getFlags().getUserFlags();
List<String> keywords = Arrays.asList(imessage.getFlags().getUserFlags());
Collections.sort(keywords);
return keywords.toArray(new String[0]);
}
String getMessageID() throws MessagingException {