The function that is responsible to build the list of activities on case is CRM_Case_BAO_Case::getCaseActivity(). It is very difficult to alter the function via custom module/plugin/extension.
I would create an extension that would alter the page callback for 'civicrm/ajax/activity' to custom function (eg CRM_ExtName_Page_AJAX::getCaseActivity using ...
If I'm understanding correctly, all you need to do is make an extension and call CRM_Core_Resources::singleton()->addStyle() in hook_buildForm as described at https://docs.civicrm.org/dev/en/latest/framework/resources/#css-stylesheets since activities with priority urgent already get class priority-urgent added to the <tr> element in the table that ...
In the end, I directly changed the CRM_Case_BAO_Case::getCaseActivity function instead of creating an extension.
Specifically, I changed this function's $where variable to:
$where = "
WHERE cca.case_id= %1
AND ca.is_current_revision = 1
AND cov.grouping = 'visible'";
Here, "cov" is the alias ...
You can use the same set of options for two different custom fields, all you need to do is when creating custom field click on 'Reuse an existing set', select the option from the drop down list and save.
This is specific to civicase activities and it's because the view form uses its own way of displaying custom fields that's different from regular activities. I posted this quickie patch in the lab ticket but it's not the best long-term solution:
diff --git a/templates/CRM/Case/Form/ActivityView.tpl b/templates/CRM/Case/Form/ActivityView.tpl
Silly of me. I forgot about the very clever and granular way that CiviCRM is built. Just creating a new Activity Type was not enough to have it activated in the right CiviCase.
After creating a new Activity Type (either Task or Communication), we must add these new Activities to the right Case Type that can be customised.
And voilà, it's set !