mirror of
https://github.com/M66B/FairEmail.git
synced 2026-01-02 19:10:11 +01:00
Show folder keywords
This commit is contained in:
@@ -24,6 +24,7 @@ import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
@@ -57,15 +58,16 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
||||
private List<TupleFolderEx> filtered = new ArrayList<>();
|
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
|
||||
View itemView;
|
||||
ImageView ivState;
|
||||
TextView tvName;
|
||||
TextView tvMessages;
|
||||
ImageView ivUnified;
|
||||
TextView tvType;
|
||||
TextView tvAfter;
|
||||
ImageView ivSync;
|
||||
TextView tvError;
|
||||
private View itemView;
|
||||
private ImageView ivState;
|
||||
private TextView tvName;
|
||||
private TextView tvMessages;
|
||||
private ImageView ivUnified;
|
||||
private TextView tvType;
|
||||
private TextView tvAfter;
|
||||
private ImageView ivSync;
|
||||
private TextView tvKeywords;
|
||||
private TextView tvError;
|
||||
|
||||
private final static int action_synchronize_now = 1;
|
||||
private final static int action_delete_local = 2;
|
||||
@@ -84,6 +86,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
||||
tvType = itemView.findViewById(R.id.tvType);
|
||||
tvAfter = itemView.findViewById(R.id.tvAfter);
|
||||
ivSync = itemView.findViewById(R.id.ivSync);
|
||||
tvKeywords = itemView.findViewById(R.id.tvKeywords);
|
||||
tvError = itemView.findViewById(R.id.tvError);
|
||||
}
|
||||
|
||||
@@ -142,6 +145,9 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
||||
ivSync.setImageResource(folder.synchronize ? R.drawable.baseline_sync_24 : R.drawable.baseline_sync_disabled_24);
|
||||
}
|
||||
|
||||
tvKeywords.setText(TextUtils.join(" ", folder.keywords));
|
||||
tvKeywords.setVisibility(folder.keywords.length > 0 ? View.VISIBLE : View.GONE);
|
||||
|
||||
tvError.setText(folder.error);
|
||||
tvError.setVisibility(folder.error != null && BuildConfig.DEBUG ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
@@ -321,7 +327,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
||||
|
||||
private boolean showAll = false;
|
||||
|
||||
public void showHidden(boolean show) {
|
||||
void showHidden(boolean show) {
|
||||
showAll = show;
|
||||
set(all);
|
||||
}
|
||||
@@ -385,7 +391,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
||||
diff.dispatchUpdatesTo(this);
|
||||
}
|
||||
|
||||
public void setAccountState(String state) {
|
||||
void setAccountState(String state) {
|
||||
this.accountState = state;
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory;
|
||||
// https://developer.android.com/topic/libraries/architecture/room.html
|
||||
|
||||
@Database(
|
||||
version = 8,
|
||||
version = 9,
|
||||
entities = {
|
||||
EntityIdentity.class,
|
||||
EntityAccount.class,
|
||||
@@ -177,6 +177,13 @@ public abstract class DB extends RoomDatabase {
|
||||
db.execSQL("ALTER TABLE `message` ADD COLUMN `keywords` TEXT");
|
||||
}
|
||||
})
|
||||
.addMigrations(new Migration(8, 9) {
|
||||
@Override
|
||||
public void migrate(SupportSQLiteDatabase db) {
|
||||
Log.i(Helper.TAG, "DB migration from version " + startVersion + " to " + endVersion);
|
||||
db.execSQL("ALTER TABLE `folder` ADD COLUMN `keywords` TEXT");
|
||||
}
|
||||
})
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -134,6 +134,9 @@ public interface DaoFolder {
|
||||
" WHERE id = :id")
|
||||
int setFolderProperties(long id, String name, String display, boolean hide, boolean synchronize, boolean unified, int sync_days, int keep_days);
|
||||
|
||||
@Query("UPDATE folder SET keywords = :keywords WHERE id = :id")
|
||||
int setFolderKeywords(long id, String keywords);
|
||||
|
||||
@Query("UPDATE folder SET name = :name WHERE account = :account AND name = :old")
|
||||
int renameFolder(long account, String old, String name);
|
||||
|
||||
|
||||
@@ -73,6 +73,7 @@ public class EntityFolder implements Serializable {
|
||||
public Boolean hide = false;
|
||||
@NonNull
|
||||
public Boolean unified = false;
|
||||
public String[] keywords;
|
||||
public String state;
|
||||
public String error;
|
||||
|
||||
|
||||
@@ -846,6 +846,12 @@ public class ServiceSynchronize extends LifecycleService {
|
||||
db.folder().setFolderState(folder.id, "connected");
|
||||
db.folder().setFolderError(folder.id, null);
|
||||
|
||||
List<String> keywords = new ArrayList<>();
|
||||
for (String keyword : ifolder.getPermanentFlags().getUserFlags())
|
||||
if (!keyword.startsWith("$"))
|
||||
keywords.add(keyword);
|
||||
db.folder().setFolderKeywords(folder.id, DB.Converters.fromStringArray(keywords.toArray(new String[0])));
|
||||
|
||||
Log.i(Helper.TAG, account.name + " folder " + folder.name + " flags=" + ifolder.getPermanentFlags());
|
||||
|
||||
// Synchronize folder
|
||||
|
||||
Reference in New Issue
Block a user