controlpanelui/src/cpplugins/personalizationplugin/src/cpmastervolumeslider.cpp
changeset 10 0a74be98a8bc
child 11 10d0dd0e43f1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cpmastervolumeslider.cpp	Fri Mar 19 09:29:29 2010 +0200
@@ -0,0 +1,166 @@
+/*
+ * 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;
+	}
+}
+