diff -r a289dde0a1d6 -r 415ff50d2eca camerauis/cameraxui/cxui/src/cxuiserviceprovider.cpp --- a/camerauis/cameraxui/cxui/src/cxuiserviceprovider.cpp Fri Sep 17 08:27:13 2010 +0300 +++ b/camerauis/cameraxui/cxui/src/cxuiserviceprovider.cpp Mon Oct 04 00:05:08 2010 +0300 @@ -30,6 +30,9 @@ CxuiServiceProvider* CxuiServiceProvider::mInstance = NULL; +/*! + * Constructor. + */ CxuiServiceProvider::CxuiServiceProvider(CxeEngine *engine) : XQServiceProvider("cxui." + XQI_CAMERA_CAPTURE), @@ -40,13 +43,17 @@ mQuality(0), mAllowModeSwitching(true), mAllowQualityChange(true), - mAllowCameraSwitching(true) + mAllowCameraSwitching(true), + mWindowTitle("") { CX_DEBUG_ENTER_FUNCTION(); publishAll(); CX_DEBUG_EXIT_FUNCTION(); } +/*! + * Destructor. + */ CxuiServiceProvider::~CxuiServiceProvider() { CX_DEBUG_ENTER_FUNCTION(); @@ -102,64 +109,50 @@ } /*! - * + * Returns camera mode requested by client. */ -Cxe::CameraMode CxuiServiceProvider::requestedMode() +Cxe::CameraMode CxuiServiceProvider::requestedMode() const { return mRequestedMode; } /*! - * + * Returns boolean to indicate whether client app allows camera mode switching. */ -bool CxuiServiceProvider::allowModeSwitching() +bool CxuiServiceProvider::allowModeSwitching() const { return mAllowModeSwitching; } /*! - * + * Returns boolean to indicate whether client app allows image/video quality to be + * changed. */ -bool CxuiServiceProvider::allowQualityChange() +bool CxuiServiceProvider::allowQualityChange() const { return mAllowQualityChange; } /*! - * + * Returns boolean to indicate whether client app allows switching + * between primary and secondary camera. */ -bool CxuiServiceProvider::allowCameraSwitching() +bool CxuiServiceProvider::allowCameraSwitching() const { return mAllowCameraSwitching; } /*! - * + * Returns window title provided by client application. */ -void CxuiServiceProvider::sendFilenameToClientAndExit(QString filename) +QString CxuiServiceProvider::windowTitle() const { - CX_DEBUG_ENTER_FUNCTION(); - - if (mRequestIndex == -1) { - CX_DEBUG(("CxuiServiceProvider: no request in progress")); - QCoreApplication::instance()->quit(); - CX_DEBUG_EXIT_FUNCTION(); - return; - } - - connect(this, SIGNAL(returnValueDelivered()), QCoreApplication::instance(), SLOT(quit())); - - CX_DEBUG(("CxuiServiceProvider: completing request")); - if (!completeRequest(mRequestIndex, QVariant(filename))) { - // if request completion fails call quit immediately because signal is not coming - CX_DEBUG(("completeRequest() failed, quitting now")); - QCoreApplication::instance()->quit(); - } - mRequestIndex = -1; - - CX_DEBUG_EXIT_FUNCTION(); + return mWindowTitle; } +/*! + * Function that is called when request arrives. Sets up camera to requested state. + */ void CxuiServiceProvider::capture(int mode, const QVariantMap ¶meters) { CX_DEBUG_ENTER_FUNCTION(); @@ -183,6 +176,14 @@ return; } + CX_DEBUG(("Getting request info")); + XQRequestInfo info = requestInfo(); + + QString windowTitle = info.info(XQINFO_KEY_WINDOW_TITLE).toString(); + if (!windowTitle.isNull() && !windowTitle.isEmpty()) { + CX_DEBUG(("Got window title=%s", qPrintable(windowTitle))); + mWindowTitle = windowTitle; + } mRequestIndex = setCurrentRequestAsync(); mEngine->cameraDeviceControl().switchCamera(static_cast (mCameraIndex)); @@ -219,11 +220,39 @@ mEngine->initMode(mRequestedMode); + CX_DEBUG_EXIT_FUNCTION(); +} +/*! + * Sends filename of captured image/video to client and exits camera app. + */ +void CxuiServiceProvider::sendFilenameToClientAndExit(QString filename) +{ + CX_DEBUG_ENTER_FUNCTION(); + + if (mRequestIndex == -1) { + CX_DEBUG(("CxuiServiceProvider: no request in progress")); + QCoreApplication::instance()->quit(); + CX_DEBUG_EXIT_FUNCTION(); + return; + } + + connect(this, SIGNAL(returnValueDelivered()), QCoreApplication::instance(), SLOT(quit())); + + CX_DEBUG(("CxuiServiceProvider: completing request")); + if (!completeRequest(mRequestIndex, QVariant(filename))) { + // if request completion fails call quit immediately because signal is not coming + CX_DEBUG(("completeRequest() failed, quitting now")); + QCoreApplication::instance()->quit(); + } + mRequestIndex = -1; CX_DEBUG_EXIT_FUNCTION(); } +/*! + * Helper function to read request parameters. + */ bool CxuiServiceProvider::readParameters(const QVariantMap& parameters) {