From 1cb5fd292f5e5e63e83120dd07e4bb987d3a47cf Mon Sep 17 00:00:00 2001 From: Kozyrev Yuri Date: Wed, 3 Jun 2026 14:43:11 +0400 Subject: [PATCH] Add properties to general_computer_tab in main view --- .../console_impls/object_impl/object_impl.cpp | 13 +++++-- .../console_impls/object_impl/object_impl.h | 2 ++ src/admc/tabs/general_computer_tab.cpp | 35 ++++++++++++++++--- src/admc/tabs/general_computer_tab.h | 10 ++++++ 4 files changed, 53 insertions(+), 7 deletions(-) diff --git a/src/admc/console_impls/object_impl/object_impl.cpp b/src/admc/console_impls/object_impl/object_impl.cpp index 89dcadbea..fa420ecbc 100755 --- a/src/admc/console_impls/object_impl/object_impl.cpp +++ b/src/admc/console_impls/object_impl/object_impl.cpp @@ -481,8 +481,10 @@ void ObjectImpl::selected_as_scope(const QModelIndex &index) else if (object.is_class(CLASS_SUBNET)) { stacked_widget->setCurrentWidget(subnet_results_widget); subnet_results_widget->update(object); - } - else { + } else if (object.is_class(CLASS_COMPUTER)) { + stacked_widget->setCurrentWidget(computer_results_widget); + computer_results_widget->update(ad, object); + } else { stacked_widget->setCurrentWidget(view()); } } @@ -509,6 +511,11 @@ void ObjectImpl::update_results_widget(const QModelIndex &index) const { return; } + if (object.is_class(CLASS_COMPUTER)) { + computer_results_widget->update(ad, object); + return; + } + if (object.is_class(CLASS_CONTACT) || object.is_class(CLASS_USER) || object.is_class(CLASS_INET_ORG_PERSON)) { @@ -950,9 +957,11 @@ void ObjectImpl::setup_widgets() { set_results_view(new ResultsView(console)); group_results_widget = new GeneralGroupTab(); user_results_widget = new GeneralUserTab(); + computer_results_widget = new GeneralComputerTab(); pso_results_widget = new PSOResultsWidget(); subnet_results_widget = new SubnetResultsWidget(); stacked_widget->addWidget(group_results_widget); + stacked_widget->addWidget(computer_results_widget); stacked_widget->addWidget(user_results_widget); stacked_widget->addWidget(pso_results_widget); stacked_widget->addWidget(subnet_results_widget); diff --git a/src/admc/console_impls/object_impl/object_impl.h b/src/admc/console_impls/object_impl/object_impl.h index 647b2cbc7..7e8b233cc 100644 --- a/src/admc/console_impls/object_impl/object_impl.h +++ b/src/admc/console_impls/object_impl/object_impl.h @@ -31,6 +31,7 @@ #include "console_widget/console_impl.h" #include "console_widget/console_widget.h" #include "console_object_operations.h" +#include "tabs/general_computer_tab.h" class QStandardItem; class AdObject; @@ -151,6 +152,7 @@ private slots: QStackedWidget *stacked_widget; GeneralGroupTab *group_results_widget; GeneralUserTab *user_results_widget; + GeneralComputerTab *computer_results_widget; PSOResultsWidget *pso_results_widget; SubnetResultsWidget *subnet_results_widget; diff --git a/src/admc/tabs/general_computer_tab.cpp b/src/admc/tabs/general_computer_tab.cpp index b62a5dd8c..53d73cb1e 100644 --- a/src/admc/tabs/general_computer_tab.cpp +++ b/src/admc/tabs/general_computer_tab.cpp @@ -31,6 +31,33 @@ GeneralComputerTab::GeneralComputerTab(QList *edit_list, QWidge ui = new Ui::GeneralComputerTab(); ui->setupUi(this); + edit_list->append(create_edits()); +} + +GeneralComputerTab::GeneralComputerTab(QWidget *parent) +: QWidget(parent) { + ui = new Ui::GeneralComputerTab(); + ui->setupUi(this); + + m_edit_list = create_edits(); + + ui->name_label->setVisible(false); + ui->description_edit->setReadOnly(true); + ui->dns_host_name_edit->setReadOnly(true); + ui->sam_name_domain_edit->setReadOnly(true); + ui->sam_name_edit->setReadOnly(true); + ui->location_edit->setReadOnly(true); +} + +void GeneralComputerTab::update(AdInterface &ad, const AdObject &object) { + AttributeEdit::load(m_edit_list, ad, object); +} + +GeneralComputerTab::~GeneralComputerTab() { + delete ui; +} + +QList GeneralComputerTab::create_edits() { auto name_edit = new GeneralNameEdit(ui->name_label, this); auto sam_name_edit = new ComputerSamNameEdit(ui->sam_name_edit, ui->sam_name_domain_edit, this); auto dns_edit = new StringEdit(ui->dns_host_name_edit, ATTRIBUTE_DNS_HOST_NAME, this); @@ -40,15 +67,13 @@ GeneralComputerTab::GeneralComputerTab(QList *edit_list, QWidge sam_name_edit->set_enabled(false); dns_edit->set_enabled(false); - edit_list->append({ + QList edit_list = { name_edit, sam_name_edit, dns_edit, description_edit, location_edit, - }); -} + }; -GeneralComputerTab::~GeneralComputerTab() { - delete ui; + return edit_list; } diff --git a/src/admc/tabs/general_computer_tab.h b/src/admc/tabs/general_computer_tab.h index 05c6eb8cf..58f4e9f9a 100644 --- a/src/admc/tabs/general_computer_tab.h +++ b/src/admc/tabs/general_computer_tab.h @@ -23,6 +23,8 @@ #include +#include "ad_interface.h" + class AttributeEdit; class AdObject; @@ -37,7 +39,15 @@ class GeneralComputerTab final : public QWidget { Ui::GeneralComputerTab *ui; GeneralComputerTab(QList *edit_list, QWidget *parent); + GeneralComputerTab(QWidget *parent = nullptr); ~GeneralComputerTab(); + + void update(AdInterface &ad, const AdObject &object); + +private: + QList m_edit_list; + + QList create_edits(); }; #endif /* GENERAL_COMPUTER_TAB_H */