src/hbwidgets/popups/hbvolumesliderpopup.cpp
changeset 0 16d8024aca5e
child 6 c3690ec91ef8
--- /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 <hbvolumesliderpopup.h>
+#include <hbinstance.h>
+#include "hbsliderpopup_p.h"
+#include "hblayoutdirectionnotifier_p.h"
+#include <hbmessagebox.h>
+#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<HbVolumeSlider *>(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<HbVolumeSlider *>(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<HbVolumeSlider *>(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"