--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videofeeds/vcnsscheduleview/src/vcxnsscheduleview.cpp Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,416 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: CVcNsScheduleView view class definitions.*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <aknViewAppUi.h>
+#include <akntitle.h>
+#include <AknUtils.h>
+#include <avkon.hrh>
+#include <AknGlobalNote.h>
+#include <AknIconUtils.h>
+#include <StringLoader.h>
+#include <akntitle.h>
+#include <barsread.h>
+#include <mpxviewutility.h>
+#include <cmapplicationsettingsui.h>
+#include <centralrepository.h>
+#include <AknQueryDialog.h>
+
+#include <vcxnsscheduleview.rsg>
+#include <videoplayeractivationmessage.h>
+
+#include "IptvDebug.h"
+#include "CIptvResourceLoader.h"
+#include "vcxnsservicesettings.h"
+#include "videoplayersettingsengine.h"
+#include "vcxnsscheduleview.h"
+#include "vcxnsscheduleview.hrh"
+#include "CVcxNsScheduleSettingsViewContainer.h"
+
+
+// Consts
+_LIT( KVcScheduleViewResource, "\\resource\\apps\\vcxnsscheduleview." );
+
+// ================= MEMBER FUNCTIONS =======================
+
+// -----------------------------------------------------------------------------
+// CVcxNsScheduleView::NewL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CVcxNsScheduleView* CVcxNsScheduleView::NewL( )
+ {
+ CVcxNsScheduleView* self = CVcxNsScheduleView::NewLC( );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CVcxNsScheduleView::NewLC()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CVcxNsScheduleView* CVcxNsScheduleView::NewLC( )
+ {
+ CVcxNsScheduleView* self = new (ELeave) CVcxNsScheduleView( );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CVcxNsScheduleView::~CVcxNsScheduleView()
+// ---------------------------------------------------------
+//
+EXPORT_C CVcxNsScheduleView::~CVcxNsScheduleView()
+ {
+ if ( iContainer )
+ {
+ AppUi()->RemoveFromStack( iContainer );
+ delete iContainer;
+ }
+
+ delete iResourceLoader;
+ delete iServiceSettings;
+
+ if ( iViewUtility )
+ {
+ iViewUtility->Close();
+ }
+ }
+
+// ---------------------------------------------------------
+// CVcxNsScheduleView::CVcxNsScheduleView()
+// ---------------------------------------------------------
+//
+EXPORT_C CVcxNsScheduleView::CVcxNsScheduleView( const TUid aViewId )
+ : iViewId( aViewId )
+ {
+ }
+
+// ---------------------------------------------------------
+// CVcxNsScheduleView::ConstructL()
+// ---------------------------------------------------------
+//
+EXPORT_C void CVcxNsScheduleView::ConstructL( )
+ {
+ // Resources must be loaded before base construct.
+ iResourceLoader = CIptvResourceLoader::NewL( *iCoeEnv );
+ iResourceLoader->AddResourceL( KVcScheduleViewResource );
+
+ BaseConstructL( R_VCXNS_SCHEDULE_SCHEDULESETTINGSVIEW );
+
+ iServiceSettings = CVcxNsServiceSettings::NewL();
+
+ iViewUtility = MMPXViewUtility::UtilityL();
+ }
+
+// ---------------------------------------------------------
+// TUid CVcxNsScheduleView::Id()
+// Return id of this view instance
+// ---------------------------------------------------------
+//
+TUid CVcxNsScheduleView::Id() const
+ {
+ return iViewId;
+ }
+
+// ---------------------------------------------------------
+// CCVcxNsScheduleView::IsScheduleViewActive()
+// ---------------------------------------------------------
+//
+TBool CVcxNsScheduleView::IsScheduleViewActive()
+ {
+ return iContainer != NULL;
+ }
+
+// ---------------------------------------------------------
+// CCVcxNsScheduleView::HandleCommandL()
+// Command handler
+// ---------------------------------------------------------
+//
+EXPORT_C void CVcxNsScheduleView::HandleCommandL( TInt aCommand )
+ {
+ IPTVLOGSTRING2_LOW_LEVEL(
+ "Schedule view ## CVcxNsScheduleView::HandleCommandL(%d)", aCommand );
+
+ switch ( aCommand )
+ {
+ case EAknSoftkeyOpen:
+ case EAknSoftkeyChange:
+ case EIptvScheduleSettingsCmdChange:
+ if ( iContainer )
+ {
+ iContainer->HandleChangeSelectedSettingItemL( aCommand );
+ }
+ break;
+
+ case EIptvScheduleSettingsCmdHelp:
+ {
+ AppUi()->HandleCommandL( EAknCmdHelp );
+ }
+ break;
+
+ case EAknSoftkeyBack:
+ case EAknSoftkeyExit:
+ case EIptvScheduleSettingsCmdExit:
+ {
+ AppUi()->HandleCommandL( EAknCmdExit );
+ }
+ break;
+
+ case EAknSoftkeyDone:
+ {
+ TBool scheduleViewExitOk = ETrue;
+ if ( iContainer && iContainer->IsSchedulingActive() )
+ {
+ scheduleViewExitOk = CheckScheduledDownloadIapL();
+ }
+
+ if ( scheduleViewExitOk )
+ {
+ if ( iContainer )
+ {
+ iContainer->SaveSettingsL();
+ }
+
+ iViewUtility->ActivatePreviousViewL();
+ }
+ }
+ break;
+
+ default:
+ AppUi()->HandleCommandL( aCommand );
+ break;
+ }
+ }
+
+// ---------------------------------------------------------
+// CVcxNsScheduleView::HandleClientRectChange()
+// ---------------------------------------------------------
+//
+void CVcxNsScheduleView::HandleClientRectChange()
+ {
+ if (iContainer)
+ {
+ iContainer->SetRect(ClientRect());
+ }
+ }
+
+// ---------------------------------------------------------
+// CVcxNsScheduleView::GetButtonGroupContainer()
+// ---------------------------------------------------------
+//
+CEikButtonGroupContainer* CVcxNsScheduleView::GetButtonGroupContainer()
+ {
+ return Cba();
+ }
+
+// ---------------------------------------------------------
+// CVcxNsScheduleView::DoActivateL
+// Activation of this view instance.
+// ---------------------------------------------------------
+//
+EXPORT_C void CVcxNsScheduleView::DoActivateL(
+ const TVwsViewId& aPrevViewId,
+ TUid /*aCustomMessageId*/,
+ const TDesC8& aCustomMessage )
+ {
+ IPTVLOGSTRING_LOW_LEVEL("Schedule view ## CVcxNsScheduleView::DoActivateL()");
+
+ CAknTitlePane* titlePane = static_cast<CAknTitlePane*>( StatusPane()->
+ ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+ HBufC* title = StringLoader::LoadLC( R_VCXNS_SCHEDULE_SCHEDULE_DOWNLOADS );
+ titlePane->SetTextL( *title );
+ CleanupStack::PopAndDestroy( title );
+
+ iPrevViewId = aPrevViewId;
+
+ TUint32 serviceId( 0 );
+
+ if ( aCustomMessage.Length() == sizeof( TUint32 ) )
+ {
+ TPckg<TUint32> pkg ( serviceId ) ;
+ pkg.Copy( aCustomMessage );
+ }
+ else
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ if ( !iContainer )
+ {
+ iContainer = new (ELeave) CVcxNsScheduleSettingsViewContainer(
+ *iServiceSettings,
+ serviceId );
+
+ iContainer->SetMopParent( this );
+ iContainer->ConstructL( ClientRect() );
+
+ AppUi()->AddToStackL(*this, iContainer);
+ }
+
+ iContainer->MakeVisible( ETrue );
+
+ CEikButtonGroupContainer* cba = Cba();
+
+ if ( cba )
+ {
+ cba->DrawDeferred();
+ }
+
+ }
+
+// ---------------------------------------------------------
+// CVcxNsScheduleView::DoDeactivate()
+// Deactivation of this view instance.
+// ---------------------------------------------------------
+//
+EXPORT_C void CVcxNsScheduleView::DoDeactivate()
+ {
+ if ( iContainer )
+ {
+ AppUi()->RemoveFromStack( iContainer );
+
+ delete iContainer;
+ iContainer = NULL;
+ }
+ }
+
+// ---------------------------------------------------------
+// CVcxNsScheduleView::RoutedKeyEventL
+// ---------------------------------------------------------
+//
+TKeyResponse CVcxNsScheduleView::RoutedKeyEventL( const TKeyEvent &aKeyEvent,
+ TEventCode aType )
+ {
+ if (iContainer)
+ {
+ return iContainer->OfferKeyEventL(aKeyEvent, aType);
+ }
+ return EKeyWasConsumed;
+ }
+
+// ------------------------------------------------------------------------------
+// CVcxNsScheduleView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
+// This function is called by the EIKON framework just before it displays
+// a menu pane. Menu is adjusted according to Schedule UI state.
+// ------------------------------------------------------------------------------
+//
+EXPORT_C void CVcxNsScheduleView::DynInitMenuPaneL(
+ TInt aResourceId,
+ CEikMenuPane* aMenuPane )
+ {
+ if ( !iContainer )
+ {
+ return;
+ }
+
+ switch ( aResourceId )
+ {
+ case R_VCXNS_SCHEDULE_SCHEDULESETTINGSVIEW_OPTIONS_MENU:
+
+ {
+ aMenuPane->SetItemDimmed( EIptvScheduleSettingsCmdChange, EFalse );
+ // implement help
+ aMenuPane->SetItemDimmed( EIptvScheduleSettingsCmdHelp, ETrue );
+ aMenuPane->SetItemDimmed( EIptvScheduleSettingsCmdExit, EFalse );
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CVcxNsScheduleView::CheckScheduledDownloadIapL()
+// -----------------------------------------------------------------------------
+//
+TBool CVcxNsScheduleView::CheckScheduledDownloadIapL()
+ {
+ TBool exitScheduledDownloadView( ETrue );
+
+ TInt snapId( 0 );
+ CRepository* cenRep = CRepository::NewLC( KIptvAlrCenRepUid );
+ // In the case of an error we should anyway terminate query not to jam ui.
+ if ( KErrNone == cenRep->Get( KIptvCenRepUsedSnapIdKey, snapId ) )
+ {
+ if ( KIptvCenRepAPModeAlwaysAsk == snapId )
+ {
+ HBufC* dlgText =
+ StringLoader::LoadLC( R_VCXNS_SCHEDULE_DEFINE_SCHEDULED_DESTINATION );
+ CAknQueryDialog* dlg = CAknQueryDialog::NewL();
+ dlg->ExecuteLD( R_VCXNS_SCHEDULE_CONFIRMATION_QUERY, *dlgText );
+ CleanupStack::PopAndDestroy( dlgText );
+
+ if ( LaunchSnapSelectionL( snapId ) )
+ {
+ // Selected Snap is stored to cenrep.
+ cenRep->Set( KIptvCenRepUsedSnapIdKey, snapId );
+ }
+ else
+ {
+ // User has cancelled Snap selection.
+ // Scheduled download is not possible.
+ exitScheduledDownloadView = EFalse;
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy( cenRep );
+
+ return exitScheduledDownloadView;
+ }
+
+// --------------------------------------------------------------------------
+// CVcxNsScheduleView::LaunchSnapSelectionL()
+// --------------------------------------------------------------------------
+//
+TBool CVcxNsScheduleView::LaunchSnapSelectionL( TInt& aUsedSnapId ) const
+ {
+ TBool set( EFalse );
+
+ CCmApplicationSettingsUi* settingsUi = CCmApplicationSettingsUi::NewL();
+ CleanupStack::PushL ( settingsUi );
+
+ TCmSettingSelection selection;
+ selection.iId = aUsedSnapId;
+ selection.iResult = CMManager::EDestination;
+
+ TUint listItems = CMManager::EShowDestinations;
+ TBearerFilterArray filters;
+
+ TBool retVal = settingsUi->RunApplicationSettingsL( selection, listItems, filters );
+
+ if ( retVal && ( CMManager::EDestination == selection.iResult ) )
+ {
+ aUsedSnapId = selection.iId;
+ set = ETrue;
+ }
+
+ CleanupStack::PopAndDestroy ( settingsUi );
+
+ return set;
+ }
+
+// -----------------------------------------------------------------------------
+// CVcxNsScheduleView::HandleStatusPaneSizeChange
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CVcxNsScheduleView::HandleStatusPaneSizeChange()
+ {
+ }