Show folder keywords

pull/146/head
M66B 6 years ago
parent b69e09927b
commit 5e614f7476

File diff suppressed because it is too large Load Diff

@ -24,6 +24,7 @@ import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
@ -57,15 +58,16 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
private List<TupleFolderEx> filtered = new ArrayList<>(); private List<TupleFolderEx> filtered = new ArrayList<>();
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
View itemView; private View itemView;
ImageView ivState; private ImageView ivState;
TextView tvName; private TextView tvName;
TextView tvMessages; private TextView tvMessages;
ImageView ivUnified; private ImageView ivUnified;
TextView tvType; private TextView tvType;
TextView tvAfter; private TextView tvAfter;
ImageView ivSync; private ImageView ivSync;
TextView tvError; private TextView tvKeywords;
private TextView tvError;
private final static int action_synchronize_now = 1; private final static int action_synchronize_now = 1;
private final static int action_delete_local = 2; 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); tvType = itemView.findViewById(R.id.tvType);
tvAfter = itemView.findViewById(R.id.tvAfter); tvAfter = itemView.findViewById(R.id.tvAfter);
ivSync = itemView.findViewById(R.id.ivSync); ivSync = itemView.findViewById(R.id.ivSync);
tvKeywords = itemView.findViewById(R.id.tvKeywords);
tvError = itemView.findViewById(R.id.tvError); 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); 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.setText(folder.error);
tvError.setVisibility(folder.error != null && BuildConfig.DEBUG ? View.VISIBLE : View.GONE); 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; private boolean showAll = false;
public void showHidden(boolean show) { void showHidden(boolean show) {
showAll = show; showAll = show;
set(all); set(all);
} }
@ -385,7 +391,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
diff.dispatchUpdatesTo(this); diff.dispatchUpdatesTo(this);
} }
public void setAccountState(String state) { void setAccountState(String state) {
this.accountState = state; this.accountState = state;
} }

@ -46,7 +46,7 @@ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory;
// https://developer.android.com/topic/libraries/architecture/room.html // https://developer.android.com/topic/libraries/architecture/room.html
@Database( @Database(
version = 8, version = 9,
entities = { entities = {
EntityIdentity.class, EntityIdentity.class,
EntityAccount.class, EntityAccount.class,
@ -177,6 +177,13 @@ public abstract class DB extends RoomDatabase {
db.execSQL("ALTER TABLE `message` ADD COLUMN `keywords` TEXT"); 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(); .build();
} }

@ -134,6 +134,9 @@ public interface DaoFolder {
" WHERE id = :id") " WHERE id = :id")
int setFolderProperties(long id, String name, String display, boolean hide, boolean synchronize, boolean unified, int sync_days, int keep_days); 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") @Query("UPDATE folder SET name = :name WHERE account = :account AND name = :old")
int renameFolder(long account, String old, String name); int renameFolder(long account, String old, String name);

@ -73,6 +73,7 @@ public class EntityFolder implements Serializable {
public Boolean hide = false; public Boolean hide = false;
@NonNull @NonNull
public Boolean unified = false; public Boolean unified = false;
public String[] keywords;
public String state; public String state;
public String error; public String error;

@ -846,6 +846,12 @@ public class ServiceSynchronize extends LifecycleService {
db.folder().setFolderState(folder.id, "connected"); db.folder().setFolderState(folder.id, "connected");
db.folder().setFolderError(folder.id, null); 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()); Log.i(Helper.TAG, account.name + " folder " + folder.name + " flags=" + ifolder.getPermanentFlags());
// Synchronize folder // Synchronize folder

@ -108,6 +108,19 @@
app:barrierDirection="bottom" app:barrierDirection="bottom"
app:constraint_referenced_ids="ivUnified,tvType,tvAfter,ivSync" /> app:constraint_referenced_ids="ivUnified,tvType,tvAfter,ivSync" />
<TextView
android:id="@+id/tvKeywords"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:gravity="center_vertical"
android:text="Keywords"
android:textAppearance="@android:style/TextAppearance.Small"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/ivUnified"
app:layout_constraintTop_toBottomOf="@id/barrier2" />
<TextView <TextView
android:id="@+id/tvError" android:id="@+id/tvError"
android:layout_width="0dp" android:layout_width="0dp"
@ -119,7 +132,7 @@
android:textColor="?attr/colorWarning" android:textColor="?attr/colorWarning"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/barrier2" /> app:layout_constraintTop_toBottomOf="@id/tvKeywords" />
<View <View
android:id="@+id/vSeparator" android:id="@+id/vSeparator"

Loading…
Cancel
Save