diff --git a/AGENTS.md b/AGENTS.md index 773a286..59e9b30 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -128,6 +128,7 @@ Kanbn4Droid is an unofficial app to connect to and manipulate data stored in sel - Card move requests try these variants for Kan.bn API compatibility: `PUT /api/v1/cards/{cardPublicId}` with `listPublicId`, then GET+full-body `PUT /api/v1/cards/{cardPublicId}` payload (`title`, `description`, `index`, `listPublicId`, `dueDate`), then `PUT /api/v1/cards/{cardPublicId}` with `listId`, then `PATCH /api/v1/cards/{cardPublicId}` with `listId`. - Board detail parsing prefers public ids (`publicId`/`public_id`) over internal `id` values so follow-up card/list mutations target correct API identifiers. - Label chip border colors are hydrated from Kan.bn `Get a label by public ID` (`colourCode`) and cached in-memory by `BoardDetailRepository` so each label color is fetched only once per app process. + - Filter/search toolbar icons use local vector drawables (`ic_filter_list_24`, `ic_search_24`) with day/night variants so dark mode uses light icon fills automatically. - Selection action icons use local vector drawables (`ic_select_all_grid_24`, `ic_move_cards_horizontal_24`, `ic_delete_24`) with day/night variants so dark mode uses light icon fills automatically. - Startup blocking dialogs are shown for missing board id and missing session. diff --git a/app/src/main/java/space/hackenslacker/kanbn4droid/app/boarddetail/BoardDetailActivity.kt b/app/src/main/java/space/hackenslacker/kanbn4droid/app/boarddetail/BoardDetailActivity.kt index ec53056..ff3578f 100644 --- a/app/src/main/java/space/hackenslacker/kanbn4droid/app/boarddetail/BoardDetailActivity.kt +++ b/app/src/main/java/space/hackenslacker/kanbn4droid/app/boarddetail/BoardDetailActivity.kt @@ -517,13 +517,15 @@ class BoardDetailActivity : AppCompatActivity() { R.id.actionSearch -> R.drawable.ic_search_24 else -> null } ?: return + if (!isActive) { + item?.icon = AppCompatResources.getDrawable(this, drawableRes) + item?.iconTintList = null + return + } + val icon = AppCompatResources.getDrawable(this, drawableRes)?.mutate() ?: return val wrapped = DrawableCompat.wrap(icon) - val tintColor = if (isActive) { - MaterialColors.getColor(this, com.google.android.material.R.attr.colorPrimary, ContextCompat.getColor(this, android.R.color.holo_blue_light)) - } else { - MaterialColors.getColor(this, com.google.android.material.R.attr.colorOnSurfaceVariant, ContextCompat.getColor(this, android.R.color.black)) - } + val tintColor = MaterialColors.getColor(this, com.google.android.material.R.attr.colorPrimary, ContextCompat.getColor(this, android.R.color.holo_blue_light)) DrawableCompat.setTint(wrapped, tintColor) item?.icon = wrapped item?.iconTintList = android.content.res.ColorStateList.valueOf(tintColor) diff --git a/app/src/main/res/drawable-night/ic_filter_list_24.xml b/app/src/main/res/drawable-night/ic_filter_list_24.xml new file mode 100644 index 0000000..25229fe --- /dev/null +++ b/app/src/main/res/drawable-night/ic_filter_list_24.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/drawable-night/ic_search_24.xml b/app/src/main/res/drawable-night/ic_search_24.xml new file mode 100644 index 0000000..e3fd989 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_search_24.xml @@ -0,0 +1,12 @@ + + + + + +