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.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

@ -108,6 +108,19 @@
app:barrierDirection="bottom"
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
android:id="@+id/tvError"
android:layout_width="0dp"
@ -119,7 +132,7 @@
android:textColor="?attr/colorWarning"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/barrier2" />
app:layout_constraintTop_toBottomOf="@id/tvKeywords" />
<View
android:id="@+id/vSeparator"

Loading…
Cancel
Save