bool ScriptBrowseDialog::internal_OpenFile(MonoString* defaultFolder, MonoString* filterList, bool allowMultiselect, MonoArray** outPaths) { Path defaultFolderNative = MonoUtil::monoToWString(defaultFolder); WString filterListNative = MonoUtil::monoToWString(filterList); FileDialogType type = (FileDialogType)((UINT32)FileDialogType::OpenFile | (UINT32)FileDialogType::Multiselect); Vector<Path> paths; if (Platform::openBrowseDialog(type, defaultFolderNative, filterListNative, paths)) { ScriptArray pathArray(MonoUtil::getStringClass(), (UINT32)paths.size()); for (UINT32 i = 0; i < (UINT32)paths.size(); i++) { MonoString* monoString = MonoUtil::wstringToMono(paths[i].toWString()); pathArray.set(i, monoString); } *outPaths = pathArray.getInternal(); return true; } else { *outPaths = nullptr; return false; } }
void ScriptSelection::internal_GetResourcePathSelection(MonoArray** selection) { Vector<Path> paths = Selection::instance().getResourcePaths(); ScriptArray pathArray(MonoUtil::getStringClass(), (UINT32)paths.size()); for (UINT32 i = 0; i < (UINT32)paths.size(); i++) { MonoString* monoString = MonoUtil::stringToMono(paths[i].toString()); pathArray.set(i, monoString); } *selection = pathArray.getInternal(); }
void ScriptSelection::internal_SetResourcePathSelection(MonoArray* selection) { Vector<Path> paths; ScriptArray pathArray(selection); UINT32 arrayLen = pathArray.size(); for (UINT32 i = 0; i < arrayLen; i++) { MonoString* monoString = pathArray.get<MonoString*>(i); Path path = MonoUtil::monoToString(monoString); paths.push_back(path); } Selection::instance().setResourcePaths(paths); }
QJSValue QDeclarativeGeoRoute::path() const { QQmlContext *context = QQmlEngine::contextForObject(parent()); QQmlEngine *engine = context->engine(); QV4::ExecutionEngine *v4 = QQmlEnginePrivate::getV4Engine(engine); QV4::Scope scope(v4); QV4::Scoped<QV4::ArrayObject> pathArray(scope, v4->newArrayObject(route_.path().length())); for (int i = 0; i < route_.path().length(); ++i) { const QGeoCoordinate &c = route_.path().at(i); QV4::ScopedValue cv(scope, v4->fromVariant(QVariant::fromValue(c))); pathArray->putIndexed(i, cv); } return QJSValue(v4, pathArray.asReturnedValue()); }
QJSValue QDeclarativePolylineMapItem::path() const { QQmlContext *context = QQmlEngine::contextForObject(parent()); QQmlEngine *engine = context->engine(); QV8Engine *v8Engine = QQmlEnginePrivate::getV8Engine(engine); QV4::ExecutionEngine *v4 = QV8Engine::getV4(v8Engine); QV4::Scope scope(v4); QV4::Scoped<QV4::ArrayObject> pathArray(scope, v4->newArrayObject(path_.length())); for (int i = 0; i < path_.length(); ++i) { const QGeoCoordinate &c = path_.at(i); QQmlValueType *vt = QQmlValueTypeFactory::valueType(qMetaTypeId<QGeoCoordinate>()); QV4::ScopedValue cv(scope, QV4::QmlValueTypeWrapper::create(v8Engine, QVariant::fromValue(c), vt)); pathArray->putIndexed(i, cv); } return new QJSValuePrivate(v4, QV4::ValueRef(pathArray)); }