示例#1
0
bool KrArchiverResultTable::addRow(SearchObject* search, QGridLayout* grid)
{
    Archiver* arch = dynamic_cast<Archiver*>(search);

    // Name column
    _label = new KUrlLabel(arch->getWebsite(), arch->getSearchName(), this);
    _label->setContentsMargins(5, 5, 5, 5);
    _label->setAlignment(Qt::AlignTop);
    grid->addWidget(_label, _numRows, 0);
    connect(_label, SIGNAL(leftClickedUrl(const QString&)),
            SLOT(website(const QString&)));

    // Found column
    _label = new QLabel(arch->getPath(), this);
    _label->setContentsMargins(5, 5, 5, 5);
    grid->addWidget(_label, _numRows, 1);

    // Packing column
    _label = new QLabel(this);
    _label->setContentsMargins(5, 5, 5, 5);
    _label->setAlignment(Qt::AlignTop);
    if (arch->getIsPacker() && arch->getFound()) {
        _label->setText(i18n("enabled"));
        QPalette pal = _label->palette();
        pal.setColor(_label->foregroundRole(), "darkgreen");
        _label->setPalette(pal);
    } else if (arch->getIsPacker() && !arch->getFound()) {
        _label->setText(i18n("disabled"));
        QPalette pal = _label->palette();
        pal.setColor(_label->foregroundRole(), "red");
        _label->setPalette(pal);
    } else
        _label->setText("");
    grid->addWidget(_label, _numRows, 2);

    // Unpacking column
    _label = new QLabel(this);
    _label->setContentsMargins(5, 5, 5, 5);
    _label->setAlignment(Qt::AlignTop);
    if (arch->getIsUnpacker() && arch->getFound()) {
        _label->setText(i18n("enabled"));
        QPalette pal = _label->palette();
        pal.setColor(_label->foregroundRole(), "darkgreen");
        _label->setPalette(pal);
    } else if (arch->getIsUnpacker() && !arch->getFound()) {
        _label->setText(i18n("disabled"));
        QPalette pal = _label->palette();
        pal.setColor(_label->foregroundRole(), "red");
        _label->setPalette(pal);
    } else
        _label->setText("");
    grid->addWidget(_label, _numRows, 3);

    // Note column
    _label = new QLabel(arch->getNote(), this);
    _label->setContentsMargins(5, 5, 5, 5);
    _label->setAlignment(Qt::AlignTop);
    _label->setWordWrap(true);   // wrap words
    grid->addWidget(_label, _numRows, 4);

    // Apply shared design elements
    adjustRow(_grid);

    // Ensure the last column takes more space
    _label->setMinimumWidth(300);

    ++_numRows;
    return true;
}