32 std::vector<QNapi::ValueWrapper> stringsValueWrappers;
34 qstrings.begin(), qstrings.end(),
35 std::back_inserter(stringsValueWrappers),
std::mem_fn(&QString::toStdString));
36 return QNapi::makeArray(env, stringsValueWrappers);
55 optContextJsWinId.hasValue()
56 ? jsWindowRegistry.tryFindJsWindowById(optContextJsWinId.value())
59 std::vector<QNapi::ValueWrapper> constructorParams = {qAbilityPeer->qAbility().get(
"context")};
61 constructorParams.push_back(optJsWindowRef->jsObject());
63 return jsState.eval<QNapi::Object>(
64 "@ohos.file.picker.DocumentViewPicker<new>(*)", constructorParams);
70 const std::string &pickerActionName, QNapi::Object pickerActionOptions,
71 QOhosConsumer<QOhosOptional<FilePickerResult>> resultConsumer)
73 auto sharedResultConsumer = QtOhos::moveToSharedPtr(std::move(resultConsumer));
76 "Calling DocumentViewPicker.%s() with options: %s",
77 pickerActionName.c_str(), QNapi::toJsonString(pickerActionOptions).c_str());
78 auto documentViewPicker = QtOhos::moveToSharedPtr(
79 QNapi::Reference<>::makePersistentFrom(
80 makeDocumentViewPicker(jsState, qAbilityPeer, optContextJsWinId)));
81 documentViewPicker->call<QNapi::Promise>(pickerActionName, {pickerActionOptions}).onThen(
82 [documentViewPicker, pickerActionName, sharedResultConsumer](
const QtOhos::CallbackInfo &cbInfo) {
83 auto actionResult = cbInfo.getFirstArg<QNapi::Array>(Q_FUNC_INFO);
84 auto resultOhosUris = QNapi::getArrayElements<std::vector<std::string>, QNapi::String>(actionResult);
87 "Called DocumentViewPicker.%s() callback with result: %s",
88 pickerActionName.c_str(), QNapi::toJsonString(actionResult).c_str());
90 std::vector<std::string> resultPaths;
92 resultOhosUris.cbegin(), resultOhosUris.cend(), std::back_inserter(resultPaths),
93 [&](
const auto &uri) {
94 return QOhosPlatformServices::mapOhosFileUriToPathInJsThread(uri);
97 (*sharedResultConsumer)(
98 QOhosOptional<FilePickerResult>(
100 .resultPaths = std::move(resultPaths),
101 .selectedIndex = documentViewPicker->eval<QNapi::Number>(
"getSelectedIndex()"),
104 [pickerActionName, sharedResultConsumer]() {
105 qOhosPrintfError(
"DocumentViewPicker.%s() call failed", pickerActionName.c_str());
106 (*sharedResultConsumer)(makeEmptyQOhosOptional());
void showFileDialogOpen(QtOhos::InternalWindowId contextWinId, QStringList filters, QString defaultPath, DocumentSelectMode documentSelectMode, ResultMultiplicity resultMultiplicity, QOhosConsumer< QOhosOptional< OpenResult > > resultCallback)
void showFileDialogSave(QtOhos::InternalWindowId contextWinId, QStringList newFileNames, QString defaultFilePath, QStringList fileSuffixChoices, QOhosConsumer< QOhosOptional< SaveResult > > resultCallback)
void startOhosFilePicker(QtOhos::JsState &jsState, std::shared_ptr< QtOhos::QAbilityPeer > qAbilityPeer, QOhosOptional< QArkUi::JsWindowId > optContextJsWinId, const std::string &pickerActionName, QNapi::Object pickerActionOptions, QOhosConsumer< QOhosOptional< FilePickerResult > > resultConsumer)