diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraxui/cxui/src/cxuisettingslider.cpp --- a/camerauis/cameraxui/cxui/src/cxuisettingslider.cpp Tue Aug 31 15:03:46 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,175 +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 "cxuisettingslider.h" -#include "cxeengine.h" -#include "cxesettings.h" -#include "cxutils.h" - -CxuiSettingSlider::CxuiSettingSlider(QGraphicsItem *parent, CxeEngine *engine) : -HbSlider(parent), -mSettingId(), -mEngine(engine), -mSettings(NULL), -mOriginalValue(0), -mSliderScaleValue(1) -{ - connect(this, SIGNAL(valueChanged(int)), this, SLOT(handleValueChanged(int))); -} - -/*! - Initialises slider according to SliderParams data -*/ -void CxuiSettingSlider::init(CxUiSettings::SliderParams *data) -{ - CX_DEBUG_ENTER_FUNCTION(); - - // initialise engine side settings - if (mEngine) { - mSettings = &mEngine->settings(); - CX_ASSERT_ALWAYS(mSettings); - } - - // initialise data - if (data) { - - // scale value is needed because slider doesn't show all ticks and - // labels correctly if step is something else than 1 - int step = 1; - mSliderScaleValue = 1; - if (data->mMinorStep != 0) { - mSliderScaleValue = step / data->mMinorStep; - } - - // scale min and max values as step has been set to 1 - int minvalue = data->mRange.first * mSliderScaleValue; - int maxvalue = data->mRange.second * mSliderScaleValue; - CX_DEBUG(("Setting slider range [%d..%d]", minvalue, maxvalue)); - setRange(minvalue,maxvalue); - setSingleStep(step); - - setSnappingMode(HbSlider::MinorTickSnapping); - - setMajorTickLabels(data->mSettingStrings); - setMajorTickInterval(mSliderScaleValue * data->mMajorStep); - setMinorTickInterval(mSliderScaleValue * data->mMinorStep); - setTickPosition(Hb::SliderTicksAbove); - - setSettingId(data->mSettingId); - - } - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - Returns settingId -*/ -QString CxuiSettingSlider::settingId() const -{ - return mSettingId; -} - -/*! - Sets the setting identification string. Setting id corresponds to specific setting - defined in cxenamespace.h. A value that corresponds the id is got from engine and - stored as original value. Also slider value is updated. -*/ -void CxuiSettingSlider::setSettingId(const QString &id) -{ - CX_DEBUG_ENTER_FUNCTION(); - - mSettingId = id; - - // once the settingid is set, we can get the current value for the slider from the engine - qreal value = mSettings->get(mSettingId, 0); - - // engine value has to be scaled when set to slider - setValue(value * mSliderScaleValue); - mOriginalValue = value; - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - This slot is called when slider's value is changed. - Value is stored to engine. -*/ -void CxuiSettingSlider::handleValueChanged(int value) -{ - CX_DEBUG_ENTER_FUNCTION(); - - qreal realValue = 0.0; - if (mSliderScaleValue != 0) { - realValue = value / mSliderScaleValue; - } - - CX_DEBUG(("id: %s", mSettingId.toAscii().data())); - CX_DEBUG(("changing value to: %f ", realValue)); - - // check added because when the slider is created (or ui appearance changed) - // handlevaluechanged function is called before the mSettingId is set - if (!mSettingId.isEmpty()){ - mSettings->set(mSettingId, realValue); - } - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - This slot should be called when slider is closed. Original value will always be given - to engine. Original value is the value that slider had when it was initialised unless - slider value is changed and handleSelectionAccepted() function is called before coming here -*/ -void CxuiSettingSlider::handleClose() -{ - CX_DEBUG_ENTER_FUNCTION(); - - setValue(mOriginalValue * mSliderScaleValue); - // value selected from slider not accepted, revert back - // the value to original value. - CX_DEBUG(("id: %s", mSettingId.toAscii().data())); - CX_DEBUG(("changing value back to original value: %f ", mOriginalValue)); - - // when the slider is created, handlevaluechanged function is - // called before the mSettingId is set - if (mSettings && !mSettingId.isEmpty()){ - mSettings->set(mSettingId, mOriginalValue); - } - - // clear settings id so that setting value doesn't get updated by accident - // when updating slider's ui appearance - mSettingId.clear(); - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! - Accepts the current selection. -*/ -void CxuiSettingSlider::handleSelectionAccepted() -{ - CX_DEBUG_ENTER_FUNCTION(); - - // sets the curren slider value to be original value. mOriginal value - // is given to engine whenever handleClose() function is called - if (mSliderScaleValue != 0) { - mOriginalValue = value() / mSliderScaleValue; - } - - emit selectionCommitted(); - - CX_DEBUG_EXIT_FUNCTION(); -}