示例#1
0
void Properties::DisplayProperties(QVariant p) {
  // get current property
  QString propertyName;
  QTreeWidgetItem* item = ui->propertyView->currentItem();
  if (item) {
    propertyName = item->data(0, Qt::DisplayRole).toString();
  }

  ui->propertyView->clear();

  // only support QVariantMap or QVariantHash at this level
  switch (p.type()) {
    case QMetaType::QVariantMap:
      ParseIterable(NULL, p.toMap());
      break;
    case QMetaType::QVariantHash:
      ParseIterable(NULL, p.toHash());
      break;
    case QMetaType::QVariantList:
      ParseList(NULL, p.toList());
      break;
    default:
      qWarning("Trying to display scalar value as a property");
      break;
  }

  // expand at least the first level
  ui->propertyView->expandToDepth(0);

  if (propertyName.size() != 0) {
    // try to restore the path
    QList<QTreeWidgetItem*> items =
        ui->propertyView->findItems(propertyName, Qt::MatchRecursive);
    if (items.size())
      items.front()->setSelected(true);
  }
}
QVector<JsonKitsPage::ConditionalFeature> JsonKitsPage::parseFeatures(const QVariant &data,
                                                                      QString *errorMessage)
{
    QVector<ConditionalFeature> result;
    if (errorMessage)
        errorMessage->clear();

    if (data.isNull())
        return result;
    if (data.type() != QVariant::List) {
        if (errorMessage)
            *errorMessage = tr("Feature list is set and not of type list.");
        return result;
    }

    foreach (const QVariant &element, data.toList()) {
        if (element.type() == QVariant::String) {
            result.append({ element.toString(), QVariant(true) });
        } else if (element.type() == QVariant::Map) {
            const QVariantMap obj = element.toMap();
            const QString feature = obj.value(QLatin1String(KEY_FEATURE)).toString();
            if (feature.isEmpty()) {
                *errorMessage = tr("No \"%1\" key found in feature list object.")
                        .arg(QLatin1String(KEY_FEATURE));
                return QVector<ConditionalFeature>();
            }

            result.append({ feature, obj.value(QLatin1String(KEY_CONDITION), true) });
        } else {
            if (errorMessage)
                *errorMessage = tr("Feature list element is not a string or object.");
            return QVector<ConditionalFeature>();
        }
    }

    return result;
}
示例#3
0
void
TestPyOtherSide::testSetToList()
{
    // Test if a Python set is converted to a list
    PyObject *set = PySet_New(NULL);
    QVERIFY(set != NULL);
    PyObject *o = NULL;

    o = PyLong_FromLong(123);
    QVERIFY(o != NULL);
    QVERIFY(PySet_Add(set, o) == 0);

    o = PyLong_FromLong(321);
    QVERIFY(o != NULL);
    QVERIFY(PySet_Add(set, o) == 0);

    o = PyLong_FromLong(444);
    QVERIFY(o != NULL);
    QVERIFY(PySet_Add(set, o) == 0);

    // This will not be added (no duplicates in a set)
    o = PyLong_FromLong(123);
    QVERIFY(o != NULL);
    QVERIFY(PySet_Add(set, o) == 0);

    // At this point, we should have 3 items (123, 321 and 444)
    QVERIFY(PySet_Size(set) == 3);

    QVariant v = convertPyObjectToQVariant(set);
    QVERIFY(v.canConvert(QMetaType::QVariantList));

    QList<QVariant> l = v.toList();
    QVERIFY(l.size() == 3);
    QVERIFY(l.contains(123));
    QVERIFY(l.contains(321));
    QVERIFY(l.contains(444));
}
示例#4
0
void Evaluate::addVariant(QVariant &object) {
  if (object.isValid()) {
    switch(object.type()) {
      case QMetaType::QString:
        {
          QString string = object.toString();
          addString(string);
        }
        break;
      case QMetaType::QVariantList:
        {
          QVariantList list = object.toList();
          addArray(list);
        }
        break;
      case QMetaType::Double:
        m_buffer.append(object.toString());
        break;
      case QMetaType::QVariantMap:
        {
          QVariantMap map = object.toMap();
          addMap(map);
          break;
        }
      case QMetaType::Bool:
        {
          m_buffer.append(object.toString());
          break;
        }
      default:
        m_buffer.append("null");
    }
  } else {
    m_buffer.append("null");
  }
}
示例#5
0
// <name> or (rename <name> <altName>)
void writeName(QXmlStreamWriter &stream, const QVariant &v)
{
    if (v.type() == QVariant::List)
    {
        QVariantList l = v.toList();
        if (l[0].toString() != "rename")
        {
            qWarning("Wrong name description");
        }
        else
        {
            stream.writeAttribute("name", l[1].toString());
            //stream.writeAttribute("altName", l[2].toString()); // TODO: strip quotes
        }
    }
    else if (v.type() == QVariant::String)
    {
        stream.writeAttribute("name", v.toString());
    }
    else
    {
        qWarning("Wrong name description");
    }
}
QStringList FindValueOperation::findValue(const QVariant &in, const QVariant &value,
                                           const QString &prefix)
{
    QStringList result;
    if (in.type() == value.type() && in == value) {
        result << prefix;
    } else if (in.type() == QVariant::Map) {
        const QVariantMap map = in.toMap();
        for (QVariantMap::const_iterator i = map.begin(); i != map.end(); ++i) {
            QString pfx = prefix;
            if (!pfx.isEmpty())
                pfx.append(QLatin1Char('/'));
            pfx.append(i.key());
            result.append(findValue(i.value(), value, pfx));
        }
    } else if (in.type() == QVariant::List) {
        QVariantList list = in.toList();
        for (int pos = 0; pos < list.count(); ++pos) {
            QString pfx = prefix + QLatin1Char('[') + QString::number(pos) + QLatin1Char(']');
            result.append(findValue(list.at(pos), value, pfx));
        }
    }
    return result;
}
示例#7
0
CommandDataModel::CommandDataModel()
{
    // Load saveBeforeExecute option
    QVariant s = mSettings.value(QLatin1String("saveBeforeExecute"), true);
    mSaveBeforeExecute = s.toBool();

    // Load command list
    const QVariant variant = mSettings.value(QLatin1String("commandList"));
    const QList<QVariant> commands = variant.toList();
    foreach (const QVariant &commandVariant, commands)
        mCommands.append(Command::fromQVariant(commandVariant));

    // Add default commands the first time the app has booted up.
    // This is useful on it's own and helps demonstrate how to use the commands.

    const QString addPrefStr = QLatin1String("addedDefaultCommands");
    const bool addedCommands = mSettings.value(addPrefStr, false).toBool();
    if (!addedCommands) {

        // Disable default commands by default so user gets an informative
        // warning when clicking the command button for the first time
        Command command(false);
#ifdef Q_WS_X11
        command.command = QLatin1String("gedit %mapfile");
#elif defined(Q_WS_MAC)
        command.command = QLatin1String("open -t %mapfile");
#endif
        if (!command.command.isEmpty()) {
            command.name = tr("Open in text editor");
            mCommands.push_back(command);
        }

        commit();
        mSettings.setValue(addPrefStr, true);
    }
}
示例#8
0
void AbstractInputTool::load(const QVariant& settings)
{
    clear();

    const QVariantList list = settings.toList();

    for (int i = 0; i < list.size(); i++) 
    {
        const QVariantMap map = list.at(i).toMap();

        const QString id = map["instance"].toString();

        const QVariantList vpath = map["path"].toList();
        QList< int > path;
        for (int j = 0; j < vpath.size(); j++) 
        {
            path << vpath.at(j).toInt();
        }

        InterfaceDescriptor_ptr ref =
            m_model->getReflective(id);

        if (ref)
        {
            AbstractInputItem * item = 
                createAbstractInputItem(id, ref, path);

            if (item)
            {
                item->load(map["config"]);

                m_model->check(id, path);
            }
        }
    }
}
示例#9
0
bool Serializer::SerializerPrivate::serialize( const QVariant &v, QIODevice * io, int indentLevel, bool beginNoIndent )
{
	if ( ! v.isValid() )
	{
		// invalid or null?
		io->write("null");
	}else if (( v.type() == QVariant::List ) || ( v.type() == QVariant::StringList ))
	{
		// an array or a stringlist?
		bool isFirst = true;
		io->write(getSeparator(indentMode, beginNoIndent ? 0 : indentLevel, BeginSeparator, SquareBracket));

		const QVariantList list = v.toList();
		Q_FOREACH( const QVariant& var, list )
		{
			if(!isFirst)
				io->write(getSeparator(indentMode, indentLevel, JoinSeparator, SquareBracket));
			isFirst = false;

			if(!serialize( var, io, indentLevel+1))
				return false;
		}
		io->write(getSeparator(indentMode, indentLevel, EndSeparator, SquareBracket));
	} else if ( v.type() == QVariant::Map )
示例#10
0
static LfpObject variantAsObject(const QVariant &v, const QString &name = QString())
{
	if(v.type() == QVariant::List)
	{
		QVariantList list = v.toList();
		LfpObject obj("sequence", name);
		for(int n = 0; n < list.count(); ++n)
			obj += variantAsObject(list[n]);
		return obj;
	}
	else if(v.type() == QVariant::Map)
	{
		QVariantMap map = v.toMap();
		LfpObject obj("map", name);
		QMapIterator<QString, QVariant> it(map);
		while(it.hasNext())
		{
			it.next();
			obj += variantAsObject(it.value(), it.key());
		}
		return obj;
	}
	else
	{
		if(v.type() == QVariant::Bool)
			return LfpObject("bool", name, v);
		else if(v.type() == QVariant::Int || v.type() == QVariant::LongLong)
			return LfpObject("int", name, v);
		else if(v.type() == QVariant::String)
			return LfpObject("string", name, v);
		else if(v.type() == QVariant::ByteArray)
			return LfpObject("bytearray", name, v);
		else
			return LfpObject(); // TODO: error?
	}
}
示例#11
0
QByteArray Serializer::SerializerPrivate::serialize( const QVariant &v, int reserved )
{
  QByteArray str;
  bool error = false;
  QByteArray indent;

  if ( ! v.isValid() ) { // invalid or null?
    str = "null";
  } else if (( v.type() == QVariant::List ) || ( v.type() == QVariant::StringList )){ // an array or a stringlist?
    const QVariantList list = v.toList();
    QList<QByteArray> values;
    Q_FOREACH( const QVariant& var, list )
    {
      reserved++;
      QByteArray serializedValue = serialize( var,reserved );
      reserved--;
      if ( serializedValue.isNull() ) {
        error = true;
        break;
      }
      values << serializedValue;
    }

    if (indentMode == QJson::IndentMinimum) {
      QByteArray indent = buildIndent(reserved - 1);
      str = "[\n" + join( values, ",\n" ) + "\n" + indent + "]";
    }
    else if (indentMode == QJson::IndentMedium || indentMode == QJson::IndentFull){
      QByteArray indent = buildIndent(reserved);
      str = "[\n" + join( values, ",\n" ) + "\n" + indent + "]";
    }
    else {
      str = "[ " + join( values, ", " ) + " ]";
    }

  } else if ( v.type() == QVariant::Map ) { // variant is a map?
QJsonValue QMetaObjectPublisher::wrapResult(const QVariant &result)
{
    if (QObject *object = result.value<QObject *>()) {
        QJsonObject objectInfo;
        objectInfo[KEY_QOBJECT] = true;
        QString id = registeredObjectIds.value(object);
        if (id.isEmpty()) {
            // neither registered, nor wrapped, do so now
            id = QUuid::createUuid().toString();

            registeredObjectIds[object] = id;
            registeredObjects[id] = object;

            QJsonObject info = classInfoForObject(object);
            wrappedObjects[object] = info;
            objectInfo[KEY_DATA] = info;
            if (propertyUpdatesInitialized) {
                // if other objects are initialized already, do the same here
                initializePropertyUpdates(object, info);
            }
        } else if (wrappedObjects.contains(object)) {
            // if this object was wrapped, send the full class info
            // this is required for proper multi-client support
            objectInfo[KEY_DATA] = wrappedObjects.value(object);
        }

        objectInfo[KEY_ID] = id;
        return objectInfo;
    } else if (result.canConvert<QVariantList>()) {
        // recurse and potentially wrap contents of the array
        return wrapList(result.toList());
    }

    // no need to wrap this
    return QJsonValue::fromVariant(result);
}
示例#13
0
文件: json.cpp 项目: Overx/Velocity
QByteArray Json::serialize(const QVariant &data, bool &success)
{
    QByteArray str;
    success = true;

    if(!data.isValid()) // invalid or null?
    {
        str = "null";
    }
    else if((data.type() == QVariant::List) ||
            (data.type() == QVariant::StringList)) // variant is a list?
    {
        QList<QByteArray> values;
        const QVariantList list = data.toList();
        Q_FOREACH(const QVariant& v, list)
        {
            QByteArray serializedValue = serialize(v);
            if(serializedValue.isNull())
            {
                success = false;
                break;
            }
            values << serializedValue;
        }
void PlayerComponent::updateAudioDeviceList()
{
  QVariantList settingList;
  QVariant list = getAudioDeviceList();
  QSet<QString> devices;
  foreach (const QVariant& d, list.toList())
  {
    Q_ASSERT(d.type() == QVariant::Map);
    QVariantMap dmap = d.toMap();

    devices.insert(dmap["name"].toString());

    QVariantMap entry;
    entry["value"] = dmap["name"];
    entry["title"] = dmap["description"];

    settingList << entry;
  }

  SettingsComponent::Get().updatePossibleValues(SETTINGS_SECTION_AUDIO, "device", settingList);

  checkCurrentAudioDevice(m_audioDevices, devices);
  m_audioDevices = devices;
}
示例#15
0
int JsonDbPartition::remove(const QJSValue &object,  const QJSValue &options, const QJSValue &callback)
{
    QJSValue actualOptions = options;
    QJSValue actualCallback = callback;
    if (options.isCallable()) {
        if (!callback.isUndefined()) {
            qWarning() << "Callback should be the last parameter.";
            return -1;
        }
        actualCallback = actualOptions;
        actualOptions = QJSValue(QJSValue::UndefinedValue);
    }

    QVariantMap opts = qjsvalue_to_qvariant(actualOptions).toMap();
    QJsonDbWriteRequest::ConflictResolutionMode conflictMode =
            static_cast<QJsonDbWriteRequest::ConflictResolutionMode>(opts.value(QStringLiteral("mode")).toInt());

    QVariant obj = qjsvalue_to_qvariant(object);
    QJsonDbWriteRequest *request(0);
    if (obj.type() == QVariant::List) {
        request = new QJsonDbRemoveRequest(qvariantlist_to_qjsonobject_list(obj.toList()));
    } else {
        request = new QJsonDbRemoveRequest(QJsonObject::fromVariantMap(obj.toMap()));
    }
    request->setPartition(_name);
    request->setConflictResolutionMode(conflictMode);
    connect(request, SIGNAL(finished()), this, SLOT(requestFinished()));
    connect(request, SIGNAL(finished()), request, SLOT(deleteLater()));
    connect(request, SIGNAL(error(QtJsonDb::QJsonDbRequest::ErrorCode,QString)),
            this, SLOT(requestError(QtJsonDb::QJsonDbRequest::ErrorCode,QString)));
    connect(request, SIGNAL(error(QtJsonDb::QJsonDbRequest::ErrorCode,QString)),
            request, SLOT(deleteLater()));
    JsonDatabase::sharedConnection().send(request);
    writeCallbacks.insert(request, actualCallback);
    return request->property("requestId").toInt();
}
示例#16
0
void ParameterProperties::setValue(QVariant p)
{
  setType(p.type());
  switch (p.type())
  {
    case QVariant::Bool:
      _bool->setCurrentIndex(p.toBool() ? 1 : 0);
      break;
    case QVariant::Int:
      _int->setText(QString::number(p.toInt()));
      break;
    case QVariant::Double:
      _double->setText(QString::number(p.toDouble()));
      break;
    case QVariant::String:
      _string->setText(p.toString());
    break;
    case QVariant::List:
      setList(p.toList());
      break;
    default:
      _string->setText(p.toString());
  }
}
示例#17
0
bool QtVariantContext::isFalse(const QString& key) const
{
	QVariant value = this->value(key);
	switch (value.userType()) {
	case QMetaType::QChar:
	case QMetaType::Double:
	case QMetaType::Float:
	case QMetaType::Int:
	case QMetaType::UInt:
	case QMetaType::LongLong:
	case QMetaType::ULongLong:
	case QVariant::Bool:
		return !value.toBool();
	case QVariant::List:
	case QVariant::StringList:
		return value.toList().isEmpty();
	case QVariant::Hash:
		return value.toHash().isEmpty();
	case QVariant::Map:
		return value.toMap().isEmpty();
	default:
		return value.toString().isEmpty();
	}
}
示例#18
0
void AsyncSqlWorker::backup() {
	LOG_DEBUG(TAG_ASYNCWORKER, "getFeedsList");
	QString query = "SELECT * FROM FEED_TABLE";
	LOG_DEBUG(TAG_ASYNCWORKER, "GET_FEEDS = %s", query.toStdString().c_str());
	QVariant resultFromQuery = m_pSqlDataAccess->execute(query);
	// serialize to shared files
	QVariantList feedsList = resultFromQuery.toList();
	if (!feedsList.isEmpty()) {
		QFile file(QString("/accounts/1000/shared/documents/newsspotbackup"));
		if (!file.open(QIODevice::WriteOnly)) {
			qWarning() << "Cannot write to shared folder: " + file.fileName();
			return;
		}
		QDataStream out(&file);
		if (out.status() == QDataStream::Ok) {
			out << feedsList;
		} else {
			qWarning() << "Error writing to data stream.";
		}
		file.close();
	} else {
		qDebug() << "No feeds to backup.";
	}
}
示例#19
0
void TrackerClient::httpRequestDone(bool error)
{
    if (lastTrackerRequest) {
        emit stopped();
        return;
    }

    if (error) {
        emit connectionError(http.error());
        return;
    }

    QByteArray response = http.readAll();
    http.abort();

    BencodeParser parser;
    if (!parser.parse(response)) {
        qWarning("Error parsing bencode response from tracker: %s",
                 qPrintable(parser.errorString()));
        http.abort();
        return;
    }

    QMap<QByteArray, QVariant> dict = parser.dictionary();

    if (dict.contains("failure reason")) {
        // no other items are present
        emit failure(QString::fromUtf8(dict.value("failure reason").toByteArray()));
        return;
    }

    if (dict.contains("warning message")) {
        // continue processing
        emit warning(QString::fromUtf8(dict.value("warning message").toByteArray()));
    }

    if (dict.contains("tracker id")) {
        // store it
        trackerId = dict.value("tracker id").toByteArray();
    }

    if (dict.contains("interval")) {
        // Mandatory item
        if (requestIntervalTimer != -1)
            killTimer(requestIntervalTimer);
        requestIntervalTimer = startTimer(dict.value("interval").toInt() * 1000);
    }

    if (dict.contains("peers")) {
        // store it
        peers.clear();
        QVariant peerEntry = dict.value("peers");
        if (peerEntry.type() == QVariant::List) {
            QList<QVariant> peerTmp = peerEntry.toList();
            for (int i = 0; i < peerTmp.size(); ++i) {
                TorrentPeer tmp;
                QMap<QByteArray, QVariant> peer = qVariantValue<QMap<QByteArray, QVariant> >(peerTmp.at(i));
                tmp.id = QString::fromUtf8(peer.value("peer id").toByteArray());
                tmp.address.setAddress(QString::fromUtf8(peer.value("ip").toByteArray()));
                tmp.port = peer.value("port").toInt();
                peers << tmp;
            }
        } else {
            QByteArray peerTmp = peerEntry.toByteArray();
            for (int i = 0; i < peerTmp.size(); i += 6) {
                TorrentPeer tmp;
                uchar *data = (uchar *)peerTmp.constData() + i;
                tmp.port = (int(data[4]) << 8) + data[5];
                uint ipAddress = 0;
                ipAddress += uint(data[0]) << 24;
                ipAddress += uint(data[1]) << 16;
                ipAddress += uint(data[2]) << 8;
                ipAddress += uint(data[3]);
                tmp.address.setAddress(ipAddress);
                peers << tmp;
            }
        }
        emit peerListUpdated(peers);
    }
}
示例#20
0
int lqtL_qvariant_value(lua_State *L) {
	QVariant* self = static_cast<QVariant*>(lqtL_toudata(L, 1, "QVariant*"));
	lqtL_selfcheck(L, self, "QVariant");
	QVariant::Type type;
	if (lua_isnoneornil(L, 2)) {
		type = self->type();
	} else {
		type = (QVariant::Type)lqtL_toenum(L, 2, "QVariant.Type");
		const char * currentType = self->typeName();
		if (!self->canConvert(type) || !self->convert(type)) {
			lua_pushnil(L);
			lua_pushfstring(L, "cannot convert %s to %s", currentType, self->typeToName(type));
			return 2;
		}
	}
	switch (self->type()) {
		case QVariant::Invalid: lua_pushnil(L); return 1;
		/* basic types */
		case QVariant::Bool: lua_pushboolean(L, self->toBool()); return 1;
		case QVariant::Double: lua_pushnumber(L, self->toDouble()); return 1;
		case QVariant::Int: lua_pushinteger(L, self->toInt()); return 1;
		case QVariant::UInt: lua_pushinteger(L, self->toUInt()); return 1;
		case QVariant::LongLong: lua_pushnumber(L, self->toLongLong()); return 1;
		case QVariant::ULongLong: lua_pushnumber(L, self->toULongLong()); return 1;
		case QVariant::ByteArray: {
			const QByteArray &ba = self->toByteArray();
			lua_pushlstring(L, ba.data(), ba.size());
			return 1;
		};
		/* QtCore types */
		case QVariant::BitArray: lqtL_passudata(L, new QBitArray(self->value<QBitArray>()), "QBitArray*"); return 1;
		case QVariant::Char: lqtL_passudata(L, new QChar(self->value<QChar>()), "QChar*"); return 1;
		case QVariant::Date: lqtL_passudata(L, new QDate(self->value<QDate>()), "QDate*"); return 1;
		case QVariant::DateTime: lqtL_passudata(L, new QDateTime(self->value<QDateTime>()), "QDateTime*"); return 1;
		case QVariant::KeySequence: lqtL_passudata(L, new QKeySequence(self->value<QKeySequence>()), "QKeySequence*"); return 1;
		case QVariant::Line: lqtL_passudata(L, new QLine(self->value<QLine>()), "QLine*"); return 1;
		case QVariant::LineF: lqtL_passudata(L, new QLineF(self->value<QLineF>()), "QLineF*"); return 1;
		case QVariant::List: lqtL_passudata(L, new QList<QVariant>(self->toList()), "QList<QVariant>*"); return 1;
		case QVariant::Locale: lqtL_passudata(L, new QLocale(self->value<QLocale>()), "QLocale*"); return 1;
		case QVariant::Point: lqtL_passudata(L, new QPoint(self->value<QPoint>()), "QPoint*"); return 1;
		case QVariant::PointF: lqtL_passudata(L, new QPointF(self->value<QPointF>()), "QPointF*"); return 1;
		case QVariant::Rect: lqtL_passudata(L, new QRect(self->value<QRect>()), "QRect*"); return 1;
		case QVariant::RectF: lqtL_passudata(L, new QRectF(self->value<QRectF>()), "QRectF*"); return 1;
		case QVariant::RegExp: lqtL_passudata(L, new QRegExp(self->value<QRegExp>()), "QRegExp*"); return 1;
		case QVariant::Size: lqtL_passudata(L, new QSize(self->value<QSize>()), "QSize*"); return 1;
		case QVariant::SizeF: lqtL_passudata(L, new QSizeF(self->value<QSizeF>()), "QSizeF*"); return 1;
		case QVariant::String: lqtL_passudata(L, new QString(self->value<QString>()), "QString*"); return 1;
		case QVariant::StringList: lqtL_passudata(L, new QStringList(self->value<QStringList>()), "QStringList*"); return 1;
		case QVariant::Time: lqtL_passudata(L, new QTime(self->value<QTime>()), "QTime*"); return 1;
		case QVariant::Url: lqtL_passudata(L, new QUrl(self->value<QUrl>()), "QUrl*"); return 1;
#ifdef MODULE_qtgui
		/* QtGui types */
		case QVariant::Bitmap: lqtL_passudata(L, new QBitmap(self->value<QBitmap>()), "QBitmap*"); return 1;
		case QVariant::Brush: lqtL_passudata(L, new QBrush(self->value<QBrush>()), "QBrush*"); return 1;
		case QVariant::Color: lqtL_passudata(L, new QColor(self->value<QColor>()), "QColor*"); return 1;
		case QVariant::Cursor: lqtL_passudata(L, new QCursor(self->value<QCursor>()), "QCursor*"); return 1;
		case QVariant::Font: lqtL_passudata(L, new QFont(self->value<QFont>()), "QFont*"); return 1;
		case QVariant::Icon: lqtL_passudata(L, new QIcon(self->value<QIcon>()), "QIcon*"); return 1;
		case QVariant::Image: lqtL_passudata(L, new QImage(self->value<QImage>()), "QImage*"); return 1;
		case QVariant::Matrix: lqtL_passudata(L, new QMatrix(self->value<QMatrix>()), "QMatrix*"); return 1;
		case QVariant::Matrix4x4: lqtL_passudata(L, new QMatrix4x4(self->value<QMatrix4x4>()), "QMatrix4x4*"); return 1;
		case QVariant::Palette: lqtL_passudata(L, new QPalette(self->value<QPalette>()), "QPalette*"); return 1;
		case QVariant::Pen: lqtL_passudata(L, new QPen(self->value<QPen>()), "QPen*"); return 1;
		case QVariant::Pixmap: lqtL_passudata(L, new QPixmap(self->value<QPixmap>()), "QPixmap*"); return 1;
		case QVariant::Polygon: lqtL_passudata(L, new QPolygon(self->value<QPolygon>()), "QPolygon*"); return 1;
		case QVariant::Quaternion: lqtL_passudata(L, new QQuaternion(self->value<QQuaternion>()), "QQuaternion*"); return 1;
		case QVariant::Region: lqtL_passudata(L, new QRegion(self->value<QRegion>()), "QRegion*"); return 1;
		case QVariant::SizePolicy: lqtL_passudata(L, new QSizePolicy(self->value<QSizePolicy>()), "QSizePolicy*"); return 1;
		case QVariant::Transform: lqtL_passudata(L, new QTransform(self->value<QTransform>()), "QTransform*"); return 1;
		case QVariant::TextFormat: lqtL_passudata(L, new QTextFormat(self->value<QTextFormat>()), "QTextFormat*"); return 1;
		case QVariant::TextLength: lqtL_passudata(L, new QTextLength(self->value<QTextLength>()), "QTextLength*"); return 1;
		case QVariant::Vector2D: lqtL_passudata(L, new QVector2D(self->value<QVector2D>()), "QVector2D*"); return 1;
		case QVariant::Vector3D: lqtL_passudata(L, new QVector3D(self->value<QVector3D>()), "QVector3D*"); return 1;
		case QVariant::Vector4D: lqtL_passudata(L, new QVector4D(self->value<QVector4D>()), "QVector4D*"); return 1;
#endif
	}
	return 0;
}
示例#21
0
PublishFormat PublishFormat::fromVariant(Type type, const QVariant &in, bool *ok, QString *errorMessage)
{
	QString pn;
	if(type == HttpResponse)
		pn = "'http-response'";
	else if(type == HttpStream)
		pn = "'http-stream'";
	else // WebSocketMessage
		pn = "'ws-message'";

	if(!isKeyedObject(in))
	{
		setError(ok, errorMessage, QString("%1 is not an object").arg(pn));
		return PublishFormat();
	}

	PublishFormat out(type);
	bool ok_;

	if(type == HttpResponse)
	{
		if(keyedObjectContains(in, "code"))
		{
			QVariant vcode = keyedObjectGetValue(in, "code");
			if(!vcode.canConvert(QVariant::Int))
			{
				setError(ok, errorMessage, QString("%1 contains 'code' with wrong type").arg(pn));
				return PublishFormat();
			}

			out.code = vcode.toInt();

			if(out.code < 0 || out.code > 999)
			{
				setError(ok, errorMessage, QString("%1 contains 'code' with invalid value").arg(pn));
				return PublishFormat();
			}
		}
		else
			out.code = 200;

		QString reasonStr = getString(in, pn, "reason", false, &ok_, errorMessage);
		if(!ok_)
		{
			if(ok)
				*ok = false;
			return PublishFormat();
		}

		if(!reasonStr.isEmpty())
			out.reason = reasonStr.toUtf8();
		else
			out.reason = StatusReasons::getReason(out.code);

		if(keyedObjectContains(in, "headers"))
		{
			QVariant vheaders = keyedObjectGetValue(in, "headers");
			if(vheaders.type() == QVariant::List)
			{
				foreach(const QVariant &vheader, vheaders.toList())
				{
					if(vheader.type() != QVariant::List)
					{
						setError(ok, errorMessage, "headers contains element with wrong type");
						return PublishFormat();
					}

					QVariantList lheader = vheader.toList();
					if(lheader.count() != 2)
					{
						setError(ok, errorMessage, "headers contains list with wrong number of elements");
						return PublishFormat();
					}

					QString name = getString(lheader[0], &ok_);
					if(!ok_)
					{
						setError(ok, errorMessage, "header contains name element with wrong type");
						return PublishFormat();
					}

					QString val = getString(lheader[1], &ok_);
					if(!ok_)
					{
						setError(ok, errorMessage, "header contains value element with wrong type");
						return PublishFormat();
					}

					out.headers += HttpHeader(name.toUtf8(), val.toUtf8());
				}
			}
			else if(isKeyedObject(vheaders))
示例#22
0
bool GmpProtocol::setFieldData(int index, const QVariant &value, 
        FieldAttrib attrib)
{
    bool isOk = false;

    if (attrib != FieldValue)
        goto _exit;

    switch (index)
    {
        case kType:
        {
            uint type = value.toUInt(&isOk);
            if (isOk)
                data.set_type(type);
            break;
        }
        case kRsvdMrtCode:
        {
            uint val = value.toUInt(&isOk);
            if (isOk)
                data.set_rsvd_code(val);
            break;
        }
        case kChecksum:
        {
            uint csum = value.toUInt(&isOk);
            if (isOk)
                data.set_checksum(csum);
            break;
        }
        case kMldMrt:
        {
            uint mrt = value.toUInt(&isOk);
            if (isOk)
                data.set_max_response_time(mrt);
            break;
        }
        case kGroupAddress:
            // XXX: Handled by subclass
            isOk = false;
            break;
        case kRsvd1:
            isOk = false;
            break;
        case kSFlag:
        {
            bool flag = value.toBool();
            data.set_s_flag(flag);
            isOk = true;
            break;
        }
        case kQrv:
        {
            uint qrv = value.toUInt(&isOk);
            if (isOk)
                data.set_qrv(qrv);
            break;
        }
        case kQqic:
        {
            uint qqi = value.toUInt(&isOk);
            if (isOk)
                data.set_qqi(qqi);
            break;
        }
        case kSourceCount:
        {
            uint count = value.toUInt(&isOk);
            if (isOk)
                data.set_source_count(count);
            break;
        }
        case kSources:
            // XXX: Handled by subclass
            isOk = false;
            break;
        case kRsvd2:
            isOk = false;
            break;
        case kGroupRecordCount:
        {
            uint count = value.toUInt(&isOk);
            if (isOk)
                data.set_group_record_count(count);
            break;
        }
        case kGroupRecords:
        {
            QVariantList list = value.toList();

            data.clear_group_records();

            for (int i = 0; i < list.count(); i++)
            {
                QVariantMap grpRec = list.at(i).toMap();
                OstProto::Gmp::GroupRecord *rec = data.add_group_records();
                
                rec->set_type(OstProto::Gmp::GroupRecord::RecordType(
                            grpRec["groupRecordType"].toInt()));
                // NOTE: rec->group_address => subclass responsibility
                rec->set_is_override_source_count(
                            grpRec["overrideGroupRecordSourceCount"].toBool());
                rec->set_source_count(grpRec["groupRecordSourceCount"].toUInt());
                // NOTE: rec->sources => subclass responsibility
                rec->set_is_override_aux_data_length(
                            grpRec["overrideAuxDataLength"].toBool());
                rec->set_aux_data_length(grpRec["auxDataLength"].toUInt());
                QByteArray ba = grpRec["auxData"].toByteArray();
                // pad to word boundary
                if (ba.size() % 4)
                    ba.append(QByteArray(4 - (ba.size() % 4), char(0)));
                rec->set_aux_data(std::string(ba.constData(), ba.size()));
            }

            break;
        }

        // Meta Fields
        case kIsOverrideChecksum:
        {
            bool ovr = value.toBool();
            data.set_is_override_checksum(ovr);
            isOk = true;
            break;
        }

        case kGroupMode:
        {
            uint mode = value.toUInt(&isOk);
            if (isOk && data.GroupMode_IsValid(mode))
                data.set_group_mode((OstProto::Gmp::GroupMode)mode);
            break;
        }
        case kGroupCount:
        {
            uint count = value.toUInt(&isOk);
            if (isOk)
                data.set_group_count(count);
            break;
        }
        case kGroupPrefix:
        {
            uint prefix = value.toUInt(&isOk);
            if (isOk)
                data.set_group_prefix(prefix);
            break;
        }

        case kIsOverrideSourceCount:
        {
            bool ovr = value.toBool();
            data.set_is_override_source_count(ovr);
            isOk = true;
            break;
        }

        case kIsOverrideGroupRecordCount:
        {
            bool ovr = value.toBool();
            data.set_is_override_group_record_count(ovr);
            isOk = true;
            break;
        }
        default:
            qFatal("%s: unimplemented case %d in switch", __PRETTY_FUNCTION__,
                index);
            break;
    }

_exit:
    return isOk;
}
示例#23
0
void insertArgument(QDomDocument& doc, QDomElement& where, const QVariant& what)
{
	switch(what.type())
	{
	case QMetaType::Bool:
		insertValue(doc, where, "boolean", what.toBool() ? "1" : "0");
		break;
	case QMetaType::Int:
	case QMetaType::UInt:
//	case QMetaType::Long:
//	case QMetaType::Short:
//	case QMetaType::ULong:
//	case QMetaType::UShort:
		insertValue(doc, where, "i4", what.toString());
		break;
	case QMetaType::ULongLong:
	case QMetaType::LongLong:
		insertValue(doc, where, "ex:i8", what.toString());
		break;
//	case QMetaType::Float:
	case QMetaType::Double:
		insertValue(doc, where, "double", what.toString());
		break;
	case QMetaType::QString:
		insertValue(doc, where, "string", what.toString());
		break;
	case QMetaType::QByteArray:
		insertValue(doc, where, "base64", what.toByteArray().toBase64());
		break;
	case QMetaType::QDateTime:
		insertValue(doc, where, "dateTime.iso8601", what.toDateTime().toString(Qt::ISODate));
		break;
	case QMetaType::QVariantList:
		{
			QDomElement array, data, value;
			value = doc.createElement("value");
			array = doc.createElement("array");
			data = doc.createElement("data");
			
			QList<QVariant> list = what.toList();
			foreach(QVariant v, list)
				insertArgument(doc, data, v);
			
			array.appendChild(data);
			value.appendChild(array);
			where.appendChild(value);
		}
		break;
	case QMetaType::QStringList:
		{
			QDomElement array, data, value;
			value = doc.createElement("value");
			array = doc.createElement("array");
			data = doc.createElement("data");

			QStringList list = what.toStringList();
			foreach(QString v, list)
				insertArgument(doc, data, v);

			array.appendChild(data);
			value.appendChild(array);
			where.appendChild(value);
		}
		break;
	case QMetaType::QVariantMap:
		{
			QDomElement _struct, value;
			_struct = doc.createElement("struct");
			value = doc.createElement("value");
			
			QMap<QString, QVariant> map = what.toMap();
			for(QMap<QString, QVariant>::iterator it = map.begin(); it != map.end(); it++)
			{
				QDomElement member = doc.createElement("member");
				QDomElement name = doc.createElement("name");
				QDomText ntext = doc.createTextNode(it.key());
				
				name.appendChild(ntext);
				member.appendChild(name);
				insertArgument(doc, member, it.value());
				_struct.appendChild(member);
			}
			
			value.appendChild(_struct);
			where.appendChild(value);
		}
		break;
	default:
		qDebug() << "XmlRpc::insertArgument(): Unsupported QVariant type:" << what.type();
	}
}
示例#24
0
void RenderWindow::sEdit()
{
    if(_table->currentSelection() == -1)
        return;

    bool do_update = false;

    int r = _table->currentRow();
    Q3CheckTableItem * ctItem = (Q3CheckTableItem*)_table->item(r, 0);
    if(ctItem == 0)
        return;
    bool active = ctItem->isChecked();
    QString name = _table->text(r, 1);
    QVariant var = _params[name];

    BoolEdit * be = 0;
    IntEdit * ie = 0;
    DoubleEdit * de = 0;
    StringEdit * se = 0;
    ListEdit * le = 0;

    switch(var.type()) {
    case QVariant::Bool:
        be = new BoolEdit(this);
        be->_name->setText(name);
        be->_active->setChecked(active);
        be->setValue(var.toBool());
        if(be->exec() == QDialog::Accepted) {
            var = QVariant(be->value(), 0);
            active = be->_active->isChecked();
            do_update = TRUE;
        }
        delete be;
        be = 0;
        break;
    case QVariant::Int:
        ie = new IntEdit(this);
        ie->_name->setText(name);
        ie->_active->setChecked(active);
        ie->_value->setText(QString::number(var.toInt()));
        if(ie->exec() == QDialog::Accepted) {
            var = QVariant(ie->_value->text().toInt());
            active = ie->_active->isChecked();
            do_update = TRUE;
        }
        delete ie;
        ie = 0;
        break;
    case QVariant::Double:
        de = new DoubleEdit(this);
        de->_name->setText(name);
        de->_active->setChecked(active);
        de->_value->setText(QString::number(var.toDouble()));
        if(de->exec() == QDialog::Accepted) {
            var = QVariant(de->_value->text().toDouble());
            active = de->_active->isChecked();
            do_update = TRUE;
        }
        delete de;
        de = 0;
        break;
    case QVariant::String:
        se = new StringEdit(this);
        se->_name->setText(name);
        se->_active->setChecked(active);
        se->_value->setText(var.toString());
        if(se->exec() == QDialog::Accepted) {
            var = QVariant(se->_value->text());
            active = se->_active->isChecked();
            do_update = TRUE;
        }
        delete se;
        se = 0;
        break;
    case QVariant::List:
        le = new ListEdit(this);
        le->_name->setText(name);
        le->_active->setChecked(active);
        le->setList(var.toList());
        if(le->exec() == QDialog::Accepted) {
            var = QVariant(le->list());
            active = le->_active->isChecked();
            do_update = TRUE;
        }
        delete le;
        le = 0;
        break;
    default:
        QMessageBox::warning(this, tr("Warning"), QString(tr("I do not know how to edit QVariant type %1.")).arg(var.typeName()));
    };

    if(do_update) {
        _params[name] = var;
        ctItem->setChecked(active);
        _table->setText(r, 1, name);
        _table->setText(r, 2, var.typeName());
        _table->setText(r, 3, var.toString());
    }
}
示例#25
0
void toXmlRpcValue( const int spaces, const QVariant &child, QByteArray &b )
{
    #ifdef DEBUG_XMLRPC
    qDebug() << "toXmlRpcValue()";
    #endif
    switch ( child.type() )
        {
        case QVariant::LongLong:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><longlong>" + QString::number( child.toLongLong()) + "</longlong></value>" );
            break;
        case QVariant::ULongLong:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><ulonglong>" + QString::number( child.toULongLong()) + "</ulonglong></value>" );
            break;
        case QVariant::Int:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><int>" + QString::number( child.toInt()) + "</int></value>" );
            break;
        case QVariant::Bool:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( QString( "<value><boolean>") + (child.toBool() ? "1" : "0") + "</boolean></value>" );
            break;
        case QVariant::String:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><string>" + child.toString() + "</string></value>" );
            break;
        case QVariant::Double:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><double>" + QString::number( child.toDouble()) + "</double></value>" );
            break;
        case QVariant::Time:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><time.iso8601>" + child.toTime().toString( "HH:mm:ss") +
                      "</time.iso8601></value>" );
            break;
        case QVariant::Date:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><date.iso8601>" + child.toDate().toString( "yyyyMMdd") +
                      "</date.iso8601></value>" );
            break;

        case QVariant::DateTime:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><dateTime.iso8601>" + child.toDateTime().toString( "yyyyMMddTHH:mm:ss") +
                      "</dateTime.iso8601></value>" );
            break;
        case QVariant::ByteArray:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><base64>" + child.toByteArray().toBase64() + "</base64></value>" );
            break;
        case QVariant::List:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><array><data>" );
            toXmlRpcArray( spaces + 2, child.toList(), b );
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "</data></array></value>" );
            break;
        case QVariant::Map:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "<value><struct>" );
            toXmlRpcStruct( spaces + 2, child.toMap(), b );
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append( "</struct></value>" );
            break;
        case QVariant::Invalid:
            #ifdef XMLRPC_WITHSPACES
            b.append( '\n' );
            b.append( QByteArray( spaces, ' ') );
            #endif
            b.append("<value><invalid/></value>");
            break;
        default:
            qCritical() << "toXmlRpcValue(): unknown return xmlrpc type" << child.typeName() << endl << child;
            qFatal( "programming error" );
        }
}
示例#26
0
void QWinSettingsPrivate::set(const QString &uKey, const QVariant &value)
{
    if (writeHandle() == 0) {
        setStatus(QSettings::AccessError);
        return;
    }

    QString rKey = escapedKey(uKey);

    HKEY handle = createOrOpenKey(writeHandle(), registryPermissions, keyPath(rKey));
    if (handle == 0) {
        setStatus(QSettings::AccessError);
        return;
    }

    DWORD type;
    QByteArray regValueBuff;

    // Determine the type
    switch (value.type()) {
        case QVariant::List:
        case QVariant::StringList: {
            // If none of the elements contains '\0', we can use REG_MULTI_SZ, the
            // native registry string list type. Otherwise we use REG_BINARY.
            type = REG_MULTI_SZ;
            QStringList l = variantListToStringList(value.toList());
            QStringList::const_iterator it = l.constBegin();
            for (; it != l.constEnd(); ++it) {
                if ((*it).length() == 0 || stringContainsNullChar(*it)) {
                    type = REG_BINARY;
                    break;
                }
            }

            if (type == REG_BINARY) {
                QString s = variantToString(value);
                regValueBuff = QByteArray((const char*)s.utf16(), s.length() * 2);
            } else {
                QStringList::const_iterator it = l.constBegin();
                for (; it != l.constEnd(); ++it) {
                    const QString &s = *it;
                    regValueBuff += QByteArray((const char*)s.utf16(), (s.length() + 1) * 2);
                }
                regValueBuff.append((char)0);
                regValueBuff.append((char)0);
            }
            break;
        }

        case QVariant::Int:
        case QVariant::UInt: {
            type = REG_DWORD;
            qint32 i = value.toInt();
            regValueBuff = QByteArray((const char*)&i, sizeof(qint32));
            break;
        }

        case QVariant::LongLong:
        case QVariant::ULongLong: {
            type = REG_QWORD;
            qint64 i = value.toLongLong();
            regValueBuff = QByteArray((const char*)&i, sizeof(qint64));
            break;
        }

        case QVariant::ByteArray:
            // fallthrough intended

        default: {
            // If the string does not contain '\0', we can use REG_SZ, the native registry
            // string type. Otherwise we use REG_BINARY.
            QString s = variantToString(value);
            type = stringContainsNullChar(s) ? REG_BINARY : REG_SZ;
            if (type == REG_BINARY) {
                regValueBuff = QByteArray((const char*)s.utf16(), s.length() * 2);
            } else {
                regValueBuff = QByteArray((const char*)s.utf16(), (s.length() + 1) * 2);
            }
            break;
        }
    }

    // set the value
    LONG res = RegSetValueEx(handle, reinterpret_cast<const wchar_t *>(keyName(rKey).utf16()), 0, type,
                             reinterpret_cast<const unsigned char*>(regValueBuff.constData()),
                             regValueBuff.size());

    if (res == ERROR_SUCCESS) {
        deleteWriteHandleOnExit = false;
    } else {
        qWarning("QSettings: failed to set subkey \"%s\": %s",
                rKey.toLatin1().data(), errorCodeToString(res).toLatin1().data());
        setStatus(QSettings::AccessError);
    }

    RegCloseKey(handle);
}
示例#27
0
void XmlPListSerializer::RenderValue(const QString &sName,
                                     const QVariant &vValue,
                                     bool  needKey)
{
    if ( vValue.canConvert<QObject*>())
    {
        const QObject *pObject = vValue.value<QObject*>();
        SerializePListObjectProperties(sName, pObject, needKey);
        return;
    }

    switch(vValue.type())
    {
        case QVariant::List:
        {
            RenderList(sName, vValue.toList());
            break;
        }

        case QVariant::StringList:
        {
            RenderStringList(sName, vValue.toStringList());
            break;
        }

        case QVariant::Map:
        {
            RenderMap(sName, vValue.toMap());
            break;
        }

        case QVariant::DateTime:
        {
            if (vValue.toDateTime().isValid())
            {
                if (needKey)
                    m_pXmlWriter->writeTextElement("key", sName);
                m_pXmlWriter->writeTextElement("date", vValue.toDateTime()
                                               .toUTC().toString("yyyy-MM-ddThh:mm:ssZ"));
            }
            break;
        }

        case QVariant::ByteArray:
        {
            if (!vValue.toByteArray().isNull())
            {
                if (needKey)
                    m_pXmlWriter->writeTextElement("key", sName);
                m_pXmlWriter->writeTextElement("data",
                                vValue.toByteArray().toBase64().data());
            }
            break;
        }

        case QVariant::Bool:
        {
            if (needKey)
                m_pXmlWriter->writeTextElement("key", sName);
            m_pXmlWriter->writeEmptyElement(vValue.toBool() ?
                                            "true" : "false");
            break;
        }

        case QVariant::UInt:
        case QVariant::ULongLong:
        {
            if (needKey)
                m_pXmlWriter->writeTextElement("key", sName);
            m_pXmlWriter->writeTextElement("integer",
                    QString::number(vValue.toULongLong()));
            break;
        }

        case QVariant::Int:
        case QVariant::LongLong:
        case QVariant::Double:
        {
            if (needKey)
                m_pXmlWriter->writeTextElement("key", sName);
            m_pXmlWriter->writeTextElement("real",
                    QString("%1").arg(vValue.toDouble(), 0, 'f', 6));
            break;
        }

        // anything else will be unrecognised, so wrap in a string
        case QVariant::String:
        default:
        {
            if (needKey)
                m_pXmlWriter->writeTextElement("key", sName);
            m_pXmlWriter->writeTextElement("string", vValue.toString());
            break;
        }
    }
}
示例#28
0
void comment::set(const ParameterList &pParams)
{
  QVariant param;
  bool     valid;

  param = pParams.value("comment_id", &valid);
  if (valid)
  {
    _cmnttype->setType(XComboBox::AllCommentTypes);
    _commentid = param.toInt();
    populate();
  }

  param = pParams.value("commentIDList", &valid);
  if (valid)
  {
    _commentIDList = param.toList();
    _commentLocation = _commentIDList.indexOf(_commentid);

    if((_commentLocation-1) >= 0)
      _prev->setEnabled(true); 
    else
      _prev->setEnabled(false); 

    if((_commentLocation+1) < _commentIDList.size())
      _next->setEnabled(true); 
    else
      _next->setEnabled(false); 
  }

  param = pParams.value("mode", &valid);
  if (valid)
  {
    if (param.toString() == "new")
    {
      _mode = cNew;
      
      _cmnttype->setFocus();
      _next->setVisible(false);
      _prev->setVisible(false);
    }
    else if (param.toString() == "edit")
    {
      _mode = cEdit;
      _next->setVisible(false);
      _prev->setVisible(false);
      _cmnttype->setEnabled(false);
    }
    else if (param.toString() == "view")
    {
      _mode = cView;
      _next->setVisible(true);
      _prev->setVisible(true);
      _cmnttype->setEnabled(false);
      _comment->setReadOnly(true);
      _save->hide();
      _close->setText(tr("&Close"));
      _close->setShortcut(QKeySequence::Close);
      _more->hide();

      _close->setFocus();
    }
  }

  param = pParams.value("sourceType", &valid);
  if (valid)
  {
    _sourcetype = param.toString();
    if(!(_mode == cEdit || _mode == cView))
    {
      //      CommentMap *map = Comments::commentMap().value(_sourcetype);
      //      _cmnttype->setType(map ? (XComboBox::XComboBoxTypes)map->doctypeId : XComboBox::AllCommentTypes);
      if (_sourcetype == "ADDR")
        _cmnttype->setType(XComboBox::AddressCommentTypes);
      else if (_sourcetype == "BBH")
        _cmnttype->setType(XComboBox::BBOMHeadCommentTypes);
      else if (_sourcetype == "BBI")
        _cmnttype->setType(XComboBox::BBOMItemCommentTypes);
      else if (_sourcetype == "BMH")
        _cmnttype->setType(XComboBox::BOMHeadCommentTypes);
      else if (_sourcetype == "BMI")
        _cmnttype->setType(XComboBox::BOMItemCommentTypes);
      else if (_sourcetype == "BOH")
        _cmnttype->setType(XComboBox::BOOHeadCommentTypes);
      else if (_sourcetype == "BOI")
        _cmnttype->setType(XComboBox::BOOItemCommentTypes);
      else if (_sourcetype == "CRMA")
        _cmnttype->setType(XComboBox::CRMAccountCommentTypes);
      else if (_sourcetype == "T")
        _cmnttype->setType(XComboBox::ContactCommentTypes);
      else if (_sourcetype == "C")
        _cmnttype->setType(XComboBox::CustomerCommentTypes);
      else if (_sourcetype == "EMP")
        _cmnttype->setType(XComboBox::EmployeeCommentTypes);
      else if (_sourcetype == "INCDT")
        _cmnttype->setType(XComboBox::IncidentCommentTypes);
      else if (_sourcetype == "I")
        _cmnttype->setType(XComboBox::ItemCommentTypes);
      else if (_sourcetype == "IS")
        _cmnttype->setType(XComboBox::ItemSiteCommentTypes);
      else if (_sourcetype == "IR")
        _cmnttype->setType(XComboBox::ItemSourceCommentTypes);
      else if (_sourcetype == "L")
        _cmnttype->setType(XComboBox::LocationCommentTypes);
      else if (_sourcetype == "LS")
        _cmnttype->setType(XComboBox::LotSerialCommentTypes);
      else if (_sourcetype == "OPP")
        _cmnttype->setType(XComboBox::OpportunityCommentTypes);
      else if (_sourcetype == "J")
        _cmnttype->setType(XComboBox::ProjectCommentTypes);
      else if (_sourcetype == "P")
        _cmnttype->setType(XComboBox::PurchaseOrderCommentTypes);
      else if (_sourcetype == "PI")
        _cmnttype->setType(XComboBox::PurchaseOrderItemCommentTypes);
      else if (_sourcetype == "RA")
        _cmnttype->setType(XComboBox::ReturnAuthCommentTypes);
      else if (_sourcetype == "RI")
        _cmnttype->setType(XComboBox::ReturnAuthItemCommentTypes);
      else if (_sourcetype == "Q")
        _cmnttype->setType(XComboBox::QuoteCommentTypes);
      else if (_sourcetype == "QI")
        _cmnttype->setType(XComboBox::QuoteItemCommentTypes);
      else if (_sourcetype == "S")
        _cmnttype->setType(XComboBox::SalesOrderCommentTypes);
      else if (_sourcetype == "SI")
        _cmnttype->setType(XComboBox::SalesOrderItemCommentTypes);
      else if (_sourcetype == "TA")
        _cmnttype->setType(XComboBox::TaskCommentTypes);
      else if (_sourcetype == "TIME")
        _cmnttype->setType(XComboBox::TimeAttendanceCommentTypes);
      else if (_sourcetype == "TD")
        _cmnttype->setType(XComboBox::TodoItemCommentTypes);
      else if (_sourcetype == "TO")
        _cmnttype->setType(XComboBox::TransferOrderCommentTypes);
      else if (_sourcetype == "TI")
        _cmnttype->setType(XComboBox::TransferOrderItemCommentTypes);
      else if (_sourcetype == "V")
        _cmnttype->setType(XComboBox::VendorCommentTypes);
      else if (_sourcetype == "WH")
        _cmnttype->setType(XComboBox::WarehouseCommentTypes);
      else if (_sourcetype == "W")
        _cmnttype->setType(XComboBox::WorkOrderCommentTypes);
      else
        _cmnttype->setType(XComboBox::AllCommentTypes);
    }
  }

  param = pParams.value("source_id", &valid);
  if (valid)
  {
    _targetId = param.toInt();
  }

  _comments->setType(_sourcetype);
  _comments->setId(_targetId);
}
示例#29
0
void ChangeProperties::updateProperties()
{
    bool hasControl = activex && !activex->isNull();
    tabWidget->setEnabled(hasControl);

    listProperties->clear();
    listEditRequests->clear();
    if (hasControl) {
        const QMetaObject *mo = activex->metaObject();
        const int numprops = mo->propertyCount();
        for (int i = mo->propertyOffset(); i < numprops; ++i) {
            const QMetaProperty property = mo->property(i);
            QTreeWidgetItem *item = new QTreeWidgetItem(listProperties);
            item->setText(0, QString::fromLatin1(property.name()));
            item->setText(1, QString::fromLatin1(property.typeName()));
            if (!property.isDesignable()) {
                item->setTextColor(0, Qt::gray);
                item->setTextColor(1, Qt::gray);
                item->setTextColor(2, Qt::gray);
            }
            QVariant var = activex->property(property.name());

            switch (var.type()) {
            case QVariant::Color:
            {
                QColor col = qvariant_cast<QColor>(var);
                item->setText(2, col.name());
            }
            break;
            case QVariant::Font:
            {
                QFont fnt = qvariant_cast<QFont>(var);
                item->setText(2, fnt.toString());
            }
            break;
            case QVariant::Bool:
            {
                item->setText(2, var.toBool() ? QLatin1String("true") : QLatin1String("false"));
            }
            break;
            case QVariant::Pixmap:
            {
                QPixmap pm = qvariant_cast<QPixmap>(var);
                item->setIcon(2, pm);
            }
            break;
            case QVariant::List:
            {
                QList<QVariant> varList = var.toList();
                QStringList strList;
                for (int i = 0; i < varList.count(); ++i) {
                    QVariant var = varList.at(i);
                    strList << var.toString();
                }
                item->setText(2, strList.join(QLatin1String(", ")));
            }
            break;
            case QVariant::Int:
                if (property.isEnumType()) {
                    const QMetaEnum enumerator = mo->enumerator(mo->indexOfEnumerator(property.typeName()));
                    item->setText(2, QString::fromLatin1(enumerator.valueToKey(var.toInt())));
                    break;
                }
            //FALLTHROUGH
            default:
                item->setText(2, var.toString());
                break;
            }

            bool requesting = false;
#if 0
            {
                void *argv[] = { &requesting };
                activex->qt_metacall(QMetaObject::Call(0x10000000) /*RequestingEdit*/, i, argv);
            }
#endif
            if (requesting) {
                QTreeWidgetItem *check = new QTreeWidgetItem(listEditRequests);
                check->setText(0, QString::fromLatin1(property.name()));
                check->setCheckState(0, activex->propertyWritable(property.name()) ? Qt::Checked : Qt::Unchecked);
            }
        }
        listProperties->setCurrentItem(listProperties->topLevelItem(0));
    } else {
        editValue->clear();
    }
}
示例#30
-2
void AddFixture::fillTree(const QString& selectManufacturer,
                          const QString& selectModel)
{
    QTreeWidgetItem* parent = NULL;
    QTreeWidgetItem* child;
    QString manuf;
    QString model;
    QList<QVariant> expanded;

    QSettings settings;
    QVariant var = settings.value(SETTINGS_EXPANDED);
    if (var.isValid() == true)
    {
        expanded = var.toList();
    }

    /* Clear the tree of any previous data */
    m_tree->clear();

    QString filter = m_searchEdit->text().toLower();

    /* Add all known fixture definitions to the tree */
    QStringListIterator it(m_doc->fixtureDefCache()->manufacturers());
    while (it.hasNext() == true)
    {
        bool manufAdded = false;

        manuf = it.next();
        if (manuf == KXMLFixtureGeneric)
            continue;

        QStringListIterator modit(m_doc->fixtureDefCache()->models(manuf));
        while (modit.hasNext() == true)
        {
            model = modit.next();

            if (filter.isEmpty() == false &&
                manuf.toLower().contains(filter) == false &&
                model.toLower().contains(filter) == false)
                    continue;

            if (manufAdded == false)
            {
                parent = new QTreeWidgetItem(m_tree);
                parent->setText(KColumnName, manuf);
                manufAdded = true;
            }
            child = new QTreeWidgetItem(parent);
            child->setText(KColumnName, model);

            if (manuf == selectManufacturer &&
                    model == selectModel)
            {
                parent->setExpanded(true);
                m_tree->setCurrentItem(child);
            }
            else if(expanded.indexOf(manuf) != -1)
            {
                parent->setExpanded(true);
            }
            m_fxiCount++;
        }
    }

    /* Sort the tree A-Z BEFORE appending a generic entries */
    m_tree->sortItems(0, Qt::AscendingOrder);

    /* Create a parent for the generic devices */
    parent = new QTreeWidgetItem(m_tree);
    parent->setText(KColumnName, KXMLFixtureGeneric);
    QStringListIterator modit(m_doc->fixtureDefCache()->models(KXMLFixtureGeneric));
    while (modit.hasNext() == true)
    {
        model = modit.next();
        child = new QTreeWidgetItem(parent);
        child->setText(KColumnName, model);

        if (selectManufacturer == KXMLFixtureGeneric &&
                model == selectModel)
        {
            parent->setExpanded(true);
            m_tree->setCurrentItem(child);
        }
        else if(expanded.indexOf(manuf) != -1)
        {
            parent->setExpanded(true);
        }
        m_fxiCount++;
    }

    /* Create a child for generic dimmer device */
    child = new QTreeWidgetItem(parent);
    child->setText(KColumnName, KXMLFixtureGeneric);

    parent->sortChildren(0, Qt::AscendingOrder);

    /* Select generic dimmer by default */
    if (selectManufacturer == KXMLFixtureGeneric &&
            selectModel == KXMLFixtureGeneric)
    {
        parent->setExpanded(true);
        m_tree->setCurrentItem(child);
    }
}