diff -r 000000000000 -r 16d8024aca5e src/hbwidgets/popups/hbvolumesliderpopup.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hbwidgets/popups/hbvolumesliderpopup.cpp Mon Apr 19 14:02:13 2010 +0300 @@ -0,0 +1,248 @@ +/**************************************************************************** +** +** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (developer.feedback@nokia.com) +** +** This file is part of the HbWidgets module of the UI Extensions for Mobile. +** +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this file. +** Please review the following information to ensure the GNU Lesser General +** Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at developer.feedback@nokia.com. +** +****************************************************************************/ + +#include "hbvolumeslider_p.h" +#include +#include +#include "hbsliderpopup_p.h" +#include "hblayoutdirectionnotifier_p.h" +#include +#include "hbdeviceprofile.h" + +/*! + @beta + @hbwidgets + \class HbVolumeSliderPopup + \brief HbVolumeSliderPopup widget provides a vertical volume slider embedded in a popup. + + HbVolumeSliderPopup is provided for convenience. HbVolumeSlider sets appropriate + icons and provides volume slider specific functionality like a + checkable mute button and appropriate elements out of the box. HbVolumeSliderPopup + consists of following slider elements by default: + \li HbSlider::IncreaseElement + \li HbSlider::TrackElement + \li HbSlider::DecreaseElement + \li HbSlider::IconElement + + \image html hbvolumeslider.png A volume slider. + + The elements can be changed by calling HbSlider::setElements() later at any time. + + \note order of element can not be changed + + Orientation of HbVolumeSliderPopup can not be changed. If orientation change is need, + then first create HbSliderPopup and set needed elements. + + It is positioned at Right side of the screen in non mirrored layout. + + Example usage: + \code + HbVolumeSliderPopup *slider = new HbVolumeSliderPopup(); + connect(slider, SIGNAL(valueChanged(int)), receiver, SLOT(volumeSliderChanged(int))); + connect(slider, SIGNAL(iconToggled(bool)), receiver, SLOT(volumeMuted(bool))); + \endcode + + Note:: position and size of these elements cant be change. + use HbVolumeSlider instead if you want to change position or size + + Note:: if setElement is called on this slider , application is reponsible for + inconsitent UI. +*/ + + +/* + internal + */ +class HbVolumeSliderPopupPrivate : public HbSliderPopupPrivate +{ + Q_DECLARE_PUBLIC(HbVolumeSliderPopup) +protected: + virtual void createSlider(); +public: + HbVolumeSliderPopupPrivate(); + virtual ~HbVolumeSliderPopupPrivate(); + void init(); +}; + +/* + internal + */ +void HbVolumeSliderPopupPrivate::init() +{ + Q_Q( HbVolumeSliderPopup); + q->setTimeout(2000); + HbVolumeSlider* volumeSlider = static_cast(slider); + q->connect(volumeSlider,SIGNAL(iconToggled(bool)),q,SIGNAL(iconToggled(bool))); + +} + +/* + internal + */ +HbVolumeSliderPopupPrivate::HbVolumeSliderPopupPrivate() +{ +} + +/* + reimp + */ +void HbVolumeSliderPopupPrivate::createSlider() +{ + slider = new HbVolumeSlider(true); +} + +/* + \internal + */ +HbVolumeSliderPopupPrivate::~HbVolumeSliderPopupPrivate() +{ +} + +/*! + @beta + Constructs a HbVolumeSliderPopup with \a parent. + + orientation will be vertical + +*/ +HbVolumeSliderPopup::HbVolumeSliderPopup( ) : + HbSliderPopup(*new HbVolumeSliderPopupPrivate, 0) +{ + Q_D(HbVolumeSliderPopup); + d->q_ptr = this; + d->init(); +} + +/*! + @beta + \internal + */ +HbVolumeSliderPopup::HbVolumeSliderPopup(HbVolumeSliderPopupPrivate &dd, QGraphicsItem *parent) : + HbSliderPopup(dd, parent) +{ + dd.init(); +} + +/*! + Destructs the slider. +*/ +HbVolumeSliderPopup::~HbVolumeSliderPopup() +{ +} + + +/*! + @beta + Sets whether the text element is visible. + + \default is true + + \sa isCurrentValueVisible() +*/ +void HbVolumeSliderPopup::setCurrentValueVisible(bool visible) +{ + Q_D(HbVolumeSliderPopup); + if( d->slider ) { + HbVolumeSlider* volumeSlider = static_cast(d->slider); + volumeSlider->setCurrentValueVisible(visible); + } +} + +/*! + @beta + Returns \c true whether the text element is visible. + + The default value is \c false. + + \sa setCurrentValueVisible() +*/ +bool HbVolumeSliderPopup::isCurrentValueVisible() const +{ + Q_D(const HbVolumeSliderPopup); + if( d->slider ) { + HbVolumeSlider* volumeslider = static_cast(d->slider); + return volumeslider->isCurrentValueVisible() ; + } + return false; +} + +/*! + \reimp + re position the slider popup +*/ + + +/*! + Reimplemented from QGraphicsItem::keyReleaseEvent(). + */ +void HbVolumeSliderPopup::keyReleaseEvent(QKeyEvent *keyevent) +{ + switch (keyevent->key()) { + //hide popup for following key press event + case Qt::Key_Enter: + case Qt::Key_Return: + case Qt::Key_Select: + { + HbMessageBox *note = new HbMessageBox( + tr("Volume Adjusted"), HbMessageBox::MessageTypeInformation); + note->show(); + } + hide(); + break; + case Qt::Key_Left: + case Qt::Key_Backspace: + case Qt::Key_Back: + hide(); + keyevent->accept(); + break; + default: + HbSliderPopup::keyReleaseEvent(keyevent); + break; + } + + } + +/*! + Reimplemented from QGraphicsItem::keyPressEvent(). + */ +void HbVolumeSliderPopup::keyPressEvent(QKeyEvent *keyevent) +{ + switch (keyevent->key()) { + case Qt::Key_Left: + case Qt::Key_Right: + case Qt::Key_Back: + case Qt::Key_Backspace: + hide(); + keyevent->accept(); + break; + default: + HbSliderPopup::keyPressEvent(keyevent); + break; + } + + } + + +#include "moc_hbvolumesliderpopup.cpp"