42 QOhosOptional<QArkUi::JsWindowId> optContextJsWinId)
46 optContextJsWinId.has_value()
47 ? jsWindowRegistry.tryFindJsWindowById(optContextJsWinId.value())
50 std::vector<QNapi::ValueWrapper> constructorParams = {qAbilityPeer->qAbility().get(
"context")};
52 constructorParams.push_back(optJsWindowRef->jsObject());
54 return jsState.eval<QNapi::Object>(
55 "@ohos.file.picker.DocumentViewPicker<new>(*)", constructorParams);
60 QOhosOptional<QArkUi::JsWindowId> optContextJsWinId,
61 const std::string &pickerActionName, QNapi::Object pickerActionOptions,
62 QOhosConsumer<QOhosOptional<FilePickerResult>> resultConsumer)
64 auto sharedResultConsumer = QtOhos::moveToSharedPtr(std::move(resultConsumer));
67 "Calling DocumentViewPicker.%s() with options: %s",
68 pickerActionName.c_str(), QNapi::toJsonString(pickerActionOptions).c_str());
69 auto documentViewPicker = QtOhos::moveToSharedPtr(
70 QNapi::Reference<>::makePersistentFrom(
71 makeDocumentViewPicker(jsState, qAbilityPeer, optContextJsWinId)));
72 documentViewPicker->evalToPromiseOrRejectOnThrow(pickerActionName +
"(*)", {pickerActionOptions}).onThen(
73 [documentViewPicker, pickerActionName, sharedResultConsumer](
const QtOhos::
CallbackInfo &cbInfo) {
74 auto actionResult = cbInfo.getFirstArg<QNapi::Array>(Q_FUNC_INFO);
75 auto resultOhosUris = QNapi::getArrayElements<std::vector<std::string>, QNapi::String>(actionResult);
78 "Called DocumentViewPicker.%s() callback with result: %s",
79 pickerActionName.c_str(), QNapi::toJsonString(actionResult).c_str());
81 std::vector<std::string> resultPaths;
83 resultOhosUris.cbegin(), resultOhosUris.cend(),
std::back_inserter(resultPaths),
84 [&](
const auto &uri) {
88 (*sharedResultConsumer)(
89 QOhosOptional<FilePickerResult>(
91 .resultPaths = std::move(resultPaths),
92 .selectedIndex = documentViewPicker->eval<QNapi::Number>(
"getSelectedIndex()"),
95 [pickerActionName, sharedResultConsumer]() {
96 qOhosPrintfError(
"DocumentViewPicker.%s() call failed", pickerActionName.c_str());
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)