mpviewplugins/mpplaybackviewplugin/src/mpequalizerwidget.cpp
changeset 20 82baf59ce8dd
child 25 3ec52facab4d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpplaybackviewplugin/src/mpequalizerwidget.cpp	Fri Apr 16 14:56:30 2010 +0300
@@ -0,0 +1,203 @@
+/*
+* 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: Equalizer widget for Music Player playback view.
+*
+*/
+
+// System includes
+#include <QStringList>
+#include <hblabel.h>
+#include <hbaction.h>
+#include <hbradiobuttonlist.h>
+
+// User includes
+#include "mpequalizerwidget.h"
+#include "mpequalizerwrapper.h"
+#include "mptrace.h"
+
+// CONSTANTS
+const int KEqualizerPresetNone = -1;
+
+/*!
+    \class MpEqualizerWidget
+    \brief Provide radio button list to select a predefined eq. preset
+*/
+
+/*!
+ Constructs the Equalizer widget.
+ */
+MpEqualizerWidget::MpEqualizerWidget() :
+    mEqualizerWrapper(0),
+    mPresetsList(0),
+    mOriginalPreset(KEqualizerPresetNone),
+    mEqualizerReady(false)
+{
+    TX_ENTRY
+    
+    initialize();
+    
+    TX_EXIT
+}
+
+/*!
+ Destructs the widget.
+ */
+MpEqualizerWidget::~MpEqualizerWidget()
+{
+    TX_ENTRY
+    
+    delete mEqualizerWrapper;
+    
+    TX_EXIT
+}
+
+/*!
+ Initialize dialog by loading the EqualizerUtility.
+ */
+void MpEqualizerWidget::initialize()
+{
+    TX_ENTRY
+    
+    mEqualizerWrapper = new MpEqualizerWrapper( this );
+
+    connect( mEqualizerWrapper,
+            SIGNAL( equalizerReady() ),
+            this,
+            SLOT( equalizerReady() ) );
+
+    TX_EXIT
+}
+
+/*!
+ Prepare dialog by loading the presets list.
+ */
+void MpEqualizerWidget::prepareDialog()
+{
+    TX_ENTRY
+    
+    setTimeout(NoTimeout);
+    setDismissPolicy(HbDialog::NoDismiss);
+    setFrameType(HbPopup::Strong);
+    setHeadingWidget(new HbLabel(hbTrId("txt_mus_title_select_preset")));    
+    setPrimaryAction(new HbAction(hbTrId("txt_common_button_ok")));
+    setSecondaryAction(new HbAction(hbTrId("txt_common_button_cancel")));
+    
+    if ( mEqualizerReady ) {
+        mOriginalPreset = mEqualizerWrapper->activePreset();
+        QStringList listItems = mEqualizerWrapper->presetNames();
+        listItems.prepend(hbTrId("txt_mus_list_off"));
+    
+        int presetSelected;
+        if (mOriginalPreset == KEqualizerPresetNone) {
+            presetSelected = 0;     //First list item corresponds to "OFF"
+        }
+        else {
+            presetSelected = mOriginalPreset;
+        }
+    
+        mPresetsList = new HbRadioButtonList(listItems, presetSelected, HbRadioButtonList::NoPreview, this);
+        setContentWidget( mPresetsList );  //mPresetsList now owned by HbDialog
+    
+        connect( mPresetsList, 
+               SIGNAL(itemSelected(int)), 
+               this, 
+               SLOT(presetSelected(int)));
+    }
+    
+    connect( secondaryAction(),
+            SIGNAL( triggered(bool) ),
+            this,
+            SLOT( cancelSelected(bool) ) );
+    
+    connect( primaryAction(),
+            SIGNAL( triggered(bool) ),
+            this,
+            SLOT( okSelected(bool) ) );
+    
+    TX_EXIT
+}
+
+/*!
+ Slot to handle when a preset has been selected.
+ */
+void MpEqualizerWidget::presetSelected(int index)
+{
+    TX_ENTRY
+    
+    if (mEqualizerWrapper) {
+        if (index == 0) {
+            mEqualizerWrapper->disableEqualizer();
+        }
+        else{
+            mEqualizerWrapper->applyPreset( index );
+        }
+    }
+    
+    TX_EXIT
+}
+
+/*!
+ Slot to handle when Cancel is selected
+ */
+void MpEqualizerWidget::cancelSelected(bool checked)
+{
+    TX_ENTRY
+    Q_UNUSED(checked);
+    
+    if (mEqualizerWrapper && mPresetsList) {
+        // Return to the original Preset
+        if (mOriginalPreset != mEqualizerWrapper->activePreset()) {
+            if (mOriginalPreset == KEqualizerPresetNone) {
+                mEqualizerWrapper->disableEqualizer();
+                mPresetsList->setSelected( 0 );     //First list item corresponds to "OFF"
+            }
+            else {
+                mEqualizerWrapper->applyPreset( mOriginalPreset );
+                mPresetsList->setSelected( mOriginalPreset );
+            }            
+        }
+    }
+    
+    TX_EXIT
+}
+
+/*!
+ Slot to handle when Ok is selected
+ */
+void MpEqualizerWidget::okSelected(bool checked)
+{
+    TX_ENTRY
+    Q_UNUSED(checked);    
+    
+    //Update original preset
+    if (mEqualizerWrapper) {
+        mOriginalPreset = mEqualizerWrapper->activePreset();
+    }
+    
+    TX_EXIT
+}
+
+/*!
+ Equalizer utility is ready
+ */
+void MpEqualizerWidget::equalizerReady()
+{
+    TX_ENTRY
+    
+    mEqualizerReady = true;
+    
+    TX_EXIT
+}
+
+//End of File