Exemple #1
0
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);
}
Exemple #2
0
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());
        }
    }
}