diff options
author | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-07-07 15:29:52 +0200 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@theqtcompany.com> | 2015-08-04 12:56:54 +0000 |
commit | 6b19a24b581c9c6086989532a909169afc62028c (patch) | |
tree | 43d95bac1deeca0cefad0173435fd1c06454ab07 /src/plugins/gstreamer/camerabin/camerabinsession.cpp | |
parent | b6dd9558a708e6961426db23863039ee1015e34d (diff) |
GStreamer: use QMediaStorageLocation to generate capture file names.
Change-Id: I2111eb8e28f60ca6305a48a8ee9299bc14ab0df9
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Diffstat (limited to 'src/plugins/gstreamer/camerabin/camerabinsession.cpp')
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinsession.cpp | 79 |
1 files changed, 12 insertions, 67 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp index 10217c1ce..da317740b 100644 --- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp @@ -542,9 +542,10 @@ GstElement *CameraBinSession::buildCameraSource() void CameraBinSession::captureImage(int requestId, const QString &fileName) { - QString actualFileName = fileName; - if (actualFileName.isEmpty()) - actualFileName = generateFileName("img_", defaultDir(QCamera::CaptureStillImage), "jpg"); + const QString actualFileName = m_mediaStorageLocation.generateFileName(fileName, + QMediaStorageLocation::Pictures, + QLatin1String("IMG_"), + QLatin1String("jpg")); m_requestId = requestId; @@ -592,60 +593,6 @@ bool CameraBinSession::setOutputLocation(const QUrl& sink) return true; } -QDir CameraBinSession::defaultDir(QCamera::CaptureModes mode) const -{ - QStringList dirCandidates; - -#if defined(Q_WS_MAEMO_6) - dirCandidates << QLatin1String("/home/user/MyDocs/DCIM"); - dirCandidates << QLatin1String("/home/user/MyDocs/"); -#endif - - if (mode == QCamera::CaptureVideo) { - dirCandidates << QStandardPaths::writableLocation(QStandardPaths::MoviesLocation); - dirCandidates << QDir::home().filePath("Documents/Video"); - dirCandidates << QDir::home().filePath("Documents/Videos"); - } else { - dirCandidates << QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); - dirCandidates << QDir::home().filePath("Documents/Photo"); - dirCandidates << QDir::home().filePath("Documents/Photos"); - dirCandidates << QDir::home().filePath("Documents/photo"); - dirCandidates << QDir::home().filePath("Documents/photos"); - dirCandidates << QDir::home().filePath("Documents/Images"); - } - - dirCandidates << QDir::home().filePath("Documents"); - dirCandidates << QDir::home().filePath("My Documents"); - dirCandidates << QDir::homePath(); - dirCandidates << QDir::currentPath(); - dirCandidates << QDir::tempPath(); - - foreach (const QString &path, dirCandidates) { - if (QFileInfo(path).isWritable()) - return QDir(path); - } - - return QDir(); -} - -QString CameraBinSession::generateFileName(const QString &prefix, const QDir &dir, const QString &ext) const -{ - int lastClip = 0; - foreach(QString fileName, dir.entryList(QStringList() << QString("%1*.%2").arg(prefix).arg(ext))) { - int imgNumber = fileName.midRef(prefix.length(), fileName.size()-prefix.length()-ext.length()-1).toInt(); - lastClip = qMax(lastClip, imgNumber); - } - - QString name = QString("%1%2.%3").arg(prefix) - .arg(lastClip+1, - 4, //fieldWidth - 10, - QLatin1Char('0')) - .arg(ext); - - return dir.absoluteFilePath(name); -} - void CameraBinSession::setDevice(const QString &device) { if (m_inputDevice != device) { @@ -1122,18 +1069,16 @@ bool CameraBinSession::processBusMessage(const QGstreamerMessage &message) void CameraBinSession::recordVideo() { + const QString actualFileName = m_mediaStorageLocation.generateFileName(m_sink.isLocalFile() ? m_sink.toLocalFile() + : m_sink.toString(), + QMediaStorageLocation::Movies, + QLatin1String("clip_"), + m_mediaContainerControl->suggestedFileExtension(m_mediaContainerControl->actualContainerFormat())); + m_recordingActive = true; - m_actualSink = m_sink; - if (m_actualSink.isEmpty()) { - QString ext = m_mediaContainerControl->suggestedFileExtension(m_mediaContainerControl->actualContainerFormat()); - m_actualSink = QUrl::fromLocalFile(generateFileName("clip_", defaultDir(QCamera::CaptureVideo), ext)); - } else { - // Output location was rejected in setOutputlocation() if not a local file - m_actualSink = QUrl::fromLocalFile(QDir::currentPath()).resolved(m_actualSink); - } + m_actualSink = QUrl::fromLocalFile(actualFileName); - QString fileName = m_actualSink.toLocalFile(); - g_object_set(G_OBJECT(m_camerabin), FILENAME_PROPERTY, QFile::encodeName(fileName).constData(), NULL); + g_object_set(G_OBJECT(m_camerabin), FILENAME_PROPERTY, QFile::encodeName(actualFileName).constData(), NULL); g_signal_emit_by_name(G_OBJECT(m_camerabin), CAPTURE_START, NULL); } |