controlpanelui/src/cpplugins/volumeplugin/src/cpvolumecontroller.cpp
branchRCL_3
changeset 34 90fe62538f66
equal deleted inserted replaced
32:3fec62e6e7fc 34:90fe62538f66
       
     1 
       
     2 /*
       
     3  * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     4  * All rights reserved.
       
     5  * This component and the accompanying materials are made available
       
     6  * under the terms of "Eclipse Public License v1.0""
       
     7  * which accompanies this distribution, and is available
       
     8  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     9  *
       
    10  * Initial Contributors:
       
    11  * Nokia Corporation - initial contribution.
       
    12  *
       
    13  * Contributors:
       
    14  *
       
    15  * Description:  
       
    16  *
       
    17  */
       
    18 
       
    19 #include "cpvolumecontroller.h"
       
    20 #include <cplogger.h>
       
    21 #include <cpitemdatahelper.h>
       
    22 #include <hbdataformmodelitem.h>
       
    23 #include "cpvolumegroupitemdata.h"
       
    24 #ifdef Q_OS_SYMBIAN
       
    25 	#include <cpprofilemodel.h>
       
    26 #endif
       
    27 //#include <hbslider.h>
       
    28 //#include <hbpushbutton.h>
       
    29 
       
    30 #include <xqsettingsmanager.h>
       
    31 #include <ProfileEngineInternalCRKeys.h>
       
    32 #include <ProfileInternal.hrh>
       
    33 
       
    34 CpVolumeController::CpVolumeController(CpProfileModel *profileModel,
       
    35                                        const QList<HbDataFormModelItem *> &itemList,
       
    36                                        CpItemDataHelper &itemDataHelper) : 
       
    37                                        mProfileModel(profileModel),
       
    38                                        mItemList(itemList),
       
    39                                        mSettingManager(0)
       
    40 															 
       
    41 {
       
    42 	//itemDataHelper.addConnection(mMasterVolumeItem,SIGNAL(beepActivated()),this,SLOT(onBeepActivated()));
       
    43 	//itemDataHelper.addConnection(mMasterVolumeItem,SIGNAL(silentActivated()),this,SLOT(onSilentActivated()));
       
    44 	//itemDataHelper.addConnection(mMasterVolumeItem,SIGNAL(normalValueChanged(int)),this,SLOT(onNormalValueChanged(int)));
       
    45 	//updateMasterVolumeValue();
       
    46     
       
    47     
       
    48     itemDataHelper.addConnection(
       
    49                 mItemList.at(CpVolumeGroupItemData::EVolumeSilenceItem), SIGNAL(toggled(bool)),
       
    50                 this, SLOT(silenceModeChange(bool))
       
    51             );
       
    52     
       
    53     
       
    54     itemDataHelper.addConnection(
       
    55                 mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem), SIGNAL(valueChanged(int)),
       
    56                 this, SLOT(masterVolumeChange(int))
       
    57             );
       
    58     itemDataHelper.addConnection(
       
    59                 mItemList.at(CpVolumeGroupItemData::EVolumeMasterVibraItem), SIGNAL(stateChanged(int)),
       
    60                 this, SLOT(masterVibraChange(int))
       
    61             );
       
    62     updateUi();
       
    63     
       
    64     mSettingManager = new XQSettingsManager();
       
    65     
       
    66     XQCentralRepositorySettingsKey silenceKey(KCRUidProfileEngine.iUid,KProEngSilenceMode);
       
    67     mSettingManager->startMonitoring(silenceKey,XQSettingsManager::TypeInt);
       
    68    
       
    69     XQCentralRepositorySettingsKey masterVolumeKey
       
    70                                     (KCRUidProfileEngine.iUid,KProEngMasterVolume);
       
    71     mSettingManager->startMonitoring(masterVolumeKey,XQSettingsManager::TypeInt);
       
    72     
       
    73     XQCentralRepositorySettingsKey masterVibraKey
       
    74                                     (KCRUidProfileEngine.iUid,KProEngMasterVibra);
       
    75     mSettingManager->startMonitoring(masterVibraKey,XQSettingsManager::TypeInt);
       
    76     
       
    77     connect(mSettingManager, SIGNAL(valueChanged (XQSettingsKey, QVariant)),
       
    78             this, SLOT(settingValueChanged(XQSettingsKey, QVariant)));
       
    79 }
       
    80 
       
    81 CpVolumeController::~CpVolumeController()
       
    82 {
       
    83     delete mSettingManager;
       
    84 }
       
    85 
       
    86 void CpVolumeController::silenceModeChange(bool isSilence)
       
    87 {
       
    88 #ifdef Q_OS_SYMBIAN
       
    89 	mProfileModel->setSilenceMode(isSilence);
       
    90 #endif
       
    91 }
       
    92 
       
    93 
       
    94 void CpVolumeController::masterVolumeChange(int value)
       
    95 {
       
    96 #ifdef Q_OS_SYMBIAN	
       
    97     mProfileModel->setMasterVolume(value);
       
    98 	HbDataFormModelItem *masterVolume = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem);
       
    99 	masterVolume->setContentWidgetData("value",value);
       
   100 #endif
       
   101 }
       
   102 
       
   103 void CpVolumeController::masterVibraChange(int state)
       
   104 {
       
   105 #ifdef Q_OS_SYMBIAN
       
   106     mProfileModel->setMasterVibra(state);
       
   107 #endif
       
   108 }
       
   109 
       
   110 void CpVolumeController::updateUi()
       
   111 {
       
   112 #ifdef Q_OS_SYMBIAN
       
   113 	bool isSilenceMode = mProfileModel->silenceMode();
       
   114 	HbDataFormModelItem *silenceIndicator = mItemList.at(CpVolumeGroupItemData::EVolumeSilenceItem);
       
   115 	if(silenceIndicator) {
       
   116 			silenceIndicator->setContentWidgetData("checked",isSilenceMode);		
       
   117 	}
       
   118 	HbDataFormModelItem *masterVolume = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem);
       
   119 	if (masterVolume) {
       
   120 	    CPFW_LOG("::updateMasterVolumeValue(), Start using profile model.");
       
   121 	    QMap<QString, QVariant> iconMaps;
       
   122 	    if (isSilenceMode) {
       
   123 	        CPFW_LOG("::updateMasterVolumeValue(), Got silent state.");
       
   124 	        iconMaps.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
       
   125 	        iconMaps.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
       
   126 	        iconMaps.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg"));
       
   127 	    }
       
   128 	    else {
       
   129             iconMaps.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
       
   130 	        iconMaps.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
       
   131 	        iconMaps.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg"));
       
   132 	    }
       
   133 	    masterVolume->setContentWidgetData("elementIcons", iconMaps);
       
   134 	    masterVolume->setEnabled(!isSilenceMode);
       
   135 	    //masterVolume->setContentWidgetData("enabled",!isSilenceMode);
       
   136 	    masterVolume->setContentWidgetData("value",mProfileModel->masterVolume());
       
   137 	}
       
   138 	HbDataFormModelItem *masterVibra = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVibraItem);
       
   139 	if (masterVibra) {
       
   140         masterVibra->setContentWidgetData("checkState",(mProfileModel->masterVibra()?2:0));
       
   141 	} 
       
   142 	
       
   143 #endif
       
   144 }
       
   145 
       
   146 void CpVolumeController::settingValueChanged(const XQSettingsKey &key, const QVariant &value)
       
   147 {
       
   148     if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngSilenceMode) {
       
   149         HbDataFormModelItem *masterVolume = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem);
       
   150         if (masterVolume) {
       
   151         		QMap<QString, QVariant> iconMaps;
       
   152         		if (value.toBool()) {
       
   153                     iconMaps.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
       
   154         		    iconMaps.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
       
   155         			iconMaps.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg"));
       
   156         		}
       
   157         		else {
       
   158                     iconMaps.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
       
   159         		    iconMaps.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
       
   160         		    iconMaps.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg"));
       
   161         		}
       
   162         		masterVolume->setContentWidgetData("elementIcons", iconMaps);
       
   163             masterVolume->setEnabled(!value.toBool());
       
   164         }
       
   165         HbDataFormModelItem *silenceMode = mItemList.at(CpVolumeGroupItemData::EVolumeSilenceItem);
       
   166         if (silenceMode) {
       
   167             silenceMode->setContentWidgetData("checked",value.toInt() != 0);
       
   168         }
       
   169     }
       
   170     else if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngMasterVolume) {
       
   171         HbDataFormModelItem *masterVolume = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVolumeItem);
       
   172         if (masterVolume) {
       
   173             masterVolume->setContentWidgetData("value",value.toInt());
       
   174         }
       
   175     }
       
   176     else if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngMasterVibra) {
       
   177         HbDataFormModelItem *masterVibra = mItemList.at(CpVolumeGroupItemData::EVolumeMasterVibraItem);
       
   178         if (masterVibra) {
       
   179             masterVibra->setContentWidgetData("checkState",(value.toInt() ? 2 : 0));
       
   180         }
       
   181     }
       
   182 }
       
   183 
       
   184 //End of File