X-Git-Url: http://cgit.sxemacs.org/?p=harmattan%2Fcameraplus;a=blobdiff_plain;f=qml%2FImageOverlay.qml;h=ec1ee83f5eb78832527fcc2f3ad93f88fcc62493;hp=20becc29600298cee1dbd4d2d2b41b66665be5ec;hb=b12f938a7e89a6fd7d363def86c9390da0e47b17;hpb=2ee7fc14f66fd40e958e34ed4034a051b728a9f5 diff --git a/qml/ImageOverlay.qml b/qml/ImageOverlay.qml index 20becc2..ec1ee83 100644 --- a/qml/ImageOverlay.qml +++ b/qml/ImageOverlay.qml @@ -23,7 +23,6 @@ import QtQuick 2.0 import QtCamera 1.0 import CameraPlus 1.0 -import "data.js" as Data Item { id: overlay @@ -34,6 +33,7 @@ Item { property bool pressed: capture.pressed || zoomSlider.pressed || modeButton.pressed property bool controlsVisible: imageMode.canCapture && cam.running && !animationRunning && dimmer.opacity == 0.0 && !cameraMode.busy + property bool inhibitDim: false signal previewAvailable(string uri) @@ -42,12 +42,12 @@ Item { ImageMode { id: imageMode camera: cam - onPreviewAvailable: { - overlay.previewAvailable(preview) - cam.autoFocus.stopAutoFocus() - } - onSaved: mountProtector.unlock() + onCaptureEnded: stopAutoFocus() + + onPreviewAvailable: overlay.previewAvailable(preview) + + onSaved: mountProtector.unlock(fileNaming.imagePath) } ZoomSlider { @@ -73,17 +73,16 @@ Item { anchors.right: parent.right anchors.rightMargin: 20 anchors.verticalCenter: parent.verticalCenter - iconId: cameraTheme.captureButtonImageIconId + iconSource: cameraTheme.captureButtonImageIconId width: 75 height: 75 opacity: 0.5 - onClicked: captureImage() - visible: controlsVisible && (!settings.zoomAsShutter && keys.active) + visible: controlsVisible onExited: { if (mouseX <= 0 || mouseY <= 0 || mouseX > width || mouseY > height) { // Release outside the button: - cam.autoFocus.stopAutoFocus() + captureControl.canceled = true } } } @@ -91,28 +90,32 @@ Item { Timer { id: autoFocusTimer interval: 200 - running: capture.pressed || zoomCapture.zoomPressed + running: captureControl.state == "capturing" repeat: false onTriggered: { if (cam.autoFocus.cafStatus != AutoFocus.Success) { - cam.autoFocus.startAutoFocus() + startAutoFocus() } } } ZoomCaptureButton { id: zoomCapture - onReleased: parent.captureImage() } - ZoomCaptureCancel { + CaptureControl { + id: captureControl + capturePressed: capture.pressed + zoomPressed: zoomCapture.zoomPressed + proximityClosed: proximitySensor.close + onStartCapture: captureImage() + onCancelCapture: stopAutoFocus() + } + + CaptureCancel { anchors.fill: parent - zoomCapture: zoomCapture - onCanceled: { - if (!autoFocusTimer.running) { - cam.autoFocus.stopAutoFocus() - } - } + enabled: captureControl.showCancelBanner + onPressed: captureControl.canceled = true } CameraToolBar { @@ -129,6 +132,7 @@ Item { tools: CameraToolBarTools { FlashButton { onClicked: toolBar.push(tools) + visible: !overlay.cam.quirks.hasQuirk(Quirks.NoFlash) } ImageSceneButton { @@ -174,32 +178,45 @@ Item { Indicator { id: flashIndicator - source: "image://theme/" + Data.flashIcon(settings.imageFlashMode) + "-screen" + visible: !toolBar.expanded && !overlay.cam.quirks.hasQuirk(Quirks.NoFlash) + source: cameraTheme.flashIcon(settings.imageFlashMode) } - Indicator { - id: resolutionIndicator - property string imageAspectRatio: settings.device == 1 ? settings.secondaryImageAspectRatio : settings.primaryImageAspectRatio - property string imageResolution: settings.device == 1 ? settings.secondaryImageResolution : settings.primaryImageResolution - source: "image://theme/" + Data.imageIcon(imageAspectRatio, imageResolution) + CameraLabel { + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: 5 + anchors.rightMargin: 5 + anchors.topMargin: 5 + anchors.bottomMargin: 5 + text: imageSettings.currentResolution ? qsTr("%1M").arg(imageSettings.currentResolution.megaPixels) : qsTr("?M") + font.bold: true + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter } Indicator { id: wbIndicator - source: visible ? "image://theme/" + Data.wbIcon(settings.imageWhiteBalance) + "-screen" : "" - visible: settings.imageWhiteBalance != WhiteBalance.Auto + source: visible ? cameraTheme.whiteBalanceIcon(settings.imageWhiteBalance) : "" + visible: settings.imageWhiteBalance != WhiteBalance.Auto && !toolBar.expanded } Indicator { id: cfIndicator - source: "image://theme/" + Data.cfIcon(settings.imageColorFilter) + "-screen" - visible: settings.imageColorFilter != ColorTone.Normal + source: visible ? cameraTheme.colorFilterIcon(settings.imageColorFilter) : "" + visible: settings.imageColorFilter != ColorTone.Normal && !toolBar.expanded } Indicator { id: isoIndicator - visible: settings.imageIso != 0 - source: "image://theme/" + Data.isoIcon(settings.imageIso) + visible: settings.imageIso != 0 && !toolBar.expanded + source: visible ? cameraTheme.isoIcon(settings.imageIso) : "" + } + + Indicator { + id: sceneIndicator + visible: settings.imageSceneMode != Scene.Auto && !toolBar.expanded + source: visible ? cameraTheme.imageSceneModeIcon(settings.imageSceneMode) : "" } Indicator { @@ -228,7 +245,7 @@ Item { } function cameraError() { - mountProtector.unlock() + mountProtector.unlock(fileNaming.imagePath) } function policyLost() { @@ -242,25 +259,54 @@ Item { function captureImage() { if (!imageMode.canCapture) { showError(qsTr("Camera is already capturing an image.")) + stopAutoFocus() } else if (!checkBattery()) { showError(qsTr("Not enough battery to capture images.")) + stopAutoFocus() } else if (!fileSystem.available) { showError(qsTr("Camera cannot capture images in mass storage mode.")) - } else if (!checkDiskSpace()) { + stopAutoFocus() + } else if (!fileSystem.hasFreeSpace(fileNaming.imagePath)) { showError(qsTr("Not enough space to capture images.")) - } else if (!mountProtector.lock()) { + stopAutoFocus() + } else if (!mountProtector.lock(fileNaming.imagePath)) { showError(qsTr("Failed to lock images directory.")) + stopAutoFocus() } else { metaData.setMetaData() var fileName = fileNaming.imageFileName() if (!imageMode.capture(fileName)) { showError(qsTr("Failed to capture image. Please restart the camera.")) - mountProtector.unlock() + mountProtector.unlock(fileNaming.imagePath) + stopAutoFocus() } else { trackerStore.storeImage(fileName) } } } + function startAutoFocus() { + if (!overlay.cam.quirks.hasQuirk(Quirks.NoAutoFocus)) { + cam.autoFocus.startAutoFocus() + } + } + + function stopAutoFocus() { + if (!overlay.cam.quirks.hasQuirk(Quirks.NoAutoFocus)) { + if (!autoFocusTimer.running) { + cam.autoFocus.stopAutoFocus() + } + } + } + + function resetToolBar() { + if (toolBar.depth() > 1) { + toolBar.pop() + } + } + + function cameraDeviceChanged() { + resetToolBar() + } }