diff -r 924385140d98 -r c2c61fdca848 coreapplicationuis/devicepowermenuplugin/src/hbdevicepowermenuwidegt.cpp --- a/coreapplicationuis/devicepowermenuplugin/src/hbdevicepowermenuwidegt.cpp Tue Aug 31 15:24:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,438 +0,0 @@ -/* - * Copyright (c) 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 "hbdevicepowermenuwidegt_p.h" -#include "hbdevicepowermenupluginerrors_p.h" -#include - -//resuorces -QString POWER_MENU_DOCML(":/xml/powermenu.docml"); -QString VOLUME_DECREASE_ICON(":/images/decrement.svg"); -QString VOLUME_INCREASE_ICON(":/images/increment.svg"); -QString VOLUME_UNMUTE_ICON(":/images/unmuted.svg"); -QString VOLUME_MUTE_ICON(":/images/muted.svg"); -//For Localization -QString LOCALE_PATH("/resource/qt/translations/"); -QString TS_FILE("power_menu"); - -//Widget names -QString MAIN_DLG("maindialog"); -QString PWR_SILENCE("Silence"); -QString PWR_VOLUME("Volume"); -QString PWR_VIBARTE("Vibrate"); -QString PWR_OFFLINE("Offline"); -QString PWR_POWEROFF("PowerOff"); -QString PWR_CONTAINER("container_1"); - -//DO not modify these strings -QString KVolumeLevel("VolumeLevel"); -QString KSilenceLatchOn("SilenceLatchOn"); //Used to latch silencebutton -QString KVibrationEnable("VibrationEnable"); -QString KOfflineEnable("OfflineEnable"); -QString KCypherOff("CypherOff"); //used to poweroffButtonEnabled/Disabled -QString KShutDown("ShutDown"); - -//Used for Orientation of PowerMenu -qreal KVerticalX = 175; -//width of PowerMenu -qreal KPMWidth = 360; - -/** - * Constructor - */ -HbDevicePowerMenuWidget::HbDevicePowerMenuWidget(const QVariantMap ¶meters) - :mDeviceDialogError(NoError), - mVolumeLevel(0), - mShowVolume(false), - mVibrationChecked(true), - mOfflineChecked(true), - mSilencelatched(true), - mCypherOff(true), - mDialogWidget(NULL), - mSilenceButton(NULL), - mVolumeSlider(NULL), - mVibarte(NULL), - mOffline(NULL), - mPowerOffButton(NULL), - mLoader(NULL), - mHbTranslator(NULL) - { - // mMainWindow(NULL), - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::Constructor:Begin") ) ); - if (preConstructDialog()) - { - //Translator loaded succesfully then olny construct widgets - constructDialog(parameters); - } - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::Constructor:End") ) ); - } - -/** - * Destructor - */ -HbDevicePowerMenuWidget::~HbDevicePowerMenuWidget() - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::Destructor()") ) ); - cleanupMemory(); - } - -/** - * Implementation of HbDeviceDialogInterface method - * sets parameters of custom widget - */ -bool HbDevicePowerMenuWidget::setDeviceDialogParameters(const QVariantMap ¶meters) - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::setDeviceDialogParameters:Begin") ) ); - if(parameters.contains(KVolumeLevel)) - { - mVolumeLevel = parameters.value(KVolumeLevel).toInt(); - } - if(parameters.contains(KSilenceLatchOn)) - { - mSilencelatched = parameters.value(KSilenceLatchOn).toBool(); - //If SilenceMode is Enabled then MasterVolume control is Disabled - mShowVolume = mSilencelatched? false:true; - } - if(parameters.contains(KVibrationEnable)) - { - mVibrationChecked = parameters.value(KVibrationEnable).toBool(); - } - if(parameters.contains(KOfflineEnable)) - { - mOfflineChecked = parameters.value(KOfflineEnable).toBool(); - } - if(parameters.contains(KCypherOff)) - { - mCypherOff = parameters.value(KCypherOff).toBool(); - } - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::setDeviceDialogParameters:End") ) ); - return true; - } - -/** - * Returns error code - */ -int HbDevicePowerMenuWidget::deviceDialogError() const - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::deviceDialogError") ) ); - return mDeviceDialogError; - } - -/** - * Close DeviceDialog - */ -void HbDevicePowerMenuWidget::closeDeviceDialog(bool byClient) - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::closeDeviceDialog:Begin") ) ); - Q_UNUSED(byClient); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::closeDeviceDialog:End") ) ); - mDialogWidget->close(); - } - -/** - * Implementation of HbDeviceDialogInterface method - */ -HbPopup* HbDevicePowerMenuWidget::deviceDialogWidget() const - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::deviceDialogWidget") ) ); - return mDialogWidget; - } - -/** - * Implementation of HbDeviceDialogInterface method - * to get signals from action events - */ -QObject* HbDevicePowerMenuWidget::signalSender() const - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::signalSender") ) ); - return const_cast(this); - } - -/** - * Before loading docml and widgets Translator must be loaded - */ -bool HbDevicePowerMenuWidget::preConstructDialog() - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::preConstructDialog:Begin") ) ); - //Translator - mHbTranslator = new HbTranslator(LOCALE_PATH,TS_FILE); - if(!mHbTranslator) - { - //Translator is failed to create - mDeviceDialogError = UnknownDeviceDialogError; - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::preConstructDialog:MemoryAllocation Failed") ) ); - return false; - } - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::preConstructDialog:End") ) ); - return true; - } - -/** - * Constrcuts customized widget dialog by loading the UI from docml and - * initializes all parameters and attributes. - * Throws bad-memory on Un-succesful memory allocations - */ -void HbDevicePowerMenuWidget::constructDialog(const QVariantMap ¶meters) - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::constructDialog:Begin") ) ); - bool dialogLoaded(false); - //Docml loader - mLoader = new HbDocumentLoader(); - if(!mLoader) - { - //Document Loader failed to create - mDeviceDialogError = UnknownDeviceDialogError; - cleanupMemory(); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::constructDialog:mLoader::MemoryAllocation Failed") ) ); - return; - } - mLoader->load(POWER_MENU_DOCML, &dialogLoaded); - Q_ASSERT_X(dialogLoaded, "HbDevicePowerMenuWidget", "Invalid xml file"); - //Widgets - if (dialogLoaded) - { - //Dialog loaded succesfully from docml - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::constructDialog:dialogLoaded:Begin") ) ); - - //Initialize Parameters received - setDeviceDialogParameters(parameters); - mDialogWidget = qobject_cast (mLoader->findWidget(MAIN_DLG)); - //Find the handles for all widget items - mSilenceButton = qobject_cast (mLoader->findWidget(PWR_SILENCE)); - mVolumeSlider = qobject_cast (mLoader->findWidget(PWR_VOLUME)); - mVibarte = qobject_cast (mLoader->findWidget(PWR_VIBARTE)); - mOffline = qobject_cast (mLoader->findWidget(PWR_OFFLINE)); - mPowerOffButton = qobject_cast (mLoader->findWidget(PWR_POWEROFF)); - QGraphicsWidget *widget(NULL); - widget = mLoader->findWidget(PWR_CONTAINER); - if (!(IsValidHandles()&&(widget))) - { - //Atleast, One of the Handles are not allocated memory - mDeviceDialogError = UnknownDeviceDialogError; - cleanupMemory(); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::constructDialog:Widgets::MemoryAllocation Failed") ) ); - return; - } - //Sets Speaker icon - setSpeakerIcon(); - //Customize slider to VolumeSlider - customizeVolumeSlider(); - mDialogWidget->setContentWidget(widget); - //SetWidget Attributes - //1. Volume - mVolumeSlider->setSliderPosition(mVolumeLevel); - mVolumeSlider->setEnabled(mShowVolume); - //This will avoid IPC calls while dragging the Slider - mVolumeSlider->setTracking(false); - bool ok = connect(mVolumeSlider,SIGNAL(valueChanged(int)) , this , SLOT(handleVolumeChanged(int))); - Q_ASSERT_X(ok, "VolumeSlider", "Invalid IncrementDecrement Change"); - - //2.Silence Mode - mSilenceButton->setDown(mSilencelatched); - ok = connect(mSilenceButton,SIGNAL(clicked(bool)) , this , SLOT(handleSilenceMode(bool))); - Q_ASSERT_X(ok, "SilenceButton", "Invalid Clicked"); - - //3.Master Vibration - mVibarte->setChecked(mVibrationChecked); - ok = connect(mVibarte,SIGNAL(stateChanged(int)) , this , SLOT(handleVibrationToggled(int))); - Q_ASSERT_X(ok, "Vibrator", "Invalid Vibrator Toggeld"); - - //4.Offline - mOffline->setChecked(mOfflineChecked); - ok = connect(mOffline,SIGNAL(stateChanged(int)) , this , SLOT(handleOfflineToggled(int))); - Q_ASSERT_X(ok, "Vibrator", "Invalid Offline Toggeld"); - - //5.Power off - mPowerOffButton->setEnabled(mCypherOff); - ok = connect(mPowerOffButton,SIGNAL(clicked(bool)) , this , SLOT(handlePowerOff(bool))); - Q_ASSERT_X(ok, "PowerOffButton", "Invalid Clicked"); - - //Dialog dismiss only with Tap outside - mDialogWidget->setTimeout(HbPopup::NoTimeout); - mDialogWidget->setDismissPolicy(HbPopup::TapOutside); - mDialogWidget->setPreferredWidth(KPMWidth); - - connect(mDialogWidget,SIGNAL(aboutToClose()),this, SLOT(closedialog())); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::constructDialog:dialogLoaded:End") ) ); - } - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::constructDialog:End") ) ); - } - -/** - * Checks whether all Hadles for widgets DialogWidget, - * SilenceButton, Vibrate, Offline and Poweroff Button allocated memory. - * Returns True, if all Handles allocated memory. - * Flase, atleast one of them NOT allocated memory. - */ -bool HbDevicePowerMenuWidget::IsValidHandles() - { - if((!mDialogWidget) || (!mSilenceButton) || (!mVolumeSlider)||(!mVibarte) || (!mOffline) || (!mPowerOffButton)) - { - return false; - } - else{ - //All handles are allocated memory - return true; - } - } - -/** - * Sets Mute/Unmute icon for Volume slider - * Mute/Unmute icon to display the current status of Silence Mode. - * Mute icon dispalyed when Device in Silence mode. - * Unmute icon dispalyed when Device Non-Silence mode. - */ -void HbDevicePowerMenuWidget::setSpeakerIcon() - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::setSpeakerIcon:Begin") ) ); - QString speakerIcon= ( mSilencelatched )? VOLUME_MUTE_ICON : VOLUME_UNMUTE_ICON ; - mVolumeSlider->setElementIcon(HbSlider:: IconElement,HbIcon(speakerIcon)); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::setSpeakerIcon:End") ) ); - } - - -/** - * Customizes the slider to Vloume Slider - */ -void HbDevicePowerMenuWidget::customizeVolumeSlider() - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::customizeVolumeSlider:Begin") ) ); - //Construct Volume Slider from the HbSlider - mVolumeSlider->setSliderElements(QList() - << HbSlider::DecreaseElement - << HbSlider::TrackElement - << HbSlider::IncreaseElement - << HbSlider::IconElement ); - - // To set DecreaseIcon and IncreseIcon - mVolumeSlider->setElementIcon(HbSlider::DecreaseElement, HbIcon(VOLUME_DECREASE_ICON)); - mVolumeSlider->setElementIcon(HbSlider:: IncreaseElement, HbIcon(VOLUME_INCREASE_ICON)); - //set Range of volume - mVolumeSlider->setRange(1,10); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::customizeVolumeSlider:End") ) ); - } - -/** - * Slot - * Widget is about to Close. - */ -void HbDevicePowerMenuWidget::closedialog() - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::closedialog:Begin") ) ); - emit deviceDialogClosed(); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::closedialog:Begin") ) ); - } - -/** - * Slot - */ -void HbDevicePowerMenuWidget::handleVolumeChanged(int aVolume) - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handleVolumeChanged:Begin") ) ); - mVolumeLevel = aVolume; - //inform the client may be through data changed etc. - QVariantMap mDataToSend; - QVariant volume(mVolumeLevel); - mDataToSend.insert(KVolumeLevel, volume); - emit deviceDialogData(mDataToSend); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handleVolumeChanged:Begin") ) ); - } - -/** - * Slot - * Switch between the states to latch down and latch up. - * In case of Silence mode, The Silence button id latched down and Disables Volume control. - * In case of Non-Silence mode, The Silence button id latched Up and enables Volume control. - */ -void HbDevicePowerMenuWidget::handleSilenceMode(bool aState) - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handleSilenceMode:Begin") ) ); - Q_UNUSED(aState); - mShowVolume = !(mShowVolume); - mSilencelatched = !(mSilencelatched); - mSilenceButton->setDown(mSilencelatched); - mVolumeSlider->setEnabled(mShowVolume); - setSpeakerIcon(); - //inform the client may be through data changed etc. - QVariantMap mDataToSend; - QVariant silence(mSilencelatched); - mDataToSend.insert(KSilenceLatchOn, silence); - emit deviceDialogData(mDataToSend); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handleSilenceMode:End") ) ); - } - -/** - * Slot - */ -void HbDevicePowerMenuWidget::handlePowerOff(bool aState) - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handlePowerOff:Begin") ) ); - Q_UNUSED(aState); - QVariantMap mDataToSend; - QVariant shutdown(true); - mDataToSend.insert(KShutDown, shutdown); - emit deviceDialogData(mDataToSend); - emit deviceDialogClosed(); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handlePowerOff:End") ) ); - } - -/** - * Slot - */ -void HbDevicePowerMenuWidget::handleOfflineToggled(int aOfflineToggel) - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handleOfflineToggled:Begin") ) ); - mOfflineChecked = aOfflineToggel; - QVariantMap mDataToSend; - QVariant offline(mOfflineChecked); - mDataToSend.insert(KOfflineEnable, offline); - emit deviceDialogData(mDataToSend); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handleOfflineToggled:End") ) ); - } - -/** - * Slot - */ -void HbDevicePowerMenuWidget::handleVibrationToggled(int aVibrationToggel) - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handleVibrationToggled:Begin") ) ); - mVibrationChecked = aVibrationToggel; - QVariantMap mDataToSend; - QVariant vibration(mVibrationChecked); - mDataToSend.insert(KVibrationEnable, vibration); - emit deviceDialogData(mDataToSend); - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::handleVibrationToggled:End") ) ); - } - -/** - * Cleans up memory allocations - */ -void HbDevicePowerMenuWidget::cleanupMemory() - { - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::cleanupMemory:Begin") ) ); - if(mLoader) - { - delete mLoader; - } - if(mHbTranslator) - { - delete mHbTranslator; - } - TRACES( RDebug::Print( _L("HbDevicePowerMenuWidget::cleanupMemory:End") ) ); - } -