diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraxui/cxui/src/cxuipostcaptureview.cpp --- a/camerauis/cameraxui/cxui/src/cxuipostcaptureview.cpp Tue Aug 31 15:03:46 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,854 +0,0 @@ -/* -* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "cxeviewfindercontrol.h" -#include "cxuienums.h" -#include "cxuipostcaptureview.h" -#include "cxeengine.h" -#include "cxecameradevicecontrol.h" -#include "cxestillcapturecontrol.h" -#include "cxevideocapturecontrol.h" -#include "cxestillimage.h" -#include "cxutils.h" -#include "cxefeaturemanager.h" -#include "cxuidocumentloader.h" -#include "cxesettings.h" -#include "cxenamespace.h" -#include "cxuiserviceprovider.h" - -#ifdef Q_OS_SYMBIAN -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "cxuipostcaptureviewTraces.h" -#endif -#endif //Q_OS_SYMBIAN - - -using namespace CxUiLayout; -using namespace Cxe; - - -namespace { - const QString FILENAME_KEY = "filename"; - const int CXUI_STOP_VIEWFINDER_TIMEOUT = 5000; // 5 seconds - const int CXUI_RELEASE_CAMERA_TIMEOUT = 60000; // 60 seconds -} - - -/*! -* Constructor. -*/ -CxuiPostcaptureView::CxuiPostcaptureView(QGraphicsItem *parent) : - CxuiView(parent), - mStillToolbar(NULL), - mVideoToolbar(NULL), - mEmbeddedToolbar(NULL), - mBackgroundItem(NULL), - mImageLabel(NULL), - mShareUi(NULL), - mStopViewfinderTimer(this), - mReleaseCameraTimer(this), - mPostcaptureTimer(this), - mTimersStarted(false), - mDeleteNoteOpen(false), - mFilename(QString::null), - mThumbnailManager(NULL) -{ - CX_DEBUG_IN_FUNCTION(); - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Destructor. -*/ -CxuiPostcaptureView::~CxuiPostcaptureView() -{ - CX_DEBUG_ENTER_FUNCTION(); - QCoreApplication::instance()->removeEventFilter(this); - stopTimers(); - delete mThumbnailManager; - delete mShareUi; - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Second phase construction. -*/ -void CxuiPostcaptureView::construct(HbMainWindow *mainwindow, CxeEngine *engine, - CxuiDocumentLoader *documentLoader, - CxuiCaptureKeyHandler *keyHandler, - HbActivityManager *activityManager) -{ - Q_UNUSED(keyHandler); - CX_DEBUG_ENTER_FUNCTION(); - - CxuiView::construct(mainwindow, engine, documentLoader, NULL, activityManager); - - // set back action to go back to pre-capture - HbAction *backAction = new HbAction(Hb::BackNaviAction, this); - connect(backAction, SIGNAL(triggered()), this, SLOT(goToPrecaptureView())); - setNavigationAction(backAction); - - // creates black background item - createBackground(); - - CX_DEBUG_ASSERT(mDocumentLoader); - QGraphicsWidget *widget = 0; - widget = mDocumentLoader->findWidget(POST_CAPTURE_SNAPSHOT_LABEL); - mImageLabel = qobject_cast(widget); - CX_DEBUG_ASSERT(mImageLabel); - - mShareUi = new ShareUi(); - - // get toolbar pointers from the documentloader - widget = mDocumentLoader->findWidget(STILL_POST_CAPTURE_TOOLBAR); - // This resize is a workaround to get toolbar shown correctly. - widget->resize(60, 300); - mStillToolbar = qobject_cast (widget); - CX_DEBUG_ASSERT(mStillToolbar); - - widget = mDocumentLoader->findWidget(VIDEO_POST_CAPTURE_TOOLBAR); - // This resize is a workaround to get toolbar shown correctly. - widget->resize(60, 300); - mVideoToolbar = qobject_cast (widget); - CX_DEBUG_ASSERT(mVideoToolbar); - - widget = mDocumentLoader->findWidget(EMBEDDED_POST_CAPTURE_TOOLBAR); - // This resize is a workaround to get toolbar shown correctly. - widget->resize(60, 300); - mEmbeddedToolbar = qobject_cast (widget); - CX_DEBUG_ASSERT(mEmbeddedToolbar); - - mStopViewfinderTimer.setSingleShot(true); - connect(&mStopViewfinderTimer, SIGNAL(timeout()), - this, SLOT(stopViewfinder())); - - mReleaseCameraTimer.setSingleShot(true); - connect(&mReleaseCameraTimer, SIGNAL(timeout()), - this, SLOT(releaseCamera())); - - mHideControlsTimeout.setSingleShot(true); - connect(&mHideControlsTimeout, SIGNAL(timeout()), - this, SLOT(hideControls())); - - mPostcaptureTimer.setSingleShot(true); - connect(&mPostcaptureTimer, SIGNAL(timeout()), - this, SLOT(goToPrecaptureView())); - - // set focus flags - setFlag(QGraphicsItem::ItemIsFocusable); - setFocusPolicy(Qt::StrongFocus); - - QCoreApplication::instance()->installEventFilter(this); - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Handle pressing capture key. -*/ -void CxuiPostcaptureView::handleCaptureKeyPressed() -{ - CX_DEBUG_ENTER_FUNCTION(); - - if (!mDeleteNoteOpen) { - goToPrecaptureView(); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Handle pressing auto focus key. -*/ -void CxuiPostcaptureView::handleAutofocusKeyPressed() -{ - CX_DEBUG_ENTER_FUNCTION(); - - if (!mDeleteNoteOpen) { - goToPrecaptureView(); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - Slot for starting video playing. - */ -void CxuiPostcaptureView::playVideo() -{ - CX_DEBUG_ENTER_FUNCTION(); - - stopTimers(); - releaseCamera(); - - QString videoFile(getCurrentFilename()); - - XQAiwRequest *videoRequest = mAppManager.create(XQI_VIDEO_PLAY, XQOP_VIDEO_PLAY, true); - - if (videoRequest) { - QVariantList fileList; - fileList.append(QVariant(videoFile)); - videoRequest->setArguments(fileList); - - CX_DEBUG(("CxuiPostcaptureView: sending request")); - QVariant result; - bool res = videoRequest->send(result); - if (res) { - CX_DEBUG(("CxuiPostcaptureView: request sent, received \"%s\"", - qPrintable(result.toString()))); - } else { - CX_DEBUG(("CxuiPostcaptureView: request sending failed, error=%d", - videoRequest->lastError())); - } - delete videoRequest; - videoRequest = NULL; - } - - CX_DEBUG_EXIT_FUNCTION(); - -} - -/*! -* Show delete query. -*/ -void CxuiPostcaptureView::showDeleteNote() -{ - CX_DEBUG_ENTER_FUNCTION(); - - hideControls(); - - QString text(mEngine->mode() == Cxe::VideoMode - ? hbTrId("txt_cam_other_delete_video_clip") - : hbTrId("txt_cam_other_delete_image")); - - HbMessageBox::question(text, - this, - SLOT(handleDeleteDialogClosed(int)), - HbMessageBox::Yes | HbMessageBox::No); - - mDeleteNoteOpen = true; - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Handle closing delete query dialog. -* @param action HbMessageBox::Yes if user accepted the delete query, HbMessageBox::No if not. -*/ -void CxuiPostcaptureView::handleDeleteDialogClosed(int action) -{ - CX_DEBUG_ENTER_FUNCTION(); - - hideControls(); - mDeleteNoteOpen = false; - - // Check that user confirmed delete - if (action == HbMessageBox::Yes) { - QFileInfo fileInfo(getCurrentFilename()); - if (fileInfo.exists()) { - //! @todo - // We can retry deletion if file deletion does'nt succeed, - // but this is left out for the time being since the user - // can't delete it so early that it's not saved yet or - // is being harvested by MdS etc. - QDir dir = fileInfo.absolutePath(); - bool ok = dir.remove(fileInfo.fileName()); - CX_DEBUG(("Delete file [%s], status %d", qPrintable(fileInfo.fileName()), ok)); - - // Go back to precapture view - goToPrecaptureView(); - } - } - - CX_DEBUG_EXIT_FUNCTION(); -} - - -/*! - Slot for handling image/video sharing. - */ -void CxuiPostcaptureView::launchShare() -{ - CX_DEBUG_ENTER_FUNCTION(); - - stopTimers(); - releaseCamera(); - hideControls(); - QString filename = getCurrentFilename(); - QStringList filelist; - filelist.append(filename); - - mShareUi->send(filelist, true); - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Go to pre-capture view. -*/ -void CxuiPostcaptureView::goToPrecaptureView() -{ - CX_DEBUG_ENTER_FUNCTION(); - - // Cannot return to pre-capture while stopping in video mode - if (mEngine->mode() != Cxe::VideoMode || - mEngine->videoCaptureControl().state() != CxeVideoCaptureControl::Stopping) { - stopTimers(); - // Re-enabling starting timers the next time we enter post capture view. - mTimersStarted = false; - - // reset saved filename - mFilename = QString::null; - - // Switch to pre-capture view - emit changeToPrecaptureView(); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Stop viewfinder. -*/ -void CxuiPostcaptureView::stopViewfinder() -{ - CX_DEBUG_ENTER_FUNCTION(); - - if (mMainWindow->currentView() == this) { - mEngine->viewfinderControl().stop(); - } - mStopViewfinderTimer.stop(); - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Hides toolbar. -*/ -void CxuiPostcaptureView::hideToolbar() -{ - CX_DEBUG_ENTER_FUNCTION(); - if (mStillToolbar) { - mStillToolbar->hide(); - } - if (mVideoToolbar) { - mVideoToolbar->hide(); - } - if (mEmbeddedToolbar) { - mEmbeddedToolbar->hide(); - } - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Handle events. -* Needed for restarting timers. -*/ -bool CxuiPostcaptureView::eventFilter(QObject *object, QEvent *event) -{ - Q_UNUSED(object) - bool eventWasConsumed = false; - - switch (event->type()) - { - case QEvent::GraphicsSceneMouseRelease: - mHideControlsTimeout.start(); - break; - case QEvent::GraphicsSceneMousePress: - mHideControlsTimeout.stop(); - // stop the postcapture timer - mPostcaptureTimer.stop(); - break; - default: - break; - } - - return eventWasConsumed; -} - -/*! -* Paint method. -* Used for performance tracing purposes. -*/ -void CxuiPostcaptureView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - // Performance trace for checking shot to snapshot time. - // Guard that we actually have the snapshot set before outputting the trace. - if (mImageLabel && !mImageLabel->icon().isNull()) { - OstTrace0(camerax_performance, CXUIPOSTCAPTUREVIEW_SNAPSHOT_DRAW, "msg: e_CX_SHOT_TO_SNAPSHOT 0"); - } - - QGraphicsWidget::paint(painter, option, widget); -} - -/*! - * Restore view state from activity. - * @param activityId Activity id - * @param data Activity data - */ -void CxuiPostcaptureView::restoreActivity(const QString &activityId, const QVariant &data) -{ - Q_UNUSED(activityId); - CX_DEBUG_ENTER_FUNCTION(); - - // get filename. if filename is not found (toString() returns empty string) - // we will go back to pre-capture in updateSnapshotImage() - mFilename = data.toMap()[FILENAME_KEY].toString(); - CX_DEBUG(("Got filename [%s] from activity", qPrintable(mFilename))); - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - * Save view state to activity. - */ -void CxuiPostcaptureView::saveActivity() -{ - CX_DEBUG_ENTER_FUNCTION(); - QVariantMap data; - QVariantHash params; - - QString filename = getCurrentFilename(); - CX_DEBUG(("Saving filename [%s]", qPrintable(filename))); - data.insert(FILENAME_KEY, filename); - - QImage img(mMainWindow->rect().size(), QImage::Format_ARGB32_Premultiplied); - QPainter p(&img); - mMainWindow->render(&p, mMainWindow->rect(), mMainWindow->rect()); - - QPixmap screenshot = QPixmap::fromImage(img); - - params.insert("screenshot", screenshot); - if (mEngine->mode() == Cxe::ImageMode) { - mActivityManager->removeActivity(CxuiActivityIds::STILL_POSTCAPTURE_ACTIVITY); - mActivityManager->addActivity(CxuiActivityIds::STILL_POSTCAPTURE_ACTIVITY, data, params); - } else { - mActivityManager->removeActivity(CxuiActivityIds::VIDEO_POSTCAPTURE_ACTIVITY); - mActivityManager->addActivity(CxuiActivityIds::VIDEO_POSTCAPTURE_ACTIVITY, data, params); - } - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - * Clear activity from activity manager. - */ -void CxuiPostcaptureView::clearActivity() -{ - CX_DEBUG_ENTER_FUNCTION(); - mActivityManager->removeActivity(CxuiActivityIds::STILL_POSTCAPTURE_ACTIVITY); - mActivityManager->removeActivity(CxuiActivityIds::VIDEO_POSTCAPTURE_ACTIVITY); - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Show event for this view. -* Update snapshot and start timers. -*/ -void CxuiPostcaptureView::showEvent(QShowEvent *event) -{ - CX_DEBUG_ENTER_FUNCTION(); - - QGraphicsWidget::showEvent(event); - - if (event->type() == QEvent::Show) { - QCoreApplication::instance()->installEventFilter(this); - - // Update snapshot for current file. - // If the current file does not exist anymore, return to pre-capture view. - updateSnapshotImage(); - - // If the image / video has been deleted, control returned to pre-capture view. - // No point to start timers or show controls then. - if (mMainWindow->currentView() == this) { - showControls(); - startTimers(); - } - - event->accept(); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Hide event. -* Release snapshot and stop timers. -*/ -void CxuiPostcaptureView::hideEvent(QHideEvent *event) -{ - CX_DEBUG_ENTER_FUNCTION(); - - QGraphicsWidget::hideEvent(event); - - if (event->type() == QEvent::Hide) { - // remove event filter to disable unnecessary actions - QCoreApplication::instance()->removeEventFilter(this); - - // Clear the snapshot. - mImageLabel->setIcon(HbIcon()); - - stopTimers(); - // Hide controls to make sure title bar reacts to show() - // when this view is reactivated. - hideControls(); - event->accept(); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! Shows toolbar. - Toolbar that is shown is selected based on current mode. - */ -void CxuiPostcaptureView::showToolbar(){ - - CX_DEBUG_ENTER_FUNCTION(); - - if (CxuiServiceProvider::isCameraEmbedded()) { - mEmbeddedToolbar->setVisible(true); - mStillToolbar->setVisible(false); - mVideoToolbar->setVisible(false); - } else { - mEmbeddedToolbar->setVisible(false); - if (mEngine->mode() == ImageMode) { - mVideoToolbar->setVisible(false); - mStillToolbar->setVisible(true); - mStillToolbar->show(); - } else { - mStillToolbar->setVisible(false); - mVideoToolbar->setVisible(true); - mVideoToolbar->show(); - } - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - Creates black background item. If snapshot smaller than the screen size, - background is visible. - */ -void CxuiPostcaptureView::createBackground() -{ - CX_DEBUG_ENTER_FUNCTION(); - - if (!mBackgroundItem) { - mBackgroundItem = new QGraphicsRectItem(this); - QBrush blackBrush = QBrush(Qt::black); - mBackgroundItem->setBrush(blackBrush); - mBackgroundItem->setRect(mMainWindow->sceneRect()); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - * Updates snapshot image. In normal case snapshot is retrieved from engine - * but if we are restoring camera to post-capture through activity, then - * we get snapshot from thumbnail manager. - */ -void CxuiPostcaptureView::updateSnapshotImage() -{ - CX_DEBUG_ENTER_FUNCTION(); - - if (isFileDeleted()) { - // File deleted, go to pre-capture view. - CX_DEBUG(("File has been deleted, going back to pre-capture")); - goToPrecaptureView(); - - } else if (!mFilename.isNull()) { - // filename set, we are restoring activity - if (!mThumbnailManager) { - mThumbnailManager = new ThumbnailManager(); - connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void *, int, int)), - this, SLOT(handleThumbnailReady(QPixmap))); - mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge); - } - mThumbnailManager->getThumbnail(mFilename); - CX_DEBUG(("Thumbnail requested")); - - } else { - // Normal use of post-capture view - QPixmap snapshot; - if (mEngine->mode() == ImageMode) { - - if (mEngine->stillCaptureControl().imageCount() > 0) { - snapshot = mEngine->stillCaptureControl()[0].snapshot(); - } - } else { - snapshot = mEngine->videoCaptureControl().snapshot(); - } - - // Update the snapshot image - handleThumbnailReady(snapshot); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Check if the file we show this post-capture view for is deleted. -* This can happen e.g. if we send camera to background and delete -* the file in other application. When used as activity, we may also -* get the name of already deleted file as activity parameter. -* @return True if the current file is deleted, false if not. -*/ -bool CxuiPostcaptureView::isFileDeleted() -{ - CX_DEBUG_ENTER_FUNCTION(); - - bool deleted(false); - - // Check how we entered this view. - if (mFilename.isNull()) { - CX_DEBUG(("Checking engine filename")); - // Normally entered post-capture view. - if (mEngine->mode() == ImageMode) { - // Check that the image have been saved already. - // If not, it cannot have been deleted in that case. - CxeStillImage &image(mEngine->stillCaptureControl()[0]); - CX_DEBUG(("Image filename [%s]", qPrintable(image.filename()))); - CX_DEBUG(("Image file saved: %d exists: %d", image.saved(), QFile::exists(image.filename()))); - deleted = image.saved() && !QFile::exists(image.filename()); - } else { - // Check that video has been stopped fully. - // If it's still stopping, QFile may not work. - CX_DEBUG(("Video filename [%s]", qPrintable(mEngine->videoCaptureControl().filename()))); - deleted = mEngine->videoCaptureControl().state() != CxeVideoCaptureControl::Stopping - && !QFile::exists(mEngine->videoCaptureControl().filename()); - } - } else { - // Started as activity, check the filename given when restoring activity. - CX_DEBUG(("Checking filename saved in activity")); - deleted = !QFile::exists(mFilename); - } - - CX_DEBUG_EXIT_FUNCTION(); - return deleted; -} - -/* ! - * gets the filename of the current file - */ -QString CxuiPostcaptureView::getCurrentFilename() -{ - CX_DEBUG_ENTER_FUNCTION(); - QString filename; - - if (!mFilename.isNull()) { - // post-capture started by activity, engine doesn't contain correct - // filename anymore so use the stored one - CX_DEBUG(("Using filename saved in activity")); - filename = mFilename; - } else { - CX_DEBUG(("Getting filename from engine")); - if (mEngine->mode() == Cxe::VideoMode) { - filename = mEngine->videoCaptureControl().filename(); - } else { - //!@todo Currently only gets index 0 from the still capture control. - CxeStillCaptureControl& stillCaptureControl = mEngine->stillCaptureControl(); - if (stillCaptureControl.imageCount() > 0) { - filename = stillCaptureControl[0].filename(); - } - } - } - - CX_DEBUG(("Got filename [%s]", qPrintable(filename))); - CX_DEBUG_EXIT_FUNCTION(); - - return filename; -} - -/*! - Sends current capture to client app and closes camera -*/ -void CxuiPostcaptureView::select() -{ - CxuiServiceProvider *serviceProvider = CxuiServiceProvider::instance(); - if (!serviceProvider) { - return; - } - - QString filename = getCurrentFilename(); - serviceProvider->sendFilenameToClientAndExit(filename); -} - -/*! -* Handle exiting standby. -*/ -void CxuiPostcaptureView::exitStandby() -{ - CX_DEBUG_ENTER_FUNCTION(); - - // Common functionality first. - CxuiView::exitStandby(); - - // Update snapshot and check the current file is not deleted. - updateSnapshotImage(); - - if (mMainWindow->currentView() == this) { - showControls(); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Handle entering standby. -*/ -void CxuiPostcaptureView::enterStandby() -{ - CX_DEBUG_ENTER_FUNCTION(); - - // Common functionality (release camera). - CxuiView::enterStandby(); - - stopTimers(); - hideControls(); - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - * Handle thumbnail received from ThumbnailManager. - * - * @param thumbnail Thumbnail as QPixmap - */ -void CxuiPostcaptureView::handleThumbnailReady(QPixmap thumbnail) -{ - CX_DEBUG_ENTER_FUNCTION(); - - if (thumbnail.isNull()) { - CX_DEBUG(("[WARNING] Received null thumbnail from TNM, going to pre-capture.")); - // null thumbnail, go to precapture - goToPrecaptureView(); - } else if (mImageLabel) { - mImageLabel->setIcon(HbIcon(QIcon(thumbnail))); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - Start the timers -*/ -void CxuiPostcaptureView::startTimers() -{ - CX_DEBUG_ENTER_FUNCTION(); - - // we start timers only once in a given postcapture view session - if(!mTimersStarted) { - startPostcaptureTimer(); - startReleaseTimers(); - mTimersStarted = true; - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - Start the timer to return to pre-capture view -*/ -void CxuiPostcaptureView::startPostcaptureTimer() -{ - CX_DEBUG_ENTER_FUNCTION(); - - if (!mFilename.isNull()) { - // restored from activity, don't do post-capture timeout - CX_DEBUG_EXIT_FUNCTION(); - return; - } - - int postCaptureTimeout = 0; - QString settingId; - - if (mEngine->mode() == ImageMode) { - settingId = CxeSettingIds::STILL_SHOWCAPTURED; - } else { - settingId = CxeSettingIds::VIDEO_SHOWCAPTURED; - } - - if (!CxuiServiceProvider::isCameraEmbedded()) { - postCaptureTimeout = mEngine->settings().get(settingId, 0); - - if (postCaptureTimeout > 0) { - mPostcaptureTimer.start(postCaptureTimeout); - } else { - // do nothing - } - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - Start the timers to stop viewfinder and release the camera -*/ -void CxuiPostcaptureView::startReleaseTimers() -{ - CX_DEBUG_ENTER_FUNCTION(); - - // Release camera and stop viewfinder if user stays in postcapture long enough. - // Battery could otherwise drain fast. - mReleaseCameraTimer.start(CXUI_RELEASE_CAMERA_TIMEOUT); - mStopViewfinderTimer.start(CXUI_STOP_VIEWFINDER_TIMEOUT); - - CX_DEBUG_EXIT_FUNCTION(); -} - -void CxuiPostcaptureView::stopTimers() -{ - CX_DEBUG_ENTER_FUNCTION(); - - // stop all the timers - mHideControlsTimeout.stop(); - mReleaseCameraTimer.stop(); - mPostcaptureTimer.stop(); - mStopViewfinderTimer.stop(); - - //!@note mTimersStarted is intentionally not reset here. - // Once the timers are stopped, they are not to be started again until - // we come from precapture view again. - // E.g. returning from background could otherwise restart the timers and - // if post-capture timer would be on, user could be confused: camera - // shows up with post-capture view, after couple seconds it disappears - // and we return to pre-capture view. That's not what we want. - - CX_DEBUG_EXIT_FUNCTION(); -} - -// end of file