Example #1
0
bool QTreeWidgetItemProto::isDisabled()	        const
{
  QTreeWidgetItem *item = qscriptvalue_cast<QTreeWidgetItem*>(thisObject());
  if (item)
    return item->isDisabled();
  return false;
}
dmz::V8Value
dmz::JsModuleUiV8QtBasic::_tree_item_disable (const v8::Arguments &Args) {

   v8::HandleScope scope;
   V8Value result = v8::Undefined ();

   JsModuleUiV8QtBasic *self = _to_self (Args);
   if (self) {

      QTreeWidgetItem *item = self->_to_qtreewidgetitem (Args.This ());
      if (item) {

         if (Args.Length ()) { item->setDisabled (v8_to_boolean (Args[0])); }
         result = v8::Boolean::New (item->isDisabled ());
      }
   }

   return scope.Close (result);
}
/**
 * This only handles changes in selection of just one tree item!
 */
void _syncXCCDFItemChildrenDisabledState(QTreeWidgetItem* treeItem, bool enabled)
{
    for (int i = 0; i < treeItem->childCount(); ++i)
    {
        QTreeWidgetItem* childTreeItem = treeItem->child(i);
        const bool childEnabled = !childTreeItem->isDisabled();

        if (!enabled && childEnabled)
        {
            childTreeItem->setDisabled(true);
            _syncXCCDFItemChildrenDisabledState(childTreeItem, false);
        }
        else if (enabled && !childEnabled)
        {
            childTreeItem->setDisabled(false);
            _syncXCCDFItemChildrenDisabledState(childTreeItem, true);
        }
    }
}
Example #4
0
QSet<QTreeWidgetItem*> TreeWidgetSearch(QTreeWidget *treeWidget, int column, const QStringList &filters,
    bool exactMatch, Qt::CaseSensitivity sensitivity, bool expandItems)
{
    QSet<QTreeWidgetItem *> handled;
    QSet<QTreeWidgetItem *> matched;
    
    foreach(QString filter, filters)
    {
        filter = filter.trimmed();

        // Negation search?
        const bool negation = (!filter.isEmpty() && filter[0] == '!');
        if (negation)
            filter = filter.mid(1);

        QTreeWidgetItemIterator it(treeWidget);
        while(*it)
        {
            QTreeWidgetItem *item = *it;

            // This item has been already handled with a previous filter
            // but we need to check its children matching this filter.
            if (handled.contains(item))
            {
                if (!filter.isEmpty())
                    TreeWidgetSearchHelper(item, handled, matched, negation, column, filter, exactMatch, sensitivity, expandItems);
                continue;
            }

            if (filter.isEmpty())
            {
                if (!item->isDisabled())
                    item->setHidden(false); // No filter, show everything.
            }
            else if ((!exactMatch && item->text(column).contains(filter, sensitivity)) ||
                (exactMatch && item->text(column).compare(filter, sensitivity) == 0))
            {
                // Hit with filter to column text
                if (!item->isDisabled())
                    item->setHidden(negation);
                handled << item;
                matched << item;

                if (expandItems && !item->isHidden())
                    item->setExpanded(true);

                // Make sure that all the parent items are visible too
                QTreeWidgetItem *parent = 0, *child = item;
                while((parent = child->parent()) != 0)
                {
                    if (!item->isDisabled())
                        parent->setHidden(negation);
                    handled << parent;
                    if (expandItems && !parent->isHidden())
                        parent->setExpanded(true);
                    child = parent;
                }
            }
            else // No hit
            {
                if (!item->isDisabled())
                    item->setHidden(!negation);
            }

            ++it;
        }
    }