Use ${Kface_INCLUDE_DIR} instead of ${KFACE_INCLUDE_DIR}, as the latter is only set for compatibility.
Rewrote the category settings dialog (in the main) to e. g. stop it from being able to create categories with no name, do rename actions that cause collisions, make it respect the localized names of standard categories, and so on.
Added some more static functions to DB::Category concerning localized category names which we can use all over KPA use instead of having to implement them everywhere.
Made the new category settings dialog use the new static category l10n functions.
Changed the new category name check order to also catch the case if there's a pending name change on a standard category and the user tries to rename another category to the C locale version of the category with the pending change.
Made Settings::CategoryItem use the new static DB::Category functions.
Code cleanup.
Do not only set the untagged category and tag if they are configured, but also mark the feature as not set if "None Selected" is selected (ste category to "" so that SettingsData::hasUntaggedCategoryFeatureConfigured() will actually return false if "None Selected" is selected).
Added a nicer, quieter but more verbose cmake message if libkface if found or not.