11QDir QMediaStorageLocation::defaultDirectory(QStandardPaths::StandardLocation type)
13 QStringList dirCandidates;
15#if QT_CONFIG(mmrenderer)
16 dirCandidates << QLatin1String(
"shared/camera");
19 dirCandidates << QStandardPaths::writableLocation(type);
20 dirCandidates << QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
21 dirCandidates << QDir::homePath();
22 dirCandidates << QDir::currentPath();
23 dirCandidates << QDir::tempPath();
25 for (
const QString &path : std::as_const(dirCandidates)) {
27 if (dir.exists() && QFileInfo(path).isWritable())
37 int lastMediaIndex = 0;
38 const QStringView maybeDot = !extension.isEmpty() && !extension.startsWith(u'.') ? u"." : u"";
39 const auto filesList =
40 dir.entryList({ QStringView(u"%1*%2%3").arg(prefix, maybeDot, extension) });
41 for (
const QString &fileName : filesList) {
42 const qsizetype mediaIndexSize =
43 fileName.size() - prefix.size() - extension.size() - maybeDot.size();
44 const int mediaIndex = QStringView{ fileName }.mid(prefix.size(), mediaIndexSize).toInt();
45 lastMediaIndex = qMax(lastMediaIndex, mediaIndex);
48 const QString newMediaIndexStr = QStringLiteral(
"%1").arg(lastMediaIndex + 1, 4, 10, QLatin1Char(u'0'));
49 const QString name = prefix + newMediaIndexStr + maybeDot + extension;
51 return dir.absoluteFilePath(name);
56 QStandardPaths::StandardLocation type,
57 const QString &extension)
59 using namespace Qt::StringLiterals;
61 if (QUrl(requestedName).scheme() ==
"content"_L1)
64 auto prefix =
"clip_"_L1;
66 case QStandardPaths::PicturesLocation: prefix =
"image_"_L1;
break;
67 case QStandardPaths::MoviesLocation: prefix =
"video_"_L1;
break;
68 case QStandardPaths::MusicLocation: prefix =
"record_"_L1;
break;
72 if (requestedName.isEmpty())
73 return generateFileName(defaultDirectory(type), prefix, extension);
75 QString path = requestedName;
77 const QFileInfo fileInfo{ path };
79 if (fileInfo.isRelative() && QUrl(path).isRelative())
80 path = defaultDirectory(type).absoluteFilePath(path);
83 return generateFileName(QDir(path), prefix, extension);
85 if (fileInfo.suffix().isEmpty() && !extension.isEmpty()) {
87 if (!path.endsWith(u'.'))
89 path.append(extension);