1
0
mirror of https://github.com/altlinux/admc.git synced 2024-10-26 17:25:38 +03:00

fix icons for "create" actions in toolbar

use get_object_icon() because it has fallback variants
add get_object_icon() variant that takes object category as arg
This commit is contained in:
Dmitry Degtyarev 2022-06-22 12:49:39 +04:00
parent edc16ca32d
commit e5044093c3
4 changed files with 33 additions and 10 deletions

View File

@ -225,6 +225,10 @@ enum SystemFlagsBit {
#define CLASS_dMD "dMD"
#define CLASS_CONTROL_ACCESS_RIGHT "controlAccessRight"
#define OBJECT_CATEGORY_PERSON "Person"
#define OBJECT_CATEGORY_GROUP "Group"
#define OBJECT_CATEGORY_OU "Organizational-Unit"
#define LOCKOUT_UNLOCKED_VALUE "0"
#define AD_LARGE_INTEGER_DATETIME_NEVER_1 "0"

View File

@ -91,6 +91,18 @@ MainWindow::MainWindow(AdInterface &ad, QWidget *parent)
object_impl->set_toolbar_actions(ui->action_create_user, ui->action_create_group, ui->action_create_ou);
// NOTE: redefine icons for create actions because need
// to try multiple variants because DE's sometimes don't
// share icons
const QIcon create_user_icon = get_object_icon(OBJECT_CATEGORY_PERSON);
ui->action_create_user->setIcon(create_user_icon);
const QIcon create_group_icon = get_object_icon(OBJECT_CATEGORY_GROUP);
ui->action_create_group->setIcon(create_group_icon);
const QIcon create_ou_icon = get_object_icon(OBJECT_CATEGORY_OU);
ui->action_create_ou->setIcon(create_ou_icon);
// Setup console
const ConsoleWidgetActions console_actions = [&]() {
ConsoleWidgetActions out;

View File

@ -185,15 +185,28 @@ void limit_plain_text_edit(QPlainTextEdit *edit, const QString &attribute) {
}
QIcon get_object_icon(const AdObject &object) {
const QString object_category = [&]() {
const QString category_dn = object.get_string(ATTRIBUTE_OBJECT_CATEGORY);
const QString out = dn_get_name(category_dn);
return out;
}();
const QIcon out = get_object_icon(object_category);
return out;
}
QIcon get_object_icon(const QString &object_category) {
// NOTE: use a list of possible icons because
// default icon themes for different DE's don't
// fully intersect
static const QMap<QString, QList<QString>> category_to_icon_list = {
{"Domain-DNS", {"network-server"}},
{"Container", {"folder"}},
{"Organizational-Unit", {"folder-documents"}},
{"Group", {"system-users"}},
{"Person", {"avatar-default", "avatar-default-symbolic"}},
{OBJECT_CATEGORY_OU, {"folder-documents"}},
{OBJECT_CATEGORY_GROUP, {"system-users"}},
{OBJECT_CATEGORY_PERSON, {"avatar-default", "avatar-default-symbolic"}},
{"Computer", {"computer"}},
{"Group-Policy-Container", {"preferences-other"}},
{"Volume", {"folder-templates"}},
@ -211,13 +224,6 @@ QIcon get_object_icon(const AdObject &object) {
const QString error_icon = "dialog-question";
const QString icon_name = [&]() -> QString {
const QString object_category = [&]() {
const QString category_dn = object.get_string(ATTRIBUTE_OBJECT_CATEGORY);
const QString out = dn_get_name(category_dn);
return out;
}();
const QList<QString> fallback_icon_list = {
"emblem-system",
"emblem-system-symbolic",

View File

@ -90,6 +90,7 @@ void limit_plain_text_edit(QPlainTextEdit *edit, const QString &attribute);
// NOTE: object must contain "objectCategory" attribute
QIcon get_object_icon(const AdObject &object);
QIcon get_object_icon(const QString &object_category);
QList<QPersistentModelIndex> persistent_index_list(const QList<QModelIndex> &indexes);
QList<QModelIndex> normal_index_list(const QList<QPersistentModelIndex> &indexes);