radioapp/radiowidgets/src/radioviewbase.cpp
changeset 13 46974bebc798
child 14 63aabac4416d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiowidgets/src/radioviewbase.cpp	Fri Mar 19 09:29:04 2010 +0200
@@ -0,0 +1,195 @@
+/*
+* 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:
+*
+*/
+
+#include <hbmenu.h>
+#include <hbaction.h>
+#include <hbeffect.h>
+#include <qcoreapplication>
+
+#include "radioviewbase.h"
+#include "radiomainwindow.h"
+#include "radiostationmodel.h"
+#include "radioxmluiloader.h"
+#include "radiouiengine.h"
+#include "radiolocalization.h"
+#include "radiologger.h"
+
+/*!
+ *
+ */
+RadioViewBase::RadioViewBase( RadioXmlUiLoader* uiLoader, bool transient ) :
+    HbView( 0 ),
+    mMainWindow( 0 ),
+    mModel( 0 ),
+    mUiLoader( uiLoader ),
+    mTransientView( transient ),
+    mUseLoudspeakerAction( 0 ),
+    mSecondarySoftkeyction( 0 ),
+    mOrientation( Qt::Vertical )
+{
+}
+
+/*!
+ *
+ */
+RadioViewBase::~RadioViewBase()
+{
+    if ( mUiLoader )
+    {
+        mUiLoader->reset();
+    }
+}
+
+/*!
+ *
+ */
+void RadioViewBase::init( RadioMainWindow* aMainWindow, RadioStationModel* aModel )
+{
+    // Default implementation does nothing
+    Q_UNUSED( aMainWindow );
+    Q_UNUSED( aModel );
+}
+
+/*!
+ *
+ */
+bool RadioViewBase::isTransient() const
+{
+    return mTransientView;
+}
+
+/*!
+ *
+ */
+void RadioViewBase::initSecondarySoftkey()
+{
+    // The default back button activates the tuning view
+    mSecondarySoftkeyction = new HbAction( Hb::BackAction, this );
+    connectAndTest( mSecondarySoftkeyction, SIGNAL(triggered()),
+                    mMainWindow,            SLOT(activateTuningView()) );
+}
+
+/*!
+ *
+ */
+HbAction* RadioViewBase::secondarySoftkey() const
+{
+    return mSecondarySoftkeyction;
+}
+
+/*!
+ *
+ */
+void RadioViewBase::updateOrientation( Qt::Orientation orientation, bool forceUpdate )
+{
+    if ( orientation != mOrientation || forceUpdate )
+    {
+        mOrientation = orientation;
+        setOrientation();
+    }
+}
+
+/*!
+ * Protected slot
+ *
+ */
+void RadioViewBase::updateAudioRouting( bool loudspeaker )
+{
+    if ( mUseLoudspeakerAction ) {
+        mUseLoudspeakerAction->setText( loudspeaker ? TRANSLATE( KMenuUseHeadset ) : TRANSLATE( KMenuUseLoudspeaker ) );
+    }
+}
+
+/*!
+ * Protected slot
+ *
+ */
+void RadioViewBase::activatePreviousView()
+{
+    mMainWindow->activateTuningView();
+}
+
+/*!
+ * Protected slot
+ *
+ */
+void RadioViewBase::quit()
+{
+    qApp->quit();
+}
+
+/*!
+ *
+ */
+HbAction* RadioViewBase::addMenuItem( const QString& aTitle, QObject* aRecipient, const char* aSlot )
+{
+    HbAction* action = menu()->addAction( aTitle );
+    connectAndTest( action, SIGNAL(triggered()), aRecipient, aSlot );
+    return action;
+}
+
+/*!
+ *
+ */
+void RadioViewBase::connectCommonMenuItem( int menuItem )
+{
+    RadioUiEngine* engine = &mMainWindow->uiEngine();
+    switch ( menuItem )
+    {
+        case MenuItem::UseLoudspeaker:
+            mUseLoudspeakerAction = mUiLoader->findObject<HbAction>( DOCML_NAME_LOUDSPEAKERACTION );
+            if ( mUseLoudspeakerAction ) {
+                connectAndTest( mUseLoudspeakerAction, SIGNAL(triggered()), engine, SLOT(toggleAudioRoute()) );
+                updateAudioRouting( engine->isUsingLoudspeaker() );
+                connectAndTest( engine, SIGNAL(audioRouteChanged(bool)), this, SLOT(updateAudioRouting(bool)) );
+            }
+            break;
+
+        default:
+            break;
+    }
+}
+
+/*!
+ *
+ */
+void RadioViewBase::connectXmlElement( const char* name, const char* signal, QObject* receiver, const char* slot )
+{
+    if ( QObject* action = mUiLoader->findObject<QObject>( name ) )
+    {
+        connectAndTest( action, signal, receiver, slot );
+    }
+}
+
+/*!
+ *
+ */
+void RadioViewBase::connectViewChangeMenuItem( QString name, const char* slot )
+{
+    if ( QObject* action = mUiLoader->findObject<QObject>( name ) )
+    {
+        connectAndTest( action, SIGNAL(triggered()), mMainWindow, slot );
+    }
+}
+
+/*!
+ *
+ */
+void RadioViewBase::setOrientation()
+{
+    // Default implementation does nothing
+}