diff --git a/src/ad_interface.cpp b/src/ad_interface.cpp index bd61d5a0..696a7d3e 100644 --- a/src/ad_interface.cpp +++ b/src/ad_interface.cpp @@ -362,6 +362,16 @@ QString get_attribute(const QString &dn, const QString &attribute) { } } +bool attribute_value_exists(const QString &dn, const QString &attribute, const QString &value) { + QList values = get_attribute_multi(dn, attribute); + + if (values.contains(value)) { + return true; + } else { + return false; + } +} + bool set_attribute(const QString &dn, const QString &attribute, const QString &value) { int result = AD_INVALID_DN; diff --git a/src/ad_interface.h b/src/ad_interface.h index 4defaf51..f1eb4b5c 100644 --- a/src/ad_interface.h +++ b/src/ad_interface.h @@ -52,11 +52,14 @@ extern AdInterface ad_interface; extern bool FAKE_AD; bool ad_interface_login(); + QList load_children(const QString &dn); void load_attributes(const QString &dn); QMap> get_attributes(const QString &dn); QList get_attribute_multi(const QString &dn, const QString &attribute); QString get_attribute(const QString &dn, const QString &attribute); +bool attribute_value_exists(const QString &dn, const QString &attribute, const QString &value); + bool set_attribute(const QString &dn, const QString &attribute, const QString &value); bool create_entry(const QString &name, const QString &dn, NewEntryType type); void delete_entry(const QString &dn); diff --git a/src/ad_model.cpp b/src/ad_model.cpp index 53806b50..e12b9c99 100644 --- a/src/ad_model.cpp +++ b/src/ad_model.cpp @@ -111,15 +111,11 @@ void init_row(QList row, const QString &dn) { // is container bool is_container = false; - if (attributes.contains("objectClass")) { - QList objectClasses = attributes["objectClass"]; - - QList container_objectClasses = {"container", "organizationalUnit", "builtinDomain", "domain"}; - for (auto e : container_objectClasses) { - if (objectClasses.contains(e)) { - is_container = true; - break; - } + const QList container_objectClasses = {"container", "organizationalUnit", "builtinDomain", "domain"}; + for (auto c : container_objectClasses) { + if (attribute_value_exists("objectClass", c)) { + is_container = true; + break; } } @@ -146,12 +142,11 @@ void init_row(QList row, const QString &dn) { {"group", "application-x-smb-workgroup"}, {"builtinDomain", "emblem-system"}, }; - QList objectClasses = attributes["objectClass"]; QString icon_name = "dialog-question"; - for (auto c : objectClasses) { - if (class_to_icon.contains(c)) { + for (auto c : class_to_icon.keys()) { + if (attribute_value_exists("objectClass", c)) { icon_name = class_to_icon[c]; - break; + break; } } @@ -295,8 +290,6 @@ void AdModel::on_move_user_complete(const QString &user_dn, const QString &conta removeRow(dn_index.row(), dn_index.parent()); } - printf("on_move_user_complete: %s %s\n", qPrintable(new_dn), qPrintable(container_dn)); - // Need to load entry at new parent if the parent has already // been expanded/fetched // NOTE: loading if parent has already been fetched will