Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qmediastoragelocation.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5
6#include <QStandardPaths>
7
9
11{
12 QStringList dirCandidates;
13
14#if QT_CONFIG(mmrenderer)
15 dirCandidates << QLatin1String("shared/camera");
16#endif
17
18 dirCandidates << QStandardPaths::writableLocation(type);
20 dirCandidates << QDir::homePath();
21 dirCandidates << QDir::currentPath();
22 dirCandidates << QDir::tempPath();
23
24 for (const QString &path : std::as_const(dirCandidates)) {
25 QDir dir(path);
26 if (dir.exists() && QFileInfo(path).isWritable())
27 return dir;
28 }
29
30 return QDir();
31}
32
33static QString generateFileName(const QDir &dir, const QString &prefix, const QString &extension)
34{
35 auto lastMediaIndex = 0;
36 const auto list = dir.entryList({ QString::fromLatin1("%1*.%2").arg(prefix, extension) });
37 for (const QString &fileName : list) {
38 auto mediaIndex = QStringView{fileName}.mid(prefix.size(), fileName.size() - prefix.size() - extension.size() - 1).toInt();
39 lastMediaIndex = qMax(lastMediaIndex, mediaIndex);
40 }
41
42 const QString name = QString::fromLatin1("%1%2.%3")
43 .arg(prefix)
44 .arg(lastMediaIndex + 1, 4, 10, QLatin1Char('0'))
45 .arg(extension);
46
47 return dir.absoluteFilePath(name);
48}
49
50
53 const QString &extension)
54{
55 auto prefix = QLatin1String("clip_");
56 switch (type) {
57 case QStandardPaths::PicturesLocation: prefix = QLatin1String("image_"); break;
58 case QStandardPaths::MoviesLocation: prefix = QLatin1String("video_"); break;
59 case QStandardPaths::MusicLocation: prefix = QLatin1String("record_"); break;
60 default: break;
61 }
62
63 if (requestedName.isEmpty())
65
66 QString path = requestedName;
67
70
71 if (QFileInfo(path).isDir())
72 return generateFileName(QDir(path), prefix, extension);
73
74 if (!path.endsWith(extension))
75 path.append(QString(QLatin1String(".%1")).arg(extension));
76
77 return path;
78}
79
\inmodule QtCore
Definition qdir.h:19
static QString tempPath()
Returns the absolute canonical path of the system's temporary directory.
Definition qdir.cpp:2130
QString absoluteFilePath(const QString &fileName) const
Returns the absolute path name of a file in the directory.
Definition qdir.cpp:809
static QString homePath()
Returns the absolute path of the user's home directory.
Definition qdir.cpp:2100
static QString currentPath()
Returns the absolute path of the application's current directory.
Definition qdir.cpp:2051
\inmodule QtCore \reentrant
Definition qfileinfo.h:22
static QString writableLocation(StandardLocation type)
StandardLocation
This enum describes the different locations that can be queried using methods such as QStandardPaths:...
\inmodule QtCore
\inmodule QtCore
Definition qstringview.h:76
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
static QString fromLatin1(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qstring.cpp:5710
qsizetype size() const
Returns the number of characters in this string.
Definition qstring.h:182
QString arg(qlonglong a, int fieldwidth=0, int base=10, QChar fillChar=u' ') const
Definition qstring.cpp:8606
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
Definition qstring.h:1083
void extension()
[6]
Definition dialogs.cpp:230
Q_MULTIMEDIA_EXPORT QString generateFileName(const QString &requestedName, QStandardPaths::StandardLocation type, const QString &extension)
Q_MULTIMEDIA_EXPORT QDir defaultDirectory(QStandardPaths::StandardLocation type)
Combined button and popup list for selecting options.
static QString generateFileName(const QDir &dir, const QString &prefix, const QString &extension)
constexpr const T & qMax(const T &a, const T &b)
Definition qminmax.h:42
GLenum type
GLuint name
GLsizei const GLchar *const * path
static QT_BEGIN_NAMESPACE bool isRelative(const QString &path)
SSL_CTX int(*) void arg)
QLatin1StringView QLatin1String
Definition qstringfwd.h:31
static int toInt(const QChar &qc, int R)
QList< int > list
[14]
QString dir
[11]
\inmodule QtCore \reentrant
Definition qchar.h:17