bool PropertyBitmaskConverter::applyMaskWithInValues_helper(QVariant &inVariant, QVariant &outVariant) { bool ok(true); QBitArray inBitRepres = variantToBitArray(inVariant, ok); qDebug()<<"In value \t"<<inBitRepres; if (!ok) return ok; QBitArray outBitRepres = variantToBitArray(outVariant, ok); qDebug()<<"Out value \t"<<outBitRepres; if (!ok) return ok; Q_ASSERT(!_bitmaskFromInternal.isNull()); QBitArray maskCopy = _bitmaskFromInternal; if (outBitRepres.count() != 0) maskCopy.truncate(outBitRepres.size()); else outBitRepres.resize(maskCopy.count()); inBitRepres.truncate(maskCopy.count()); qDebug()<<"Mask (mod)\t"<<maskCopy; //! \todo optimize and beautify it if (inVariant.type() == QVariant::Bool) inBitRepres = maskCopy; else inBitRepres &= (maskCopy);//get only masked bits outBitRepres &= (~maskCopy);//clear mask bits outBitRepres |= inBitRepres;//set relevant bits from mask qDebug()<<"Out res\t"<<outBitRepres; return variantFromBitArray(outVariant, outBitRepres); }