DomainDialog::DomainDialog(Domain subject, QWidget *parent) : QDialog(parent), _result(QDialog::Rejected), ui(new Ui::DomainDialog), _domain(subject) { initDialog(); setWindowTitle("Edit Domain"); //Setup the blacklist for the name line edit ui->nameEdit->setText(subject.name()); QStringList blacklist=ConfigurationStack::instance().current().domainNameList(); blacklist.removeAll(subject.name()); ui->nameEdit->setBlacklist(blacklist); //Setup the data of the widgets ui->displayNameEdit->setText(subject.displayName()); ui->iconButton->setIcon(QIcon(subject.iconPath())); ui->iconButton->setToolTip(subject.iconPath()); ui->descriptionPlainTextEdit->setPlainText(subject.description()); ui->confidentialitySlider->setValue(subject.confidentiality()); ui->reliabilitySlider->setValue(subject.reliability()); //Setup the default domain checkbox depending on whether the domain is default if(ConfigurationStack::instance().current().defaultDomain()==subject) { ui->defaultDomain->setChecked(true); ui->defaultDomain->setEnabled(false); } else ui->defaultDomain->setChecked(false); }
void SortedRulesTreeWidget::addRule(const AbstractRule *rule, const Domain dom) { QTreeWidgetItem *topItem=NULL, *secondItem=NULL; //Look for the top-level item (either the rule's application or domain) for(int i=0, count=ui->rulesList->topLevelItemCount(); i<count && !topItem; ++i) { QTreeWidgetItem *tmp=ui->rulesList->topLevelItem(i); if(((_sort_mode==SortByApp) && (rule->program().name()==tmp->data(0, Qt::UserRole).toString())) || ((_sort_mode==SortByDomain) && (dom.name()==tmp->data(0, Qt::UserRole).toString()))) topItem=tmp; } //If there was no top-level item, create one if(!topItem) { if(_sort_mode==SortByApp) { topItem=new QTreeWidgetItem(ui->rulesList, QStringList(rule->program().displayName())); topItem->setData(0, ItemTypeRole, ProgramItem); topItem->setData(0, Qt::UserRole, rule->program().name()); topItem->setFirstColumnSpanned(true); QPixmap icon(rule->program().icon()); if(icon.isNull()) icon.load(":/icons/default-program"); topItem->setIcon(0, QIcon(icon)); } else { topItem=new QTreeWidgetItem(ui->rulesList, QStringList(dom.displayName())); topItem->setData(0, ItemTypeRole, DomainItem); topItem->setData(0, Qt::UserRole, dom.name()); topItem->setFirstColumnSpanned(true); QPixmap icon(dom.iconPath()); if(icon.isNull()) icon.load(":/icons/default-domain"); topItem->setIcon(0, QIcon(icon)); } } //Check if it has the child item we want (respectively domain or application) for(int i=0, count=topItem->childCount(); i<count && !secondItem; ++i) { QTreeWidgetItem *tmp=topItem->child(i); if(((_sort_mode==SortByDomain) && (rule->program().name()==tmp->data(0, Qt::UserRole).toString())) || ((_sort_mode==SortByApp) && (dom.name()==tmp->data(0, Qt::UserRole).toString()))) secondItem=tmp; } //Create one if it didn't exist if(!secondItem) { if(_sort_mode==SortByApp) { secondItem=new QTreeWidgetItem(topItem, QStringList(dom.displayName())); secondItem->setData(0, ItemTypeRole, DomainItem); secondItem->setData(0, Qt::UserRole, dom.name()); secondItem->setFirstColumnSpanned(true); QPixmap icon(dom.iconPath()); if(icon.isNull()) icon.load(":/icons/default-domain"); secondItem->setIcon(0, QIcon(icon)); } else { secondItem=new QTreeWidgetItem(topItem, QStringList(rule->program().displayName())); secondItem->setData(0, ItemTypeRole, ProgramItem); secondItem->setData(0, Qt::UserRole, rule->program().name()); secondItem->setFirstColumnSpanned(true); QPixmap icon(rule->program().icon()); if(icon.isNull()) icon.load(":/icons/default-program"); secondItem->setIcon(0, QIcon(icon)); } } //Add our rule to the second-level item QStringList itemStrList(rule->displayName()); itemStrList.append(rule->ruleType()); QTreeWidgetItem *ruleItem= new QTreeWidgetItem(secondItem, itemStrList); ruleItem->setData(0, ItemTypeRole, RuleItem); ruleItem->setData(0, Qt::UserRole, rule->id()); ruleItem->setData(1, Qt::UserRole, rule->ruleType()); //If the rule has warnings, display a warning icon if(ConfigurationStack::instance().ruleHasWarnings(rule->id())) ruleItem->setIcon(0, QIcon(":/icons/warning")); //Finally, display the matching rules of the rule QVector<MRule> mrules=rule->mRules(); for(int i=0; i<mrules.count(); ++i) { QTreeWidgetItem *mruleItem=new QTreeWidgetItem(ruleItem, QStringList(mrules[i].displayName())); mruleItem->setData(0, ItemTypeRole, MRuleItem); mruleItem->setFirstColumnSpanned(true); mruleItem->setToolTip(0, mrules[i].displayName()); //Add the conditions of the matching rule const QMap<QString, QString> &map=mrules[i].conditions(); for(QMap<QString, QString>::const_iterator it=map.begin(); it!=map.end(); ++it) { QStringList itemStrList(it.key()); itemStrList.append(it.value()); QTreeWidgetItem *condItem=new QTreeWidgetItem(mruleItem, itemStrList); condItem->setData(0, ItemTypeRole, MRuleConditionItem); condItem->setToolTip(0, it.key()); condItem->setToolTip(1, it.value()); } } }