controlpanelui/src/cpplugins/personalizationplugin/src/cpmastervolumeslider.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:29:29 +0200
changeset 10 0a74be98a8bc
child 11 10d0dd0e43f1
permissions -rw-r--r--
Revision: 201005 Kit: 201011

/*
 * 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 "cpmastervolumeslider.h"

CpMasterVolumeSlider::CpMasterVolumeSlider(QGraphicsItem *parent /* =0 */)
											:HbSlider(parent),
											 mPreviousValue(0)		 
{
	QList<HbSlider::SliderElement> elements;
    elements << HbSlider::IncreaseElement
			 << HbSlider::TrackElement
			 << HbSlider::DecreaseElement
			 << HbSlider::IconElement
			 << HbSlider::TextElement;

    setElements( elements );
	setOrientation(Qt::Horizontal);
	setMaximum(11);
	setMinimum(0);
	
	setIcon(HbSlider::DecreaseElement, HbIcon(":/icon/hb_vol_slider_decrement.svg"));
	setIcon(HbSlider::IncreaseElement, HbIcon(":/icon/hb_vol_slider_increment.svg"));
	setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_muted.svg"));
	
	setIconCheckable(true);

	// set tick and beep label
	
#if 1
	setMajorTickInterval(1);
	setTickPosition(Hb::SliderTicksBothSides);
//	QStringList labelList;
//	labelList<< tr("")
//			 << tr("Beep");
			 
//	this->setMajorTickLabels(labelList);
#endif
	
	connect(this, SIGNAL(iconToggled(bool)), 
			this, SLOT(onMuteIconToggled(bool)));
	connect(this, SIGNAL(valueChanged(int)),
			this, SLOT(onValueChanged(int)));
//	onValueChanged(value());
}

CpMasterVolumeSlider::~CpMasterVolumeSlider()
{
}

bool CpMasterVolumeSlider::isBeepMode()
{
	if (value() == minimum()+1) {
		return true;
	}
	else {
		return false;
	}
}

void CpMasterVolumeSlider::setBeepMode(bool isBeepMode)
{
	if (isBeepMode == true) {
		setValue(minimum()+1);	
	}
	else {
		setValue(mPreviousValue);
	}
}

bool CpMasterVolumeSlider::isSilentMode()
{
	if (value() == minimum()) {
		return true;
	}
	else {
		return false;
	}
}

void CpMasterVolumeSlider::setSilentMode(bool isSilentMode)
{
	if (isSilentMode == true) {
		setValue(minimum());	
	}
	else {
		setValue(mPreviousValue);
	}
}

int CpMasterVolumeSlider::normalValue()
{
	return (value()-1);
}

void CpMasterVolumeSlider::setNormalValue(int normalValue)
{
	setValue(normalValue+1);
}
	
void CpMasterVolumeSlider::onValueChanged(int value)
{
	if (this->minimum( ) == value) { 
        // volume is mute
        this->setIconChecked( true );
		emit silentActivated();
    } 
	else {
        // unmute volume
		this->setIconEnabled( true );
		this->setIconCheckable(false);
    this->setIconChecked( false );
    this->setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_unmuted.svg"));
		this->setIconCheckable(true);
		
		
		if (value == 1) {
			emit beepActivated(); 
		}
		else {
			int valueMap = value - 1;
			emit normalValueChanged(valueMap);
		}
    }
}

void CpMasterVolumeSlider::onIncreaseIconClicked()
{
}

void CpMasterVolumeSlider::onDecreaseIconClicked()
{
}

void CpMasterVolumeSlider::onMuteIconToggled(bool isToggled)
{
	if (isToggled) {
		mPreviousValue = value();
		this->setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_muted.svg"));
		setValue(minimum());
	}
	else {
		this->setIcon(HbSlider::IconElement, HbIcon(":/icon/hb_vol_slider_unmuted.svg"));
		if (mPreviousValue == minimum()||mPreviousValue == minimum()+1) {
			setValue(minimum()+1);
		}
		else {
			setValue(mPreviousValue);
		}
		mPreviousValue = 0;
	}
}