Added saved search color

pull/206/head
M66B 3 years ago
parent 5c5c449335
commit cb39bdc1b3

File diff suppressed because it is too large Load Diff

@ -82,10 +82,14 @@ public class AdapterNavSearch extends RecyclerView.Adapter<AdapterNavSearch.View
private void bindTo(EntitySearch search) {
ivItem.setImageResource(R.drawable.twotone_search_24);
if (search.color == null)
ivItem.clearColorFilter();
else
ivItem.setColorFilter(search.color);
ivBadge.setVisibility(View.GONE);
tvItem.setText(search.name);
tvItemExtra.setVisibility(View.GONE);
ivExtra.setVisibility(View.GONE);
ivWarning.setVisibility(View.GONE);

@ -68,7 +68,7 @@ import io.requery.android.database.sqlite.SQLiteDatabase;
// https://developer.android.com/topic/libraries/architecture/room.html
@Database(
version = 211,
version = 212,
entities = {
EntityIdentity.class,
EntityAccount.class,
@ -2163,6 +2163,12 @@ public abstract class DB extends RoomDatabase {
", name TEXT NOT NULL" +
", `data` TEXT NOT NULL)");
}
}).addMigrations(new Migration(211, 212) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {
Log.i("DB migration from version " + startVersion + " to " + endVersion);
db.execSQL("ALTER TABLE `search` ADD COLUMN `color` INTEGER");
}
}).addMigrations(new Migration(998, 999) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {

@ -23,6 +23,8 @@ import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import java.util.Objects;
@Entity(
tableName = EntitySearch.TABLE_NAME,
foreignKeys = {
@ -37,6 +39,7 @@ public class EntitySearch {
public Long id;
@NonNull
public String name;
public Integer color;
@NonNull
public String data;
@ -46,6 +49,7 @@ public class EntitySearch {
EntitySearch other = (EntitySearch) obj;
return (this.id.equals(other.id) &&
this.name.equals(other.name) &&
Objects.equals(this.color, other.color) &&
this.data.equals(other.data));
} else
return false;

@ -4958,8 +4958,12 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
EntitySearch search = new EntitySearch();
search.name = args.getString("name");
search.color = args.getInt("color", Color.TRANSPARENT);
search.data = criteria.toJson().toString();
if (search.color == Color.TRANSPARENT)
search.color = null;
DB db = DB.getInstance(context);
search.id = db.search().insertSearch(search);
@ -9004,16 +9008,37 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
}
public static class FragmentDialogSaveSearch extends FragmentDialogBase {
private ViewButtonColor btnColor;
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
final Context context = getContext();
View dview = LayoutInflater.from(context).inflate(R.layout.dialog_save_search, null);
EditText etName = dview.findViewById(R.id.etName);
btnColor = dview.findViewById(R.id.btnColor);
btnColor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Helper.hideKeyboard(etName);
Bundle args = new Bundle();
args.putInt("color", btnColor.getColor());
args.putString("title", getString(R.string.title_color));
args.putBoolean("reset", true);
FragmentDialogColor fragment = new FragmentDialogColor();
fragment.setArguments(args);
fragment.setTargetFragment(FragmentDialogSaveSearch.this, 1);
fragment.show(getParentFragmentManager(), "search:color");
}
});
BoundaryCallbackMessages.SearchCriteria criteria =
(BoundaryCallbackMessages.SearchCriteria) getArguments().getSerializable("criteria");
etName.setText(criteria.getTitle(context));
btnColor.setColor(Color.TRANSPARENT);
return new AlertDialog.Builder(context)
.setView(dview)
@ -9021,6 +9046,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
@Override
public void onClick(DialogInterface dialog, int which) {
getArguments().putString("name", etName.getText().toString());
getArguments().putInt("color", btnColor.getColor());
sendResult(Activity.RESULT_OK);
}
})
@ -9032,5 +9058,20 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
})
.create();
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (resultCode == RESULT_OK && data != null) {
Bundle args = data.getBundleExtra("args");
int color = args.getInt("color");
btnColor.setColor(color);
}
} catch (Throwable ex) {
Log.e(ex);
}
}
}
}

@ -32,4 +32,15 @@
<requestFocus />
</eu.faircode.email.EditTextPlain>
<eu.faircode.email.ViewButtonColor
android:id="@+id/btnColor"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:paddingHorizontal="6dp"
android:text="@string/title_color"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/etName" />
</androidx.constraintlayout.widget.ConstraintLayout>

Loading…
Cancel
Save