diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraxui/cxui/src/cxuisettingsinfo.cpp --- a/camerauis/cameraxui/cxui/src/cxuisettingsinfo.cpp Tue Aug 31 15:03:46 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,361 +0,0 @@ -/* -* Copyright (c) 2009 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 "cxutils.h" -#include "cxuienums.h" -#include "cxeengine.h" -#include "cxesettings.h" -#include "cxenamespace.h" -#include "cxuisettingsinfo.h" -#include "cxequalitydetails.h" -#include "cxestillcapturecontrol.h" -#include "cxevideocapturecontrol.h" -#include "cxecameradevicecontrol.h" -#include "cxuisettingradiobuttonlist.h" -#include "cxuisettingxmlreader.h" - -using namespace Cxe; -using namespace CxUiSettings; - -namespace -{ - const QSize KResVGA = QSize(640, 480); - const QSize KResHD = QSize(1280, 720); - const QSize KResWideVGA = QSize(864, 480); - const QSize KResSharing = QSize(176,144); -} - -RadioButtonListParams& RadioButtonListParams::operator=(const RadioButtonListParams& other) -{ - CX_DEBUG_ENTER_FUNCTION(); - // Protect against self-assignment - if (this != &other) - { - mHeading = other.mHeading; - mSettingId = other.mSettingId; - mHeadingIcon = other.mHeadingIcon; - mSettingPairList = other.mSettingPairList; - mPreview = other.mPreview; - mListboxType = other.mListboxType; - } - CX_DEBUG_EXIT_FUNCTION(); - return *this; -} - -SliderParams& SliderParams::operator=(const SliderParams& other) -{ - CX_DEBUG_ENTER_FUNCTION(); - // Protect against self-assignment - if (this != &other) - { - mHeading = other.mHeading; - mSettingId = other.mSettingId; - mHeadingIcon = other.mHeadingIcon; - mSettingStrings = other.mSettingStrings; - mRange = other.mRange; - mMinorStep = other.mMinorStep; - mMajorStep = other.mMajorStep; - } - CX_DEBUG_EXIT_FUNCTION(); - return *this; -} - - -/*! -* CxuiSettingsInfo::CxuiSettingsInfo -*/ -CxuiSettingsInfo::CxuiSettingsInfo(CxeEngine *engine) - : mMode(-1), mEngine(engine) -{ - CX_DEBUG_ENTER_FUNCTION(); - CX_ASSERT_ALWAYS(engine); - - mXmlReader = new CxuiSettingXmlReader(); - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* CxuiSettingsInfo::~CxuiSettingsInfo -*/ -CxuiSettingsInfo::~CxuiSettingsInfo() -{ - CX_DEBUG_ENTER_FUNCTION(); - - delete mXmlReader; - - CX_DEBUG_EXIT_FUNCTION(); -} - - -/*! -* Fetches the settings content for radio button list -* @param key specifies the settings key -* @param settings on return contains all the data required for radiobutton list -* @return Was the setting supported or not -*/ -bool CxuiSettingsInfo::getSettingsContent(const QString &key, - RadioButtonListParams &settings) -{ - CX_DEBUG_ENTER_FUNCTION(); - - // Check that right content is loaded. Load now if not. - checkMode(); - - bool found(false); - - if (key == CxeSettingIds::IMAGE_QUALITY || - key == CxeSettingIds::VIDEO_QUALITY) { - handleQualitySettings(key, settings); - found = true; - } else { - // load settings from xml loader - if (mXmlReader) { - settings = mXmlReader->getListSettingInfo(key, found); - } - } - - CX_DEBUG_EXIT_FUNCTION(); - return found; -} - - - -/*! -* Fetches the settings content for slider -* @Param key specifies the settings key -* @param settings on return contains all the data required for slider -*/ -bool CxuiSettingsInfo::getSettingsContent(const QString &key, - SliderParams &settings) -{ - CX_DEBUG_ENTER_FUNCTION(); - - // Check that right content is loaded. Load now if not. - checkMode(); - - bool found(false); - - if (mXmlReader) { - settings = mXmlReader->getSliderSettingInfo(key, found); - } - - CX_DEBUG_EXIT_FUNCTION(); - return found; -} - - - - - -/*! -* Helper function to prepare image/video quality settings list -*/ -void CxuiSettingsInfo::handleQualitySettings(const QString &key, - CxUiSettings::RadioButtonListParams &settings) -{ - CX_DEBUG_ENTER_FUNCTION(); - - settings.mSettingId = key; - settings.mPreview = false; - settings.mListboxType = CxuiSettingRadioButtonList::TwoLine; - - if (key == CxeSettingIds::IMAGE_QUALITY) { - settings.mHeading = hbTrId("txt_cam_title_image_quality"); - getImageQualitySettings(settings); - } else { - settings.mHeading = hbTrId("txt_cam_title_video_quality"); - getVideoQualitySettings(settings); - } - - CX_DEBUG_EXIT_FUNCTION(); - -} - - - -/*! -* Prepares Image quality settings. -*/ -void CxuiSettingsInfo::getImageQualitySettings(RadioButtonListParams &settings) -{ - CX_DEBUG_ENTER_FUNCTION(); - - settings.mSettingPairList.clear(); - - QList list = - mEngine->stillCaptureControl().supportedImageQualities(); - - int index = 0; - - // get the localized possible strings for each image quality setting - QString vga = "txt_cam_dblist_vga"; - QString normal = "txt_cam_dblist_ln_mpix"; - QString imagesLeft = "txt_cam_dblist_hd_720p_val_ln_images_left"; - QString widescreen = "txt_cam_dblist_ln_mpix_widescreen"; - - foreach(CxeImageDetails quality, list) { - // mapping the right value for each quality - - QString settingString; - QString qualityIcon = ""; - qreal pxCount = quality.mMpxCount.toDouble(); - - if (quality.mWidth == KResVGA.width() && quality.mHeight == KResVGA.height()) { - settingString.append(hbTrId(vga.toAscii().constData())); - settingString.append(" "); - } - - if (quality.mAspectRatio == Cxe::AspectRatio16to9) { - settingString.append(hbTrId(widescreen.toAscii().constData()).arg(pxCount,0,'g',3)); - } else { - settingString.append(hbTrId(normal.toAscii().constData()).arg(pxCount,0,'g',3)); - } - - settingString.append(NEW_LINE_CHAR); - settingString.append(HbParameterLengthLimiter(imagesLeft.toAscii().constData(), quality.mPossibleImages)); - CX_DEBUG(( "Image quality setting string: %s", settingString.toAscii().constData())); - - if (quality.mMpxCount == "12") { - qualityIcon = "qtg_mono_12mp"; - } else if (quality.mMpxCount == "9") { - qualityIcon = "qtg_mono_9mp"; - } else if (quality.mMpxCount == "3") { - qualityIcon = "qtg_mono_3mp"; - } else if (quality.mMpxCount == "1.2") { - qualityIcon = "qtg_mono_1_3mp"; - } else if (quality.mMpxCount == "0.3") { - qualityIcon = "qtg_mono_0_3mp"; - } - - SettingItem setting; - setting.mItem = settingString; - setting.mValue = index; - setting.mIcon = qualityIcon; - settings.mSettingPairList.append(setting); - - index++; - } - - CX_DEBUG_EXIT_FUNCTION(); -} - - - -/*! -* Prepares video quality settings. -*/ -void CxuiSettingsInfo::getVideoQualitySettings(RadioButtonListParams &settings) -{ - CX_DEBUG_ENTER_FUNCTION(); - - settings.mSettingPairList.clear(); - - QList list = - mEngine->videoCaptureControl().supportedVideoQualities(); - - int index = 0; - - // get the localized possible strings for each video quality setting - QString timeleft = hbTrId("txt_cam_dblist_hd_720p_val_ln_recording_time_left"); - QString hdString = hbTrId("txt_cam_dblist_hd_720p_169_widescreen"); - QString vga = hbTrId("txt_cam_dblist_vga_43"); - QString wideVga = hbTrId("txt_cam_dblist_vga_169_widescreen"); //VGA 16:9 widescreen - QString sharing = hbTrId("txt_cam_dblist_qcif_sharing"); - - foreach(CxeVideoDetails quality, list) { - // mapping the right value for each quality - - QString settingString = ""; - QString time = ""; - QString qualityIcon = ""; - - if (quality.mWidth == KResHD.width() && - quality.mHeight == KResHD.height()) { - settingString.append(hdString); - qualityIcon = "qtg_mono_hd"; - } else if (quality.mWidth == KResVGA.width() && - quality.mHeight == KResVGA.height()) { - settingString.append(vga); - qualityIcon = "qtg_mono_vga"; - } else if (quality.mWidth == KResSharing.width() && - quality.mHeight == KResSharing.height()){ - settingString.append(sharing); - qualityIcon = "qtg_mono_qcif"; - } else if (quality.mWidth == KResWideVGA.width() && - quality.mHeight == KResWideVGA.height()) { - settingString.append(wideVga); - qualityIcon = "qtg_mono_vga_wide"; - } - - settingString.append(NEW_LINE_CHAR); - time.sprintf("%02d:%02d", quality.mRemainingTime / 60, quality.mRemainingTime % 60); - settingString.append(timeleft.arg(time)); - - - - CX_DEBUG(( "video quality setting string: %s", settingString.toAscii().constData())); - SettingItem setting; - setting.mItem = settingString; - setting.mValue = index; - setting.mIcon = qualityIcon; - settings.mSettingPairList.append(setting); - - index++; - } - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Check that the right content for current mode is loaded. -* -* UI gets "settings changed" / "scene changed" events quite -* early when switching mode (image / video). We cannot rely -* on CxeCameraDeviceControl::initModeComplete signal since -* that would be coming too late. (We would be using setting XML -* for the old mode, and setting keys/values/icons would not -* be found.) Better check this whenever UI requests for -* content for a setting, and reload the XML when needed. -* @see CxuiSettingsInfo::getSettingsContent(const QString &, RadioButtonListParams &) -* @see CxuiSettingsInfo::getSettingsContent(const QString &, SliderParams &) -* @see CxeCameraDeviceControl::initModeComplete(CxeError::Id) -*/ -void CxuiSettingsInfo::checkMode() -{ - CX_DEBUG_ENTER_FUNCTION(); - - int oldMode = mMode; - mMode = mEngine->cameraDeviceControl().mode(); - if (mMode != oldMode) { - // Select the setting XML file based on mode. - QString sourceXml(mEngine->cameraDeviceControl().mode() == Cxe::ImageMode - ? CxUiSettings::IMAGE_SETTING_MAPPING_FILE - : CxUiSettings::VIDEO_SETTING_MAPPING_FILE); - - mXmlReader->setXmlSource(sourceXml); - } - - CX_DEBUG_EXIT_FUNCTION(); -} - - -// end of file