height: 75
opacity: 0.5
onClicked: {
- if (!imageMode.capture(fileNaming.imageFileName())) {
- showError("Failed to capture image. Please restart the camera.");
+ if (!fileSystem.available) {
+ showError(qsTr("Camera cannot capture images in mass storage mode."));
+ }
+ else if (!imageMode.capture(fileNaming.imageFileName())) {
+ showError(qsTr("Failed to capture image. Please restart the camera."));
}
}
opacity: 0.5
onClicked: {
if (!videoMode.recording) {
- if (!videoMode.startRecording(fileNaming.videoFileName())) {
- showError("Failed to record video. Please restart the camera.");
+ if (!fileSystem.available) {
+ showError(qsTr("Camera cannot record videos in mass storage mode."));
+ }
+ else if (!videoMode.startRecording(fileNaming.videoFileName())) {
+ showError(qsTr("Failed to record video. Please restart the camera."));
}
}
else {
// TODO: portrait/landscape
// TODO: record video in a hidden directory and then copy the video to avoid tracker indexing it.
// TODO: stop viewfinder in postcapture and settings pages ?
-// TODO: mass storage
// TODO: resource policy
// TODO: prevent going to mass storage while recording and capturing
// TODO: sounds
error.show();
}
+ FSMonitor {
+ id: fileSystem
+ }
+
InfoBanner {
id: error
}
--- /dev/null
+#include "fsmonitor.h"
+#include <qmusbmode.h>
+
+FSMonitor::FSMonitor(QObject *parent) :
+ QObject(parent), m_mode(new MeeGo::QmUSBMode(this)) {
+
+ QObject::connect(m_mode, SIGNAL(modeChanged(MeeGo::QmUSBMode::Mode)),
+ this, SLOT(modeChanged()));
+
+ m_available =
+ m_mode->mountStatus(MeeGo::QmUSBMode::DocumentDirectoryMount)
+ .testFlag(MeeGo::QmUSBMode::ReadWriteMount);
+}
+
+FSMonitor::~FSMonitor() {
+
+}
+
+bool FSMonitor::isAvailable() const {
+ return m_available;
+}
+
+void FSMonitor::setAvailable(bool available) {
+ if (m_available != available) {
+ m_available = available;
+ emit availabilityChanged();
+ }
+}
+
+void FSMonitor::modeChanged() {
+ setAvailable(m_mode->mountStatus(MeeGo::QmUSBMode::DocumentDirectoryMount)
+ .testFlag(MeeGo::QmUSBMode::ReadWriteMount));
+}
--- /dev/null
+// -*- c++ -*-
+
+#ifndef FS_MONITOR_H
+#define FS_MONITOR_H
+
+#include <QObject>
+
+namespace MeeGo {
+ class QmUSBMode;
+};
+
+class FSMonitor : public QObject {
+ Q_OBJECT
+ Q_PROPERTY(bool available READ isAvailable NOTIFY availabilityChanged)
+
+public:
+ FSMonitor(QObject *parent = 0);
+ ~FSMonitor();
+
+ bool isAvailable() const;
+
+ void setAvailable(bool available);
+
+signals:
+ void availabilityChanged();
+
+private slots:
+ void modeChanged();
+
+private:
+ bool m_available;
+ MeeGo::QmUSBMode *m_mode;
+};
+
+#endif /* FS_MONITOR_H */
#include "filenaming.h"
#include "quillitem.h"
#include "displaystate.h"
+#include "fsmonitor.h"
Q_DECL_EXPORT int main(int argc, char *argv[]) {
QApplication::setAttribute(Qt::AA_X11InitThreads, true);
qmlRegisterType<FileNaming>("CameraPlus", 1, 0, "FileNaming");
qmlRegisterType<QuillItem>("CameraPlus", 1, 0, "QuillItem");
qmlRegisterType<DisplayState>("CameraPlus", 1, 0, "DisplayState");
+ qmlRegisterType<FSMonitor>("CameraPlus", 1, 0, "FSMonitor");
QUrl sourceUrl = QUrl::fromLocalFile(QDir::currentPath() + "/main.qml");
view.setSource(sourceUrl);
LIBS += -L../imports/ -limports -L../lib/ -lqtcamera
-SOURCES += main.cpp settings.cpp filenaming.cpp quillitem.cpp displaystate.cpp
-HEADERS += settings.h filenaming.h quillitem.h displaystate.h
+SOURCES += main.cpp settings.cpp filenaming.cpp quillitem.cpp displaystate.cpp fsmonitor.cpp
+HEADERS += settings.h filenaming.h quillitem.h displaystate.h fsmonitor.h